0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rt-smart中的imx6ull用户态点灯

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2021-01-15 13:41 次阅读

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的一套库,后面我又重新对接了一次,这样我就不用自己造轮子了。下面自己造的轮子:

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

这里我把GPIO分为两组,第一组:GPIO1 ~ GPIO4,第二组:GPIO5。他们的每组基地址分别为:

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

根据每组的基地址,给每一组做了一个地址偏移的表格这样就可以通过下面的宏定义等到对应的引脚:

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

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

在rt-smart中,我不能直接使用物理地址,需要使用虚拟地址。rt-smart提供了相对应的API(rt_hw_kernel_phys_to_virt)供我们将物理地址转为虚拟地址。我们以pin_write为例:

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

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

rt-smart中,imux6ull的gpio写操作,需要增加phy addr 到vitr addr的转换:

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

对接好pin驱动的ops->rt_pin_ops:

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

注册pin设备:

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

编译烧录:

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

应用开发

在rt-thread中,我们经常使用一组API,rt_pin_mode, rt_pin_write。但是在rt-smart中这套东西是使用不了的。而需要使用设备驱动框架那一套东西,open,write,read.

imx6ull的led灯的GPIO对应第5组第3个引脚。然后定义两个结构体:pin_mode,pin_status.

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

写一个流水灯的代码。

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

原文标题:rt-smart的第一个应用程序,imx6ull用户态点灯

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6838

    浏览量

    123380
  • RTThread
    +关注

    关注

    8

    文章

    132

    浏览量

    40894

原文标题:rt-smart的第一个应用程序,imx6ull用户态点灯

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!

    2024年RT-Thread开发者大会将于12月21日正式拉开帷幕!本次大会以“开源共生商业共赢”为主题,RT-Thread将携手合作伙伴、客户伙伴、行业专家,以及全球开发者,共同探索如何在开源
    的头像 发表于 12-11 18:41 384次阅读
    <b class='flag-5'>RT-Smart</b>首次线下培训,锁定2024 <b class='flag-5'>RT</b>-Thread开发者大会!

    【迅为电子】i.MX6UL和i.MX6ULL芯片区别与开发板对比

    【迅为电子】i.MX6UL和i.MX6ULL芯片区别与开发板对比
    的头像 发表于 11-28 14:31 442次阅读
    【迅为电子】i.MX<b class='flag-5'>6</b>UL和i.MX<b class='flag-5'>6ULL</b>芯片区别与开发板对比

    国产实时操作系统:和RT-Linux,Zephyr的实时性对比

    基于RT-Thread内核,并具备POSIX用户运行环境的高性能实时操作系统。它类似Linux、Windows的架构,具备用户和内核
    的头像 发表于 11-12 01:07 869次阅读
    国产实时操作系统:和<b class='flag-5'>RT</b>-Linux,Zephyr的实时性对比

    imx6ull裸机编程,使用宏定义无法驱动,使用指针就可以驱动

    当我使用宏定义来访问imx6ull的寄存器,控制GPIO5_IO3输出高低电平控制LED时,程序烧录进去后没有反应。但是当我使用指针来访问寄存器,LED可以正常驱动,请问这是什么原因?除了寄存器访问
    发表于 11-04 17:59

    PICO-IMX8PL和SRG-IMX8PL:共创您的物联网集成网关

    凭借为工业物联网构建的平台,全新PICO-IMX8PL和SRG-IMX8PL将强大的物理硬件与精英开发工具相结合,使解决方案更易于推向市场。SRG-IMX8PL系统赋予用户制造高品质、
    的头像 发表于 10-12 08:01 471次阅读
    PICO-<b class='flag-5'>IMX</b>8PL和SRG-<b class='flag-5'>IMX</b>8PL:共创您的物联网集成网关

    使用TPS6521815 PMIC为NXP i.MX 6ULL6UltraLite供电

    电子发烧友网站提供《使用TPS6521815 PMIC为NXP i.MX 6ULL6UltraLite供电.pdf》资料免费下载
    发表于 09-13 09:44 1次下载
    使用TPS6521815 PMIC为NXP i.MX <b class='flag-5'>6ULL</b>、<b class='flag-5'>6</b>UltraLite供电

    RK3568平台RT-smart系统跑不起来,为什么?

    RK3568平台RT-smart系统跑不起来
    发表于 09-13 07:28

    ART-PI Smart User运行LED程序崩溃的原因?怎么处理?

    使用的master分支下的代码,通过 6ull bootloader 的tftp获取kernel后能正常运行,并挂载emmc,和sd卡。 \\ | / - RT -Thread Sma
    发表于 07-05 08:21

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-在NXP源码基础上适配ELF 1开发板的按键功能

    CONFIG_SOC_IMX6ULL,将imx6ull-elf1-emmc.dts添加到Makefile:elf@ubuntu:~/work/linux-imx-imx_4.1.15
    发表于 07-04 09:11

    飞凌嵌入式ElfBoard ELF 1板卡-在NXP源码基础上适配ELF 1开发板的按键功能

    CONFIG_SOC_IMX6ULL,将imx6ull-elf1-emmc.dts添加到Makefile:elf@ubuntu:~/work/linux-imx-imx_4.1.15
    发表于 07-03 09:07

    在 ART-Pi Smart 体验 RT-Thread Smart v5.1.0

    大的RT-ThreadSmart操作系统。ART-PiSmart开发板搭载了米尔科技的i.MX6ULL核心板,硬件设计和制作由韦东山团队完成,整体的BSP板级支持包由社区完成。这是首个运行R
    的头像 发表于 06-14 08:35 626次阅读
    在 ART-Pi <b class='flag-5'>Smart</b> 体验 <b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b> v5.1.0

    浅析在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程

    本文详细记录在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程,其他平台操作方法类似,希望为大家提供帮助。
    的头像 发表于 05-17 11:33 1322次阅读
    浅析在NXP I.MX<b class='flag-5'>6ULL</b>+Linux平台下进行WM8960音频芯片移植的过程

    适用于 NXP i.MX 6ULL6ULZ 和 6UltraLite的TPS6521835电源管理IC数据表

    电子发烧友网站提供《适用于 NXP i.MX 6ULL6ULZ 和 6UltraLite的TPS6521835电源管理IC数据表.pdf》资料免费下载
    发表于 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数据表

    嵌入式学习-ElfBoard ELF 1-gpio模拟i2c的方法

    /i2c/busses/Makefile(2)修改arch/arm/configs/imx6ull_elf1_defconfig,配置为y编译进内核(3)编译内核elf@ubuntu:~/work
    发表于 02-22 15:17

    嵌入式学习-ElfBoard ELF 1板卡-在nxp源码基础上适配ELF 1开发板的LED功能

    源码适配即在NXP i.MX6ULL EVK评估板对应的Linux内核源码(linux-imx_4.1.15 版本)基础上进行功能接口引脚适配,以适应ELF1开发平台。本篇文章以适配LED为例给各位
    发表于 01-05 14:35