|
Linux内核的开发已经经历了一个漫长的过程,最初是LinusTorvalds于1991年发布的原始的0.1版本,这个版本中包括一个基本的调度器、IPC(进程间通信)和内存管理算法。Linux2.6是Linux开发周期中的下一个主要版本,它包括了一些强有力的特性,这些特性旨在改进高端企业服务器的性能和支持越来越多的嵌入式设备。下面有卓跃教育为您简单介绍一下Linux2.6内核。
2.6内核代码的优势:
1、2.4内核代码越升级写的越混乱,特别是mizi的那套release版本,韩国人的编码风格实在不好。
2、2.6的代码结构比2.4更加清晰,资源的定义进行了分类,可读性很好,条理清楚,修改起来容易。
3、2.6的代码相当精炼,大量使用C的struct实现了C++的面向对象风格,看起来很舒服。
4、2.6支持标准的高级电源管理apm,mizi的那个mizi_bios和apm2是他们自己写的,和标准不兼容,修改起来费劲。
5、在同样的目标板上,我发现2.6的内核跑起来比2.4省电,电流表上的显示结果相差近50mA左右,可以相信,2.6在硬件资源的管理上做得很好。这可真是个意外的发现。
2.6可以通过两种方式唤醒,一个是定时器,另一个是外部中断,把s3c_irqwake_eintallow设置成自己定义的中断位,然后,用apm-s可以使系统进入休眠模式,通过对应的外部中断按钮可以唤醒系统。
实测结果是S3C2410休眠后仍然消耗20mA的电流,有点偏大,这可能与板子的其他资源有关,还需要在休眠前关掉其他的资源。
但是,在2.4和2.6都存在的两个问题是:
1、root文件系统是cramfs,系统进入休眠模式再唤醒后会出现“Error-3whiledecompressing!“,这是fs/cramfs/uncompress.c在解压的时候出的问题,原因还没搞清楚。
2、/usr作为yaffs来使用,系统进入休眠模式再唤醒后所有的文件及文件夹都不见了,只剩下一lost+found,即使是休眠前umount,唤醒后再mount,结果都是一样的。怀疑是mtd的信息丢失,或者是nandcontrollerregisters的值没有保存好。
3、剩下的工作就是LCDdriver、TouchScreendriver、Sounddriver、NetWorkdriver等等驱动的工作了,既可以根据iPAQ1940的patch进行修改,也可以从google和论坛中找到的各个patch和diff文件进行分析、拷贝和粘贴,不同的板子作相应的调整。
|
|