Embedded System 修課紀錄(6)
前幾個禮拜進度是 Linux driver 的教學實驗,但是呢連續兩週研究室要提報論文啊~這可是身為碩士生的最重要時程呢。加上助教課程中不斷說明 Device driver 的用意和原理,實際運作的部份鮮少提及,課程講義中有給兩個 Source Code 一個是簡單的掛載並輸出簡易資訊,另一個是控制周邊的 LED 設備。
論文提報(5/5)後,一定要認真看 LED driver 的原始碼啊!畢竟還有加分題要處理....
編譯撰寫好的 Linux driver
上述是簡單的初始化以及結束元件之操作,以下快速的將之前的操作帶過
將 Driver 掛載到 Kernel
有以下指令可以操作掛載行為,分別是:insmod(掛載), rmmod(移除掛載),如果要檢查已經掛載的狀態可以用 ismod
Reference
[1.] opencsl.openfoundry.org::Lab 8 device driver
論文提報(5/5)後,一定要認真看 LED driver 的原始碼啊!畢竟還有加分題要處理....
編譯撰寫好的 Linux driver
- 以下是 Hello World 原始碼
#include#include MODULE_LICENSE("Dual BSD/GPL"); static int __init hello_init(void) { printk(KERN_ALERT "Hello World!\n"); return 0; } static void __exit hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world!!\n"); } module_init(hello_init); module_exit(hello_exit);
上述是簡單的初始化以及結束元件之操作,以下快速的將之前的操作帶過
// setup toolchain cd ~ mkdir lab7_project tar -zxvf arm-linux-toolchainbin.4.0.2.tar.gz export PATH=/home/sn/lab7_project/opt/microtime/pro/devkit/arm/pxa270/gcc-4.0.2-glibc-2.3.3/arm-unknown-linux- gnu/bin:$PATH // patch up kernel source tar -zxvf mt-linux-2.6.15.3.tar.gz cp linux-2.6.15.3-creator-pxa270.patch /home/sn/lab7_project/microtime/pro/devkit/lsp/create-pxa270/ cd ~/lab7/microtime/pro/devkit/lsp/create-pxa270/ patch -p0 < linux-2.6.15.3-creator-pxa270.patch //make image cd linux-2.6.15.3 make mrproper make creator_pxa270_defconfig make clean make
- 編譯 Hello module 原始碼
make產生出來的 hello.ko 是要用來掛載的 Linux driver
將 Driver 掛載到 Kernel
有以下指令可以操作掛載行為,分別是:insmod(掛載), rmmod(移除掛載),如果要檢查已經掛載的狀態可以用 ismod
- 接著在 ARM pxa270 操作
// 掛載 storage device mount -t vfat /dev/sda1 /mnt/sda1 cd /mnt/sda1 // 掛載 linux driver insmod hello.ko // 移除掛載 linux driver rmmod hello.ko因為板子空間有限,所以後續許多操作或是程式碼盡量在 usb 裝置上操作囉。如果檔案比較小的話,可以透過之前所說的 tftp 來做下載的行為操作,指令如下所示:
tftp –g –r hello.ko server_ip_address值得注意的是,掛載和移除都會有訊息出現,因為程式碼有簡單得 output 喔。
Reference
[1.] opencsl.openfoundry.org::Lab 8 device driver
Comments
Post a Comment