X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
工控电子
[分享] 【米尔 NXP i.MX93 开发板评测】外设开发、BSP定制与系统移植操作
lijinlei
2024-9-6 21:01
楼主
# 【米尔 NXP i.MX93 开发板评测】外设开发、BSP定制与系统移植操作 根据 MYD-LMX9X 开发板上的各个外设介绍对应的开发流程,大家可根据实际项目需求对 BSP 进行差异化的定制,并将系统移植到基于 MYC-LMX9X 核心板设计的硬件平台上。
硬件平台资源详见 [MYD-LMX9X 设备树](https://www.myir.cn/shows/142/73.html) 。 ## DDR 适配 i.MX8 以及之前的系列,DDR 脚本的生成工具是一个excel 工具: Register Programming Aid(RPA), DDR 压力测试是另一个DDR stress test 工具。i.MX9 系列开始, DDR的脚本生成和压力测试,都合并到一个工具里: Config tool。同时, Config tool 工具还提供IOMUX 功能。Config tool [下载地址](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/config-tools-for-i-mx-applications-processors:CONFIG-TOOLS-IMX) 下载后安装在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 ```powershell PC:~/myd-lmx9x-bootloader/myir-imx-uboot$ source /opt/myd-lmx9x-sdk/toolc hain/environment-setup-armv8a-poky-linux ``` ##### 编译配置 根据DDR 大小的不同,uboot 的编译配置文件也不一样。用户根据需求的不同选择对应的配置文件编译 ##### 编译uboot 编译完成后会在build/imx93/release/文件夹中生成bl31.bin 二进制文件。 ```powershell 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 ```powershell PC:~/myd-lmx9x-bootloader/myir-imx-uboot$ source /opt/myd-lmx9x-sdk/toolc hain/environment-setup-armv8a-poky-linux ``` - #### 拷贝相关镜像文件 imx-boot 由多个固件生成,拷贝相关修改的镜像到目标目录 - #### 编译生成目录镜像 ```powershell PC:~/myd-lmx9x-bootloader/imx-boot $ make SOC=iMX9 REV=A1 dtbs=myd_lm x9x-11x11.dtb flash_singleboot ``` 生成的目录文件在 myd-lmx9x-bootloader/imx-boot/iMX9 目录 flash.bin。 ## 移植内核和驱动 ### Linux 内核平台适配 #### 进入源代码目录 加载SDK 环境变量到当前shell ```powershell PC:~/myd-lmx9x-bsp/myir-imx-linux$ source /opt/myd-lmx9x-sdk/toolchain/envi ronment-setup-armv8a-poky-linux ``` #### 创建设备树 #### 修改设备树Makefile 文件 ```powershell dtb-$(CONFIG_ARCH_MXC) += myir-imx93-11x11.dtb \ myir-imx93-11x11-root.dtb \ myir-imx93-11x11-lvds-10-1.dtb \ myir-imx93-11x11-lvds.dtb myir-imx93-11x11-RGB.dtb \ myir-imx93-11x11-test.dtb ``` #### 编译 kernel 源码 #### 查看生成设备树文件 ```powershell PC:~/myd-lmx9x-bsp/myir-imx-linux $ ls arch/arm64/boot/dts/myir-imx93-11x11 -test.dt* arch/arm64/boot/dts/myir/myir-imx93-11x11-test.dtb 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 - 添加引脚配置 ```powershell pinctrl_lcdif: lcdifgrp { fsl,pins = < MX93_PAD_GPIO_IO00__MEDIAMIX_DISP_CLK 0x31e MX93_PAD_GPIO_IO01__MEDIAMIX_DISP_DE 0x31e MX93_PAD_GPIO_IO02__MEDIAMIX_DISP_VSYNC 0x31e MX93_PAD_GPIO_IO03__MEDIAMIX_DISP_HSYNC 0x31e MX93_PAD_GPIO_IO04__MEDIAMIX_DISP_DATA00 0x31e MX93_PAD_GPIO_IO05__MEDIAMIX_DISP_DATA01 0x31e MX93_PAD_GPIO_IO06__MEDIAMIX_DISP_DATA02 0x31e MX93_PAD_GPIO_IO07__MEDIAMIX_DISP_DATA03 0x31e MX93_PAD_GPIO_IO08__MEDIAMIX_DISP_DATA04 0x31e MX93_PAD_GPIO_IO09__MEDIAMIX_DISP_DATA05 0x31e MX93_PAD_GPIO_IO10__MEDIAMIX_DISP_DATA06 0x31e MX93_PAD_GPIO_IO11__MEDIAMIX_DISP_DATA07 0x31e MX93_PAD_GPIO_IO12__MEDIAMIX_DISP_DATA08 0x31e MX93_PAD_GPIO_IO13__MEDIAMIX_DISP_DATA09 0x31e MX93_PAD_GPIO_IO14__MEDIAMIX_DISP_DATA10 0x31e MX93_PAD_GPIO_IO15__MEDIAMIX_DISP_DATA11 0x31e MX93_PAD_GPIO_IO16__MEDIAMIX_DISP_DATA12 0x31e MX93_PAD_GPIO_IO17__MEDIAMIX_DISP_DATA13 0x31e MX93_PAD_GPIO_IO18__MEDIAMIX_DISP_DATA14 0x31e MX93_PAD_GPIO_IO19__MEDIAMIX_DISP_DATA15 0x31e MX93_PAD_GPIO_IO20__MEDIAMIX_DISP_DATA16 0x31e MX93_PAD_GPIO_IO21__MEDIAMIX_DISP_DATA17 0x31e MX93_PAD_GPIO_IO22__MEDIAMIX_DISP_DATA18 0x0000051E MX93_PAD_GPIO_IO23__MEDIAMIX_DISP_DATA19 0x0000051E MX93_PAD_GPIO_IO24__MEDIAMIX_DISP_DATA20 0x0000051E MX93_PAD_GPIO_IO25__MEDIAMIX_DISP_DATA21 0x0000051E MX93_PAD_GPIO_IO26__MEDIAMIX_DISP_DATA22 0x0000051E MX93_PAD_GPIO_IO27__MEDIAMIX_DISP_DATA23 0x0000051E >; }; ``` ### 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 显示控制器 #### 添加引脚配置 ```powershell pinctrl_lt9611: pinctrl9611 { fsl,pins = < MX93_PAD_SD3_DATA1__GPIO3_IO23 0x0000057E >; }; ``` #### 配置内核 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 开发者和爱好者
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
随便看看
LinuxC编程从初学到精通,嵌入式学习必看
MOS管
好久没来,回来问问题,launchpad连不上,fail to initialize
学习ARM的迷惑
测试小型存储器阵列的新方法
TI 新推免费StarterWare软件包, 助力工程师便捷编程!
关于MSP430的I/O配置问题
阻抗匹配与史密斯(Smith)圆图: 基本原理
TI教室模拟类课程精品专题推荐!
从原理图导到PCB求助
【一起做FPGA专题】1.1FPGA最小系统设计
英飞凌1ED020I12FA芯片的DESAT引脚电压有问题,希望老大们能够帮忙解惑。希望大家...
TI电池管理+BQ24074充电器
高分求教Keil的AGDI接口的几个问题?
关于使用逻辑分析仪调试SPI异常问题
研究Xmodem协议必看的11个问题
malloc的问题
BMS常用的IC芯片汇总
什么情况下会出现这个东西呀,没遇到过
暴力的秋风!
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复