日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

如何使用Linux設(shè)備驅(qū)動(dòng)程序點(diǎn)亮LED

Wildesbeast ? 來源:今日頭條 ? 作者:嵌入式在左C語言在 ? 2020-04-18 10:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇文章來學(xué)習(xí)嵌入式Linux驅(qū)動(dòng)程序開發(fā)中的第一步——點(diǎn)亮led。

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

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

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

編寫驅(qū)動(dòng)程序;

編寫用于測(cè)試的應(yīng)用程序;

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

特別說明:第一個(gè)步驟和第二個(gè)步驟我將直接跳過(查看原理圖和芯片手冊(cè)),因?yàn)檫@兩者取決于我們的硬件平臺(tái),大家可以根據(jù)具體的應(yīng)用進(jìn)行修改即可。重點(diǎn)放在第三個(gè)步驟和第四個(gè)步驟,也就是編寫驅(qū)動(dòng)程序和測(cè)試程序。

下面進(jìn)行詳細(xì)的講解

編寫驅(qū)動(dòng)程序

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

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

(3)對(duì)應(yīng)上一步,寫釋放申請(qǐng)的gpio,代碼如下:

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

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

ioctl函數(shù)

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

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

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

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

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

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

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

模塊出口函數(shù)

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

編寫用于測(cè)試的應(yīng)用程序

代碼如下:

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

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

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

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

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

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

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

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

    關(guān)注

    244

    文章

    24731

    瀏覽量

    692646
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11822

    瀏覽量

    219602
  • 驅(qū)動(dòng)程序
    +關(guān)注

    關(guān)注

    19

    文章

    872

    瀏覽量

    50793
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在 Yocto 中集成由 HID 設(shè)備控制的 I2C 觸摸驅(qū)動(dòng)程序?

    我使用的是匯頂科技觸摸,它通過 hid-ft260 等 hid 設(shè)備連接到 imx 處理器。 如何在 Yocto 中集成由 HID 設(shè)備控制的 I2C 觸摸驅(qū)動(dòng)程序。目前,我正在 HID 設(shè)備
    發(fā)表于 04-23 07:22

    32g3 有適用于 linux 的 vr5510 驅(qū)動(dòng)程序嗎?

    HI 我正在運(yùn)行帶有linux_yocto映像的 s32g3 VNP-RDB3 板。 s32g3 有適用于 linux 的 vr5510 驅(qū)動(dòng)程序嗎? 我可以看到有支持驅(qū)動(dòng)程序http
    發(fā)表于 04-15 07:14

    【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核平臺(tái)抽線共和設(shè)備驅(qū)動(dòng)程序

    \"; vcc-supply = <&vdd_3v3>; wakeup-source; }; }; 設(shè)備驅(qū)動(dòng)程序和平臺(tái)抽象簡(jiǎn)介 LDM是Linux內(nèi)核
    發(fā)表于 02-03 21:57

    【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核開發(fā)基礎(chǔ)

    感謝電子發(fā)燒友論壇提供的《Linux設(shè)備驅(qū)動(dòng)開發(fā)(第2版)》閱讀機(jī)會(huì),測(cè)評(píng)將從Linux內(nèi)核開發(fā)基礎(chǔ)、Linux內(nèi)核平臺(tái)抽象和
    發(fā)表于 01-12 22:45

    Linux驅(qū)動(dòng)開發(fā)的必備知識(shí)

    驅(qū)動(dòng)框架進(jìn)行開發(fā)。 6、調(diào)試技能: 掌握內(nèi)核調(diào)試工具,如 KDB、KGDB、printk 等。 能夠分析內(nèi)核日志,定位驅(qū)動(dòng)程序中的問題。
    發(fā)表于 12-04 07:58

    【書籍評(píng)測(cè)活動(dòng)NO.67】成為硬核Linux開發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)》

    ——這便是《Linux 設(shè)備驅(qū)動(dòng)開發(fā)》。本書從基礎(chǔ)知識(shí)出發(fā),分專題透徹講解Linux環(huán)境下的設(shè)備驅(qū)動(dòng)
    發(fā)表于 11-17 17:52

    如何將 GPIO PWM 和 GPIO Capture 驅(qū)動(dòng)程序導(dǎo)入 Linux 內(nèi)核,實(shí)現(xiàn) PWM 輸出并檢測(cè)引腳的變化狀態(tài)?

    如何將 GPIO PWM 和 GPIO Capture 驅(qū)動(dòng)程序導(dǎo)入 Linux 內(nèi)核,實(shí)現(xiàn) PWM 輸出并檢測(cè)引腳的變化狀態(tài)
    發(fā)表于 08-20 08:20

    如何使 ML56-TK 驅(qū)動(dòng)程序適應(yīng) Linux 內(nèi)核?

    如何使 ML56-TK 驅(qū)動(dòng)程序適應(yīng) Linux 內(nèi)核
    發(fā)表于 08-20 07:57

    為FreeRTOS增加新的設(shè)備驅(qū)動(dòng)程序

    如果你正在使用FreeRTOS構(gòu)建嵌入式系統(tǒng),并且考慮添加新的設(shè)備驅(qū)動(dòng)程序,那么這篇文章很適合你。高效的設(shè)備集成不僅僅是讓設(shè)備功能正常運(yùn)行——更關(guān)乎模塊化、可靠性和安全性。
    的頭像 發(fā)表于 08-06 15:44 ?1136次閱讀
    為FreeRTOS增加新的<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)程序</b>

    【創(chuàng)龍TLT113-MiniEVM開發(fā)板試用體驗(yàn)】點(diǎn)亮LED

    源(3.3V),負(fù)極連接GPIO引腳。 點(diǎn)亮條件 :GPIO輸出低電平時(shí)形成電流通路(低電平驅(qū)動(dòng))或高電平驅(qū)動(dòng)(根據(jù)電路設(shè)計(jì))。 本開發(fā)板LED電路: 用戶
    發(fā)表于 08-05 21:36

    zephyr設(shè)備驅(qū)動(dòng)程序模型

    ? ? 1:Zephyr 內(nèi)核支持多種設(shè)備驅(qū)動(dòng)程序。驅(qū)動(dòng)程序是否可用取決于board 和驅(qū)動(dòng)程序。 Zephyr 設(shè)備模型為配置作為系統(tǒng)一部
    的頭像 發(fā)表于 07-29 10:34 ?865次閱讀
    zephyr<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動(dòng)程序</b>模型

    求助,關(guān)于55513 Linux驅(qū)動(dòng)程序問題求解

    ; 我們使用 linux 內(nèi)核 5.4 來構(gòu)建 fmac 驅(qū)動(dòng)程序,但是當(dāng) insmod ko 文件時(shí) brcmfmac 將失?。篵rcmfmac:brcmf_sdio_htclk:訪問關(guān)閉時(shí)鐘失敗
    發(fā)表于 07-09 08:02

    如何安裝 CY7C65213 的驅(qū)動(dòng)程序?

    無法連接 teraterm。 我嘗試安裝 CypressDriverInstaller_1,但是驅(qū)動(dòng)程序沒有更新。 你能指導(dǎo)如何安裝 CY7C65213 的驅(qū)動(dòng)程序嗎?
    發(fā)表于 05-27 07:58

    如何處理FX3 USB驅(qū)動(dòng)程序與MFI相關(guān)接口的安裝?

    USB 電纜將設(shè)備(沒有 PMODE 的 SPI 引腳)連接到 PC(USB 2.0)并為 WestBridge 設(shè)備安裝驅(qū)動(dòng)程序時(shí),在斷開設(shè)備與 PC 的連接并重新連接后,
    發(fā)表于 05-23 07:54

    3014 USB驅(qū)動(dòng)程序無法檢測(cè)到USB設(shè)備是怎么回事?

    我已將我的 USB 設(shè)備連接到運(yùn)行 Windows 10 X64 的計(jì)算機(jī),我已嘗試使用 1.2.3 和 1.3.0 版本的 cyapi 和 USB 驅(qū)動(dòng)程序。 有時(shí)CYPRESS? API 的設(shè)備
    發(fā)表于 05-09 06:11
    泸水县| 马关县| 神木县| 邵阳市| 晋城| 鄂州市| 巴塘县| 尼勒克县| 灯塔市| 沙河市| 交口县| 射洪县| 扬中市| 罗定市| 墨玉县| 黄平县| 丘北县| 嘉黎县| 雷山县| 页游| 凤阳县| 扎赉特旗| 通道| 高邑县| 乌恰县| 关岭| 师宗县| 泗洪县| 遵义县| 赤峰市| 东源县| 盐边县| 邵武市| 浑源县| 岱山县| 牡丹江市| 塘沽区| 唐海县| 岐山县| 武隆县| 通州区|