ondering 的个人资料mmi日志列表 工具 帮助

日志


2006/6/9

5月底,系统解剖

      接触现在我所工作的平台都快一年了,gui换了2套,一套是TI原版的,一套是我们自己从头到尾开发的,而我这一年的时间大部分都关注在这套gui所提供的文字输入及处理工作上,做了一两个简单的mmi应用,近来似乎比较闲,从boot部分开始理了一下整个系统,一方面是弥补一下对系统层面了解不够的对开发所带来的不足,另外一方面是由于新的平台需要实现资源与flash分离,直接存储到nandflash,由于nandflash的文件系统是由另外一个芯片来管理,而程序的烧写过程中这个芯片的初始化工作还没有做,需要对bootloader做一定的研究。
     一开始想到的是搭建一个最小系统,甚至不包含lcd,键盘的驱动,仅仅初始化一个串口,在最小系统下对bootloader做修改,调试。却发现正常boot之后,在初始化一个锁像环控制寄存器的时候,似乎影响到了flash的访问时序,整个代码都是乱的,废了。然后如果不初始化这个寄存器,系统运行的主频可能是13M/8 甚至更慢。在不能确认是那些硬件资源没有初始化,或者中断向量没有配对的情况下只好放弃这个办法。
     之后就是在系统上做减法,把协议栈,mmi,gui,lcd的驱动,一些外围芯片的驱动统统干掉,只留下串口,时钟,看门狗,当然还有最重要的就是那个bootloader,一切搞定之后就是编译,link了,最后终于成功的在串口成功接收到“hello”,呵呵接下来就是把那个芯片的驱动加上去,资源分离的测试环境基本上就ok了
     中间虽然有一次放弃,但收获远远比第2次大,原因就是里面的makefile觉大部分都是我敲出来的,在bootloader的代码中明白了整个系统boot的真切过程,最后就是整个裁减过程,一个是有简到繁做的是加法,一个是有繁到简,做的是减法,做法更直接与简单,恰恰是这个简单的做法把问题解决了,大道至简,略有所悟吧
     整个过程大概穿插持续了一个星期,在工作量不算饱满的情况下,也算是对自己有个交代