copy_from_user(&val,buf,count);
if(val==1)
{
gpfdata|=((1<<4)|(1<<5)|(1<<6)); //點燈
}
else
{
gpfdata &=~ ((1<<4)|(1<<5)|(1<<6)); //滅燈
}
return 0;
}
測試程序:
int main()
{
int fd;
int val=1;
fd=open(('/dev/xyz',O_RDWR);
if(fd<0)
{
printf('cant't open');
}
if(argc!=2)
{
printf('Usage:n');
printf('%s
}
if(strcmp(argc[1],on)==0) //如果第二個參數等于on的話
{
val=1;
}
else
{
val=0;
}
write(fd,&val,4);
return 0;
}
寫驅動程序的時候要:1.寫框架。2.看原理圖 3.看手冊 3.寫代碼(在驅動程序中,不能直接使用物理地址,要ioremap,使用虛擬地址)
主設備號作用是找到fileoperations。次設備號是留給我們自己用的。
int minor=MINOR(inode->i_rdev);次設備號代表的意思有我們自己決定。
3、讀取應用程序傳送給設備文件的數據和回送應用程序請求的數據;
應用程序、庫、內核、驅動程序的關系
1)應用程序調用一系列函數庫,通過對文件的操作完成一系列功能:
應用程序以文件形式訪問各種硬件設備(linux特有的抽象方式,把所有的硬件訪問抽象為對文件的讀寫、設置)
函數庫:
部分函數無需內核的支持,由庫函數內部通過代碼實現,直接完成功能
部分函數涉及到硬件操作或內核的支持,由內核完成對應功能,我們稱其為系統調用
2)內核處理系統調用,根據設備文件類型、主設備號、從設備號(后面會講解),調用設備驅動程序;
3)設備驅動直接與硬件通信;
4、檢測和處理設備出現的錯誤。
上一篇:s3c2440串口裸板驅動(使用fifo)
下一篇:Linux設備驅動中的異步通知與異步I/O
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- STM32F103+CH340串口開發板
- 霍爾元件測試板
- L78L09AC 高輸出電流短路保護正壓穩壓器的典型應用
- LT1307BCS8 單節電池至 3.3V 升壓轉換器的典型應用電路
- ESP32-DisplayBoard
- 使用 ON Semiconductor 的 CS8391 的參考設計
- LTC3630IMSE 12V 至 65V 輸入至 12V 輸出、100mA 輸入電流限制的典型應用電路
- 使用 Analog Devices 的 ADM3062EBRMZ-R7 的參考設計
- AM6TW-4812SZ 12V 6 瓦雙輸出 DC/DC 轉換器的典型應用
- 基于powerSTEP01的大功率步進電機驅動器擴展板,用于STM32 Nucleo
- 安全在任何時候都是第一要素,你的嵌入式設計也是!誠邀參加英飛凌 OPTIGA™ Trust M 安全防御大揭秘!
- 是德科技有獎問答活動之一,A4WP無線充電測試的示波器方案,答題闖關贏好禮!
- 瑞薩電子最新觸控微控制器R7F0C208入門套件免費申請,參與申請還能贏好禮!
- 參與TE有獎活動, 解鎖智能電表難題啦!
- 【MPS有獎分享】便攜式多功能電工臺的核“芯”功能測試與結構設計
- 免費申請測評 | RDK X3機器人開發套件
- 勇闖泰克絕密黑科技實驗室!
- dsPIC33 “EV”系列搶鮮知,讀專題,贏豪禮
- 有獎直播:恩智浦基于RT06F的人臉識別技術解決方案
- 快來應援吧!投票選出你最愛的TI培訓課程