※ 引述《shihyu (shihyu)》之铭言:
: 我最近买块raspberry pi , 不过目前只会烧录image 到sd card
: 网络上找资料都偏应用程式, 不知道怎么用raspberry pi 学kernel or driver?
: 想请问一下应该要怎么学? 有相关资料可以参考?
: 谢谢
看来你是想透过raspberry pi去学embedded linux ?
那我推荐你几个步骤
1. 学会使用cross compile toolchains。用交叉编译出helloworld.ko,放在raspberry上加载此模组,有成功就代表你跨入第一步
2. 学会设定kernel的组态档(make config/menuconfig),并不是说去了解kernel每个设定是在干嘛,然后自行去挑选设定,
来达到kernel的最佳化,有能力这样干的人,不是狂热分子就是在卖产品的公司了,你要找的是,依造需求看哪个kernel版本
适合raspberry pi或BCM2835这个chip、看有没有高手分享raspberry的kernel组态档、你要写的driver,kernel有没有支援
或是说有没有把相关设定打开
3. 交叉编译kernel (编译一次时间满久的)
4. driver有很多种,透过linux提供的API内去驱动硬件也是driver,直接去读写硬件的register达到驱动硬件也是driver
推荐你先从bootloader(推荐u-boot)下手,因为从bootloader的code去了解怎样从基本I/O或是一些interface去驱动硬件
可以避免阅读有OS架构的driver来搞混你(此步骤请搭配硬件spec效果更好)
5. 再来就是透过linux的规范去写出在linux跑的driver,这就要看满大量的文件了,你可以从外接I2C或是GPIO的装置
开始下手,关于这个网络上也满多教学 (推荐去买个I2C接口的RTC回来写driver)