TI AM3517 EVM X-Loader启动流程分析

之前做了一个关于TI德州仪器AM3505 zcn的项目,我们的板子是参照德仪的LOGIC板子来的。德仪的ARM启动流程大概分为三级启动:SRAM内部启动代码(固化在A8内部的)---》x-Loader---》Uboot,接下来就是引导系统了,我也是刚刚接触这个方面的东西的,把我看X-Loader的一些经验写下来,供大家参考。

分析X-loader的时候,大家可能会有点没有头绪,刚接触,可能连入口函数都会找不到,我刚开始就是这样子的,不要紧。X-loader的大部分代码是汇编代码,可能不懂汇编的同学最好预先补充一下汇编的知识,其实,准备一个PDF的汇编指令大全就ok了,不懂再去百度。

在茫茫多的代码中,我们想知道最终执行的时候是从哪里开始执行的,我们可以首先看编译的连接文件:

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
	. = 0x00000000;

	. = ALIGN(4);
	.text      :
	{
	  cpu/omap3/start.o	(.text)
	  *(.text)
	}

	. = ALIGN(4);
	.rodata : { *(.rodata) }

	. = ALIGN(4);
	.data : { *(.data) }

	. = ALIGN(4);
	.got : { *(.got) }

	. = ALIGN(4);
	__bss_start = .;
	.bss : { *(.bss) }
	_end = .;
}
这里面定义了编译输出文件的架构 OUTPUT_ARCH(arm ),和编译的入口函数 ENTRY(_start),其他的我这里暂时不讨论。这样我们就得到了入口函数了:

_start
.globl _start
_start:
	b	reset
 	ldr	pc, _hang
	ldr	pc, _hang
	ldr	pc, _hang
	ldr	pc, _hang
	ldr	pc, _hang
	ldr	pc, _hang
	ldr	pc, _hang

接下来你可以用代码查看工具加载X-loader工程,我用的是source insight,全局搜索一下_start你就可以在Start.S这个

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值