2007-07-19
从学校实验室借出EDUKIT-III实验箱有很长时间了,一直没有静下心来深入研究。有多个原因:一是ATMEL AT91RM9200先入为主,其开发思路限制了自己的思维,相比之下,始终认为S3C2410的开发工具使用不方便,开发流程太复杂。二是一种古怪的思想统治着自己,就是想所有的工作都在Linux下完成,完全摆脱windows的束缚。三是自己的软硬件知识储备还不够,很多地方并不是仅仅凭借努力就能深入认识的。
在思想上走了几个弯路后,现在算是回归正途了。
首先,AT91RM9200和S3C2410都是非常成功的,只是它们的定位不同。AT91RM9200定位于工控、无线数传领域,是工业级产品,而S3C2410定位于高级电子消费领域,是民用级产品,在外设、技术指标上就有很大的不同,这都是在定位后权衡各方面情况后的最佳结果。
AT91RM9200片内ROM固化了一部分代码,可以认为是一级bootloader,提供了多种bootloader的写入方式,在初始开发阶段,只需要一个DEBUG口就可以完成所有开发工作,更加方便。S3C2410则复杂一些,必须要依赖于JTAG来写入。其实,它们扩展了你的思维,是你能认识更为深入。正所谓“条条大路通罗马”,见识到了多条路,思考并且理解为什么走这条路,走这条路相对于其他是否更为有利......就我而言,这种思考必然会带来很多问题,但是当你解决了这些问题,你的认识就上升了一个层次。这是一个螺旋式上升的过程,思考得越多,你的收获也就越大。而这些都将转化为你的经验。每一个产品的成功都有其成功的因素,你需要学习这些,然后消化吸收。通过比较不同,你会明白一个产品的定位对产品的设计是多么重要。
其次,重要的是思想,而不是工具。Windows和Linux是两种不同的操作系统,我觉得它们都是成功的。对我而言,知道要做什么,那么就应该去寻找最为高效、最为方便的方式去实现,不管是在Windows下还是Linux下。所有那些只是你实现思想的工具而已。不偏激,慢慢中庸,这样似乎更好一些,学到的东西更多,思路更开阔。当然,在这之前,应该有几件最为趁手的工具,这是我在学生阶段需要培养的。
再次,只有有相当的理论积累和实践经验,才能使认识更深入一层。理论和实践同样重要,看看你自己最适合做什么方向。不管做什么,都需要去除浮躁,静心研究。
下面开始记录EDUKIT-III的研究历程,不打算集中在这一篇文章,这个只是一个流水帐,也可以算是心情日记。具体的工作要分类总结在相应的文章里。这个暑假就是研究S3C2410了,会很充实的。
提前声明一点:现在提到的研究是针对带OS Linux的开发,不带OS或者带其他OS这个暂时不在考虑之内。核心内容是bootloader-->kernel-->fs-->application,慢慢来,务求深入。
(1)首先谈一下使用深圳英培特这款教学平台的感受。去年暑假使用的AT91RM9200是商业产品,品质等各个方面都非常好。于是对ATMEL的印象非常好。EDUKIT-III这款教学平台采用了底层板跟核心板的双层设计,优点就是增加了灵活性,缺点就是存在接触不良的问题。我在使用的时候,不断遇到这个问题,不动核心板的前提下,第一次成功,第二次可能就失败,很不稳定,也是比较烦人的问题。光盘资料说明文档内容存在交叉,我想要完成一件事,有两处README给出两个不同的操作,又没有额外的提示,只有两种情况都尝试。所以,仅凭这点,对这款教学平台的印象大打折扣。只是自己如果买开发板,还是比较贵的。有句话:想办法,不要逃避。这款教学平台的外设非常丰富,代码资料也很全,这是其他开发板所比不了的。所以,静下心来,想办法,慢慢去学。
(2)基本流程:移植bootloader --> 移植kernel --> 移植fs --> 增加自己的应用程序。
bootloader准备选用vivi,比较小巧,深入研究一遍后,可以考虑移植U-boot,这个的移植工作量相对大一些。
kernel准备选择2.6的核,最新内核已经加入了对S3C2410的支持,并且还有对nand flash的支持。功能上更为稳定,这样也更加主流,不一定受限于mizi的OS。
fs则要进行多种尝试,cramfs、yaffs等都要尝试一下,而且要认识到各个fs的优缺点,争取采用多个fs组合的方式,实现更为强大的功能。
application方面想要实现mp3播放功能,数据网关(串口转网口)功能,USB摄像头的视频监控功能。这些可以逐步的来,做到这里的时候,可能会返回去重新编译内核,重新修改fs,如果开始vivi分区设计不好,可能要重新编译vivi。
从网上读到一篇文章,博主谈到老师有这样的话:
“当拿到一个问题的时候,首先要到网上搜搜,看看有没有类似的问题,如果有就下载下来。然后看看别人如何解决这个问题的,在别人的基础上解决问题。反之,如果你拿到一个问题就在那里闷头想,然后费了老大劲作出来,你是傻子,你这是闭门造车,完全忽视人民群众的力量,当然人民群众也可以忽视你!”
“我站在喜马拉雅山的半山腰,前进了不到100米;你平地而起,辛苦造了2000多米的山,你确实比我前进的多,但是我仍然高于你!”
读了这两段话,深有感触。以前一直想所有的东西都从头自己做起,这是不现实的。正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。在临摹的过程中,多思考,多参考前辈临摹的经验,而且要过滤掉不适合自己的经验。所以,在实践开发或者学习过程中,最为重要的是思考和利用网络搜索到有价值的资料的能力。
如是,努力!