没有合适的资源?快使用搜索试试~ 我知道了~
Sifive开发板U-BOOT启动信息和调试
需积分: 9 0 下载量 24 浏览量
2022-06-22
17:32:10
上传
评论
收藏 2.34MB DOCX 举报
温馨提示
试读
61页
Sifive开发板U-BOOT启动信息和调试
资源详情
资源评论
资源推荐
Sive 开发板 U-BOOT 启动信息和调试
总结:
:设置已经重新定位标志 !"!#表
示已经重新定位。
$ %&:使能 %
' ( : 重 定 位 全 局 数 据 变 量 中 的 设 备 树 地 址 指 针 。 )((*
+,
-./01: 重新地位地址 减去堆空间大小 ## " 来获得堆的
开始地址。然后设置 ..., ...*2,值,同时使堆空间地
址清除为 3
4 :初始化 系统。
5 (: 设置程序当前为 6#7# !7# #6# 状态。
8 : 在新的全局变量 的 9 指针上分配新的输出缓冲区。
: ./01: 保存以前的驱动模型根目录到 .).,在新的地址空间中
重新创建新的设备模型目录:.",./)1,
3 (: 调用 (%/1来使能缓存区的所有 ;<
=..<&>>增加 内存到 .? 中。
' @2A初始化串口。
5 %<: 激活设备树中记录的所有 B。
C ..: 初始化 ..
: 0A初始化环境变量。
$; .).?.: 从 ?. 中读出 和串口信息。
$$9.?:进入主循环。
即:在 () 函数中把设备树 )&全局变量 和 9( 代码复制到 7 中重新定位的位
置后,就会把全局变量 的新地址和 9( 代码的新地址作为参数传送“ (D函数。
在”( 函数中,主要使能 %,重新设置设备树指针 )((*+&重定位
新代码运行时用的堆的地址,在堆中为控制台申请输入>输出缓冲区, 初始化 系统,在新的运行
空间中重新创建设备链表, 调用 (%/1来使能缓存区的所有 ;<增加 . 内存到 .? 中,
初始化串口。激活设备树中记录的所有 B。初始化 ..初始化环境变量 0。从 ?. 中读出
和串口信息。最后调用 9.? 函数来进入主循环。等待用户来输入指令。
6$3$$3-E033C''44</F98$3$$3'A3$A-3833170
BA05-.)
A70E0E
AA@A33333333333333C3
A@A33333333333333C3
C6
C6
A@A33333333333333$
A?@)A3333333333333333
A0@A33333333333333$
A@A3333333333333333
A?@)A3333333333333333
A0@A3333333333333333
A@A333333333333--$
A?@)A3333333333333333
A0@A333333333333--$
AA@A333333333333333
A?@)A3333333333333333
A0@A333333333333333
A@A33333333333333
A?@)A3333333333333333
A0@A33333333333333
..G3333333A3&..G333333A
0.).7B!%A@A333333333333C5
A?@)A3333333333333333
A0@A333333333333C5
A@A33333333333333$3
A?@)A3333333333333333
A0@A33333333333333$3
??GC53333AHA4$-
7A$4I$C;%?2$456<&2-J6&56
KKKL(&9)90.
A@A333333333333C(
A?@)A3333333333333333
A0@A333333333333C(
70B).0
B!"
EA70#%<&
B9)97"AE833 $$3533C33333333'
0A3M
B60A3M
60A
% A5A)A':A33A3'A3
B!"
!AG$--3333
9AG$--3333
AG$--3333
"A;.33$3333
3M&)#9
3M&)#9
?0NA3
3M&)#9
3M&)#9
?0NA3
9($
;.33$3333L@)BOP9@@.?#!#N
9@2BOP;.33$3333
;.33$3333L@)BOP9@@.?#!#N
9@2BOP;.33$3333
3M&)#9
3M&)#9
?0NA3
在“文件中,定义以下宏定义来打开调试信息。
!
"#$%&%%如果在文件中定义了 ,则显示一条消息
'&(%)* '(&(%)*
'(&(%)* +
', +
'* 若定义了 为 -(则执行
'./012/34('&5*'./.6/307./*( &(%)*8
9*
'%(5(&(%)*',+
-58+
'./:- 77;-./<1=.>.*+
''&%)?*'%*(+
'&5*'7./*(6@.(+
.@A((+
B)&'&*(%)*8+
9*
所以,需要定义:
CC记得喔,这个语句要加载一行上面才行。
C./
这样设置首就会打印出所有的调试信息。
例如: 关于 31< 的调试信息如下:
这些打印信息的执行函数的调用顺序如下;
%)'D*31<E%E F
)%&(
B&&G%'*8
)%))'&&( (H)*8
))'I(J'*(K)K(L(H)*8
)%%%)'5"(J("%)*设备树传送地址。
)%%%)'5(%)(K)%K*8
调用到)%%%)'5(%)(K)%K*8函数时,就会依次打印出上图的调试信息,这些信息来自于设备树中
的&&)?设备节点中“)%字段中关于内存范围的定义(函数内容如下:
将设备树中的地址转换为 0M 物理地址,这将遍历树并在此过程中应用各种总线映射。
注意E我们认为使用G-- 跨任何层意味着转换是不可能的'也就是说,我们处理的不是一个可以映射到 B 物理地址的
值*。 这并不是真正指定的方式,但这至少是 @< 的传统做法
%N)%%%)'5"(J,"%)(%)")B)B*
,
'K/6E"")%%)5O""+K(%&'(J(A..**转换&&)? 设备的地址。
"B%)H&%?B获取父总线和匹配总线类型"
B%)-B%)'5*8
'B%)--A..*
%8
-&%'B%)*8获取&&)? 设备的父设备的 总线。
&&B?'%)(%)(%"*8从&&)? 节点中复制地址到 %)
'K/6EO'%-O(-O*O+K(I%&(%((%&'(B%)(A..**8打印
&&)? 所属的
&B%)'K/6E)%%%)EK(%)(%*8/6E)%%%)E F
)'88*,
"#$B%)切换到父总线 "
J-B%)8
B%)-B%)J'(J*8
"@)($%5若为 )(则结束"
'B%); *,
'K/6E)%)+K*8/6E)%)
)-)%&)'%)(%*8
)%P8
9
Q
)9?..2(/01
R
。。。。。。。。
.2/?%<21/*1,
.(/91,
(9/STA!@ 2TMUS&)9&/91.21,
>>)9?..2(A!@ 2$33333333打印 大小。
Q
所以: 的完整的信息如下:
$接着 . 执行的是 9?。
@9?/01
R
(9/SAT3CVUS&.1,>>显示单个 9( 程序的长度。
K.9?&2NN
(9/S.2AT3CVUS&/91.21,>>打印上面获取的 的大小尺寸。.2A3M$3333333
.?.(*+@0..2/1,
.?(9(.?/.1,
.?,
(9/S.?AT3CVUS&/91.?1,>>显示 . 顶地址。
Q
功能: 为单板固定预留的内存节点。
形参: G)A指向需要添加预留内存节点的设备树。
在 3@#0> 中,任何单板都需要将预留内存节点从固件提供的设备树中拷贝到 使用的设备树中。 这是单个板固定函数
可以调用的一个常见函数
0(0..=M9?/0K)1
'
(%;/01
剩余60页未读,继续阅读
nick-fei
- 粉丝: 1
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0