查看: 1244|回复: 1

[分享] 移植i.MX RT1062 SDK工程至腾讯EVB_AIOT开发板

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
    发表于 2022-2-24 09:27:30 | 显示全部楼层 |阅读模式
    移植i.MX RT1062 SDK工程至腾讯EVB_AIOT开发板
    引言
    最近腾讯物联网操作系统TencentOS Tiny团队联合恩智浦半导体、安谋科技(Arm China)发起的线上开发者活动,正在进行中。为了活动的顺利进行,我们的支持工作也在同步开展着。在拿到TencentOS Tiny寄来的EVB_AIOT开发套件后,为了能让开发者更快进行开发工作,本文将以移植一个LCD_RGB工程为例,介绍如何使用MCUXpresso IDE将i.MX RT1062 SDK工程移植到腾讯EVB_AIOT开发板进行开发。
    14.png
    用MCUXpresso IDE创建工程

    在Tencent EVB_AIOT开发板设计初期,考虑到开发者的使用便捷,尽量使板子的pin脚和SDK工程中的例子对应,所以此处使用SDK的工程为模板,进行修改、开发。
    在NXP官网上将针对芯片i.MX RT1062的SDK包下载下来之后,直接拖拽到IDE的指定位置”Installed SDKs”,之后便可以选择SDK包中任何工程进行编辑调试。我们在”Create or import a project”框中选择”Import SDK examples”来选择需要的工程,位置为driver_examples->elcdif->elcdif_rgb。选择好工程后,将工程重命名为“1060_elcdif_rgb_EVB_AIOT”,现在就可以开始针对开发板的适配了。
    15.png
    根据开发板修改工程配置

    1. 显示屏相关修改
    在SDK工程中,默认使用的LCD显示屏分辨率为480x272,而在Tencent EVB AIOT开发套件中,使用了分辨率为800x480的屏,所以需要在工程源文件中对此进行修改:
    16.png
    由于用了不同的屏,参数修改后需要对LCD的时钟进行配置,要使帧率为60Hz,原本的像素时钟频率为(480 + 41 + 4 +18) * (272 + 10 + 4 + 2) * 60 = 9.2M。


    现在的像素时钟频率改为(480 + 4 + 4 + 4) * (272 + 30 + 210 + 30) * 60 =31.5M。


    所以,在BOARD_InitLcdifPixelClock中将时钟的DIV进行修改:
    17.png
    2. 内存配置
    编译后发现,由于屏幕像素的提高,刷图所需的”m_ncache region”大小超出了限制,所以需要对内存配置进行修改。


    右击工程,打开”properties”选择”C/C++ Build”中的”MCU Settings”,在”Memory details”选项下进行配置。


    虽然EVB_AIOT开发板和官方i.MXRT1060-EVK开发板选用flash型号不同,但是同为QSPI flash,两者通用QSPI Flashloader,因此无需对flash进行修改。按照修改分辨率后的存储大小需要,将”NCACHE_REGION”的大小改为至少4MB,并且,由于”ConfigMPU”中的限制,此处将”BOARD_SDRAM”的大小改为12MB,即下图所示:
    18.png
    3. SDRAM配置
    由于现在经常会碰到LCD显示的应用,数据缓存需要的空间较大,内部SRAM远不够用,所以外接SDRAM很常见。


    通常会使用DCD(Device Configuration Data)文件来初始化SDRAM。EVB_AIOT开发板使用的SDRAM和官方例程不同,并且管脚配置还有一点点差异,所以在这里简单介绍一下使用DCD初始化SDRAM的操作。


    在例程的”board”目录下,可以打开”dcd.c”文件,在dcd文件中主要包含”HEADER”和”COMMANDS”段,对”COMMANDS”中对相应寄存器进行配置即可对SDRAM进行初始化,下图是MCUXpresso Config Tool中如何生成dcd.c,将寄存器、命令、寄存器取值一一对应添加进去,就能在右侧代码预览窗口看到生成的dcd.c代码。其中寄存器取值窗口点开还可以看到对应的寄存器解释。


    修改之后,点击更新代码就能够生成需要的dcd文件,来进行SDRAM的初始化。


    在本例程中,进行dcd文件修改时,需要将”IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_20”以及” IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_20”两行右击删除(因为GPIO_EMC_20没有用于SDRAM),并将” SEMC_SDRAMCR1”值改为0x601922、” SEMC_SDRAMCR2”值改为0x1090B(根据SDRAM的datasheet修改)。


    完成后点击”Update Code”。
    19.png
    20.png
    至此,测试的工程已经创建好,并且编译通过,下面就可以进行调试工作。通过CMSIS-DAP口将程序下载调试,如下图所示:
    21.png
    打开串口调试助手,将EVB_AIOT开发板上的SW1拨码拨至”AT-MCU”侧,运行代码,可以看到串口打印出程序中相应的log,并且LCD屏开始运行色块程序。这时候,看起来移植工作已经完成了。

    4. 差异对比
    仔细观察屏幕中的色块,会发现颜色跟预期的有差异,还需要回头再找找出错在哪。查找原理图后发现,NXP官方EVK开发板的LCD为16bit接口,所以官方SDK例程中的pin脚配置也只有16个,但是Tencent EVB_AIOT开发板的RGB接口为24bit,所以数据位的偏差导致了显示的偏差。


    修改方法是在”pin_mux.c”文件中,添加”LCD_DATA16”~”LCD_DATA23”的pin_mux配置,这里可以利用ConfigTool的”Pins”功能实现,方法如下:右击工程,选择”MCUXpressoConfig Tools”的”Open Pins”,可以看到已经配置好的pin脚有绿色勾选标识。
    22.png
    23.png
    点开”LCDIF”,发现”DATA16”-“DATA23”管脚没有配置,需要勾选上,并在下方”Routing Details”功能框中确保这几个管脚配置和前面配置一致。之后点击”UpdateCode”更新代码;
    24.png
    25.png
    修改管脚后,需要在工程的预定义中,将” APP_LCDIF_DATA_BUS=kELCDIF_DataBus16Bit”这句定义删除,方法如下所示:右击工程在”properties”中选项中选择”C/C++ Build”的”settings”,在”MCU C Compiler”下的”Preprocessor”里找到这句定义,用右上角的删除键将其删除。
    26.png
    再次编译下载调试,发现例程已经正确地运行了起来,这样一个NXP官方的SDK例程就成功移植到TencentEVB_AIOT开发板上了。

    5. MCUXpresso IDE对比功能
    在修改工程配置时,如果只能看一段修改一段,往往会导致修改的不完善或者直接修改错误,利用MCUXpresso IDE的对比功能,可以轻松帮助你锁定差异。


    在此工程的修改过程中,我在创建完”1060_elcdif_rgb_AIOT”工程后,又再次导入原SDK工程”evkmimxrt1060_elcdif_rgb”,通过选中两个工程,并且右击选择”Comparewith eachother”功能,即可对比查看,减少错误的发生,也可在调试出问题的过程中,快速找到问题所在。


    下图为对比功能的介绍:
    27.png
    28.png

    总结

    虽然当初在EVB_AIOT开发板设计的时候尽量和NXP官方例程引脚保持一致,方便例程的移植,但是在实际开发的过程中还是多多少少会碰到差异,需要自己去对比原理图、工程代码来找出硬件方面的不同。


    对于不同工程,需要的存储区域以及大小不同,在MCUXpresso IDE中,通过”MCU settings”以及”Managed Linker Script”可以简单直接的对存储区域进行修改,确保对应的数据段、代码段和其他特定的段都链接到正确的地址。


    最后就是当工程使用SDRAM时,需要根据原理图以及数据手册,对DCD文件进行正确的配置。

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 1479 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92624
    最后登录
    2024-4-26
    发表于 2022-2-24 14:16:56 | 显示全部楼层
    感谢管管分享~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 21:17 , Processed in 0.130008 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表