Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread
rt-smart
rt-smart的第一个应用程序,imx6ull用户态点灯
发布于 2021-01-13 15:12:36 浏览:1192
订阅该版
[tocm] ## 简介 - rt-thread的rt-smart已经发布有段时间了,其实我之前也写过几篇关于rt-smart的文章,但是都是关于CMake构建工程的文章。 - 而对我来说一直想在用户态操作一下底层硬件的东西。而在前段时间,韦东山老师在他100ask_imx6ull移植了rt-smart,所以我也跟这位大佬一起学习了一下rt-smart。 - 移植的过程我就不再这里说了,大家可以去看一下韦老师的视频,讲的非常好。链接:https://www.100ask.net/index - 这篇文章主要讲一下我的点灯大法,仓库:https://gitee.com/RiceChen0/imx6ull_rt_smart ## 环境 1. 100ask_imx6ull开发板。 2. 两条micro USB线。 3. 电源。 4. windows电脑一台。 ## 适配底层驱动 1. 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; 2. 首先需要看芯片手册,查找寄存器,在imx6ull的寄存器是比较乱的,每一组GPIO的寄存器都是不是连续的,所以写的时候,需要对着手册来写。可以参考《i.MX 6ULL Applications Processor Reference Manual》文档。 3. 根据手册,我已经把GPIO对接到rt-thread的pin驱动框架了。其实我一开始自己写好底层寄存器部分的代码,然后去对接到pin驱动。后面在gitee上看发现了NXP的一套库,后面我又重新对接了一次,这样我就不用自己造轮子了。下面自己造的轮子:  4. 这里我把GPIO分为两组,第一组:GPIO1 ~ GPIO4,第二组:GPIO5。他们的每组基地址分别为:  5. 根据每组的基地址,给每一组做了一个地址偏移的表格这样就可以通过下面的宏定义等到对应的引脚: ``` C #define GET_PIN(PORTx, PIN) (32 * (PORTx - 1) + (PIN & 31)) ```  6. 在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的转换:  7. 对接好pin驱动的ops->rt_pin_ops:  8. 注册pin设备:  9. 编译烧录:  ## 应用开发 1. 在rt-thread中,我们经常使用一组API,rt_pin_mode, rt_pin_write。但是在rt-smart中这套东西是使用不了的。而需要使用设备驱动框架那一套东西,open,write,read. 2. imx6ull的led灯的GPIO对应第5组第3个引脚。然后定义两个结构体:pin_mode,pin_status.  3. 写一个流水灯的代码。  4. 编译运行,现象: 
关注微信公众号『Rice嵌入式开发技术分享』,后台回复“微信”添加作者微信,备注”入群“,便可邀请进入技术交流群。 
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RiceChen
内核/软件架构/开源
文章
4
回答
27
被采纳
4
关注TA
发私信
相关文章
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
4
Keil MDK 移植 RT-Thread Nano
5
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
6
RT thread HID 如何收发数据
7
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
8
RT-Thread修改项目名称之后不能下载
9
rt-studio编译c++
10
有木有移植rt-thread(nano)到riscv 32位MCU上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
10
个答案
3
次被采纳
xiaorui
3
个答案
3
次被采纳
踩姑娘的小蘑菇
6
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
jinchanchan
2
篇文章
2
次点赞
alight
1
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部