M4 FreeRTOS SDK部署
a)根据这里的说明从NXP MCUXpresso网站下载对应iMX8QM的SDK,当前的最新版本为2.5.2。下载界面如下图所示,在这个页面同时也可以下载到关于SDK的一些说明文档。下载好的SDK文件为 ”SK_2.5.2_MIMX8QM6xxxFF.tar.gz”
b)。 下载ToolchAIn
/ 根据SDK文档建议使用 gcc-arm 7 2018q2版本,下载地址如下:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/7-2018-q2-update
/ 解压下载好的Toolchain文件到《Toolchain_dir》
-----------------------------------
# 解压
$ cd 《Toolchain_dir》
$ tar xvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
# 测试
$ gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 可能需要安装额外的工具供后续编译使用,以Ubuntu为例
$ sudo apt-get install make cmake
-----------------------------------
c)。 编译Helloworld测试应用
/ 解压步骤a下载的SDK文件到《Work_dir》
-----------------------------------
$ cd 《Work_dir》
$ tar xvf SDK_2.5.2_MIMX8QM6xxxFF.tar.gz
-----------------------------------
/ 导出toolchain路径
-----------------------------------
$ export ARMGCC_DIR=《Toolchain_dir》/gcc-arm-none-eabi-7-2018-q2-update/
-----------------------------------
/ 编译M40 Helloworld应用
-----------------------------------
# SDK中包含的示例代码均在 《Work_dir》/boards/mekmimx8qm/ 目录
# M40 Helloworld demo 编译
$ cd 《Work_dir》/boards/mekmimx8qm/demo_apps/hello_world/cm4_core0
$ armgcc/build_all.sh
-----------------------------------
/ 编译好的二进制文件位于 armgcc 目录下的 debug/release、ddr_debug/ddr_release、flash_debug/flash_release 目录。默认M4应用从TCM加载,ddr和flash分别对应ddr和flash加载模式,本文不做讨论。另外,Apalis iMX8的memory 区域分配请参考这里。
d)。 部署测试M40 Helloworld示例应用
/ 由于目前Apalis iMX8 uboot版本(U-Boot 2018.03-toradex_imx_v2018.03_4.14.78_1.0.0_ga-bringup+g92d0497781)暂时还不支持ELF格式镜像,因此我们将生成的二进制文件m4_image.bin 复制到FAT32分区的SD卡根目录,然后将SD卡连接到Apalis Evaluation Board X19 4bit SD卡插槽
-----------------------------------
# Apalis iMX8 上电开机,Cortex-A 核心调试串口UART1 串口终端按住空格键进入uboot
U-Boot 2018.03-toradex_imx_v2018.03_4.14.98_2.3.0_bringup+gd626574ba1 (Apr 17 2020 - 19:28:04 +0000)
cpu: Freescale i.MX8QM revB A53 at 1200 MHz at 25C
DRAM: 4 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC.。. OK
In: serial
Out: serial
Err: serial
Model: Toradex Apalis iMX8 QuadMax 4GB Wi-Fi / BT IT V1.0B, Serial# 06548514
BuildInfo:
- SCFW b929edfe, SECO-FW 27167ff2, IMX-MKIMAGE d7f9440d, ATF bb209a0
- U-Boot 2018.03-toradex_imx_v2018.03_4.14.98_2.3.0_bringup+gd626574ba1
switch to partitions #0, OK
mmc0(part 0) is current device
flash target is MMC:0
Net: eth0: ethernet@5b040000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
Apalis iMX8 #
# 查看SD卡image
Apalis iMX8 # ls mmc 2
…
# 加载Helloworld程序并运行
Apalis iMX8 # fatload mmc 2 ${loadaddr} m4_image.bin && dcache flush && bootaux ${loadaddr} 0
9032 bytes read in 20 ms (440.4 KiB/s)
## Starting auxiliary core at 0x80280000 。..
Power on M4 and MU
Copy M4 image from 0x80280000 to TCML 0x34fe0000
Start M4 0
bootaux complete
-----------------------------------
/ 运行后,在M40 调试UART对应的串口终端可以看到 ”hello world” 打印输出,然后应用程序可以接收并打印键盘输入,比如这里输入了” this is input before linux boot up” 字符串。
-----------------------------------
hello world.
this is input before linux boot up
-----------------------------------
/ 此时切换到UART1 调试串口终端,执行下面命令继续启动Linux
-----------------------------------
Apalis iMX8 # run bootcmd
-----------------------------------
/ 再切换到M40调试串口终端,键盘输入测试
-----------------------------------
hello world.
this is input before linux boot up this is input after linux boot up
-----------------------------------
/ 对于M41,操作方式类似,只是加载的时候将将命令最后0替换为1
-----------------------------------
Apalis iMX8 # fatload mmc 2 ${loadaddr} m4_1_image.bin && dcache flush && bootaux ${loadaddr} 1
-----------------------------------
M4 FreeRTOS SDK部署
a)根据这里的说明从NXP MCUXpresso网站下载对应iMX8QM的SDK,当前的最新版本为2.5.2。下载界面如下图所示,在这个页面同时也可以下载到关于SDK的一些说明文档。下载好的SDK文件为 ”SK_2.5.2_MIMX8QM6xxxFF.tar.gz”
b)。 下载ToolchAIn
/ 根据SDK文档建议使用 gcc-arm 7 2018q2版本,下载地址如下:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/7-2018-q2-update
/ 解压下载好的Toolchain文件到《Toolchain_dir》
-----------------------------------
# 解压
$ cd 《Toolchain_dir》
$ tar xvf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
# 测试
$ gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2018-q2-update) 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 可能需要安装额外的工具供后续编译使用,以Ubuntu为例
$ sudo apt-get install make cmake
-----------------------------------
c)。 编译Helloworld测试应用
/ 解压步骤a下载的SDK文件到《Work_dir》
-----------------------------------
$ cd 《Work_dir》
$ tar xvf SDK_2.5.2_MIMX8QM6xxxFF.tar.gz
-----------------------------------
/ 导出toolchain路径
-----------------------------------
$ export ARMGCC_DIR=《Toolchain_dir》/gcc-arm-none-eabi-7-2018-q2-update/
-----------------------------------
/ 编译M40 Helloworld应用
-----------------------------------
# SDK中包含的示例代码均在 《Work_dir》/boards/mekmimx8qm/ 目录
# M40 Helloworld demo 编译
$ cd 《Work_dir》/boards/mekmimx8qm/demo_apps/hello_world/cm4_core0
$ armgcc/build_all.sh
-----------------------------------
/ 编译好的二进制文件位于 armgcc 目录下的 debug/release、ddr_debug/ddr_release、flash_debug/flash_release 目录。默认M4应用从TCM加载,ddr和flash分别对应ddr和flash加载模式,本文不做讨论。另外,Apalis iMX8的memory 区域分配请参考这里。
d)。 部署测试M40 Helloworld示例应用
/ 由于目前Apalis iMX8 uboot版本(U-Boot 2018.03-toradex_imx_v2018.03_4.14.78_1.0.0_ga-bringup+g92d0497781)暂时还不支持ELF格式镜像,因此我们将生成的二进制文件m4_image.bin 复制到FAT32分区的SD卡根目录,然后将SD卡连接到Apalis Evaluation Board X19 4bit SD卡插槽
-----------------------------------
# Apalis iMX8 上电开机,Cortex-A 核心调试串口UART1 串口终端按住空格键进入uboot
U-Boot 2018.03-toradex_imx_v2018.03_4.14.98_2.3.0_bringup+gd626574ba1 (Apr 17 2020 - 19:28:04 +0000)
cpu: Freescale i.MX8QM revB A53 at 1200 MHz at 25C
DRAM: 4 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC.。. OK
In: serial
Out: serial
Err: serial
Model: Toradex Apalis iMX8 QuadMax 4GB Wi-Fi / BT IT V1.0B, Serial# 06548514
BuildInfo:
- SCFW b929edfe, SECO-FW 27167ff2, IMX-MKIMAGE d7f9440d, ATF bb209a0
- U-Boot 2018.03-toradex_imx_v2018.03_4.14.98_2.3.0_bringup+gd626574ba1
switch to partitions #0, OK
mmc0(part 0) is current device
flash target is MMC:0
Net: eth0: ethernet@5b040000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
Apalis iMX8 #
# 查看SD卡image
Apalis iMX8 # ls mmc 2
…
# 加载Helloworld程序并运行
Apalis iMX8 # fatload mmc 2 ${loadaddr} m4_image.bin && dcache flush && bootaux ${loadaddr} 0
9032 bytes read in 20 ms (440.4 KiB/s)
## Starting auxiliary core at 0x80280000 。..
Power on M4 and MU
Copy M4 image from 0x80280000 to TCML 0x34fe0000
Start M4 0
bootaux complete
-----------------------------------
/ 运行后,在M40 调试UART对应的串口终端可以看到 ”hello world” 打印输出,然后应用程序可以接收并打印键盘输入,比如这里输入了” this is input before linux boot up” 字符串。
-----------------------------------
hello world.
this is input before linux boot up
-----------------------------------
/ 此时切换到UART1 调试串口终端,执行下面命令继续启动Linux
-----------------------------------
Apalis iMX8 # run bootcmd
-----------------------------------
/ 再切换到M40调试串口终端,键盘输入测试
-----------------------------------
hello world.
this is input before linux boot up this is input after linux boot up
-----------------------------------
/ 对于M41,操作方式类似,只是加载的时候将将命令最后0替换为1
-----------------------------------
Apalis iMX8 # fatload mmc 2 ${loadaddr} m4_1_image.bin && dcache flush && bootaux ${loadaddr} 1
-----------------------------------
举报