imx8mm除了支持4个Cortex-A53还带1个Cortex-M4核,运行频率高达400MHz,本文需要在Cortex-M4核运行裸机程序或者系统。

运行官方bin文件

 u-boot=> tftp 0x7e0000 imx8mm_m4_TCM_hello_world.bin    Using ethernet@30be0000 deviceTFTP from server 192.168.1.99; our IP address is 192.168.1.55Filename 'imx8mm_m4_TCM_hello_world.bin'.Load address: 0x7e0000Loading: #617.2 KiB/sdoneBytes transferred = 6320 (18b0 hex)u-boot=> u-boot=> bootaux 0x7e0000## Starting auxiliary core at 0x007E0000 ...

Cortex-M4串口打印:

hello world.

下载NXP官方SDK

SDK_2.5.0_EVK-MIMX8MM

安装交叉编译链

NXP官方编译链:gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu

aarch64-linux-gnu-gcc -v
gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02) 

设置环境变量:

export ARMGCC_DIR="/home/logread/imx8m-mini/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu"

export PATH=$PATH:/home/logread/imx8m-mini/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin

编译demo

进入目录:SDK_2.5.0_EVK-MIMX8MM/boards/evkmimx8mm/demo_apps/hello_world/armgcc

修改gcc:修改arm-none-eabi为aarch64-linux-gnu

SDK_2.5.0_EVK-MIMX8MM/tools/cmake_toolchain_files/armgcc.cmake +24

否则会报下面错误:

  提示下面错误:

需要注释下面的参数:

还是会编译.s汇编文件的thumb指令问题,暂时放弃使用这个编译链。

更换编译链

编译链:gcc-arm-none-eabi-7-2017-q4-major-linux.bz2

/home/logread/imx8m-mini/gcc-arm-none-eabi-7-2017-q4-major

export ARMGCC_DIR="/home/logread/imx8m-mini/gcc-arm-none-eabi-7-2017-q4-major"

export PATH=$PATH:/home/logread/imx8m-mini/gcc-arm-none-eabi-7-2017-q4-major/bin

logread@logread:~/imx8m-mini/gcc-arm-none-eabi-7-2017-q4-major$ arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/home/logread/imx8m-mini/gcc-arm-none-eabi-7-2017-q4-major/bin/../lib/gcc/arm-none-eabi/7.2.1/lto-wrapper
Target: arm-none-eabi
Configured with: /tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/src/gcc/configure --target=arm-none-eabi --prefix=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native --libexecdir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/lib --infodir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/install-native/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --with-gmp=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-mpfr=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-mpc=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-isl=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-libelf=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-633_20171130_1512067137/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for Arm Embedded Processors 7-2017-q4-major' --with-multilib-list=rmprofile
Thread model: single
gcc version 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204] (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 

编译链改会arm-none-eabi,编译成功:

加载运行

拷贝debug/hello_world.bin,通过tftp加载,运行成功

u-boot=> tftp  0x7e0000  hello_world.bin
Using ethernet@30be0000 device
TFTP from server 192.168.1.99; our IP address is 192.168.1.55
Filename 'hello_world.bin'.
Load address: 0x7e0000
Loading: ##980.5 KiB/s
done
Bytes transferred = 15072 (3ae0 hex)
u-boot=> bootaux 0x7e0000
## Starting auxiliary core at 0x007E0000 ...Cortex-M4 serial:
hello world.
hello 2-che.

编译除的bin和elf文件差别,elf文件怎么跑的呢?

logread@logread:~/imx8m-mini/SDK_2.5.0_EVK-MIMX8MM/boards/evkmimx8mm/demo_apps/hello_world/armgcc$ file debug/hello_world.bin
debug/hello_world.bin: data
logread@logread:~/imx8m-mini/SDK_2.5.0_EVK-MIMX8MM/boards/evkmimx8mm/demo_apps/hello_world/armgcc$ file debug/hello_world.elf
debug/hello_world.elf: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped

elf文件需要使用J-LINK+gdb来运行在M4核:

$ arm-none-eabi-gdb hello_world.elf

i.MX 8M Mini Cortex-M4 Hello World相关推荐

  1. NXP i.MX 8M Mini处理器

    MYC-C8MMX核心板及开发板采用NXP i.MX 8M Mini系列嵌入式应用处理器设计,该系列应用处理器融合了先进的处理能力先进的音频,视频和图形,提供低功耗和高性能嵌入式消费和工业应用的解决方 ...

  2. NXP i.MX 8M Mini核心板(4核 ARM Cortex-A53)规格软硬件说明资料

    今日与大家分享基于NXP i.MX 8M Mini处理器的创龙科技-新款异构多核工业级开发板,它采用了四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计,是创龙科技 ...

  3. NXP i.MX 8M Mini开发板(4核 ARM Cortex-A53)硬件原理图规格说明书

    前 言 本文档主要介绍NXP i.MX 8M Mini开发板硬件接口资源以及设计注意事项等内容. 创龙科技的NXP i.MX 8M Mini开发板是一款基于NXP i.MX 8M Mini的四核ARM ...

  4. NXP i.MX 8M Mini 核心板规格参数,四核ARM Cortex-A53 + ARM Cortex-M4

    今日与大家分享基于NXP i.MX 8M Mini处理器的创龙科技-新款异构多核工业级核心板,它采用了四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计,是创龙科技 ...

  5. NXP i.MX 8M Mini 开发板规格参数,四核ARM Cortex-A53 + ARM Cortex-M4

    今日与大家分享基于NXP i.MX 8M Mini处理器的创龙科技-新款异构多核工业级开发板,它采用了四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计,是创龙科技 ...

  6. i.MX 8M Mini——四核Cortex-A53+Cortex-M4多核CPU如何实现工控

    随着ARM处理器性能不断增强,当前越来越多产品都倾向尽量用单一架构的高性能ARM平台来满足产品的不同功能要求.但是,在工业应用领域还是要面对一些实时控制和通讯的要求,单一系统架构无法完全满足.面对复杂 ...

  7. linux系统的drm配置mipi,NXP i.MX 8M Mini平台Linux系统启动时间优化

    0x0 芯片功能介绍 i.MX 8M Mini是恩智浦首款采用先进的14LPC FinFET工艺技术打造的嵌入式多核异构应用处理器.i.MX 8M Mini系列处理器集合了高性能计算.能效.增强的系统 ...

  8. 【含案例源码】NXP i.MX 8M Mini基于FlexSPI、PCIe与FPGA的高速通信开发详解

    前 言 本文主要介绍i.MX 8M Mini基于FlexSPI.PCIe与FPGA的高速通信案例. 本文档适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 ...

  9. 基于NXP i.MX 8M Mini芯片的MYC-C8MMX核心板详细资料

    NXP 推出 i.MX8M Mini系列芯片以来,电子工程师们沸腾了,都想入手试试.嵌入式板卡公司米尔电子率先推出基于i.MX8M Mini处理器的MYC-C8MMX核心板及开发板.下面跟着小编一起看 ...

最新文章

  1. 骚操作!用 CPU 烤肉,这位程序员做到了
  2. Cacti脚本及模板
  3. t3 修改服务器配置,t3如何修改服务器地址
  4. mysql 8.0.19 winx64安装及修改初始密码
  5. mysql5.7.17的linux安装,linux下mysql5.7.17最新稳定版本安装教程
  6. STM32F1 端口复用、端口(部分和完全)重映射
  7. go tool trace goalng调优工具
  8. 《Java8实战》笔记(04):引入流
  9. Python 基础 —— re:正则表达
  10. python-3高级特征
  11. word中编辑公式及公式编号的对齐设置
  12. 重磅!!Gradle 6.6 发布,大幅提升性能!
  13. 众信金融8·28开放日:聆听投资人心声
  14. default在php定义什么,default(T)的含义
  15. Java GUI实现图书管理系统
  16. matlab三相电路基波图形,非正弦稳态对称三相电路如图a所示。A相电源电压为,其中基波角频率为ω1=1rad/s。负载参数为R=...
  17. if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT)设置后的效果
  18. excel流程图分叉 合并_快速制作组织架构图,层次结构图,流程图等,只需学会这个功能...
  19. Java理论题(2)——简答题
  20. 远程连接linux工具mob,ssh远程登录工具 mob,MobXterm与FileZilla

热门文章

  1. 笔记代码 | 统计学——基于R(第四版) 第十一章 时间序列预测
  2. 数字经济发展势头强劲
  3. MATLAB中勒让德多项式程序
  4. 拥抱人工智能--机器学习(附python代码)
  5. 【Spark】Spark的常用算子
  6. 2013年,快递行业将进入“多事之秋”?
  7. 什么是闭包?有哪些使用场景?优缺点是什么?
  8. 真人秀制作网站_制造多款热门恋爱真人秀,这个新平台有何创意研发方法论?...
  9. SSLDOS攻击神器---THC-SSL-DOS 使用笔记
  10. posix_qui-master 服务器端QuicAccept()函数