光学的部分前几天已经发过一个帖子。如果感兴趣大家可以看看。
&|n*&@fF UF,T 这个帖子想跟大家交流一下硬件和嵌入式的一些学习心得(这部分知识对于光学工程师不是必备的,
学习可对整机系统集成有帮助)。
!xj >~7 sFC1PdSk4T 嵌入式学习要循序渐进,对于初学者。我走了不少弯路,最后还是从最简单的学起。51到AVR到ARM。要从51(典型芯片89C51芯片内有4KB EEPROM,若片内ROM不够用,也需扩展片外ROM。)入手,是因他很简单,管角功能十分简单,寄存器(中断、计时、
电子沟)十分少,内部总线和时钟拓扑
结构很清晰。可以帮助建立起初步的硬件概念,如果学习过c语言,看过51芯片手册,恰恰身边有一块开发板,马上就可以动手写程序。认识51要最为重要的是要认识开发板上的一些外围硬件,步进电机、移位寄存锁存器、温度
传感器、蜂鸣器、EEPROM等等(了解他们最为直接的方法就是看硬件手册),这个过程中可以学习到pwm波(驱动步进电机和蜂鸣器)、ad和da转换(蜂鸣器)和一些接口时序(IIC、SPI等)。写一些简单的键盘扫描(去抖动)、液晶面板驱动、这种简单的驱动程序。学习51的过程收获很多,首先对时序有了清晰的认识,对驱动有了深刻的了解。任何系统(win、Linux)都要建立在可靠的、简单、高效的底层驱动基础上。51和外围电路的这种交互程序就可以认为是驱动。把驱动封装成统一的接口(api)交给系统然后由系统分配给每个程序进行应用,这样可以减少冲突和代码重复。
,y:q]PR e7]IEBbX2O AVR(88芯片)的学习主要是为ARM学习做准备,AVR的管脚功能和ARM的十分像,管脚可以定义输出还是输入,数字还是
模拟,带不带上拉和下拉电阻。对AVR的学习可以止步于此。
v:JFUn} K~x G+Kh 终于到了ARM。主要涉及两种芯片STM32(Cortex-M3内核未来和顶替ARM7内核)和s3c2440(ARM9内核)。第一次看stm32的
芯片手册,会让你头皮发麻。好几百页的英文实在是让你受不了。好在现在
资料比丰富,可以绕过手册看中文的
教程。遇到疑问可以看原版手册。通读手册,主要了解,指令集(精简指令集还是ARM指令集)、总线结构(核心和外设都在总线上交互数据)、片内资源、片上外设、时钟锁相环(为核心和外设提供各种时钟时序)等等。之后可以用指令集编写一些简单的小驱动,驱动外部器件(如led等)。由于ARM芯片结构比较复杂内部外设丰富,所以芯片涉及到的驱动会比较多。如果用ARM开发硬件系统每一次都要从新写一遍底层驱动是很不现实和费时的事。所以一般的芯片公司都会针对自己的产品开发了相应的固件库,stm32有一个3.5版本的固件,固件已经集成了所有片上资源的简单驱动。如果已经了解了指令集和用指令集编程的方法就可以直接看固件了,固件里面的东西更通俗易懂,省去查找相应寄存器控制指令的麻烦。有了固件就可以做系统移植了,stm32核心频率比较低48m所以只能跑uc-os2小系统,可以移植玩玩。如果感兴趣可以了解下uc-os2的任务调度,进程管理等功能比较有意思。
e%wbUr]c2 o1GWcxu*\ s3c2440(ARM9)学到这之后更多的是偏
软件的东西。 s3c2440的主频和片上外设足以应对现在主流的嵌入系统(安卓、苹果和Linux)更为强大的是内置音频视频解码模块(手机硬解码能力的核心)。针对s3c2440芯片片硬件方面的学习可以参见stm32软件部分重要的是系统移植。移植Linux、移植ggc、移植驱动、移植文件系统、移植内存管理、移植gui。像搭积木。至此硬件部分已经完成,在深入研究已经是软将工程师的工作。
?9mWMf%t 希望大家都早日功得圆满,德艺双馨。 )K8JDP 我的qq:125795970 欢迎交流指正! >+#TsX{ http://www.opticsky.cn/read-htm-tid-65260.html(一点学习经验1) B,e@v2jO| http://www.opticsky.cn/read-htm-tid-66654.html(一点学习经验2) _L%/NXu, http://www.opticsky.cn/read-htm-tid-66659.html(一点学习经验3) &e cf5jFy `S;pn+5 [ 此帖被hhxxgg00在2013-04-02 17:03重新编辑 ]