前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rt-smart的第一个应用程序,imx6ull用户态点灯

rt-smart的第一个应用程序,imx6ull用户态点灯

作者头像
Rice加饭
发布2022-05-10 17:41:06
4640
发布2022-05-10 17:41:06
举报
文章被收录于专栏:Rice嵌入式

简介

  • rt-thread的rt-smart已经发布有段时间了,其实我之前也写过几篇关于rt-smart的文章,但是都是关于CMake构建工程的文章。
  • 而对我来说一直想在用户态操作一下底层硬件的东西。而在前段时间,韦东山老师在他100ask_imx6ull移植了rt-smart,刚好之前拿到一块imx6ull的板子,所以我也跟这位大佬一起学习了一下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的一套库,后面我又重新对接了一次,这样我就不用自己造轮子了。下面自己造的轮子:
  1. 这里我把GPIO分为两组,第一组:GPIO1 ~ GPIO4,第二组:GPIO5。他们的每组基地址分别为:
  1. 根据每组的基地址,给每一组做了一个地址偏移的表格这样就可以通过下面的宏定义等到对应的引脚:
    • #define GET_PIN(PORTx, PIN) (32 * (PORTx - 1) + (PIN & 31))
  1. 在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的转换:
  1. 对接好pin驱动的ops->rt_pin_ops:
  1. 注册pin设备:
  1. 编译烧录:

应用开发

  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.
  1. 写一个流水灯的代码。
  1. 编译运行,现象:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rice 嵌入式开发技术分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 环境
  • 适配底层驱动
  • 应用开发
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档