Linux系統(tǒng)環(huán)境是照著友善之臂的教程搭建的
//Hello World驅(qū)動(dòng)程序源文件
1 #include <linux/miscdevice.h>
2 #include 3 #include 4 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 25 #include 26 #include 27 #include 28 29 #include 30 #include 31 #include 32 #include 33 #include //驅(qū)動(dòng)讀函數(shù) static int first_drv_open(struct inode *inode, struct file *file) { printk('Hello Drivern'); return 0; } //驅(qū)動(dòng)寫函數(shù) static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos) { printk('Hello Worldn'); return 0; } //定義file_operations結(jié)構(gòu)體 static struct file_operations first_drv_fops = { .owner = THIS_MODULE, //這是一個(gè)宏,推向編譯模塊時(shí)自動(dòng)創(chuàng)建的__this_module變量 .open = first_drv_open, .write = first_drv_write, }; //驅(qū)動(dòng)入口函數(shù) static int first_drv_init(void) { register_chrdev(111, 'first_drv', &first_drv_fops);//向內(nèi)核注冊(cè)驅(qū)動(dòng) return 0; } static void first_drv_exit(void) { unregister_chrdev(111, 'first_drv'); //卸載驅(qū)動(dòng) } module_init(first_drv_init);//定義一個(gè)結(jié)構(gòu)體,供內(nèi)核調(diào)用入口函數(shù)(first_drv_init--函數(shù)指針) module_exit(first_drv_exit);// Makefile文件 obj-m += first_drv.o #制定目標(biāo)名 KDIR = /opt/FriendlyARM/mini6410/linux/linux-2.6.38 #指定內(nèi)核路徑 all : make -C $(KDIR) M=$(PWD) modules CROSS_COMPILE=arm-linux- ARCH=arm clean : rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.bak *.order //測(cè)試驅(qū)動(dòng)的程序 //測(cè)試程序要用arm-linux-gcc來編譯 1 #include 2 3 #include 4 5 #include 6 7 #include 8 9 int main(int argc, char **argv) 10 { 11 int fd; 12 int val = 1; 13 fd = open('/dev/xxx', O_RDWR); 14 if (fd < 0) 15 { 16 printf('can't open!n'); 17 } 18 19 write(fd, &val, 4); 20 return 0; 21 } 加載內(nèi)核步驟 1、將編譯好的驅(qū)動(dòng)文件--first_drv.ko 和測(cè)試程序--firstdevtest 發(fā)送到Tiny6410上。 2、執(zhí)行命令 insmod first_drv.ko //加載內(nèi)核驅(qū)動(dòng) 使用 cat /proc/devices 命令查看加載的驅(qū)動(dòng) 3、執(zhí)行命令 mknod /dev/xxx c 111 0 //創(chuàng)建設(shè)備節(jié)點(diǎn) 在/dev目錄下生成xxx文件 主設(shè)備號(hào)為111 次設(shè)備號(hào)為0 4、執(zhí)行命令 ./firstdrvtest //執(zhí)行測(cè)試程序 出現(xiàn)Hello Wrold 成功!
上一篇:Tiny 6410的Linux學(xué)習(xí)總結(jié)!
下一篇:ARM核心及體系結(jié)構(gòu)的關(guān)系
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 基于STCH03、SRK1001和STUSB4761的、45W USB Type-C 供電適配器
- 適用于 DIN 導(dǎo)軌托架安裝的 110/220VAC 光隔離過零檢測(cè)器模塊,具有 3.3V 或 5V 輸出 - 非常適合 Arduino、ESP32/ESP8266
- LTC3531ES6-3.3 演示板、200mA 降壓-升壓同步轉(zhuǎn)換器
- 使用 FTDI Chip 的 FT232RQ 的參考設(shè)計(jì)
- 1.2V、1.8V DC轉(zhuǎn)DC多路輸出手機(jī)電源
- LTC3427 的典型應(yīng)用 - 采用 2mm x 2mm DFN 封裝的 500mA、1.25MHz 同步升壓型 DC/DC 轉(zhuǎn)換器
- 具有集成升壓和捕捉二極管的 LT3470HDDB 微功率降壓穩(wěn)壓器的典型應(yīng)用電路
- EVAL-AD7686CB,用于評(píng)估 AD7686CRM 16 位、500 K 高分辨率 ADC 的評(píng)估板
- 用于研究L6472的全集成的步進(jìn)電機(jī)驅(qū)動(dòng)器演示板
- AM2G-4824SH30Z 24V 2 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- ST 發(fā)布8x8區(qū)測(cè)距飛行時(shí)間傳感器,賦能應(yīng)用創(chuàng)新
- ITC對(duì)三星/LG/聯(lián)想等展開了調(diào)查 涉嫌侵犯半導(dǎo)體相關(guān)專利
- STM32F103啟動(dòng)文件
- 三代Moto Razr可折疊手機(jī)研發(fā)中 采用“星軌轉(zhuǎn)軸設(shè)計(jì)”
- 華為P50 Pro早期工程機(jī):拍照更強(qiáng)/外觀逼死強(qiáng)迫癥
- 蘋果已經(jīng)開始提供iPhone 13/12等Face ID單獨(dú)零部件維修服務(wù)
- 意法半導(dǎo)體推出單片天線匹配 IC,配合Bluetooth? LE SoC 和 STM32 無線MCU
- 臺(tái)灣半導(dǎo)體業(yè)未見復(fù)蘇跡象
- 如何用高壓差分探頭測(cè)量差分信號(hào)
- ROHM推出“PFC+反激控制參考設(shè)計(jì)”,助力實(shí)現(xiàn)更小巧的電源設(shè)計(jì)!
- 實(shí)現(xiàn)自我溝通和與世界溝通的新方式
- 上汽集團(tuán)將推10萬級(jí)半固態(tài)電池車型
- Bourns 推出其最小封裝尺寸 AEC-Q200 認(rèn)證車規(guī)級(jí)厚膜電阻
- 特斯拉大量使用激光雷達(dá)!
- 為何只有特斯拉采用PC芯片,而其他車企采用手機(jī)級(jí)車規(guī)芯片?
- 孚能科技:全固態(tài)電池進(jìn)入中試生產(chǎn)階段,計(jì)劃年底建成 0.2GWh 中試線
- 三星顯示獲梅賽德斯-邁巴赫S級(jí)48英寸OLED屏幕訂單
- Clearmotion全主動(dòng)懸掛系統(tǒng)將搭載保時(shí)捷,蔚來ET9已應(yīng)用
- R-SARC上車國產(chǎn)車型 京西智行讓智能底盤科技平權(quán)
- AI賦能制造業(yè) 詳解聯(lián)想系人工智能領(lǐng)域投資策略
- 亞馬遜將超越蘋果成為全球第一家1萬億美元市值公司
- 科技圈大佬評(píng)疫苗事件!劉強(qiáng)東:至少該判無期不得假釋
- 中興復(fù)蘇:國內(nèi)重啟5G測(cè)試,海外合作提速
- HTC手機(jī)業(yè)務(wù)失色 “手機(jī)+VR” 雙主業(yè)能否力挽狂瀾?
- OIL-6DPlus全自動(dòng)紅外分光測(cè)油儀介紹
- 全自動(dòng)紅外測(cè)油儀檢測(cè)結(jié)果的5個(gè)影響因素
- 全自動(dòng)紅外測(cè)油儀的選型方法
- 示波器入門使用方法,初學(xué)者必看
- 利用近場(chǎng)探頭和頻譜儀查找EMI輻射問題
- 【新人求教】高手們有99年國賽B題數(shù)字式工頻有效值多用表的資料么?
- 可預(yù)置的8位計(jì)數(shù)器程序的主要部分分析
- 女電子工程師的耳環(huán)(很有創(chuàng)意)
- 內(nèi)核編程與驅(qū)動(dòng)編程有什么不同?
- 求最便宜的單片機(jī)
- 剛?cè)胧謑aunchpad MSP430FR6989 簡(jiǎn)單介紹下~
- 2018年1月版主芯幣及實(shí)物禮品獎(jiǎng)勵(lì)公告
- 請(qǐng)教AD7528數(shù)模轉(zhuǎn)換芯片的使用方法
- XP下,并口可以實(shí)現(xiàn)0.1ms精度的外部觸發(fā)嗎?
- 留住身邊的美景,2015年春天