1855|0

85

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

【米尔 NXP i.MX93 开发板评测】外设开发、BSP定制与系统移植操作 [复制链接]

【米尔 NXP i.MX93 开发板评测】外设开发、BSP定制与系统移植操作

根据 MYD-LMX9X 开发板上的各个外设介绍对应的开发流程,大家可根据实际项目需求对 BSP 进行差异化的定制,并将系统移植到基于 MYC-LMX9X 核心板设计的硬件平台上。

硬件平台资源详见 MYD-LMX9X 设备树

DDR 适配

i.MX8 以及之前的系列,DDR 脚本的生成工具是一个excel 工具: Register Programming Aid(RPA), DDR 压力测试是另一个DDR stress test 工具。i.MX9 系列开始, DDR的脚本生成和压力测试,都合并到一个工具里: Config tool。同时, Config tool 工具还提供IOMUX 功能。Config tool 下载地址

下载后安装在Windows 环境。

LPDDR4X 参数配置

参数说明:
①:表示选择基本参数配置还是高级参数配置;
②:LPDDR4X 和LPDDR4 的选择;
③:运行频率选择,根据datasheet 选择;
④:Rank 的选择,16bit 的DDR,基本上rank 都为1
⑤:DDR 大小的选择,根据板子的ddr 大小选择。

LPDDR4X 测试

在之前的DDR stress test 工具里,只提供了两种功能: DDR calibration 和stress test。在新的Config tool 工具里,提供了更多的测试项目,便于客户debug DDR,共四项。以DDR 压力测试为例解释DDR 的测试过程。

选择DDR 测试项

选择“DDR 测试”界面,如标记①所示,然后选择DDR 压力测试

DDR 压力测试

点击DDR 压力测试界面的“开始”按钮,即开始ddr 压力测试,如下图所示压力测试通过

DDR 初始化代码生成

在界面右边,有代码生成窗口。如果不出现,则点击 Views - Registers,右侧的ddr_timg.c 里的代码就是用于uboot 的代码。左边寄存器配置改变,右边代码会自动生成并改变。

导出成功后自动命名 lpddr4x_timing.c,拷贝到 board/myir/myd_lmx93x 目录,即成完成ddr 的适配。

单独移植Bootloader

在i.MX93 平台,bootloader 由imx-mkimage 工具制作完成(imx-boot), 需要多个固件生成,包含SPL、uboot、atf、optee、DDR phy 固件。

准备bootloader 源码

U-boot 移植

加载SDK 环境变量到当前shell

  1. PC:~/myd-lmx9x-bootloader/myir-imx-uboot$ source /opt/myd-lmx9x-sdk/toolc
  2. hain/environment-setup-armv8a-poky-linux
编译配置

根据DDR 大小的不同,uboot 的编译配置文件也不一样。用户根据需求的不同选择对应的配置文件编译

编译uboot

编译完成后会在build/imx93/release/文件夹中生成bl31.bin 二进制文件。

  1. PC:~/myd-lmx9x-bootloader/myir-imx-uboot $ make -j10
  • 目标镜像

编译后在uboot 源码目录生成文件

u-boot-nodtb.bin,

spl/u-boot-spl.bin,

arch/arm/dts/myd-lmx93x-11x11.dtb

生成目标引导imx-boot

加载SDK 环境变量到当前shell

  1. PC:~/myd-lmx9x-bootloader/myir-imx-uboot$ source /opt/myd-lmx9x-sdk/toolc
  2. hain/environment-setup-armv8a-poky-linux
  • 拷贝相关镜像文件

imx-boot 由多个固件生成,拷贝相关修改的镜像到目标目录

  • 编译生成目录镜像

  1. PC:~/myd-lmx9x-bootloader/imx-boot $ make SOC=iMX9 REV=A1 dtbs=myd_lm
  2. x9x-11x11.dtb flash_singleboot

生成的目录文件在 myd-lmx9x-bootloader/imx-boot/iMX9 目录 flash.bin。

移植内核和驱动

Linux 内核平台适配

进入源代码目录

加载SDK 环境变量到当前shell

  1. PC:~/myd-lmx9x-bsp/myir-imx-linux$ source /opt/myd-lmx9x-sdk/toolchain/envi
  2. ronment-setup-armv8a-poky-linux

创建设备树

修改设备树Makefile 文件

  1. dtb-$(CONFIG_ARCH_MXC) += myir-imx93-11x11.dtb \
  2. myir-imx93-11x11-root.dtb \
  3. myir-imx93-11x11-lvds-10-1.dtb \
  4. myir-imx93-11x11-lvds.dtb myir-imx93-11x11-RGB.dtb \
  5. myir-imx93-11x11-test.dtb

编译 kernel 源码

查看生成设备树文件

  1. PC:~/myd-lmx9x-bsp/myir-imx-linux $ ls arch/arm64/boot/dts/myir-imx93-11x11
  2. -test.dt*
  3. arch/arm64/boot/dts/myir/myir-imx93-11x11-test.dtb
  4. arch/arm64/boot/dts/myir/myir-imx93-11x11-test.dts

RGB 驱动移植

MYD-LMX9X 有一路原生的并行显示,接口为 J23,

RGB 控制器配置

  • 设备树配置

选择RGB 显示的时候,需要将lcdif 控制器端口链接到DPI 显示接口。所以需要使能 lcdif、ldb 以及ldb_phy。修改arch/arm64/boot/dts/myir/myir-imx93-11x11-lvds.dts 使能lvds 显示

  • 使能驱动

Parallel 驱动 gpu/drm/imx/imx93-parallel-disp-fmt.c

  • 添加引脚配置
  1. pinctrl_lcdif: lcdifgrp {
  2. fsl,pins = <
  3. MX93_PAD_GPIO_IO00__MEDIAMIX_DISP_CLK 0x31e
  4. MX93_PAD_GPIO_IO01__MEDIAMIX_DISP_DE 0x31e
  5. MX93_PAD_GPIO_IO02__MEDIAMIX_DISP_VSYNC 0x31e
  6. MX93_PAD_GPIO_IO03__MEDIAMIX_DISP_HSYNC 0x31e
  7. MX93_PAD_GPIO_IO04__MEDIAMIX_DISP_DATA00 0x31e
  8. MX93_PAD_GPIO_IO05__MEDIAMIX_DISP_DATA01 0x31e
  9. MX93_PAD_GPIO_IO06__MEDIAMIX_DISP_DATA02 0x31e
  10. MX93_PAD_GPIO_IO07__MEDIAMIX_DISP_DATA03 0x31e
  11. MX93_PAD_GPIO_IO08__MEDIAMIX_DISP_DATA04 0x31e
  12. MX93_PAD_GPIO_IO09__MEDIAMIX_DISP_DATA05 0x31e
  13. MX93_PAD_GPIO_IO10__MEDIAMIX_DISP_DATA06 0x31e
  14. MX93_PAD_GPIO_IO11__MEDIAMIX_DISP_DATA07 0x31e
  15. MX93_PAD_GPIO_IO12__MEDIAMIX_DISP_DATA08 0x31e
  16. MX93_PAD_GPIO_IO13__MEDIAMIX_DISP_DATA09 0x31e
  17. MX93_PAD_GPIO_IO14__MEDIAMIX_DISP_DATA10 0x31e
  18. MX93_PAD_GPIO_IO15__MEDIAMIX_DISP_DATA11 0x31e
  19. MX93_PAD_GPIO_IO16__MEDIAMIX_DISP_DATA12 0x31e
  20. MX93_PAD_GPIO_IO17__MEDIAMIX_DISP_DATA13 0x31e
  21. MX93_PAD_GPIO_IO18__MEDIAMIX_DISP_DATA14 0x31e
  22. MX93_PAD_GPIO_IO19__MEDIAMIX_DISP_DATA15 0x31e
  23. MX93_PAD_GPIO_IO20__MEDIAMIX_DISP_DATA16 0x31e
  24. MX93_PAD_GPIO_IO21__MEDIAMIX_DISP_DATA17 0x31e
  25. MX93_PAD_GPIO_IO22__MEDIAMIX_DISP_DATA18 0x0000051E
  26. MX93_PAD_GPIO_IO23__MEDIAMIX_DISP_DATA19 0x0000051E
  27. MX93_PAD_GPIO_IO24__MEDIAMIX_DISP_DATA20 0x0000051E
  28. MX93_PAD_GPIO_IO25__MEDIAMIX_DISP_DATA21 0x0000051E
  29. MX93_PAD_GPIO_IO26__MEDIAMIX_DISP_DATA22 0x0000051E
  30. MX93_PAD_GPIO_IO27__MEDIAMIX_DISP_DATA23 0x0000051E
  31. >;
  32. };

HDMI 驱动移植

MYD-LMX9X 开发板外接一个lt9611 芯片,一路hdmi 信号,hdmi 可接显示器输出,查看原理图与《MYD-LMX9X-PinList-V1.0.pdf》得出lt9611 芯片数据管脚与i.MX93的对应关系。

添加lt9611 设备树节点

根据原理图的定义添加lt9611 设备树配置,里面包含lvds 和hdmi 相关参数配置,修改myir-imx93-11x11.dts 文件

添加DSI 设备端点

LCD 接口(LCDIF)是一个系统主控器,它从存储在内存中的图形中提取数据,并将其显示在TFT 液晶面板上。通过显示端口选择DSI 显示控制器

添加引脚配置

  1. pinctrl_lt9611: pinctrl9611 {
  2. fsl,pins = <
  3. MX93_PAD_SD3_DATA1__GPIO3_IO23 0x0000057E
  4. >;
  5. };

配置内核

Lt9611 驱动位于drivers/gpu/drm/bridge/lontium-lt9211.c,只需要把这个驱动打开,编译进内核即可。

其他驱动的移植

包括RTC驱动、WiFi驱动、USB OTG驱动、CAN驱动、按键驱动、网卡驱动、音频驱动、摄像头驱动、SD卡驱动、单路LVDS驱动等,详见参考材料。

参考资料

Linux kernel 开源社区
https://www.kernel.org/
NXP 社区论坛
https://community.nxp.com/
Yocto 开发指导
https://www.yoctoproject.org/
Yocto 项目BSP 开发指南
https://www.yoctoproject.org/docs/3.1.1/bsp-guide/bsp-guide.html
Yocto 项目Linux 内核开发手册
https://www.yoctoproject.org/docs/3.1.1/kernel-dev/kernel-dev.html
QT 跨平台软件设计与开发
https://www.qt.io/

点赞 关注
个人签名

MCU 开发者和爱好者

 

回复
举报
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播 | AI之眼——安森美图像传感器 报名中
直播时间:2025年4月25日(周五)上午10:00-11:30
直播主题:AI之眼——安森美图像传感器
报名观看直播、直播间提问、填写问卷均有机会获得精美礼品!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 15

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表