IMX6ULL裸机启动,IMX6ULL运行freeRtos

news/2025/1/8 15:01:44/

IMX6ULL裸机启动,IMX6ULL运行freeRtos

裸机启动部分

在这里插入图片描述
imx6ull中根据运行代码位置的不同RAM/flash/SD卡,上电会先运行片上ROM中的代码,搬运的数据大小是不同的,代码也不是存储在0地址处的。如下图,比如从sd中运行代码,代码IVToffset大小1k,initloadSize为4k。在这里插入图片描述
实质上应用程序前红色框中的大小有3k,可以配置启动信息,入口地址,初始化设备,基本的时钟,DDR要先初始化才能使用吧。具体的可以参考其他资料如百问网的imx6ull手册
在这里插入图片描述
韦老师的裸机代码中,写好的程序是调用mkimage给app程序加上特有的头部信息,配合其开发的烧录工具100ask_imx6ull_flashing_tool可以下载到ram运行(*.imx文件)。如果想下载sd中,需要在imx文件前面加上1k的偏移(image vector table offset)

mkimage -n ./tools/imximage.cfg.cfgtmp -T imximage -e 0x80200000 -d led.bin led.imx
// -e 0x80200000程序会被搬运到的位置

其他的开发板如,原子的imxdownload工具中直接固定了加载地址为0X87800000,链接脚本中也是这个地址,如不地址不相同,就会牵扯到代码重定位的问题。
在这里插入图片描述在这里插入图片描述

但也有可能有人设置的就是不一样的地址,照样能跑下去,这就要看start.s中的跳转指令是

	ldr sp, =main		/* 跳转到main函数 		 */b main				/* 跳转到main函数 		 */

链接地址和加载地址不一样的情况:
如果是第一行的话就无法运行,地址相关代码
如果第二行的话就代码可以部分运行,比如打印定义好的全局变量就不正常了,data区没有搬运到相应的链接地址去。

IMX6ULL运行freeRtos

imx6ull有官网的skd,里面已经有一些例子。
第一步:
SDK_2.2_MCIM6ULL/boards/evkmcimx6ull/demo_apps/hello_world/armgcc中直接运行 ./build_ddr_debug.sh

SDK_2.2_MCIM6ULL/boards/evkmcimx6ull/demo_apps/hello_world/armgcc# ./build_ddr_debug.sh

第二步:

mkimage -n ./tools/imximage.cfg.cfgtmp -T imximage -e 0x80002000 -d led.bin led.imx

注意:-e 地址 为 0x80002000

第三步:
利用100ask_imx6ull_flashing_tool下载到imx6ull上面运行就会看到串口打印的

hello world.

FreeRtos

买到板子之后不久就一直想在imx6ULL上面跑rtos,结果也没找到啥教程,有人说cortexa7的可以参看a9的移植,无奈还是懵,后来想看看freertos源码之后在动手,结果发现简单看了源码还是菜到没头绪。
中间玩玩裸机程序,突然有两天就想研究一下,imx上程序从编译好到下载到板子上是怎么运行的,为啥我编译的sdk代码不可以用,后面就发现rtos的demo代码可能启动位置不对,根据连接脚本中的信息链接地址为0x80002000
SDK_2.2_MCIM6ULL/boards/evkmcimx6ull/rtos_examples 目录中有些例子,只要编译后,加上imx头部信息,就可以愉快的在imx6ull上面跑freertos了,
后续看看我的板子怎么能在freertos基础上跑lwip

代码重定位

关于代码重定位。


http://www.ppmy.cn/news/707084.html

相关文章

正点原子imx6ull开发板视频监控项目实战系列3: ffmpeg

1、Ffmpeg是什么? (1)、一套开源软件 (2)、可以记录,转换音视频:可以从摄像头中,记录视频,从声卡中,记录音频。可以转换成各种格式,保存起来。 &…

Linux——iMX6ULL的启动过程详细解析(启动模式配置、启动设备配置、镜像烧写imx文件基本组成)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》

IMX8mp alsa音频调试

1、硬件环境: soc: im8mp bt: cypress CYW43455, 并通过M2接口连接到imx8mp开发板。 2、硬件连接: 3、综述: BT通过M2接口连接到IMX8mp开发板,M2接口中包含了PCM总线、UART、BT_EN引脚。 通话音频播放,BT使用imx8…

【imx6ull】视频监控项目(usb摄像头+ffmepeg)

文章目录 前言1、总体方案介绍2、配置v4l2驱动与UVC驱动3、v4l2应用编程测试摄像头4、ffmepg移植总结 前言 参考视频: 韦东山老师手把手带你从0开始自己做一个视频监控系统 1、总体方案介绍 这篇文章写的很好,很容易理解了,就不造轮子了 正点原子imx6u…

在 NXP iMX8 上进行 4K 视频播放测试

By Toradex 胡珊逢 1). 简介 高清多媒体,甚至是 4K 视频不仅在消费领域有着旺盛的需求,在行业领域同样也获得广泛的关注。NXP 最新的IMX8 处理器不仅配有强劲的 CPU和GPU,还对多媒体应用提供了完善的解决方案,如硬件解码支持H.2…

基于imx6ull打造流媒体视频监控:ffmpeg + nginx + rtmp

0.平台简介 项目描述硬件平台100ask_imx6ull_pro开发板Linux内核Linux 4.9.88Buildroot版本Buildroot 2019.02FFmpeg版本3.4.5Nginx版本1.15.7摄像头支持UVC的USB摄像头 总体的系统方案如下,是韦老师在【自己做一个物联网视频监控系统】系列视频中分享的一个实例&a…

CentOS7安装oracle19c教程

参考 https://zhuanlan.zhihu.com/p/571737575 1创建组和用户 vi /etc/hosts [rootrhel ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.7 (Maipo) /usr/sbin/groupadd -g 54321 oinstall /usr/sbin/groupadd -g 54322 dba /usr/sbin/groupadd -g 54…

Nginx负载均衡与动静分离

一、Nginx负载均衡: 1.概述: Nginx是一款http服务器软件,支持高达50000个并发连接数的响应。 (1)拥有强大的处理静态资源的能力。 (2)运行稳定。 (3)CPU&#xff0c…