文档介绍:1 嵌入式 LINUX 开发入门 2 华恒对社区的贡献华恒对社区的贡献本文适用于对嵌入式系统没有概念和经验, 渴望进入嵌入式系统开发的领域, 但又觉得系统太复杂,要学的东西太多, 感觉完全无从学起,无从下手的初级开发人员 3 简述简述 1 、嵌入式系统必须以实践入门,所以要学****必须购买嵌入式开发系统(开发板或实验箱),否则永远只能停留在纸上谈兵的阶段。 2 、学****嵌入式 LINUX 开发, 必须注意学****的方式和方法!就把这个嵌入式开发板当作一台 WINDOWS PC ,就像用 VC 一样在上面做开发(只是开发模式由原来完全的本地开发变成宿主机--目标板的模式了)。绝对不要去盲目阅读 LINUX 内核分析之类的书籍,对于初学者一两年内根本用不到这个!就像在 WINDOWS 下开发永远不要关心 WINDOWS 内核一个道理,不要因为 LINUX 内核是源代码开放的,就非要去研究 LINUX 内核。 90% 的开发人员关心的还是“外设接口驱动+应用程序(如 GUI ) ”,所以对于初学者,进入嵌入式 LINUX 开发的殿堂,必须迈过如下两个台阶: ?嵌入式基本 C 程序开发及调试方法?基本驱动的概念和开发调试方法 4 嵌入式开发上手学****大纲嵌入式开发上手学****大纲?安装配置一台 REDHAT 9 的 LINUX PC 机。宿主机配置( TFTP/NFS ) 参见: nese/embedlinux- ?通过终端软件 熟悉一下嵌入式系统的基本操作,否则你根本就不会操作板子! ?通过 NFS mount 的方式,学****用 C 语言开发最基本的嵌入式应用程序,并熟悉嵌入式的调试方法。( HHARM9-EDU 实验 1 ) ?熟悉掌握嵌入式 LINUX 下的编译方法和技巧,并进一步掌握调试复杂嵌入式应用程序的方法和技巧。( HHARM9-EDU 实验 2 、 3 ) ?通过 NFS mount 的方式,学****如何使用一个基本的嵌入式 LINUX 下的设备驱动( insmod 驱动+测试用应用程序),并尝试着改改看如何发生变化和如何调试。( HHARM9-EDU 实验 6 中断、 14GPIO/key 、 AD/DA 、 I2C 等) ?进一步深入学****其它的接口技术。( HHARM9-EDU 其它剩余实验) 【注意】做到这里您一次都不需要烧写 FLASH ! 5 Tips-- 再谈学****的方式方法 Tips -- 再谈学****的方式方法?早早安装一台 REDHAT 9 LINUX 的 PC , 下面这些必须熟悉了解(因为它将是我们日后开发最佳的测试伙伴): /ncftp/tar(xzf/czf)/vi/grep/find/NFS/tftp 等常用操作;熟悉了解 LINUX 系统的文件目录构成( / bin/sbin/etc/home/dev/usr 等的意义,系统搜索路径 PATH< 例如当前路径和 WINDOWS 不同,不在 LINUX 的搜索路径里面, 必须指定./ 才行> 因为嵌入式 LINUX 上和这个完全一样) (关于这些 LINUX 常用知识请参见 HHARM2410 产品技术手册附录 B ,那里没有无用的抄袭,而是一线研发人员实际的总结) ?大致了解 LINUX 内核源代码的文件目录的构成( 主要就是 drivers 目录,它是我们最常打交道的驱动的目录) 。因为我们对于 LINUX 下驱动的开发最重要的工作学****的方法就是: “搜索+模仿”。大家都知道 LINUX 是开放源代码的, 但其实很多人并没有意识到这个对于我们实际的开发有什么意义。就像面前摆了一座宝库,但却不知如何去寻宝。我们寻宝的手段就是搜索。对于驱动, LINUX 开放的代码( drivers 目录+ google 网络) 里面提供了无数常见接口芯片的驱动代码或模板( 如串口 、 framebuffer 驱动等) ,我们首先要知道这些文件在哪个目录下,找到后就是大致读一下,找出与自己实际硬件的差异,以此为基础修修改改即可。而修改时一个重要的手段就是模仿现有的代码! 6 Tips-- 再谈学****的方式方法 Tips -- 再谈学****的方式方法?在嵌入式板卡上做任何稍微复杂些的工作,心里没底的话,就一定养成先在 REDHAT LINUX PC 上测试的好****惯。无论你做 GPRS/CDMA/PPP/ADSL 拨号还是做 USB 无线网卡驱动,还是做 SAMBA/VPN/SNMP 等协议软件,都先在 REDHAT LINUX 上配置好,测试通过有了感觉之后再到嵌入式上试, 因为 ARMLINUX 跟 REDHAT LINUX 对于我们开发人员而言几乎没有任何区别!切忌冒进! ?不要试图去通读 CPU 的 man