U-BOOT-2016.07移植 (第三篇) 代码重定位
来源:互联网 发布:海关出口数据怎么查询 编辑:程序博客网 时间:2024/05/23 23:30
U-BOOT-2016.07移植 (第一篇) 初步分析
U-BOOT-2016.07移植 (第二篇) 添加单板
U-BOOT-2016.07移植 (第三篇) 代码重定位
目录
- U-BOOT-201607移植 第一篇 初步分析
- U-BOOT-201607移植 第二篇 添加单板
- U-BOOT-201607移植 第三篇 代码重定位
- 目录
- 分析board_init_f
- 1 common board_fc 1035 1067
- 2 common board_fc 829 1033
- 3 内存分配图
- 分析relocate_code
- 1 archarmlibcrt0S 95 122
- 2 archarmlibrelocateS 79 130
- 分析board_init_f
1. 分析board_init_f()
在我写的第一篇文章中,已经对u-boot-2016.07的启动流程有了初步的了解,现在我们开始分析crt0.S中,_main函数在设置好栈和GD后调用的board_init_f(),从而了解u-boot是如何对内存空间进行分配,然后进行重定位的。
1.1 common/ board_f.c (1035 ~ 1067):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
下面我们分析init_sequence_f数组中的各函数
1.2 common/ board_f.c (829 ~ 1033):
这里我直接将被宏开关关掉的函数剔除掉,留下最终会被调用的函数:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
1.3 内存分配图
根据1.1、1.2的分析,可以得出以下的内存分配图:
2. 分析relocate_code
2.1 arch/arm/lib/crt0.S (95 ~ 122)
同样,这里将无关紧要的宏开关去掉
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
2.2 arch/arm/lib/relocate.S (79 ~ 130)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 原谅博主表达能力太渣,我发一下图吧
到这里,代码重定位的分析就结束了,下一篇内容将开始修改代码使u-boot能从nor flash启动
转载至:http://blog.csdn.net/funkunho/article/details/52474373
0 0
- U-BOOT-2016.07移植 (第三篇) 代码重定位
- U-BOOT-2016.07移植 (第三篇) 代码重定位
- U-BOOT-2016.07移植 (第三篇) 代码重定位
- U-Boot重定位代码分析
- U-Boot重定位代码分析
- U-Boot重定位代码分析
- U-Boot重定位代码分析
- U-Boot重定位代码分析
- u-boot重定位
- u-boot-2016.05移植:(2)、修改时钟 初始化sdram 重定位u-boot 配置smdk2440.h 修改u-boot.lds
- u-boot中重定位
- U-Boot源码(u-boot-2012.04.01)分析start.S中重定位代码
- u-boot-2009.11移植(适用于TQ2440和MINI2440)第三篇:修改初始化代码
- 移植u-boot学习笔记3-----分析启动过程之重定位
- 嵌入式u-boot重定位问题
- uboot移植---代码重定位
- U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
- U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
- 前nginx后Apache+Node反向代理
- 线段树练习题一
- 指针删除后一定要将指针赋为0
- form表单
- 逆向销毁单链表中的各个结点
- U-BOOT-2016.07移植 (第三篇) 代码重定位
- Python小练习四——计算器
- Bzoj 4824: [Cqoi2017]老C的键盘
- JS打开摄像头并截图上传
- BZOJ 4800([Ceoi2015]Ice Hockey World Championship-meet in the middle)
- 关于对include包含类声明或定义的文件的一些总结
- Python 中文编码的问题
- Spring 事务管理详解
- leetcode [Count Primes]