imx6ull 裸机 (运行恩智浦官方裸机代码(IAR)工程) 方法简介


前言

买的正点原子的imx6ull板子,最近想看看USB驱动。想着官方提供了IAR裸机代码,里面有成片的示例工程。最后因为买的大板子,没有JTAG接口,所以想着用网口加载编译的目标代码:结果…运行不起来,查找了一下原因,最后将解决方法示下。


一、uboot go/bootelf 命令(工具)

go命令为uboot下跳转运行指定地址的Bin目标码 bootelf命令为Uboot下解析指定地址的elf文件

二、目标码加载方式简介

1.通过loady加载bin/elf文件到DDR空间

指令如下(示例):

loady方法 :在secureCRT软件下,在uboot输入loady [load address],将待传递的文件加载到指定的DDR地址
eg: loady 90000000 【回车】

在这里插入图片描述
将待传入的文件拖拽到窗口:
在这里插入图片描述
选择Ymode,有几种传输方式,可通过选择1024bytes提高传输速率:
在这里插入图片描述在这里插入图片描述
传输完成后,该文件将存储在指定的DDR地址,上述示例存储地址为 0X90000000

2.通过网口加载bin/elf文件到DDR空间

指令如下(示例):

tftp方法 :在uboot输入loady [load address] [file name],将待传递的文件加载到指定的DDR地址
eg: tftp 90000000 hello.bin 【回车】

自建一个TFTP服务器,此处条件为已在ubuntu下新建了一个TFTP服务。在uboot下的设置:

设置uboot的TFTP服务地址 setenv  serverip 【xxx.xxx.xxx.xxx】
设置uboot的IP地址 setenv ipaddr 【xxx.xxx.xxx.xxx】

将编译完成的目标码放入TFTP服务器的文件夹内,在uboot下输入指令:

tftp 90000000 1.out

在这里插入图片描述
此时,在0X90000000处存放着1.out文件。

三、启动目标码方法简介

bin / elf 目标码文件格式区别
bin文件格式为解析过的目标码
elf文件格式为未解析过的目标码

1.bin文件格式启动方式

若加载的文件格式为bin:

指令: go 【load addr】

2.elf文件格式启动方式

若加载的文件格式为elf:

指令: bootelf 【load addr】

四、imx加载裸机代码问题重现

IAR 生成的bin以及elf目标码
描述:编译IAR工程代码,导入elf格式的目标码到DDR 0x90000000地址,最终bootelf后只运行一半,最终卡死。

五、imx加载裸机代码问题解决方法

注释clock_config_ocram.c文件内的部分代码(BOARD_SetRunClock函数):
注释内容
该函数运行在ocram内部,详细请见代码工程。

总结

提供的示例工程肯定是好使的,卡死在中间或者执行不正常肯定是启动方式不对。IAR工程的README下,提供的运行方式是JTAG模式,用go 或者 bootelf指令运行代码的话时钟是主要问题。详细请自行研究。祝君顺利!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值