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

    文章

    7328

    浏览量

    128605
  • RTThread
    +关注

    关注

    8

    文章

    133

    浏览量

    42530

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问rt smart用户应用程序能自动加载吗?

    请问rt smart用户应用程序能自动加载吗?只需要将内核和用户程序隔离开,开机自动加载
    发表于 10-13 06:17

    使用qemu-vexpress-a9 运行用户程序跑不了怎么解决?

    qemu-vexpress-a9 的 sd.bin 镜像文件。 然后成功编译rt-threadbspqemu-vexpress-a9的内核.elf文件 使用./qemu-nographic.sh 模拟
    发表于 10-09 07:41

    QEMU快速上手(Win),源码文件夹对不上是为什么?

    想要照着RTT文档里的RT-Smart的QEMU快速上手 https://www.rt-thread.org/document/site/#/rt
    发表于 09-29 06:57

    如何移植rt-thread到野火imx6ull开发板上?

    求助如何将rt-thread移植到野火imx6ull(coretex-A7)开发板上,官方的bsp没有imx6ull
    发表于 09-29 06:25

    请问有没有用uboot引导启动过rtthread-smart的?

    通过uboot引导,在imx6ull开发板上启动rtthread-smart,通过thtp从网口下载到内存后,用go命令无法启动,且没有额外的打印消息,有没有遇到同样问题的?这个该怎么解决
    发表于 09-28 10:50

    求助,关于rt-smart用户线程实时性差的问题求解

    我在树莓派4B上使用v5.2.0 开启smartrt-thread 并启用SMP多核(4核)内核时,在用户和内核运行同样的代码测试:
    发表于 09-26 08:25

    RT_Thread Studio 为什么点灯都无法实现?

    本人是刚入手RT_thread Studio这款软件不久,我看网上教程都是新建工程,选择好对应的开发板型号就可以正常使用,而我在进行hc32f460这款MCU进行开发时,选择好开发板,系统默认在
    发表于 09-26 06:47

    如何在K230上移植mipi sensor,然后读取mipi接口的raw数据?

    知道吗? 期待结果 给出移植的教程,CanMV、linux平台、RT-Smart或者Linux+RT-Smart的都可以 软硬件版本信息 CanMV-K230-LP4-V3.0
    发表于 06-17 06:22

    K230使用RT-Smart SDK开发怎么连接Wifi?

    RT-Smart SDK开发K230怎么去连接无线网,板子上面有网络模块和天线,01Studio的K230,找不到相关资料,求助大佬,感谢感谢
    发表于 06-10 08:23

    iMX6ULL上设置MAC地址,启动后无法获得相同的mac id?

    我正在开发基于 imx6ull 的定制板。在 U Boot with Fuse Prog Command ,我编写了 mac id,但是在启动后我无法获得相同的 mac id。还需要任何其他程序
    发表于 04-10 06:02

    如何维护i.MX6ULL的安全内核?

    随着即将出台的 EU RED 3(3)def 和 EN 18031 法规,修复已知的漏洞至关重要。对于基于 i.MX 6ULL 的系统,在实践如何做到这一点? 我们目前
    发表于 04-01 08:28

    RT-Thread Smart携手K230/K230D打造多核RISC-V高性能嵌入式操作系统

    在万物互联的智能时代,国产软硬件技术的突破正成为推动产业升级的核心动力。RT-ThreadSmart(简称:RT-Smart)操作系统与嘉楠科技K230芯片的深度融合,为AI边缘计算领域带来了一站式
    的头像 发表于 03-17 16:35 2320次阅读
    <b class='flag-5'>RT</b>-Thread <b class='flag-5'>Smart</b>携手K230/K230D打造多核RISC-V高性能嵌入式操作系统

    为什么RT_Thread Studio点灯都无法实现?

    本人是刚入手RT_thread Studio这款软件不久,我看网上教程都是新建工程,选择好对应的开发板型号就可以正常使用,而我在进行hc32f460这款MCU进行开发时,选择好开发板,系统默认在
    发表于 03-10 07:29

    imx6ull 和 lan8742 工作起来不正常, ping 老是丢包

    采用 imx6ull 默认的设备树, 和 lan8742通信, MAC的配置如下: pinctrl_enet2: enet2grp { fsl,pins = <
    发表于 01-09 14:51

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

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