前面虛擬機安裝ubuntu12.04已經完成,按照之前的方法安裝交叉編譯環境也很順利,要寫能在板子上運行的驅動程序,必須要編譯內核,首先下載內核。
使用git命令下載似乎不是很好使,https://github.com/Digilent/linux-digilent/releases,我下載的是3.3的那個。
1:解壓源碼:
tar -xvzf linux-digilent-3.3.0-digilent-12.07-zed-beta.tar.gz
如果不編譯內核,直接在makefile直接將目錄指向這裏是要報錯的。因爲有些.h .o文件需要編譯過後纔有。
2.配置內核源碼
在arch/arm/configs/目錄下有這個配置文件 digilent_zed_defconfig
make ARCH=arm digilent_zed_defconfig
3編譯Linux內核
make ARCH=arm
編譯過程在arch/arm/boot目錄下生成Image和zImage文件
4編寫helloworld.c和Makefile
helloworld.c
Makefile
可以看到helloworld.c和pc機運行的驅動程序時完全一樣的,而Makefile有一點不一樣,就是這裏的kernel路徑就是我們解壓後的路徑,然後還有ARCH=arm
5make
make通過了,之前就沒有通過,這裏還有一個疑問待解決,就是上面只是編譯了內核,生成了Image和zImage文件,上面時候還需要安裝內核模塊呢?這裏還有待搞清楚。
ls看一下生成的文件
看到生成了helloworld.ko文件,拷貝到U盤裏面,拷貝到zedboard自帶的迷你linux系統下。
6測試
啓動完系統後
插上U盤,掛載到/opt目錄下
fdisk -l
mount /dev/sda1 /opt/
cd /opt/
insmod helloworld.ko
測試結果:
運行完畢。