欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Linux設備驅(qū)動程序點亮LED

Wildesbeast ? 來源:今日頭條 ? 作者:嵌入式在左C語言在 ? 2020-04-18 10:25 ? 次閱讀

本篇文章來學習嵌入式Linux驅(qū)動程序開發(fā)中的第一步——點亮led。

驅(qū)動程序開發(fā)的步驟主要分為以下幾個部分:

根據(jù)原理圖確定相關引腳;

查看芯片手冊(以我的板子來說就是三星平臺EXYNOS4412系列);

編寫驅(qū)動程序;

編寫用于測試的應用程序;

以上的驅(qū)動程序開發(fā)過程,不僅僅只是在Linux中,在所有的嵌入式軟件開發(fā)中,也基本都是遵循這套流程。

特別說明:第一個步驟和第二個步驟我將直接跳過(查看原理圖和芯片手冊),因為這兩者取決于我們的硬件平臺,大家可以根據(jù)具體的應用進行修改即可。重點放在第三個步驟和第四個步驟,也就是編寫驅(qū)動程序和測試程序。

下面進行詳細的講解

編寫驅(qū)動程序

(1)確認led所連接的引腳,led1、led2分別連接的引腳為EXYNOS4_GPD0(0)和EXYNOS4_GPD0(1),此處的EXYNOS4_GPD0(0)是一個宏,該宏是IO引腳的結(jié)構(gòu)描述,兩個led定義為一個數(shù)組的代碼如下:

(2)寫使用到的兩個gpio申請,且申請成功之后將他們配置為輸出模式,同時保持默認高電平,根據(jù)原理圖可知當?shù)碗娖綍rled打開,所以開機led默認關閉,代碼如下:

(3)對應上一步,寫釋放申請的gpio,代碼如下:

(4)寫led設備與文件操作相關的函數(shù)(在本例中主要是open()函數(shù)和ioctl()函數(shù)等),代碼如下:

open函數(shù)和release函數(shù)

ioctl函數(shù)

然后將實現(xiàn)的文件操作函數(shù)填充到file_operations結(jié)構(gòu)體中,如下:

由于在本例中不使用read()、write()和llseek()等函數(shù),所以可以不用寫這些文件操作函數(shù)的具體實現(xiàn)。

(5)寫模塊入口函數(shù)和模塊出口函數(shù),代碼如下:

在模塊入口函數(shù)中,主要完成注冊設備、設備初始化、將設備注冊到系統(tǒng)、創(chuàng)建設備節(jié)點以及申請gpio并初始化。

模塊入口函數(shù)——前半部分

模塊入口函數(shù)——后半部分

在模塊出口函數(shù)中,主要完成一些釋放工作,例如注銷設備、注銷設備節(jié)點、釋放gpio等。

模塊出口函數(shù)

最后修飾入口函數(shù)和出口函數(shù),以及模塊的許可證聲明即可:

編寫用于測試的應用程序

代碼如下:

實現(xiàn)的效果為:運行測試程序,輸入可執(zhí)行文件名,并輸入兩個控制參數(shù),第一個參數(shù)決定控制哪一個led,第二個參數(shù)決定是點亮led還是關閉led,如果輸入?yún)?shù)個數(shù)不等于3時不能控制點燈。

在文章結(jié)束部分作一些總結(jié):

對宏定義EXYNOS4_GPL2(0)的操作實際上就是對4412芯片管腳寄存器的操作;

上層程序員(包括驅(qū)動工程師)不用關心物理地址和虛擬地址具體是多少,只需要對一組宏定義操作,就是對4412內(nèi)部寄存器操作;

關于led管腳的申請、賦值以及配置所使用到的主要函數(shù)為: GPIO申請函數(shù)和賦值函數(shù)gpio_request – gpio_set_value()、三星平臺的GPIO配置函數(shù)s3c_gpio_cfgpin()、GPIO配置輸出模式的宏變量S3C_GPIO_OUTPUT。

通過對普通GPIO的操作,大家可以了解到,學習驅(qū)動的過程中,很大一部分時間實際上是用于熟悉庫函數(shù)的使用。其實無論什么驅(qū)動都沒有想象的那么難,一般性的方法都是先了解和掌握和對應驅(qū)動相關的庫函數(shù)。

最后在掌握驅(qū)動庫函數(shù)的基礎上,掌握Linux架構(gòu),驅(qū)動自然很容易寫出來或者很容易就移植成功,希望此篇文章可以幫助讀者初步進入嵌入式Linux設備驅(qū)動的世界。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23384

    瀏覽量

    663523
  • Linux
    +關注

    關注

    87

    文章

    11351

    瀏覽量

    210497
  • 驅(qū)動程序

    關注

    19

    文章

    849

    瀏覽量

    48234
收藏 人收藏

    評論

    相關推薦

    Linux驅(qū)動程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動程序程序員指南.pdf》資料免費下載
    發(fā)表于 11-22 15:53 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動程序</b><b class='flag-5'>程序</b>員指南

    pcie設備驅(qū)動程序安裝步驟

    PCIe(Peripheral Component Interconnect Express)是一種高速串行計算機擴展總線標準,用于計算機內(nèi)部硬件組件之間的連接。安裝PCIe設備驅(qū)動程序是確保硬件
    的頭像 發(fā)表于 11-13 10:32 ?1436次閱讀

    Wilink8 Linux Wi-Fi驅(qū)動程序R8.8版用戶指南

    電子發(fā)燒友網(wǎng)站提供《Wilink8 Linux Wi-Fi驅(qū)動程序R8.8版用戶指南.pdf》資料免費下載
    發(fā)表于 11-05 09:19 ?0次下載
    Wilink8 <b class='flag-5'>Linux</b> Wi-Fi<b class='flag-5'>驅(qū)動程序</b>R8.8版用戶指南

    用于bq275xx電量計的WinCE/Linux驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《用于bq275xx電量計的WinCE/Linux驅(qū)動程序.pdf》資料免費下載
    發(fā)表于 10-17 11:17 ?0次下載
    用于bq275xx電量計的WinCE/<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動程序</b>

    LSP 2.10 DaVinci Linux驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《LSP 2.10 DaVinci Linux驅(qū)動程序.pdf》資料免費下載
    發(fā)表于 10-09 09:30 ?0次下載
    LSP 2.10 DaVinci <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動程序</b>

    Linux設備驅(qū)動程序分類有哪些

    Linux設備驅(qū)動程序是操作系統(tǒng)與硬件設備之間的橋梁,負責實現(xiàn)硬件設備與操作系統(tǒng)之間的通信和控制。Lin
    的頭像 發(fā)表于 08-30 15:11 ?720次閱讀

    linux驅(qū)動程序如何加載進內(nèi)核

    Linux系統(tǒng)中,驅(qū)動程序是內(nèi)核與硬件設備之間的橋梁。它們允許內(nèi)核與硬件設備進行通信,從而實現(xiàn)對硬件設備的控制和管理。
    的頭像 發(fā)表于 08-30 15:02 ?604次閱讀

    linux驅(qū)動程序主要有哪些功能

    Linux驅(qū)動程序是操作系統(tǒng)與硬件設備之間進行通信的橋梁,負責實現(xiàn)硬件設備與操作系統(tǒng)之間的數(shù)據(jù)交換和控制。Linux
    的頭像 發(fā)表于 08-30 14:47 ?476次閱讀

    linux驅(qū)動程序的編譯方法是什么

    Linux驅(qū)動程序的編譯方法主要包括兩種: 與內(nèi)核一起編譯 和 編譯成獨立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 一、與內(nèi)核一起編譯 與內(nèi)核一起編譯意味著將驅(qū)動程序的源代碼直接集成到Linu
    的頭像 發(fā)表于 08-30 14:46 ?774次閱讀

    linux驅(qū)動程序的編譯方法有哪兩種

    Linux驅(qū)動程序的編譯方法主要可以歸納為兩種: 手動編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動編譯 。 1. 手動編譯 手動編譯驅(qū)動程序通常涉及直接使用GCC(GNU Compiler
    的頭像 發(fā)表于 08-30 14:39 ?919次閱讀

    linux驅(qū)動程序運行在什么空間

    Linux 驅(qū)動程序是操作系統(tǒng)的一部分,負責管理硬件設備與操作系統(tǒng)之間的交互。驅(qū)動程序運行在內(nèi)核空間(Kernel Space),這是操作系統(tǒng)的核心部分,與用戶空間(User Spac
    的頭像 發(fā)表于 08-30 14:37 ?538次閱讀

    虹科技術 全新Linux環(huán)境PCAN驅(qū)動程序發(fā)布!CAN/CAN FD通信體驗全面升級!

    全新8.17.0版本的PCAN-Linux驅(qū)動程序正式發(fā)布,專為CAN和CAN FD接口量身打造。無論是CAN 2.0 a/b還是CAN FD的PCAN硬件產(chǎn)品,都能在我們的新驅(qū)動下“馳騁自如
    的頭像 發(fā)表于 08-29 09:36 ?505次閱讀
    虹科技術 全新<b class='flag-5'>Linux</b>環(huán)境PCAN<b class='flag-5'>驅(qū)動程序</b>發(fā)布!CAN/CAN FD通信體驗全面升級!

    虹科技術 Linux環(huán)境再升級:PLIN驅(qū)動程序正式發(fā)布

    Linux驅(qū)動程序領域再添新成員,PLIN驅(qū)動程序現(xiàn)已正式發(fā)布。
    的頭像 發(fā)表于 06-28 13:34 ?417次閱讀
    虹科技術 <b class='flag-5'>Linux</b>環(huán)境再升級:PLIN<b class='flag-5'>驅(qū)動程序</b>正式發(fā)布

    全新Linux環(huán)境PCAN驅(qū)動程序發(fā)布!CAN/CAN FD通信體驗全面升級!

    全新8.17.0版本的PCAN-Linux驅(qū)動程序正式發(fā)布,專為CAN和CAN FD接口量身打造。無論是CAN 2.0 a/b還是CAN FD的PCAN硬件產(chǎn)品,都能在我們的新驅(qū)動下“馳騁自如
    的頭像 發(fā)表于 04-19 10:38 ?1064次閱讀

    怎么編寫Framebuffer驅(qū)動程序

    Framebuffer 驅(qū)動程序框架 分為上下兩層: fbmem.c:承上啟下 實現(xiàn)、注冊 file_operations 結(jié)構(gòu)體 把 APP 的調(diào)用向下轉(zhuǎn)發(fā)到具體的硬件驅(qū)動程序
    的頭像 發(fā)表于 03-22 09:13 ?628次閱讀
    怎么編寫Framebuffer<b class='flag-5'>驅(qū)動程序</b>