分类:
2009-12-21 20:57:01
最近,老是有人问我“如何学习嵌入式开发”,搞的我每天晚上都要敲打同样的内容,现在我就写上一些浅见,希望不要误人子弟。嘿嘿,我也不用做重复性工作了!
可惜我只懂点wince驱动的皮毛,对linux驱动是一无所知。所以我就写点关于wince方面的了。
我记得我wince的旅程是从bootloader开始的,我觉得这是好的路线。为什么?因为bootloader是裸奔的,比OS简单很多,尤其是ADS 下的bootloader,几乎和以前的单片机程序没有多大的区别,只是ARM多了一些牛B的硬件,MMU和cache。还有bootloader几乎包含了ARM的所有硬件的运用代码,这样学完ARM bootloader之后,就可以对ARM的硬件有所了解了,这是驱动工程师的必备基础。到了bootloader最后,还有启动内核函数,这个就有意思了,一路看下去,会了解蛮多的基础,我觉得这方便并不难,只要学过单片机的人都能在较短时间内看懂的。我当时是看优龙的ADS bootloader的,不过后来PB环境的stepstone、eboot 我都看过。个人觉得ADS bootloader较容易懂,也可以使用仿真器,非常好用,推荐初学者看优龙的bootloader作为入门。尝试移植到自己的平台上就成功了。
我觉得bootloader要看三个月左右,慢慢体会,顺便看看MMU 、cache的原理,这样就会有很好的效果了。
三个月之后,就开始wince驱动旅程了。
首先,熟悉使用PB的开发环境,我推荐PB5.0,因为它很好操作,很直观,帮助文档也做的人性化。有些同志们一上来就想搞比较新的wince6.0,我个人认为这样未必会对我们有利,新的东西资料少,交流的人少,就会阻碍我们学习的进度。嘿嘿,只要买了开发板,PB的基础使用都会有的,至于更加高级的用法,会在以后慢慢体会到。
然后就开始流驱动了,掌握流驱动的写法:注册表啊,dirs啊,sources啊都要懂,市面上很少人写这么详细的教程,不过我们可以拿个驱动来看照着画葫芦就可以学会了。尝试写个GPIO驱动,并且用EVC或者VS2005写个C++ MFC程序写个应用来测试,嘿嘿,这样,我们就入门了。更加高级的流驱动方法,我博客中有介绍,只要到了一定程度,就会越来越多高级的技巧了。
再然后,就开始本机驱动了,LCD,键盘等都是这类驱动,学习这类驱动,一般是MDD+PDD结构,并且使用大量的C++代码,嘿嘿,所以C++不行,很难提高wince驱动水平的,俺就在这关卡住了,要努力哦。还有调试本机驱动,使用KITL是上上之策,具体使用方法,请看我的博客吧。
最后掌握一些高级的东西吧,文件系统,电源管理等,这是最难调试的,如果掌握了流程,最好把代码搬到BSP下进行加信息调试即可。嘿嘿我正在这步努力中。
差不多就是这么多了,最后预祝大家都能快速学好!
附言:学习一样东西和专业蛮大关系的,不过计算机专业未必比电子专业好,因为电子专业也学了不少单片机,微机原理之类的课程,所以大家都不要妄自菲薄,各有优缺点的,我们完全可以克服的。