学习嵌入式Linux-JZ2440-裸机程序总结
已有 771 次阅读2015-5-14 15:16
|个人分类:嵌入式Linux|系统分类:ARM|
嵌入式, 程序
学习嵌入式有两三个礼拜了,其实进度一般,一直停留在裸机阶段(既要上班实习,又要回到学校偶尔帮老师做做事,自己还要找时间学这个),以前有学过的同学告诉我,做那么几个裸机就可以跳过它了,然后去搞移植,搞驱动。我本来也是这么考虑的,但是最后还是没这么做,因为我觉着后面搞驱动对一些概念性的东西还是需要懂的,而讲裸机的时候正好可以学习一下。
其实裸机程序就是在搞单片机程序,没有什么区别。以前基本上都是在Keil下编程,先建立工程,选择芯片型号,然后添加启动代码,之后编写代码文件,最后编译,下载验证。而搞ARM裸机程序也是一样的,一开始没有进行选型,在Keil下面选型其实就是确定一个配置信息,告诉IDE可用的资源有哪些等等。而搞ARM裸机不需要的原因是因为需要知道关于芯片型号的不是IDE,而是程序员自己,自己要知道有什么资源可以用,寄存器的地址又是什么,怎么去操作,都要自己动手去写,这也是ARM裸机程序的难点所在。我是没有使用IDE的,因为我觉着这样亲力亲为可以学习到很多东西,而且对于程序的组织结构、运行顺序等等基本概念的理解有非常大的作用,而且对gcc的学习、对makefile的学习等等都可以对后续的学习打下坚实的基础。所以,我还是建议老老实实的自己去搞一下,如果非坚持去使用IDE做的话,那真心可以直接跳过裸机程序,因为那样将和开发单片机程序没啥区别了。
貌似在程序界,用来搞应用程序的时候一般第一个入门程序就会是Hello world程序,即打印一句Hello World。而搞单片机或者控制器程序,第一个程序一般都是操作GPIO点亮一个LED、识别按键。这些程序的代码量小但是程序结构完整,非常适合作为入门程序,让初学者对整个开发流程有完整的认识,同时学习到最基础的寄存器操作。记得当时学习51的时候,自己点亮第一个LED,后面又改成LED闪烁,再后面改成流水灯,再后面改成LED控制流水灯的快慢和方向…………就这样一点点的学习成长起来,后来搞MSP430应该说是最难的入手了,就拿着一块TI的小红板,然后对着User Guide,英文的哦,当时那个被虐的啊,真叫一个惨啊…………再后来老师让我学习STM32,虽说是ARM内核的,但是还是M内核的,偏向控制领域,STM32一搞就是两三年。接触ARM是在大四的时候才开始,之后又放下了。前阵子才又重新开始。搞第一个GPIO的时候还是挺顺利的,包括后面的,都得益于以前的单片机开发经验,学习了一些IDE编写头文件的方式,以及Project组织结构,在韦东山老师代码的基础上都做了自己的改动,能写成.h的就写一个.h和与之配套的.c,代码风格基本上延续了STM32时期从正点原子那里学到的东西。
搞裸机程序可以对硬件有一定的了解,也许对以后的移植会有帮助,我是这么认为的。下面的部分就到了移植UBoot,移植Linux两个大块了,看起来都是难啃的骨头,不过学习这个东西急躁不得,时间紧就更得慢慢来了,走马观花学不到什么东西,只是把视频看一遍,然后看看书,那样没太大的作用,就得自己多折腾折腾,折腾出来问题了,然后解决问题,在这个过程中自己慢慢的就进步了。
相信自己,加油!向更高层进发!