Files
rt-thread/bsp/nxp/imx/imx91

FRDM-IMX91 板级支持包 使用说明

本目录包含NXP FRDM-IMX91 开发板的板级支持包代码。

1. 简介

1.1 i.MX91系列处理器简介

i.MX 91系列采用了可扩展的Arm® Cortex®-A55内核其主频高达1.4GHz支持新一代LPDDR4内存以延长平台寿命支持双千兆以太网和双USB端口以及面向医疗、工业和消费物联网市场细分领域的丰富外设。

1.2 FRDM-i.MX91开发板简介

FRDM i.MX 91开发板是一款低成本、紧凑型开发板采用i.MX 91应用处理器。该板配备板载IW610模块集成了恩智浦的三频解决方案支持Wi-Fi 6、BLE 5.4和802.15.4适用于开发现代工业和物联网应用。该开发板包含LPDDR4、用于快速启动的eMMC存储、PMIC以及扩展功能。

FRDM i.MX 91开发板是一款入门级紧凑型开发板采用i.MX 91应用处理器。

GS-FRDM-IMX91-IMG1

开发板主要硬件资源:

资源 简介
处理器 ◆ i.MX 91应用处理器
Cortex-A55@1.4G
◆ EdgeLock®安全区域
存储器 ◆ 1GB LPDDR4
◆ 8GB eMMC5.1
◆ MicroSD插槽
◆ EEPROM
显示器和摄像头接口 ◆ 并行RGB LCD接口(40引脚扩展接口)
◆ 并行摄像头接口(40引脚扩展接口)
无线 ◆ u-blox MAYA-W476-00B三频Wi-Fi 6/BLE 5.4/802.15.4模块
音频 ◆ 3.5mm耳机插孔
连接 ◆ USB2.0 Type-C连接器
◆ USB2.0 type A连接器
◆ 两个GbE RJ45
◆ CAN(HDR)
◆ 40引脚(2x20)
◆ 扩展接口
◆ I²C HDR
◆ ADC HDR
调试 ◆ SWD连接器
◆ 通过USB Type C的UART

1.3 开发板和PC之间的连接

在FRDM i.MX 91开发板上调测RT-Thread的过程中需要使用到的接口有

  1. POWERP1USB供电接口用于向开发板供电
  2. DEBUGP16带有USB转串口芯片用于U-Boot和RT-Thread日志输出、命令行交互
  3. ENET1P4或者ENET2P3以太网口用于网络下载编译生成的RT-Thread固件

2. 编译

2.1 下载AArch64工具链

从ARM开发者网站下载AArch64裸机工具链

下载页面: Arm GNU Toolchain Downloads Arm Developer

例如64位Windows主机上下载 https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-mingw-w64-x86_64-aarch64-none-elf.zip

例如,下载后解压到本地路径:D:\ARM\arm-gnu-toolchain-14.3.rel1-mingw-w64-x86_64-aarch64-none-elf

2.2 下载RT-Thread Env工具

下载页面:rt-thread.org/download.html#download-rt-thread-env-tool

2.3 下载RT-Thread源代码

在Env环境中使用git命令下载RT-Thread源代码例如

git clone https://github.com/RT-Thread/rt-thread.git

2.4 编译FRDM-i.MX 91目标

在Env环境中转到i.MX 91的BSP目录

cd bsp/nxp/imx/imx91/

然后设置工具链路径Windows Env环境

set RTT_EXEC_PATH=D:\ARM\arm-gnu-toolchain-14.3.rel1-mingw-w64-x86_64-aarch64-none-elf\bin

或者bash

export RTT_EXEC_PATH=/path/to/aarch64-none-elf/bin

接着,执行scons命令开始编译:

scons -j 8

3.下载

开发板默认固件带有U-Boot启动加载器开机3秒内通过串口发送换行符可以进入U-Boot命令行界面。

3.1 准备U-Boot网络环境

将开发板和PC连接到同一个路由器。

例如PC的IP地址为192.168.0.101

在开发板的U-Boot命令行界面内设置FRDM-i.MX为静态IP

setenv ipaddr 192.168.0.120

或者从路由器动态获取IP

dhcp

成功后可以使用ping命令测试是否可以访问PC

ping 192.168.0.101

成功则表示网络环境正常,可以执行后续步骤。

3.2 安装TFTP服务

Windows系统可以使用Tftpd下载链接 Releases · PJO2/tftpd64

例如下载portable免安装版本 https://github.com/PJO2/tftpd64/releases/download/v4.74/tftpd64_portable_v4.74.zip

启动后设置TFTP工作目录

image-20251210021421740

3.3 拷贝rtthread.bin到TFTP工作目录

在PC的Env环境中rtthread.bin 拷贝到TFTP工作目录

copy /Y rtthread.bin D:\PortableSoftwareApps\tftpd64_portable_v4.74\work\

或者:

cp rtthread.bin /path/to/tftp_work_dir/

3.4 下载rtthread.bin到开发板内存中

在开发板的U-Boot命令行界面中首先执行如下命令设置TFTP服务地址PC的IP地址

setenv serverip 192.168.0.101

然后继续在开发板的U-Boot命令行界面中执行如下命令rtthread.bin下载到内存中:

tftp 0x80000000 rtthread.bin

下载的目标内存地址为:0x80000000

4. 运行

4.1 通过U-Boot的tftp命令下载、运行rtthread.bin

完成前述步骤后,在开发板的 U-Boot 命令行界面中,继续执行以下命令,以跳转至 0x80000000 地址并执行代码:

dcache flush
icache flush
go 0x80000000

每次开发板上电启动后,均需执行上述 U-Boot 命令RT-Thread 方可正常运行。这在需要反复调试时显得不够便捷。

为此,可将以上命令写入 U-Boot 的环境变量 bootcmd 中,从而实现开机自动执行,便于后续调试。具体操作命令如下:

setenv ipaddr 192.168.0.120
setenv serverip 192.168.0.101
setenv bootcmd "tftp 0x80000000 rtthread.bin; dcache flush; icache flush; go 0x80000000"
saveenv
reset

其中,saveenv 命令用于保存环境变量的值,确保重启后依然生效;最后的 reset 为重启命令。

执行效果如下图所示:

image-20251210220620728

4.2 通过U-Boot的fatload命令下载、运行rtthread.bin

另外也可以先将PC上编译生产的rtthread.bin文件拷贝到MicroSD卡中再将MicroSD弹出后插到开发板上然后通过U-Boot的fatload命令将MicroSD卡中的文件加载内存再执行跳转

fatload mmc 1:1 0x80000000 rtthread.bin; dcache  flush ; icache  flush; go 0x80000000

相应的也可以保存到bootcmd变量中:

setenv bootcmd "fatload mmc 1:1 0x80000000 rtthread.bin; dcache  flush ; icache  flush; go 0x80000000"

5. 参考链接

  1. 维护人: xusiwei
  2. AArch64工具链下载页面 Arm GNU Toolchain Downloads Arm Developer
  3. Tftp64下载页面https://github.com/PJO2/tftpd64/releases
  4. FRDM-i.MX91开发板介绍FRDM i.MX 91 Development Board | NXP 半导体
  5. i.MX91处理器介绍 i.MX 91 Applications Processors Family | NXP 半导体