驅(qū)動(dòng)代碼:
#include <linux/module.h>
#include #include #include #include #include #include #include #include #define DEVICE_NAME 'beep3' #define BEEP_MAGIC 'k' #define BEEP_START_CMD _IO (BEEP_MAGIC, 1) #define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2) static void beep3_stop(void) { printk('in the beep3_stop!!n'); s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT); gpio_set_value(S5PV210_GPD0(0), 0); } static void beep3_start(void) { printk('in the beep3_start!!n'); s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT); gpio_set_value(S5PV210_GPD0(0), 1); } static long beep3_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) { printk('in the beep3_ioctl!!n'); switch ( cmd ) { case BEEP_START_CMD: { printk('in the start_cmd!!n'); beep3_start(); break; } case BEEP_STOP_CMD: { printk('in the stop_cmd!!n'); beep3_stop(); break; } default: { break; } } return 0; } static struct file_operations beep3_fops = { .owner = THIS_MODULE, .unlocked_ioctl = beep3_ioctl, }; static struct miscdevice beep3_misc_dev = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &beep3_fops, }; static int __init beep3_dev_init(void) { int ret; ret = gpio_request(S5PV210_GPD0(0), DEVICE_NAME); if (ret) { printk('request GPIO %d failedn',S5PV210_GPD0(0)); return ret; } s3c_gpio_cfgpin(S5PV210_GPD0(0), S3C_GPIO_OUTPUT); gpio_set_value(S5PV210_GPD0(0), 0); ret = misc_register(&beep3_misc_dev); printk(DEVICE_NAME 'tinitializedn'); return ret; } static void __exit beep3_dev_exit(void) { beep3_stop(); misc_deregister(&beep3_misc_dev); } module_init(beep3_dev_init); module_exit(beep3_dev_exit); MODULE_LICENSE('GPL'); MODULE_AUTHOR('mhb@SEU'); MODULE_DESCRIPTION('S5PV210 beep Driver'); 測(cè)試實(shí)例: #include #include #include #include #include #include #include #define BEEP_MAGIC 'k' #define BEEP_START_CMD _IO (BEEP_MAGIC, 1) #define BEEP_STOP_CMD _IO (BEEP_MAGIC, 2) int main(int argc ,char* argv[]) { int m_fd=0;// m_fd = open('/dev/beep3', O_RDONLY); ioctl(m_fd, BEEP_STOP_CMD); while(1) { printf('enter any key to start !!n'); getchar(); ioctl(m_fd, BEEP_START_CMD); printf('start success!!n'); printf('enter any key to stop !!n'); getchar(); ioctl(m_fd, BEEP_STOP_CMD); } close(m_fd); return 0; }
上一篇:喜羊羊系列【設(shè)備 - 驅(qū)動(dòng)器 編譯進(jìn)內(nèi)核】
下一篇:如何將驅(qū)動(dòng)加入內(nèi)核
推薦閱讀最新更新時(shí)間:2025-04-21 12:49






- 熱門資源推薦
- 熱門放大器推薦
-
Linux p7zip源碼安裝包
-
鳥哥的linux私房菜:基礎(chǔ)學(xué)習(xí)篇 (第四版)
-
Applied Computational Physics (Joseph F. Boudreau, Eric S. Swanson) 應(yīng)用計(jì)算物理,900頁(yè)
-
網(wǎng)絡(luò)可編程性與自動(dòng)化_第二版(英文版)
-
CAN總線輕松入門與實(shí)踐
-
通過(guò) Verilog HDL 進(jìn)行設(shè)計(jì)
-
SIMOTION 運(yùn)動(dòng)控制器基礎(chǔ)應(yīng)用
-
EMC電磁屏蔽材料設(shè)計(jì)者指南
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- Treelapse
- 帶時(shí)鐘的觸摸調(diào)光臺(tái)燈
- 基于 CCG3PA 的電源適配器應(yīng)用,用于 CYPD3174-24LQXQ USB Type-C 端口控制器,帶光電耦合器反饋控制
- re68
- 使用 ADM3062EACPZ-R7 3 至 5.5 V、±12 kV IEC ESD 保護(hù)、500 kbps RS-485 收發(fā)器的典型應(yīng)用
- LTC5540 600MHz 至 1.3GHz 高動(dòng)態(tài)范圍下變頻混頻器的典型應(yīng)用
- LTC3245IDE 降壓-升壓型電荷泵穩(wěn)壓 5V 低噪聲輸出的典型應(yīng)用電路
- 使用 Analog Devices 的 LTC3727IG-1 的參考設(shè)計(jì)
- 使用 LT6202 將 ±10V 雙極性信號(hào)轉(zhuǎn)換為 0V 至 5V 輸入信號(hào)到 LTC2367CMS-16 的典型應(yīng)用
- NCP139AFCT110T2GEVB:NCP139 WLCSP-6 評(píng)估板 1V1
- 2025上海車展即將啟幕,高通攜手汽車生態(tài)伙伴帶來(lái)駕駛輔助和艙駕創(chuàng)新成果
- 2025Medtec預(yù)登記全面啟動(dòng) 全鏈創(chuàng)新技術(shù)引爆國(guó)產(chǎn)替代及出海浪潮
- MEMS傳感器振動(dòng)檢測(cè)技術(shù):現(xiàn)狀、挑戰(zhàn)與解決方案
- MEMS傳感器振動(dòng)應(yīng)用技術(shù)綜述:原理、方法與發(fā)展趨勢(shì)
- 從零入門:工業(yè)信號(hào)調(diào)節(jié)器的類型(模擬數(shù)字)與隔離器(光耦磁耦)對(duì)比
- 高精度工業(yè)信號(hào)調(diào)節(jié)器:低噪聲放大器與校準(zhǔn)電路的實(shí)現(xiàn)
- 工業(yè)4.0下的信號(hào)調(diào)節(jié)器,物聯(lián)網(wǎng)、邊緣計(jì)算與遠(yuǎn)程監(jiān)控的融合
- 伊士曼中間膜“黑科技”玩轉(zhuǎn)舒適智駕
- 逐點(diǎn)半導(dǎo)體與PerfDog達(dá)成合作,為游戲性能測(cè)評(píng)提供多維度數(shù)據(jù)支撐
- 破解汽車與工業(yè)等應(yīng)用新挑戰(zhàn),TDK展示多傳感器融合與AI+發(fā)展趨勢(shì)
- 下載有禮|ADI 系統(tǒng)方案精選 (總輯)
- 多款TI Launch板免費(fèi)測(cè)評(píng)試用,趕緊來(lái)看看吧!
- 學(xué)習(xí)有禮,分享也有禮!跟著小梅哥,一起intel SoC FPGA走起!
- 將想法變成現(xiàn)實(shí),Maxim MAX32630FTHR創(chuàng)意設(shè)計(jì)大賽,重磅開啟!
- Microchip直播:?jiǎn)纹瑱C(jī)編程不再難, 利用MPLAB®代碼配置器(MCC)實(shí)現(xiàn)快速開發(fā)
- 觀看福祿克計(jì)量校準(zhǔn)視頻 參與調(diào)查問(wèn)卷好禮送!
- 報(bào)名抽取京東卡|2021慕尼黑華南電子展觀眾注冊(cè)進(jìn)行中
- 特斯拉:國(guó)內(nèi)國(guó)外需求旺盛,上海工廠正加班加點(diǎn)
- 奧迪中國(guó):或?qū)⒉捎萌A為自動(dòng)駕駛方案
- 長(zhǎng)安汽車:與華為、寧德時(shí)代合作打造的高端電動(dòng)車將發(fā)布
- STM32 PWM 輸出
- 蘋果昨晚都發(fā)了啥?AirTag來(lái)了,iMac多彩配色
- 武漢凡谷:公司客戶已成華為、愛立信、諾基亞的供應(yīng)商
- iPhone降低了售價(jià),蘋果降身價(jià)了
- SDP:郭臺(tái)銘早已出讓股份,廣州工廠運(yùn)營(yíng)與郭無(wú)關(guān)
- 盤點(diǎn):國(guó)內(nèi)外值得關(guān)注的15個(gè) RPA 廠商
- Galaxy Fold實(shí)測(cè):折疊屏幕到底好不好用呢?