Re: [問題] 怎麼用raspberry pi學kernel or driver

看板LinuxDev作者 (環島旅行ing)時間10年前 (2014/04/22 14:29), 10年前編輯推噓2(200)
留言2則, 2人參與, 最新討論串4/5 (看更多)
如果是要學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://www.ptt.cc/bbs/LinuxDev/M.1398148199.A.0E5.html ※ 編輯: onlywig (114.37.18.39), 05/10/2014 01:10:10

05/10 16:04, , 1F
看到分享了 推一個~
05/10 16:04, 1F

07/27 09:14, , 2F
很受用
07/27 09:14, 2F
文章代碼(AID): #1JLWnd3b (LinuxDev)
文章代碼(AID): #1JLWnd3b (LinuxDev)