我的第乙個Linux開發板字元驅動程式

2021-07-28 08:31:37 字數 2015 閱讀 3243

手頭上有一塊colibri-imx7開發板,閒暇時間學習linux,想讓其跑起來,卻苦於網上根本就沒有現成的例程,怎麼辦呢?想起可以參考韋山東s3c2440的第乙個字元驅動程式,實現在colibri-imx7開發板跑起來!經過不斷的嘗試和同學熱忱的幫助,我的第乙個字元驅動程式終於跑起來了。作為乙個初學者,同時本人又健忘,所以記錄下筆記。

本人使用的是ubuntu16.04.4,colibri-imx7的交叉編譯工具是arm-linux-gnueabihf-gcc,都已經配置好了。以下就是字元驅動程式的操作步驟。

第一步,載入字元驅動程式模組

直接拷貝韋山東的first_drv.c和makefile檔案到ubuntu中,修改檔案最終如下:

first_drv.c檔案修改如下:

#include #include #include #include #include #include #include #include static int first_drv_open(struct inode *inode, struct file *file)

static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)

static struct file_operations first_drv_fops = ;

static int first_drv_init(void)

static void first_drv_exit(void)

module_init(first_drv_init);

module_exit(first_drv_exit);

module_license("gpl");

makefile檔案修改如下:

export arch=arm

export cross_compile=arm-linux-gnueabihf-

kern_dir = /home/tom/work/colibri-imx7/linux-toradex

all:

make -c $(kern_dir) m=`pwd` modules

clean:

make -c $(kern_dir) m=`pwd` modules clean

rm -rf modules.order

obj-m += first_drv.o

在makefile檔案中增加了export...,路徑要對應好linux sdk實際存放的路徑,然後make下,生成first_drv.ko檔案

將first_drv.ko移到colibri-imx7開發板中,載入模組,執行命令

insmod first_drv.ko

然後cat /proc/devices檢視一下,發現主裝置號為111的first_drv字元型裝置

第二步,

測試字元驅動程式模組

直接拷貝韋山東的firstdrvtest.c檔案到ubuntu中,

firstdrvtest.c修改後如下:

#include #include #include #include /* firstdrvtest on

* firstdrvtest off

*/int main(int argc, char **argv)

write(fd, &val, 4);

return 0;

}

編譯,輸入命令arm-linux-gnueabihf-gcc -o firstdrvtest firstdrvtest.c,生成

firstdrvtest 檔案,移到colibri-imx7開發板中

先建立裝置節點,在colibri-imx7開發板中輸入命令

mknod /dev/*** c 111 0 

然後在執行測試程式

./firstdvtest

執行結果如下:

第乙個小程式在開發板上執行成功he

1 編寫helloworld 在 usr local arm real2410下建立hello目錄 cd usr local arm real2410 mkdir hello 編寫如下 儲存在hello目錄下,檔名為hello.c include int main void 2 編譯hellowor...

我的第乙個程式

我的第乙個vc程式終於寫完了,花了2周,之前從沒有用vc寫過程式,也沒讀過什麼程式,只是在看書,看了幾百頁 mfc windows程式設計 正好有個機會,老師讓寫個vc程式,就試著寫了。程式的功能是不同地方的access的更新的記錄整合到一台機子上的access中,支援斷網自動連線,用的是socke...

我的第乙個部落格

我是乙個有點脫離時代的年輕人,沒有iphone,不玩微博,沒有崇拜的明星,不是任何人的粉絲。前幾天我的乙個領導告訴我,應該多總結,可以開個微博,把記錄的東西時不時拿出來複習一下,慢慢就會積累出很多財富。所以我開了第乙個部落格,當然遠不如微博那麼新潮。我想感謝我的這位領導,在我的職業生涯中,他是我的領...