国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

linux系統(tǒng)中利用設(shè)備樹完成對LED的控制

這篇具有很好參考價值的文章主要介紹了linux系統(tǒng)中利用設(shè)備樹完成對LED的控制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

? ? ?大家好,今天主要和大家聊一聊,如何使用linux系統(tǒng)中的設(shè)備樹控制led。

目錄

第一:設(shè)備樹LED基本驅(qū)動原理

第二:LED燈驅(qū)動程序的實(shí)現(xiàn)


linux系統(tǒng)中利用設(shè)備樹完成對LED的控制

?

第一:設(shè)備樹LED基本驅(qū)動原理

? ? ? 本次實(shí)驗(yàn)采用設(shè)備樹向linux內(nèi)核傳遞相關(guān)的寄存器物理地址,linux驅(qū)動文件使用of函數(shù)從設(shè)備樹中獲取所需的屬性值,然后使用獲取到的屬性值初始化相關(guān)的IO。

第二:修改設(shè)備樹文件

? ? ? 在根節(jié)點(diǎn)"/" 下創(chuàng)建一個名為alphaled的子節(jié)點(diǎn),打開imx6ull-alientek-emmc.dts文件,在根節(jié)點(diǎn)“/”最后面輸入如下所示的內(nèi)容:

alphaled{
    #address-cells = <1>;
    #size-cells = <1>;
    compatible = "atkalpha-led";
    status = "okay";
    reg = <  0X020C406C 0X04 /* CCM_CCGR1_BASE */
             0X020E0068 0X04 /* SW_MUX_GPIO1_IO03_BASE */
             0X020E02F4 0X04 /* SW_PAD_GPIO1_IO03_BASE */
             0X0209C000 0X04 /* GPIO1_DR_BASE */
             0X0209C004 0X04 >; //GPIO1_GDIR_BASE 
};


? ? ? ? 分析:屬性#address-cells和#size-cells都為1,表示reg屬性中起始地址占用一個32位長度,地址長度也占用一個32位長度。

? ? ? ? ? ? ? ? ? 屬性compatbile設(shè)置alphaled節(jié)點(diǎn)兼容性為“atkalpa-led”

? ? ? ? ? ? ? ? ? 屬性status設(shè)置狀態(tài)為“okay”

? ? ? ? ? ? ? ? ?reg屬性,非常重要,reg屬性設(shè)置了驅(qū)動里面所要使用的寄存器物理地址,比如第六行“0X020C406C 0X04”表示CCM_CCGR1寄存器,首地址,長度為4個字節(jié)。

? ? ? ? ?設(shè)備樹修改完成以后需要重新編譯一下,編譯完成以后,重新啟動linux進(jìn)入到/proc/device-tree/目錄中查看是否有"alphaled"這個節(jié)點(diǎn)。

? ? ? ? ? ? ??linux系統(tǒng)中利用設(shè)備樹完成對LED的控制

? ? ? ?可以進(jìn)入到alphaled目錄中,查看一下都有哪些屬性文件,如圖所示:

? ??linux系統(tǒng)中利用設(shè)備樹完成對LED的控制

? ? ? ? 大家可以看下compatible,status等屬性值是否和我們設(shè)置的一致。

第二:LED燈驅(qū)動程序的實(shí)現(xiàn)

#include <linux/types.h>
#include <linux/kernel.h>

//dtsled設(shè)備結(jié)構(gòu)體
struct dtsled_dev{
    dev_t devid;         //設(shè)備號
    struct cdev cdev;    //cdev
    struct class *class;  //類
    struct device *device;  //設(shè)備
    int major;   //主設(shè)備號
    int minor;   //次設(shè)備號 
    struct device_node *nd;   //設(shè)備節(jié)點(diǎn)
};


struct dtsled_dev  dtsled;   //led設(shè)備




//linux驅(qū)動入口函數(shù)
static int __init led_init(void)
{
    u32 val = 0;
    int ret;
    u32 regdata[14];
    const char *str;
    struct property *proper;

   //獲取設(shè)備樹中的屬性數(shù)據(jù)。
   dtsled.nd = of_find_node_by_path("/alphaled");
   

   //獲取compatible屬性內(nèi)容的值
   proper =  of_find_property(dtsled.nd,"compatible",NULL);

   //獲取status屬性內(nèi)容
   ret = of_property_read_string(dtsled.nd,"status",&str);


   //獲取reg屬性內(nèi)容
   ret = of_property_read_u32_array(dtsled.nd,"reg",regdata,10);
   
   for(i = 0; i < 10; i++)
      printk("%#x", regdata[i]);
}

總結(jié):利用設(shè)備樹獲取必要的信息,再進(jìn)行虛擬的映射技術(shù)進(jìn)行控制,第一次使用加載命令的時候,可以使用depmod? ?以及 modprobe dtsled.ko文章來源地址http://www.zghlxwxcb.cn/news/detail-405923.html

到了這里,關(guān)于linux系統(tǒng)中利用設(shè)備樹完成對LED的控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 阿里云iot haas Micropython連接esp32;esp32物聯(lián)網(wǎng)設(shè)備上報信息及云端信息獲??;遠(yuǎn)程控制設(shè)備自帶led熄滅;網(wǎng)頁界面交互遠(yuǎn)程控制

    阿里云iot haas Micropython連接esp32;esp32物聯(lián)網(wǎng)設(shè)備上報信息及云端信息獲??;遠(yuǎn)程控制設(shè)備自帶led熄滅;網(wǎng)頁界面交互遠(yuǎn)程控制

    參考:https://blog.csdn.net/HaaSTech/article/details/125975052 https://iot.console.aliyun.com/ https://www.bbsmax.com/A/x9J2X8nZd6/ 首先燒錄阿里云iot haas固件: https://haas.iot.aliyun.com/haasapi/index.html#/Python/docs/zh-CN/startup/ESP32_startup ***直接下載后可以通過vscode插件燒錄;燒錄好后也可以在thony編輯運(yùn)行代碼

    2024年02月02日
    瀏覽(34)
  • 【AIGC】利用ChatGPT完成任務(wù),迷你AGI控制世界來了

    【AIGC】利用ChatGPT完成任務(wù),迷你AGI控制世界來了

    多智能體代碼庫 CAMEL,提出了通過角色扮演框架來研究 LLM 智能體的行為和能力。 未來的社會會被通用人工智能(AGI)控制嗎?當(dāng)擁有多個 ChatGPT 智能體會有多可怕。 ChatGPT 已經(jīng)初步展現(xiàn)了 AGI 的雛形,成為了各行各業(yè)工作人員的全能小助手,但如果任由其野蠻生長,不加于

    2024年02月07日
    瀏覽(26)
  • 筆記:linux中LED驅(qū)動設(shè)備樹配置和用法

    設(shè)備樹中的LED驅(qū)動一般是這樣寫,LED驅(qū)動可以控制GPIO的電平變化,生成文件節(jié)點(diǎn)很方便 compatible = \\\"gpio-leds\\\"; 對應(yīng)了驅(qū)動中 drivers/leds/leds-gpio.c這個驅(qū)動文件 label = \\\"gpio_demo\\\"; 這個名字會在文件系統(tǒng)中生成對應(yīng)的設(shè)備節(jié)點(diǎn) /sys/class/leds/gpio_demo linux,default-trigger = \\\"default-off\\\"; 指的是

    2024年02月10日
    瀏覽(19)
  • 合宙Air780e+luatos接入華為云物聯(lián)網(wǎng)平臺完成設(shè)備通信與控制

    合宙Air780e+luatos接入華為云物聯(lián)網(wǎng)平臺完成設(shè)備通信與控制

    之前發(fā)布的文章有esp8266的wifi模塊和BC20的NB模塊與華為云物聯(lián)網(wǎng)通信為主,本期文章采用了合宙的4G LTE Cat.1模塊,編程語言用的是lua,整體來說代碼比較簡潔,實(shí)現(xiàn)對華為云物聯(lián)網(wǎng)平臺的設(shè)備通信與控制,即采用一個變量作為模擬屬性定時上報,并以一個LED燈作為受控設(shè)備進(jìn)

    2024年02月04日
    瀏覽(24)
  • Linux -- 字符設(shè)備驅(qū)動--LED的驅(qū)動開發(fā)(初級框架)

    Linux -- 字符設(shè)備驅(qū)動--LED的驅(qū)動開發(fā)(初級框架)

    看原理圖確定引腳,確定引腳輸出什么電平才能點(diǎn)亮 / 熄滅 LED 看主芯片手冊,確定寄存器操作方法:哪些寄存器?哪些位?地址是? 編寫驅(qū)動:先寫框架,再寫硬件操作的代碼 注意 :在芯片手冊中確定的寄存器地址被稱為 物理地址 ,在 Linux 內(nèi)核中無法直接使用。 需要使

    2024年04月28日
    瀏覽(27)
  • 合宙Air780e+luatos+阿里云物聯(lián)網(wǎng)平臺完成設(shè)備通信與控制(屬性上報+4G遠(yuǎn)程點(diǎn)燈)

    合宙Air780e+luatos+阿里云物聯(lián)網(wǎng)平臺完成設(shè)備通信與控制(屬性上報+4G遠(yuǎn)程點(diǎn)燈)

    之前發(fā)布的文章有采用合宙的4G LTE Cat.1模塊,編程語言用的是lua,整體來說代碼比較簡潔,實(shí)現(xiàn)對華為云物聯(lián)網(wǎng)平臺的設(shè)備通信與控制,即采用一個變量作為模擬屬性定時上報,并以一個LED燈作為受控設(shè)備進(jìn)行云端命令的控制,本期內(nèi)容為使用了 阿里云 物聯(lián)網(wǎng)平臺完成同樣

    2024年02月06日
    瀏覽(20)
  • 【elfboard linux開發(fā)板】11. 版本管理和修改設(shè)備樹流程(點(diǎn)亮LED)

    【elfboard linux開發(fā)板】11. 版本管理和修改設(shè)備樹流程(點(diǎn)亮LED)

    git init 生成一個.git 目錄 git config --global user.name 用戶名 git config --global user.email 郵箱 vim .gitignore git status 查看狀態(tài) git add 文件名 git rm 文件名 git commit -m 說明 git log git branch git branch 分支名 git checkout 分支名 通過linux自帶的gpio-leds驅(qū)動實(shí)現(xiàn),改驅(qū)動通過調(diào)用Pinctrl子系統(tǒng)和GPIO子系

    2024年02月02日
    瀏覽(15)
  • Linux 驅(qū)動開發(fā)基礎(chǔ)知識——LED 模板驅(qū)動程序的改造:設(shè)備樹(十一)

    Linux 驅(qū)動開發(fā)基礎(chǔ)知識——LED 模板驅(qū)動程序的改造:設(shè)備樹(十一)

    ?個人名片: ??作者簡介:學(xué)生 ??個人主頁:妄北y ??個人QQ:2061314755 ??個人郵箱:2061314755@qq.com ??個人WeChat:Vir2021GKBS ?? 本文由妄北y原創(chuàng),首發(fā)CSDN ?????? ??座右銘:大多數(shù)人想要改造這個世界,但卻罕有人想改造自己。 專欄導(dǎo)航: 妄北y系列專欄導(dǎo)航: C/C++的基

    2024年02月21日
    瀏覽(14)
  • 【智能家居項(xiàng)目】裸機(jī)版本——設(shè)備子系統(tǒng)(LED && Display && 風(fēng)扇)

    【智能家居項(xiàng)目】裸機(jī)版本——設(shè)備子系統(tǒng)(LED && Display && 風(fēng)扇)

    ??作者:一只大喵咪1201 ??專欄:《智能家居項(xiàng)目》 ??格言: 你只管努力,剩下的交給時間! 輸入子系統(tǒng)中目前僅實(shí)現(xiàn)了按鍵輸入,剩下的網(wǎng)絡(luò)輸入和標(biāo)準(zhǔn)輸入在以后會逐步實(shí)現(xiàn),今天先來實(shí)現(xiàn)設(shè)備子系統(tǒng),包含LED設(shè)備(GPIO控制),風(fēng)扇設(shè)備,OLED設(shè)備。 不同內(nèi)核下是訪問設(shè)

    2024年02月08日
    瀏覽(27)
  • Linux驅(qū)動-基于QT控制LED燈

    Linux驅(qū)動-基于QT控制LED燈

    平臺 韋東山100ask imax6ull pro 大象嵌入式開發(fā)板 Build Root 使用Build root編譯image,具體配置可參考《嵌入式Linux應(yīng)用開發(fā)完全手冊-IMX6ULL開發(fā)板(從零移植篇-預(yù)覽版)-V0.1.pdf》,使用buildroot后僅需要配置menuconfig即可自動編譯出完整的鏡像,而且各種安裝包也可以在 output/build 目錄下拿

    2024年02月13日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包