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

Linux-2.6.39在Tiny6410上的移植 - 外設驅動移植

發布者:DelightfulGaze最新更新時間:2024-09-20 來源: cnblogs關鍵字:Linux-2  6  Tiny6410 手機看文章 掃描二維碼
隨時隨地手機看文章

Linux內核版本號:linux 2.6.39


交叉編譯工具:arm-linux-gcc 4.5.1


Linux內核下載:www.kernel.org


開發板:友善之臂Tiny6410


LCD:友善之臂S70


一、移植LED驅動


打開arch/arm/mach-s3c64xx/mach-mini6410.c添加下列代碼


 1 static struct gpio_led tiny6410_gpio_led[] = {

 2     [0] = {

 3         .name = 'led1',              //設備名

 4         .gpio = S3C64XX_GPK(4),      //GPK4  

 5         .active_low = 1,             //低電平點亮

 6         .default_state = LEDS_GPIO_DEFSTATE_ON,        //系統啟動后默認為打開

 7     },

 8     [1] = {

 9         .name = 'led2',

10         .gpio = S3C64XX_GPK(5),

11         .active_low = 1,

12         .default_state = LEDS_GPIO_DEFSTATE_OFF,       //系統啟動后默認關閉

13     },

14     [2] = {

15         .name = 'led3',

16         .gpio = S3C64XX_GPK(6),

17         .active_low = 1,

18         .default_state = LEDS_GPIO_DEFSTATE_ON,

19     },

20     [3] = {

21         .name = 'led4',

22         .gpio = S3C64XX_GPK(7),

23         .active_low = 1,

24         .default_state = LEDS_GPIO_DEFSTATE_OFF,

25     },

26 };

27 

28 static struct gpio_led_platform_data tiny6410_leds_data = {

29     .num_leds = ARRAY_SIZE(tiny6410_gpio_led),

30     .leds = &tiny6410_gpio_led,

31 };

32 

33 static struct platform_device tiny6410_device_leds = {

34     .name = 'leds-gpio',

35     .id = -1,

36     .dev = {

37         .platform_data = &tiny6410_leds_data,

38     },

39 };


在mini6410_devices中添加tiny6410_device_leds,系統啟動時將自動注冊LED平臺設備:


1 static struct platform_device *mini6410_devices[] __initdata = {

2     ...

3     &tiny6410_device_leds,

4 };

執行make menuconfig修改內核配置,添加對LED設備的支持:


Device Drivers  ---> 


│ │    [*] LED Support  --->  


        │ │ [*] LED Class Support 

        │ │ *** LED drivers *** 

        │ │ <*> LED Support for GPIO connected LEDs 

        │ │ [*] Platform device bindings for GPIO LEDs


編譯并燒寫內核,啟動開發板可以看到第一、第三個LED被點亮。


編寫應用程序控制LED:


系統LED設備名為每個LED設備創建了一個節點文件夾,位于/sys/devices/platform/leds-gpio/leds/目錄下,對設備文件夾里面的brightness 文件寫0或寫非0即可對LED進行操作。


 1 #include

 2 #include

 3 #include

 4 #include

 5 #include

 6 #include

 7 

 8 

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

10 {

11     int fd = 0;

12     char path[64] = '/sys/devices/platform/leds-gpio/leds/';

13     

14     if(argc != 3)

15     {

16         printf('format error!n');

17         return -1;

18     }

19     

20     strcat(path,argv[1]);

21     strcat(path,'/brightness');

22     

23     printf('%sn',path);

24     fd = open(path,O_RDWR);

25     if(fd == -1)

26     {

27         printf('open file failure!n');

28         return -1;

29     }

30     if(atoi(argv[2]))

31         write(fd,'1',1);

32     else

33         write(fd,'0',1);

34     

35     close(fd);

36     return 0;

37 }


二、按鍵驅動移植


在arch/arm/mach-s3c64xx/mach-mini6410.c添加下列代碼:


 1 static struct gpio_keys_button tiny6410_gpio_keys[] = {

 2     [0] = {

 3         .code            = KEY_F1,        //鍵值

 4         .type            = EV_KEY,        //按鍵輸入類型

 5         .gpio            = S3C64XX_GPN(0),

 6         .active_low        = 1,           //低電平表示按下

 7         .wakeup            = 0,

 8         .debounce_interval    = 5, /* ms */    //延時消抖

 9         .desc            = 'Button 1',

10     },

11     [1] = {

12         .code            = KEY_F2,

13         .type            = EV_KEY,

14         .gpio            = S3C64XX_GPN(1),

15         .active_low        = 1,

16         .wakeup            = 0,

17         .debounce_interval    = 5, /* ms */

18         .desc            = 'Button 2',

19     },

20     [2] = {

21         .code            = KEY_F3,

22         .type            = EV_KEY,

23         .gpio            = S3C64XX_GPN(2),

24         .active_low        = 1,

25         .wakeup            = 0,

26         .debounce_interval    = 5, /* ms */

27         .desc            = 'Button 3',

28     },

29     [3] = {

30         .code            = KEY_F4,

31         .type            = EV_KEY,

32         .gpio            = S3C64XX_GPN(3),

33         .active_low        = 1,

34         .wakeup            = 0,

35         .debounce_interval    = 5, /* ms */

36         .desc            = 'Button 4',

37     },

38     

39 };

40 

41 static struct gpio_keys_platform_data tiny6410_key_data = {

42     .buttons = &tiny6410_gpio_keys,

43     .nbuttons = ARRAY_SIZE(tiny6410_gpio_keys),

44 };

45 

46 static struct platform_device tiny6410_device_keys = {

47     .name = 'gpio-keys',

48     .id = -1,

49     .dev = {

50         .platform_data = &tiny6410_key_data,

51     },

52 };


在mini6410_devices中添加tiny6410_device_keys:


1 static struct platform_device *mini6410_devices[] __initdata = {

2     ....

3     &tiny6410_device_leds,

4     &tiny6410_device_keys,

5 };

執行make menuconfig修改內核配置,添加對LED設備的支持:


Device Drivers  ---> 


 │ │        Input device support  ---> 


        │ │    [*]   Keyboards  ---> 

        │ │    <*>   GPIO Buttons 

同時在Input device support里面添加event interface的支持,在/dev/下面就能生成一個event設備文件:


Device Drivers  ---> 


│ │        Input device support  ---> 


        │ │    <*>   Event interface   


編譯并燒寫內核,啟動開發板可以在/dev/目錄下生成了event0設備文件,對按鍵驅動進行簡單的測試:


執行hexdump /dev/event0


每次按下按鍵可以看到如下所示按鍵信息,表明按鍵是工作正常的。


1 /dev # hexdump event0

2 0000000 034d 0000 0e3b 000c 0001 003b 0001 0000

3 0000010 034d 0000 0e4c 000c 0000 0000 0000 0000

4 0000020 034d 0000 cd5f 000e 0001 003b 0000 0000

5 0000030 034d 0000 cd6b 000e 0000 0000 0000 0000

編寫應用程序測試按鍵驅動:


按鍵驅動為輸入子系統,應用程序中需要對event進行循環檢測看系統有沒有上報輸入事件,按鍵的輸入事件類型為EV_KEY,鍵值分別問KEY_F1、KEY_F2、KEY_F3、KEY_F4,數值為1表示按鍵按下為0表示按鍵釋放。


 1 #include

 2 #include

 3 #include

 4 #include

 5 #include

 6 #include

 7 

 8 int main(void)

 9 {

10     int fd = 0;

11     struct input_event event_key;

12     int count = 0;

13     

14     fd = open('/dev/event0',O_RDONLY);

15     if(fd == -1)

16     {

17         printf('open file failedn');

18         return -1;

19     }

20     

21     while(1)

22     {

23         count = read(fd,&event_key,sizeof(struct input_event));

24         if(count < 0)

25         {

26             printf('read failedn');

27             break;

28         }

29         if(event_key.type == EV_KEY)

[1] [2]
關鍵字:Linux-2  6  Tiny6410 引用地址:Linux-2.6.39在Tiny6410上的移植 - 外設驅動移植

上一篇:應用程序調用tslib出現segmentation fault
下一篇:Linux-2.6.39在Tiny6410上的移植

推薦閱讀最新更新時間:2025-06-07 23:44

中國工業機器人銷量占全球約39.2%的市場份額
  2020年中國工業機器人銷量將從2018年,2019年兩年的負增長,再次轉入正增長的情況。2020年年度,中國工業機器人總量將達到15.66萬臺,同比2019年將實現4.5%左右的正增長。      2016年-2020年全球工業機器人銷量(數據來自睿工業)   中國依舊保持全球最大的工業機器人銷量市場,占全球約39.2%的市場份額。   (1)受到疫情影響,機器人應用市場恰逢蘋果iphone12新品發布,大量產品備貨,消費市場從2018年的低迷期轉入短暫的復蘇期。   包括fanuc,ABB,kuka,安川多家機器人在2020年下半年,多款機型都進入缺貨階段。   (2)新能源汽車市場,在國家多項政
[機器人]
提升N卡安全性!英偉達390.65版驅動發布:性能無影響
最近英特爾處理器的Meltdown(熔斷)和Spectre(崩潰)漏洞成了科技界的頭條新聞,熱度一點也不亞于今年的CES大會。 近日,安全人員已經確認了漏洞共有三種變體,分別是變體1(CVE-2017-5753)、變體2(CVE-2017-5715)——崩潰,變體3(CVE-2017-5754)——熔斷。 目前,三種變體只對處理器造成了影響,在顯卡方面還沒有相關案例。近日,英偉達為了預防變體對顯卡造成影響,發布了新版(GeForce 390.65)顯卡驅動。 此前有爆料稱在電腦更新漏洞補丁后會對處理器性能造成一定損失,而本次英偉達推出的顯卡驅動是否會對顯卡性能造成影響引起了玩家們的高度關注。 據此,國外一家科技媒體
[半導體設計/制造]
中興前三季度財報:凈利39.05億 5G是新方向
? ? 10月30日消息,中興通訊近日發布2017年前三季度業績報告。報告顯示,公司前三季度營收為765.80億元,同比增長7.01%;歸屬于上市公司普通股股東的凈利潤為39.05億元,較上年同期增長36.58%。公司第三季度經營活動現金凈流入10.36億元。   報告顯示,中興通訊前三季度研發投入91.97億元,研發強度達12%。中興通訊在5G、物聯網、芯片等創新領域的持續大強度投入,正帶領公司快速取得多項重大技術突破,發布中國自主研發的首顆NB-IoT安全物聯網芯片、業界首款T級別5G承載旗艦平臺、業界首款基于光波導技術的超大容量交叉平臺、在美國日本發布折疊智能手機中興天機Axon M、成功通過中移5G承載SPN原型設備實驗
[手機便攜]
瑞芯微年度旗艦芯RK3399正式發布:高性能+高擴展+全能芯
? ? ? 繼RK3288 之后,瑞芯微新一代旗艦芯RK3399 今天在香港正式發布。 與前一代旗艦RK3288 相比,最新的旗艦芯RK3399 不管是從規格上,還是定位上都全面再提升一個檔次。該芯片具備高性能、高擴展應用特點。目前為Rockchip產品線中性能最強的芯片,硬件規格在行業處領先地位。 頂級配置行業領先 新一代的RK3399CPU采用big.LITTLE大小核架構,雙Cortex-A72大核+四Cortex-A53小核結構。對整數、浮點、內存等作了大幅優化,在整體性能、功耗及核心面積三個方面都具革命性提升。 GPU采用四核ARM新一代高端圖像處理器Mali-T860,集成更多帶寬壓縮技術:如智能迭加
[手機便攜]
一條1394總線最多支持的相機個數
文章來源于網絡,更多信息請點擊: 1394相機 : http://www.lustervision.com/mvmz-pointgrey/ 一塊IEEE-1394 OHCI卡構成一個1394 總線. 有四個因素會影響同一個1394總線上支持的相機的個數: 1. 同步通道的個數 理論上,1394a一個總線上所能支持的最大的通道個數為16個,但是目前沒有任何一個適配器能夠支持16個通道。基于TI 芯片的適配器能夠最多支持4個同步DMA通道,基于Lucent/Agere 芯片的適配器支持8個DMA通道。Agere/LSI 基于 1394b 卡, 支持8個 DMA通道, Point Grey Research提供相關的產品。
[嵌入式]
機器人教程4:紅外循跡及LM339模塊
1、概述 2、紅外光電管的工作原理 3 檢測電路設計 4、LM339模塊及紅外對管模塊介紹 5、紅外循跡程序 1、概述 紅外探測傳感器由于發出的是紅外光,常見光對它的干擾極小,且由于價格便宜,而被廣泛應用于智能小車的循線、避障以及其它機器人中物料檢測、灰度檢測等系統中,圖1是利用紅外光電管做傳感器模塊。 圖1 紅外傳感器 市面上的紅外傳感器一般有兩種,一種是集發射和接收于一體的紅外對管,一種是發射管和接收管分立的的紅外管,分別如下圖2和圖3所示。 圖2 發射接收一體的紅外對管 圖3分離的紅外傳感器 2、紅外光電管的工作原理 上圖中,紅外光電管有兩種,一種是無色透明的LED,此為發射管,它
[單片機]
機器人教程4:紅外循跡及LM3<font color='red'>39</font>模塊
MAX16839 高壓、高亮度LED線性驅動
概述   MAX16839可編程電流調節器工作在5V至40V輸入電壓范圍,具有漏極開路、恒定吸電流輸出,可提供100mA輸出驅動。MAX16839非常適合汽車應用以及需要通用線性LED驅動器的應用。該器件可直接承受高達45V的汽車拋負載。   內置調整管減少了外部元件數量,同時提供±5%輸出電流精度。MAX16839包括調光輸入,用來控制輸出電流的占空比,允許較寬的LED調光范圍。此外,調光輸入還可用作輸出電流的通/斷控制。在多串LED應用中,調光輸入同步LED驅動電流的開啟,確保LED串上具有相同亮度。   其它功能包括熱保護和LED開路故障檢測輸出。在多串LED應用中,所有FLTS引腳連接在一起,當檢測到其中一串LED出現開
[電源管理]
MAX168<font color='red'>39</font> 高壓、高亮度LED線性<font color='red'>驅動</font>器
基于A3972的步進電機驅動模塊設計
  引言    步進電機 作為執行器件,廣泛用于各種類型的自動控制系統。它是一種將離散的電脈沖信號轉化成相應的角位移或線位移的電磁機械裝置。它輸出的角位移與輸入的脈沖數成正比、轉速與脈沖頻率成正比,是一種輸出與輸入脈沖對應的增量驅動元件。然而由于其步距角較大,往往滿足不了某些高精密定位、精密加工等方面的要求,因此實現細分驅動是減小步距角、提高步進分辨率、增加電機運行平穩性的一種行之有效的方法。   在實際應用中,往往要求電機運轉過程中在轉速滿足要求的同時,力矩要足夠大,而電機的轉速與力矩恰是一對矛盾體,轉速相同時電機的起動力矩要小于運行力矩,所以實際應用中要根據電機負載力矩來確定啟動頻率與運行頻率。   本文將給出一種基于
[工業控制]
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 天等县| 金门县| 宜川县| 长海县| 鱼台县| 平顶山市| 峨边| 浦北县| 宝山区| 织金县| 衡阳县| 景泰县| 巴楚县| 辰溪县| 昌江| 塘沽区| 八宿县| 天气| 吉林市| 蓬莱市| 子长县| 托克逊县| 龙州县| 慈溪市| 莱芜市| 措美县| 宁津县| 望奎县| 博乐市| 中方县| 防城港市| 吐鲁番市| 晋城| 沙洋县| 任丘市| 平顺县| 阿拉尔市| 河间市| 永川市| 西城区| 浦北县|