娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月15日(星期六)

2019年02月15日 | ARM開發之雜項設備的編寫----以LED驅動為例

發布者:Changsheng520 來源: eefocus關鍵字:ARM  雜項設備  LED驅動 手機看文章 掃描二維碼
隨時隨地手機看文章

平臺:S5PV210


雜項設備的好處:


有了字符型設備后,為什么要用雜項設備?


1.節省主設備號,所有雜項設備的主設備號都是10


2.雜項設備開發起來比字符型設備簡單




開發步驟:


1.定義1個雜項設備


2.定義雜項設備的文件操作集


3.申請物理內存


4.獲取相應的虛擬地址


5.注冊混雜設備


6.示例代碼




1.定義雜項設備



static struct miscdevice led_misc = {

.minor = MISC_DYNAMIC_MINOR, 

.name = "misc_led",

.fops = &fops,

};

如上代碼:其中.minor代表動態生成次設備號,不用改。

.name表示這個混雜設備文件結點的名字,用戶程序用open在 /dev 目錄下打開文件的就是 .name 的值。


.fops代表雜項設備的文件操作集




2.定義文件操作集


static struct file_operations fops =

{

.owner = THIS_MODULE,

.open = misc_open,

        .write = misc_write,

};

文件操作集表示了雜項設備用了哪些系統調用,如上代碼就是用了 open 和 write。

第一個參數不用變,.owner一定寫THIS_MODULE,用于初始化。




3.申請物理內存區


static struct resource *res = NULL;

res = request_mem_region(0xE0200280,8,"LED");

上面表示,控制LED的物理地址為0XE0200280開始,8個字節,并把這段內存起名為LED



4.獲取相應虛擬地址。


操作系統操作的都是虛擬地址。


static unsigned int va = NULL;

va = ioremap(0xE02000A0,8);

va就是物理地址映射的虛擬地址的起始地址。



5.注冊雜項設備


int ret;

ret = misc_register(&led_misc);

if(ret < 0)

{

printk("misc register is error\n");

return -1;

}

misc_register()的參數就是第一步定義的雜項設備變量。




6.示例代碼(LED驅動


#include

#include

#include

#include

#include

#include

#include

#include

#include

 

static struct resource* res = NULL;

static unsigned int *GPJ2CON_VA = NULL;

static unsigned int *GPJ2DAT_VA = NULL;

static char wbuf[1];

 

static ssize_t misc_write(struct file *f, const char __user*buf,

size_t len, loff_t *t)

{

copy_from_user(wbuf,buf,len);

if(wbuf[0] == '0')

{

*GPJ2DAT_VA &=~0xf;

}

 

if(wbuf[0] == '1')

{

*GPJ2DAT_VA &=~0xf;

*GPJ2DAT_VA |=0xf;

}

return 0;

}

 

/*2.定義文件操作集*/

static struct file_operations fops={

.owner = THIS_MODULE,

.write = misc_write,

};

 

/*1.定義misc雜項設備變量*/

static struct miscdevice misc_led={

.minor = MISC_DYNAMIC_MINOR,

.name = "led_misc",

.fops = &fops,

};

 

static int __init misc_init(void)

{

int ret;

/*3.申請物理內存*/

res = request_mem_region(0xe0200280,8,"LED");

if(res == NULL)

{

printk("failed to request_mem_region\n");

goto failed_request_mem;

}

 

/*4.獲取虛擬地址*/

GPJ2CON_VA = ioremap(0xe0200280,8);

if(GPJ2CON_VA == NULL)

{

printk("failed to ioremap\n");

goto failed_ioremap;

}

GPJ2DAT_VA = GPJ2CON_VA + 1;

 

/*5注冊雜項設備*/

ret = misc_register(&misc_led);

if(ret<0)

{

printk("failed to register misc\n");

goto failed_register;

}

printk("init completed\n");

return 0;

 

failed_register:

iounmap(GPJ2CON_VA);

failed_ioremap:

release_mem_region(0xe0200280,8);

failed_request_mem:

return -1;

}

 

static void __exit misc_exit(void)

{

iounmap(GPJ2CON_VA);

release_mem_region(0xe0200280,8);

misc_deregister(&misc_led);

}

 

module_init(misc_init);

module_exit(misc_exit);

MODULE_LICENSE("GPL");


用戶程序測試代碼:

#include

#include

 

int main()

{

char buf[1];

buf[0]='0';

 

int fd = open("/dev/led_misc",O_WRONLY);

if(fd<0)

{

perror("failed to open");

return -1;

}

while(1)

{

write(fd,buf,1);

sleep(1);

buf[0] = '1';

write(fd,buf,1);

sleep(1);

buf[0] = '0';

}

return 0;

}

關鍵字:ARM  雜項設備  LED驅動 引用地址:ARM開發之雜項設備的編寫----以LED驅動為例

上一篇:ARM驅動開發之ioctl函數的使用
下一篇:ARM開發之用linux通用GPIO接口宏函數操作IO口

推薦閱讀

機器人控制系統是機器人的大腦,是決定機器人功能和性能的主要因素。工業機器人控制技術的主要任務就是控制工業機器人在工作空間中的運動位置、姿態、軌跡、操作順序及動作的時間等,具有編程簡單、軟件菜單操作、友好的人機交互界面、在線操作提示和使用方便等特點。目前機器人的應用工程由單臺機器人工作站向機器人生產線發展,機器人控制器的聯網技術使...
我國海岸線漫長,沿海經濟發達,臨近大陸和島嶼的海域遼闊,蘊藏著豐富的資源。隨著海洋強國和“一帶一路”戰略的實施,海上交通運輸、漁業養殖、油氣開采、科學研究、旅游和軍事等活動日益頻繁。然而,我國沿海地區以及瀕臨海域的氣候多變,氣象條件和海陸環境復雜,經常發生臺風暴雨、大風、風暴潮、大霧和海上強對流天氣等海洋氣象災害。目前人們對這些...
1 設計思想 汽車儀表是司機與汽車之間進行信息交流的窗口和界面,對于提高汽車儀表使用壽命、安全和經濟行駛有著積極而重要的作用。本設計采用PIC16C72A單片微型計算機作為儀表的核心,汽車原有傳感器無需更換,傳感器的輸出信號通過信號調理電路后送人CPU,經CPU處理后的信號采用時分技術通過VFD顯示器顯示出來。實時顯示車速、發動機轉速、水溫、油...
本文著重介紹基于機器人操作系統ROS的系統。文中將介紹ROS以及它在無人駕駛場景中的優缺點,并討論如何在ROS的基礎上提升無人駕駛系統的可靠性、通信性能和安全性。 在上篇解析光學雷達(LiDAR)技術(《》)之后,本文著重介紹基于機器人操作系統ROS的無人駕駛系統。文中將介紹ROS以及它在無人駕駛場景中的優缺點,并討論如何在ROS的基礎上提升無人駕...

史海拾趣

問答坊 | AI 解惑

汽車電子,中國能做什么?

今一輛汽車的價值中, 電子設備要占25-30%,按此比例計算, 明年600萬輛國產汽車(約1萬億元產值)上的電子設備 將達到2500-3000億元的市場規模,“發展汽車電子刻不容緩”。 這是信息產業部電子信息產品管理司副司長丁文武在10月18日的 “2005 ...…

查看全部問答∨

請教07年A題音頻信號分析儀的前端電路

本帖最后由 paulhyde 于 2014-9-15 09:46 編輯 我的畢業設計是這個題目,對于前端電路的程控放大完全不知道該如何下手 請高手指點一下啊? 程控放大應該怎么實現啊?  …

查看全部問答∨

我的wince下的fopen_s為何不能用

我的wince下的fopen_s為何不能用?錯誤提示 C3861: \'fopen_s\': identifier not found。請大俠們指教…

查看全部問答∨

Slib_ClearScr()--44b0/2440的清顯示緩沖區函數

Slib_ClearScr() {     int i,j;     for(j=0;j…

查看全部問答∨

stm32f107vcISP問題請教?

                                 ISP時用USART1還是USART2,還是兩個都可以呢?…

查看全部問答∨

雙核的PC機能不能安裝 Vxworks?

難道必須要用p4的pc機才能安裝Vxworks?…

查看全部問答∨

PIC12F615的一個小問題

在下試用pic12F615點亮GP5接的一個led。卻始終點不亮,找不到原因,非常苦惱。希望有識之士,指點一下。謝過 #include void initIO(void) {   PSA=0;      TRISIO5=0;    } void main() { &n ...…

查看全部問答∨

G2553的中文資料兩份+官方的源代碼

昨天MSP430 LaunchPad到手。。。去網上下了一堆資料(2G。。。。)。。。早上起來看了看。。又MSP430G2553的中文資料。。看看論壇里沒有,,,就先發出來。。其他的資料等我整理好再發…

查看全部問答∨

是因為隔離示波器高頻CMRR不高的原因嗎?

各位好~ 我用隔離示波器TPS2024觀察一個信號,這個信號疊加在一個高頻的共模電壓上。該共模電壓以30k~40k的頻率在+30V和-30V之間高速跳動。 但是我從示波器觀察到的卻是該信號疊加在一個0.7Hz 150mVp-p的正弦波上。 我懷疑該正弦波是不是因為由 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 汉川市| 虎林市| 耒阳市| 吴旗县| 鄂温| 安图县| 江油市| 湾仔区| 黑龙江省| 宁乡县| 安西县| 乌兰浩特市| 大渡口区| 平安县| 赤峰市| 洛阳市| 永顺县| 平塘县| 天水市| 绥化市| 平阳县| 仙游县| 龙泉市| 华安县| 长沙市| 和平县| 金堂县| 宝兴县| 宜良县| 娄底市| 从化市| 京山县| 昌邑市| 郎溪县| 无为县| 丹东市| 邯郸县| 韩城市| 灌阳县| 隆化县| 潼南县|