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

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

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

rt-smart中的imx6ull用戶態(tài)點(diǎn)燈

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2021-01-15 13:41 ? 次閱讀

rt-thread的rt-smart已經(jīng)發(fā)布有段時(shí)間了,其實(shí)我之前也寫過幾篇關(guān)于rt-smart的文章,但是都是關(guān)于CMake構(gòu)建工程的文章。

而對(duì)我來說一直想在用戶態(tài)操作一下底層硬件的東西。而在前段時(shí)間,韋東山老師在他100ask_imx6ull移植了rt-smart,剛好之前拿到一塊imx6ull的板子,所以我也跟這位大佬一起學(xué)習(xí)了一下rt-smart。

移植的過程我就不再這里說了,大家可以去看一下韋老師的視頻,講的非常好。

這篇文章主要講一下我的點(diǎn)燈大法。

環(huán)境

100ask_imx6ull開發(fā)板。

兩條micro USB線。

電源

windows電腦一臺(tái)。

適配底層驅(qū)動(dòng)

IMX6ULL的gpio有五組,每組最多有32個(gè),但是實(shí)際每組沒有那么多

GPIO1 有 32 個(gè)引腳:GPIO1_IO0~GPIO1_IO31;

GPIO2 有 22 個(gè)引腳:GPIO2_IO0~GPIO2_IO21;

GPIO3 有 29 個(gè)引腳:GPIO3_IO0~GPIO3_IO28;

GPIO4 有 29 個(gè)引腳:GPIO4_IO0~GPIO4_IO28;

GPIO5 有 12 個(gè)引腳:GPIO5_IO0~GPIO5_IO11;

首先需要看芯片手冊(cè),查找寄存器,在imx6ull的寄存器是比較亂的,每一組GPIO的寄存器都是不是連續(xù)的,所以寫的時(shí)候,需要對(duì)著手冊(cè)來寫??梢詤⒖肌秈.MX 6ULL Applications ProcessorReference Manual》文檔。

根據(jù)手冊(cè),我已經(jīng)把GPIO對(duì)接到rt-thread的pin驅(qū)動(dòng)框架了。其實(shí)我一開始自己寫好底層寄存器部分的代碼,然后去對(duì)接到pin驅(qū)動(dòng)。后面在gitee上看發(fā)現(xiàn)了NXP的一套庫,后面我又重新對(duì)接了一次,這樣我就不用自己造輪子了。下面自己造的輪子:

40844be2-56f1-11eb-8b86-12bb97331649.png

這里我把GPIO分為兩組,第一組:GPIO1 ~ GPIO4,第二組:GPIO5。他們的每組基地址分別為:

40b16c94-56f1-11eb-8b86-12bb97331649.png

根據(jù)每組的基地址,給每一組做了一個(gè)地址偏移的表格這樣就可以通過下面的宏定義等到對(duì)應(yīng)的引腳:

#define GET_PIN(PORTx, PIN) (32 * (PORTx - 1) + (PIN & 31))

40ddd9be-56f1-11eb-8b86-12bb97331649.png

在rt-smart中,我不能直接使用物理地址,需要使用虛擬地址。rt-smart提供了相對(duì)應(yīng)的API(rt_hw_kernel_phys_to_virt)供我們將物理地址轉(zhuǎn)為虛擬地址。我們以pin_write為例:

rt-thread中,imux6ull的gpio寫操作:

410e5ba2-56f1-11eb-8b86-12bb97331649.png

rt-smart中,imux6ull的gpio寫操作,需要增加phy addr 到vitr addr的轉(zhuǎn)換:

4166fe92-56f1-11eb-8b86-12bb97331649.png

對(duì)接好pin驅(qū)動(dòng)的ops->rt_pin_ops:

41aed816-56f1-11eb-8b86-12bb97331649.png

注冊(cè)pin設(shè)備:

41cf8fac-56f1-11eb-8b86-12bb97331649.png

編譯燒錄:

41ec8e7c-56f1-11eb-8b86-12bb97331649.png

應(yīng)用開發(fā)

在rt-thread中,我們經(jīng)常使用一組API,rt_pin_mode, rt_pin_write。但是在rt-smart中這套東西是使用不了的。而需要使用設(shè)備驅(qū)動(dòng)框架那一套東西,open,write,read.

imx6ull的led燈的GPIO對(duì)應(yīng)第5組第3個(gè)引腳。然后定義兩個(gè)結(jié)構(gòu)體:pin_mode,pin_status.

4231c42e-56f1-11eb-8b86-12bb97331649.png

寫一個(gè)流水燈的代碼。

4251a942-56f1-11eb-8b86-12bb97331649.png

原文標(biāo)題:rt-smart的第一個(gè)應(yīng)用程序,imx6ull用戶態(tài)點(diǎn)燈

文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(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)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6825

    瀏覽量

    123333
  • RTThread
    +關(guān)注

    關(guān)注

    8

    文章

    132

    瀏覽量

    40876

原文標(biāo)題:rt-smart的第一個(gè)應(yīng)用程序,imx6ull用戶態(tài)點(diǎn)燈

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Smart首次線下培訓(xùn),鎖定2024 RT-Thread開發(fā)者大會(huì)!

    2024年RT-Thread開發(fā)者大會(huì)將于12月21日正式拉開帷幕!本次大會(huì)以“開源共生商業(yè)共贏”為主題,RT-Thread將攜手合作伙伴、客戶伙伴、行業(yè)專家,以及全球開發(fā)者,共同探索如何在開源
    的頭像 發(fā)表于 12-11 18:41 ?326次閱讀
    <b class='flag-5'>RT-Smart</b>首次線下培訓(xùn),鎖定2024 <b class='flag-5'>RT</b>-Thread開發(fā)者大會(huì)!

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對(duì)比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對(duì)比
    的頭像 發(fā)表于 11-28 14:31 ?388次閱讀
    【迅為電子】i.MX<b class='flag-5'>6</b>UL和i.MX<b class='flag-5'>6ULL</b>芯片區(qū)別與開發(fā)板對(duì)比

    國(guó)產(chǎn)實(shí)時(shí)操作系統(tǒng):和RT-Linux,Zephyr的實(shí)時(shí)性對(duì)比

    基于RT-Thread內(nèi)核,并具備POSIX用戶態(tài)運(yùn)行環(huán)境的高性能實(shí)時(shí)操作系統(tǒng)。它類似Linux、Windows的架構(gòu),具備用戶態(tài)和內(nèi)核
    的頭像 發(fā)表于 11-12 01:07 ?780次閱讀
    國(guó)產(chǎn)實(shí)時(shí)操作系統(tǒng):和<b class='flag-5'>RT</b>-Linux,Zephyr的實(shí)時(shí)性對(duì)比

    imx6ull裸機(jī)編程,使用宏定義無法驅(qū)動(dòng),使用指針就可以驅(qū)動(dòng)

    當(dāng)我使用宏定義來訪問imx6ull的寄存器,控制GPIO5_IO3輸出高低電平控制LED時(shí),程序燒錄進(jìn)去后沒有反應(yīng)。但是當(dāng)我使用指針來訪問寄存器,LED可以正常驅(qū)動(dòng),請(qǐng)問這是什么原因?除了寄存器訪問
    發(fā)表于 11-04 17:59

    PICO-IMX8PL和SRG-IMX8PL:共創(chuàng)您的物聯(lián)網(wǎng)集成網(wǎng)關(guān)

    憑借為工業(yè)物聯(lián)網(wǎng)構(gòu)建的平臺(tái),全新PICO-IMX8PL和SRG-IMX8PL將強(qiáng)大的物理硬件與精英開發(fā)工具相結(jié)合,使解決方案更易于推向市場(chǎng)。SRG-IMX8PL系統(tǒng)賦予用戶制造高品質(zhì)、
    的頭像 發(fā)表于 10-12 08:01 ?456次閱讀
    PICO-<b class='flag-5'>IMX</b>8PL和SRG-<b class='flag-5'>IMX</b>8PL:共創(chuàng)您的物聯(lián)網(wǎng)集成網(wǎng)關(guān)

    使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電

    電子發(fā)燒友網(wǎng)站提供《使用TPS6521815 PMIC為NXP i.MX 6ULL、6UltraLite供電.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:44 ?1次下載
    使用TPS6521815 PMIC為NXP i.MX <b class='flag-5'>6ULL</b>、<b class='flag-5'>6</b>UltraLite供電

    RK3568平臺(tái)RT-smart系統(tǒng)跑不起來,為什么?

    RK3568平臺(tái)RT-smart系統(tǒng)跑不起來
    發(fā)表于 09-13 07:28

    ART-PI Smart User運(yùn)行LED程序崩潰的原因?怎么處理?

    使用的master分支下的代碼,通過 6ull bootloader 的tftp獲取kernel后能正常運(yùn)行,并掛載emmc,和sd卡。 \\ | / - RT -Thread Sma
    發(fā)表于 07-05 08:21

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的按鍵功能

    CONFIG_SOC_IMX6ULL,將imx6ull-elf1-emmc.dts添加到Makefile:elf@ubuntu:~/work/linux-imx-imx_4.1.15
    發(fā)表于 07-04 09:11

    飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的按鍵功能

    CONFIG_SOC_IMX6ULL,將imx6ull-elf1-emmc.dts添加到Makefile:elf@ubuntu:~/work/linux-imx-imx_4.1.15
    發(fā)表于 07-03 09:07

    在 ART-Pi Smart 體驗(yàn) RT-Thread Smart v5.1.0

    大的RT-ThreadSmart操作系統(tǒng)。ART-PiSmart開發(fā)板搭載了米爾科技的i.MX6ULL核心板,硬件設(shè)計(jì)和制作由韋東山團(tuán)隊(duì)完成,整體的BSP板級(jí)支持包由社區(qū)完成。這是首個(gè)運(yùn)行R
    的頭像 發(fā)表于 06-14 08:35 ?616次閱讀
    在 ART-Pi <b class='flag-5'>Smart</b> 體驗(yàn) <b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b> v5.1.0

    淺析在NXP I.MX6ULL+Linux平臺(tái)下進(jìn)行WM8960音頻芯片移植的過程

    本文詳細(xì)記錄在NXP I.MX6ULL+Linux平臺(tái)下進(jìn)行WM8960音頻芯片移植的過程,其他平臺(tái)操作方法類似,希望為大家提供幫助。
    的頭像 發(fā)表于 05-17 11:33 ?1291次閱讀
    淺析在NXP I.MX<b class='flag-5'>6ULL</b>+Linux平臺(tái)下進(jìn)行WM8960音頻芯片移植的過程

    適用于 NXP i.MX 6ULL、6ULZ 和 6UltraLite的TPS6521835電源管理IC數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《適用于 NXP i.MX 6ULL、6ULZ 和 6UltraLite的TPS6521835電源管理IC數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-01 09:10 ?0次下載
    適用于 NXP i.MX <b class='flag-5'>6ULL</b>、<b class='flag-5'>6</b>ULZ 和 <b class='flag-5'>6</b>UltraLite的TPS6521835電源管理IC數(shù)據(jù)表

    嵌入式學(xué)習(xí)-ElfBoard ELF 1-gpio模擬i2c的方法

    /i2c/busses/Makefile(2)修改arch/arm/configs/imx6ull_elf1_defconfig,配置為y編譯進(jìn)內(nèi)核(3)編譯內(nèi)核elf@ubuntu:~/work
    發(fā)表于 02-22 15:17

    嵌入式學(xué)習(xí)-ElfBoard ELF 1板卡-在nxp源碼基礎(chǔ)上適配ELF 1開發(fā)板的LED功能

    源碼適配即在NXP i.MX6ULL EVK評(píng)估板對(duì)應(yīng)的Linux內(nèi)核源碼(linux-imx_4.1.15 版本)基礎(chǔ)上進(jìn)行功能接口引腳適配,以適應(yīng)ELF1開發(fā)平臺(tái)。本篇文章以適配LED為例給各位
    發(fā)表于 01-05 14:35