程式設計師的入門經典當然就是hello world程式了,我的第乙個實驗就是要搭建實驗環境和工具鏈,通過交叉編譯的方式,在上位機完成hello world驅動程式的編寫,最終在板子上執行。
最終搭建的平台如下,後期的通訊可以直接使用串列埠,就不需要hdmi輸出了:
我們在上位機編寫hello world的**:
[cpp]view plain
copy
#include
#include
#include
module_license("dual bsd/gpl"
);
static
inthello_init(
void
)
static
void
hello_exit(
void
)
module_init(hello_init);
module_exit(hello_exit);
相應的makefile**:
[plain]view plain
copy
ifneq ($(kernelrelease),)
obj-m := hello.o
else
kdir := /home/hcx/work/boards/rpi/kernel/linux-rpi-3.6.y
all:
make -c $(kdir) m=$(pwd) modules arch=arm cross_compile=/home/hcx/work/boards/rpi/kernel/rpitools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
endif
編譯完成後,我們通過u盤將hello.ko檔案拷貝到樹莓派中,然後通過insmod插入模組,結果如下:
樹莓派驅動框架
include file operations宣告 include module init module exit宣告 include init exit 巨集定義宣告 include class devise宣告 include copy from user 的標頭檔案 include 裝置號 d...
樹莓派驅動框架
檔名為pin4driver.c include file operations宣告 include module init module exit宣告 include init exit 巨集定義宣告 include class devise宣告 include copy from user 的標頭...
樹莓派字元驅動模板
include file operations宣告 include module init module exit宣告 include init exit巨集定義宣告 include class device宣告 include copy from user的標頭檔案 include 裝置號 dev...