作者onlywig (环岛旅行ing)
看板LinuxDev
标题Re: [问题] 怎麽用raspberry pi学kernel or driver
时间Tue Apr 22 14:29:55 2014
如果是要学embedded linux kernel,
我觉得beaglebone black会比较适合,
TI这部份做的很完整.
Rpi毕竟还是有很多东西是close source,
不过并不是无法解的~
目前人在公司 我晚点下班可以分享它的
bootloader , kernel ,toolchain source code上来.
5/10更新
1.u-boot:
https://github.com/gonzoua/u-boot-pi.git
2.kernel:
https://github.com/raspberrypi/linux.git
3.toolchain:
https://github.com/raspberrypi/tools.git
※ 引述《shihyu (shihyu)》之铭言:
: ※ 引述《jimmytzeng (jimmytseng)》之铭言:
: : 看来你是想透过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)
: _________________________________________________________________________
: 目前尝试cross compile 编译出hello.ko
: 可是放到板子上出现下面错误
: pi@raspberrypi:~$ sudo insmod hello.ko
: Error: could not insert module hello.ko: Invalid module format
: 我装的是Raspbian 最新版本 kernel 是 3.10.25+
: pi@raspberrypi:~$ uname -r
: 3.10.25+
: 我下载 https://github.com/raspberrypi/linux Makefile Linux 3.10.34
: 这样 3.10.34 跟 3.10.25+ 差异是造成Invalid module format 原因吗?
: 因为我网站kernel source code 只看到3.10.34 没有 3.10.25
: 那我.config 是从板子下载config.gz 设定後编译这样应该不是这问题
: 请问这我应该怎麽解决Invalid module format 问题
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.220.235
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1398148199.A.0E5.html
※ 编辑: onlywig (114.37.18.39), 05/10/2014 01:10:10
1F:推 wgst88w:看到分享了 推一个~ 05/10 16:04
2F:推 yamasaki07:很受用 07/27 09:14