我一直对内核编程和嵌入式系统领域很感兴趣。
有没有好的教程(加上易于获取的硬件),可以帮助我开始涉足这方面的内容?
类似编写驱动程序的套件,其配有良好的文档且价格实惠?
谢谢!
我一直对内核编程和嵌入式系统领域很感兴趣。
有没有好的教程(加上易于获取的硬件),可以帮助我开始涉足这方面的内容?
类似编写驱动程序的套件,其配有良好的文档且价格实惠?
谢谢!
如果您完全是新手,我建议您不要从硬件开发开始,而是去学习一些“纯软件”内核模块,例如 proc 文件/sysfs 或者更复杂的例子如文件系统/网络开发。建议您在 uml/vmware/virtualbox 等虚拟机上进行开发,这样即使出现崩溃也不会对您的电脑造成太大的影响。对于嵌入式开发,您可以选择一个小型 ARM 开发套件或小型 Via C3/C4 机器,或者任何旧的 PC,您可以在上面使用自制的 USB/PCI/其他设备。
一个好的开始地方可能是 Kernelnewbies.org - 它有很多链接和有用的内核开发信息,还介绍了适合初学者的易于实现的任务列表。
一些需要阅读的书籍:
深入理解 Linux 内核 - 详细描述了内核子系统的设计,是一个非常好的参考书。
Linux 设备驱动程序 - 更像是教程,带有很多示例代码,重点在于让您入门并解释了 Linux 内核的关键方面,介绍了构建过程和内核模块的基础知识。
Linux 内核模块编程指南 - 一些更加入门级别的材料。
正如之前所建议的那样,查看 Linux 代码总是一个好主意,特别是因为 Linux 内核 API 经常发生变化... LXR 通过提供非常好的浏览界面来帮助您进行查看 - lxr.linux.no
为了了解内核构建过程,可以参考这个链接:同时请查看内核源代码的文档目录!对于嵌入式Linux开发,你可以在任何地方购买到的简单Linksys WRT54G路由器本身就是一个开发平台http://en.wikipedia.org/wiki/Linksys_WRT54G_series:
WRT54G以其发布固件源代码以满足GNU GPL的义务而著称。这使得程序员可以修改固件以更改或添加设备功能。几个第三方固件项目为WRT54G提供了增强固件。
我完全是内核编程的新手 :) 我决定购买两本书《Linux程序开发:带练习指南》和《编写Linux设备驱动程序:带练习指南》。它们写得非常清晰,并为进一步学习提供了良好的基础。
需要准备的一些事情:
Linksys NSLU2是一个低成本的方式,可以让你使用真正的嵌入式系统,并具有添加外围设备的USB端口。任何一个无线接入点都可以使用,参见OpenWrt兼容性页面。请注意,你在商店里找到的Linksys WRT54G的当前型号不能再使用Linux:它们的RAM和Flash更少,以降低成本。Cisco/Linksys现在在WRT54G上使用vxWorks,具有较小的内存占用。
如果你真的想深入了解,嵌入式CPU评估套件的价格从几百美元开始。除非你需要职业工作或咨询合同,否则我建议不要在这方面花费金钱。