本帖最后由 eehome 于 2013-1-5 09:52 编辑
嵌入式linux学习方法总结
嵌入式linux的学习现在挺流行的,没办法,谁叫这东西份量重呢,研发者工资高呢,但掌握嵌入Linux的开发与移植现在非常流行。各种学习文章与培训班,充斥书店、街头。笔者,也上了路,经历漫长的摸索,终于一日开窍,但的确糟蹋了很多金钱与时间。作为穷人,现写下自己的感受,供好学者参考。
第一要点:实验重于看书(多编码,少翻书)
一定要首先搭建X86实验环境。用旧计算机(周末电脑城抛售存货,有新的),搭建一套实验环境。
Host主机:一台PC机(能够跑redhat linux ,看文档就可以了,配网卡与软驱)。
Target目标机一块旧PC主板,配一张网卡和一个软驱,
电源。
附件:交叉网线,交叉串口线。 够了,不会超过三千元(已经很满足了)。
软件全部到电脑城/网站下载。 先不管什么 arm ppc mips ,以后看看文档吧。
第二重点:GNU C编译
在PC上安装redhat linux包括开发工具。熟悉linux配置命令。
练习 linux 的 C 语言编程,多个程序的编译工程制作。
无聊的话,将C语言教材的例程,编译十几个,熟悉GNU 编译器。
包括gcc make ld objdump ar 等 GNU toolkit
第三重点:real
time linux 内核编程/加载到目标板运行。
1. 下载 rt-linux ,或uclinux 或什么非 redhat的linux 源码,一定是包括,编译工程 makefile, 并且for x86 PC的。
2. 修改和配置程序,将 rtlinux的 标准 console口 改为串口,不是vga与键盘。
3. 在redhat linux 环境下,编译 这个 embedded linux内核。 用mkboot的这样程序(或按代 码中工具,) 将编译好的内核执行文件 拷贝定位软盘引导区。
4. 用这张软盘引导在目标PC主板 。在PC主机的 串口终端上配置 PC主板目标机。 效果同 redhat linux terminal console一样。以后越来越难,坚持。
第四个重点:编译跑通网卡的驱动程序
1. 下载编译 你的网卡驱动源码
2. 跑通 主机与目标机的 网络通讯。 . 不要太动头想, ping 通就是了。
第五个重点:用tftp下载执行文件从 PC主机 到 目标机运行。
第六个重点:GNU GDB 远程在线调试(网口调试)
第七个重点:实时内核学习/修改
照文章/书 分析调试/破坏 内核的源码。
主要是 调度/消息/存储/文件/进程/线程/互斥等。单独跑跑,了解内核功能就是了。
第八个重点:TCP/IP的学习。
下载一个 简单的web server (http server)学习理解,并编译加载运行。
将 PC主板目标机 看作网站服务器,然后在PC主机的网络浏难器中 访问这个 web server.
有兴趣,把你的照片加载到目标机的 html网页中。
第九个重点:网卡驱动程序分析
了解PCI总线原理,尝试独立写点网卡驱动程序,过滤以太报文的处理。跟踪处理特殊报文。
第十个重点:USB和FLASH文件系统练习。(可以跳过)
可以分析修改 USB与FLASH文件系统源码。
一定要分析源码,上网查 FLASH的型号。
第十一个重点:路由器实验。
分析zebra方面的源码,再买一张网卡。
尝试分析 NAT RIP等协议,将你的PC板目标机,变成一台简单的路由器。
以后的实验 需要根据 行业来,例如,mini-GUI (图形编程),或 DVR (硬盘录象机),IP Vedio WebTV 服务器。可以玩好几年,当然最好找工作前,有针对地做实验。
一句话,动手修改编码,不要只看看。