Chinaunix首页 | 论坛 | 博客
  • 博客访问: 680017
  • 博文数量: 30
  • 博客积分: 10035
  • 博客等级: 上将
  • 技术积分: 1545
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-03 06:50
文章分类

全部博文(30)

文章存档

2012年(30)

我的朋友

分类: LINUX

2012-05-07 07:12:13

u-boot程序流程:
1:装入u-boot代码部分.
1.1:设置arm状态到SVC模式。
1.2:关闭watchdog和interrupt.并且设置FCLK:HCLK:PCLK为1:2:4
1.3:设置SP地址。然后跳到board_init_f进行硬件初始化.
1.3.1:初始化gd数据结构.
1.3.2:执行init_sequence初始化序列.
1.3.3:设置各个功能区域的SDRAM保留地址.
1.3.4:执行relocate_code把代码重新定位.
1.3.4.1:重新定位代码
1.3.4.2:清零bss段.
1.3.4.3:执行board_init_r
1.3.4.4:设置机器类型(MACH_TYPE_SMDK2410),设置启动参数地址,启用iCache和dCache1.3.
1.3.4.5:初始化串口.
1.3.4.6:设置堆指针.
1.3.4.7: 初始化flash.
1.3.4.8:环境变量重定向.
1.3.4.9:初始化标准IO设备初始化中断
1.3.4.10:初始化转跳表
1.3.4.11:初始化网卡
2:u-boot初始化部分.
3:cmd执行部分.
3.1:从串口上读取输入,并存放到CmdBuffer中去.遇到'\r'或'\n'或'\0'结束
3.2:从返回状态决定下一步的动作
3.2.1:长度大于0,把CmdBuffer中的字符串copy到lastcommmand
3.2.2:长度为0,设置重复上一次命令标志.
3.2.3:长度为-2,执行复位
3.3:执行run_command函数.
3.4:回到3.1,重复些循环.


在函数中加入了某个debug后就出现了这个取指终止。现在正在查找问题所在。
U-Boot 2011.12 (May 06 2012 - 15:45:27)

U-Boot code: 33000000 -> 3307372C  BSS: -> 330B7050
monitor len: 000B7050
ramsize: 04000000
TLB table at: 33ff0000
Top of RAM usable for U-Boot at: 33ff0000
Reserving 732k for U-Boot at: 33f38000
Reserving 4160k for malloc() at: 33b28000
Reserving 24 Bytes for Board Info at: 33b27fe8
Reserving 120 Bytes for Global Data at: 33b27f70
New Stack Pointer is: 33b27f60
RAM Configuration:
Bank #0: 30000000 64 MiB
relocation Offset is: 00f38000
before relocate_code()
data abort
pc : [<33000180>]    lr : [<33002870>]
sp : 33b27f60  ip : 33b27fe8  fp : 33cbdde1
r10: 3307d034  r9 : 00f38000  r8 : 30000f80
r7 : 00000017  r6 : 33f38000  r5 : 33b27f70  r4 : 33b27f60
r3 : 3307d034  r2 : 3307380c  r1 : 00000017  r0 : 00f38017
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

阅读(490) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~