rt-smart中的imx6ull用戶態點燈

2021-01-19 電子發燒友
rt-smart中的imx6ull用戶態點燈

RTThread物聯網操作 發表於 2021-01-15 13:41:06

rt-thread的rt-smart已經發布有段時間了,其實我之前也寫過幾篇關於rt-smart的文章,但是都是關於CMake構建工程的文章。

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

 

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

這篇文章主要講一下我的點燈大法。

環境

100ask_imx6ull開發板。

兩條micro USB線。

電源。

windows電腦一臺。

適配底層驅動

IMX6ULL的gpio有五組,每組最多有32個,但是實際每組沒有那麼多

GPIO1 有 32 個引腳:GPIO1_IO0~GPIO1_IO31;

GPIO2 有 22 個引腳:GPIO2_IO0~GPIO2_IO21;

GPIO3 有 29 個引腳:GPIO3_IO0~GPIO3_IO28;

GPIO4 有 29 個引腳:GPIO4_IO0~GPIO4_IO28;

GPIO5 有 12 個引腳:GPIO5_IO0~GPIO5_IO11;

首先需要看晶片手冊,查找寄存器,在imx6ull的寄存器是比較亂的,每一組GPIO的寄存器都是不是連續的,所以寫的時候,需要對著手冊來寫。可以參考《i.MX 6ULL Applications ProcessorReference Manual》文檔。

根據手冊,我已經把GPIO對接到rt-thread的pin驅動框架了。其實我一開始自己寫好底層寄存器部分的代碼,然後去對接到pin驅動。後面在gitee上看發現了NXP的一套庫,後面我又重新對接了一次,這樣我就不用自己造輪子了。下面自己造的輪子:

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

根據每組的基地址,給每一組做了一個地址偏移的表格這樣就可以通過下面的宏定義等到對應的引腳:

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

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

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

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

對接好pin驅動的ops->rt_pin_ops:

註冊pin設備:

編譯燒錄:

應用開發

在rt-thread中,我們經常使用一組API,rt_pin_mode, rt_pin_write。但是在rt-smart中這套東西是使用不了的。而需要使用設備驅動框架那一套東西,open,write,read.

imx6ull的led燈的GPIO對應第5組第3個引腳。然後定義兩個結構體:pin_mode,pin_status.

寫一個流水燈的代碼。

 

 

 

原文標題:rt-smart的第一個應用程式,imx6ull用戶態點燈

文章出處:【微信公眾號:RTThread物聯網作業系統】歡迎添加關注!文章轉載請註明出處。

責任編輯:haq

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 新購買的imx6ull開發板如何使用:下載qt程序,進入Linux命令行系統
    大家好,這裡是義縣遊學電子科技.今天帶給您的是如何使用新購買的imx6ull開發板.新購買的開發板上電後會直接進入原子的演示程序,那如何才能顯示我們自己編譯好的qt程序呢.如何進入Linux命令行終端呢?這就是我們今天的主題了.
  • 萬事開頭難 - 介紹IMX6ULL啟動方式
    不同開發板,啟動方式不一樣,今天我們來介紹imx6ull開發板的啟動方式,這非常重要。若不了解清楚啟動方式,後面的所有開發工作便無從談起。本文摘自100ask_imx6ull 開發板 配套學習手冊-《嵌入式Linux應用開發完全手冊_韋東山全系列視頻文檔全集V2.6》.pdf1.1 IMX6ULL 啟動方式參考資料:開發板資料網盤 路徑:06_Datasheet(數據手冊)
  • GPIO和Pinctrl子系統的使用在100ASK_IMX6ULL上機實驗
    Linux驅動開發基礎知識\source\05_gpio_and_pinctrl\tools\imx\安裝「Pins_Tool_for_i.MX_Processors_v6_x64.exe」後運行,打開IMX6ULL的配置文件「MCIMX6Y2xxx08.mex」,就可以在GUI界面中選擇引腳
  • 國產開源物聯網作業系統RT-Thread Smart正式上線(附原始碼下載地址)
    353EETC-電子工程專輯RT-Thread Smart架構353EETC-電子工程專輯rt-smart在硬體平臺的基礎上通過MMU、系統調用的方式把整個系統分成了內核態及用戶態,並具備獨立的地址空間
  • IMX6ULL arm板如何顯示圖片、漢字、劃線、背景色
    最近在研究基於imx6ull開發板,想讓開發板支持顯示圖片、字符串、背景色的功能。
  • 真國產混合微內核作業系統RT-Thread Smart開源
    RT-Thread SmartRT-Thread Smart(以下簡稱為rt-smartRT-Smart在硬體平臺的基礎上通過MMU、系統調用的方式把整個系統分成了內核態及用戶態,並具備獨立的地址空間(32位系統上是4G的獨立地址空間)。RT-Smart內核即可包含基本功能,同時也可定製裁剪。
  • 在Linux設備樹(DTS)中指定中斷_在代碼中獲得中斷
    這些層級關係、中斷號(hwirq),都會在設備樹中有所體現。在設備樹中,中斷控制器節點中必須有一個屬性:interrupt-controller,表明它是「中斷控制器」。interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;2.設備樹裡中斷節點的示例以100ASK_IMX6ULL開發板為例,在arch/arm/boot/dts目錄下可以看到2個文件:imx6ull.dtsi
  • html中rt標籤的詳細介紹
    本篇將介紹html中rt標籤的詳細用法,有興趣的朋友可以了解一下!在html5版本中,新增了很多標籤,今天小編要介紹的就是其中一個,即rt標籤。rt標籤是ruby標籤的子標籤,用來定義字符的解釋或發音「rt」是英文單詞「ruby」和「text」的首字母組合,那它在html中作為標籤是用來做什麼的呢?接下來我們一起來看看html中rt標籤的定義及用法吧!