当前位置: 首页 > news >正文

在线设计图案莱芜户型优化培训班

在线设计图案,莱芜户型优化培训班,网页界面模板下载,265内存装wordpress一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始,从链接脚本文件 u-boot.lds 中,我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数:调用了 reset 函数,reset 函数内部&…

一.  uboot启动流程涉及函数

之前文章简单分析了 uboot启动流程的开始,从链接脚本文件 u-boot.lds 中,我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。

_start函数调用了 reset 函数,reset 函数内部:最终调用了 save_boot_params_ret 函数。

save_boot_params_ret 函数:

①  将处理器设置为SVC模式,并且关闭FIQ和IRQ.

②  设置中断向量。

③  初始化CP15 (cpu_init_cp15),   调用了 cpu_init_crit 函数。

其中, cpu_init_crit 函数 调用了函数 lowlevel_init函数。

本文继续简单分析 lowlevel_init函数(即cpu_init_crit 函数 所调用的函数)做了什么?

本文继上一篇文章的分析,地址如下:

uboot启动流程涉及reset函数_凌肖战的博客-CSDN博客

二.     lowlevel_init 函数详解

lowlevel_init 函数在文件 arch/arm/cpu/armv7/lowlevel_init.S 中定义,内容如下:

18 ENTRY(lowlevel_init)
19 /*
20 * Setup a temporary stack. Global data is not available yet.
21 */
22 ldr sp, =CONFIG_SYS_INIT_SP_ADDR
23 bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
24 #ifdef CONFIG_SPL_DM
25 mov r9, #0
26 #else
27 /*
28 * Set up global data for boards that still need it. This will be
29 * removed soon.
30 */
31 #ifdef CONFIG_SPL_BUILD
32 ldr r9, =gdata
33 #else
34 sub sp, sp, #GD_SIZE
35 bic sp, sp, #7
36 mov r9, sp
37 #endif
38 #endif
39 /*
40 * Save the old lr(passed in ip) and the current lr to stack
41 */
42 push {ip, lr}
43
44 /*
45 * Call the very early init function. This should do only the
46 * absolute bare minimum to get started. It should not:
47 *
48 * - set up DRAM
49 * - use global_data
50 * - clear BSS
51 * - try to start a console
52 *
53 * For boards with SPL this should be empty since SPL can do all 
54 * of this init in the SPL board_init_f() function which is 
55 * called immediately after this.
56 */
57 bl s_init
58 pop {ip, pc}
59 ENDPROC(lowlevel_init)

22 行设置 sp 指向 CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_INIT_SP_ADDR
include/configs/mx6ullevk.h 文件中,在 mx6ullevk.h 中定义如下:

234 #define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
235 #define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
236
237 #define CONFIG_SYS_INIT_SP_OFFSET \
238 (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
239 #define CONFIG_SYS_INIT_SP_ADDR \
240 (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)

上面的宏 IRAM_BASE_ADDR IRAM_SIZE 在文件 arch/arm/include/asm/arch-mx6/imx-regs.h 中有定义,其实就是 IMX6UL/IM6ULL ocram 的首地址和大小,如下所示:
71 #define IRAM_BASE_ADDR 0x00900000
......
408 #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \
409 defined(CONFIG_MX6SLL) || defined(CONFIG_MX6SL))
410 #define IRAM_SIZE 0x00040000
411 #else
412 #define IRAM_SIZE 0x00020000
413 #endif

如果 408 行的条件成立的话 IRAM_SIZE=0X40000 ,当定义了 CONFIG_MX6SX 、CONFIG_MX6U CONFIG_MX6SLL CONFIG_MX6SL 中的任意一个的话条件就不成立, .config文件 中定义了 CONFIG_MX6UL ,所以条件不成立, IRAM_SIZE=0X20000=128KB

可以得到如下值:
CONFIG_SYS_INIT_RAM_ADDR = IRAM_BASE_ADDR = 0x00900000
CONFIG_SYS_INIT_RAM_SIZE = 0x00020000 =128KB

还需要知道 GENERATED_GBL_DATA_SIZE 的值,在文件 include/generated/generic-asm-offsets.h 中有定义,如下:
9 #define GENERATED_GBL_DATA_SIZE 256
10 #define GENERATED_BD_INFO_SIZE 80
11 #define GD_SIZE 248

可以看出,GENERATED_GBL_DATA_SIZE=256。
综上所述, CONFIG_SYS_INIT_SP_ADDR 值如下:
CONFIG_SYS_INIT_SP_OFFSET = 0x00020000 – 256 = 0x1FF00
CONFIG_SYS_INIT_SP_ADDR = 0x00900000 + 0X1FF00 = 0X0091FF00

如下图所示,为 sp指针的值:

此时 sp 指向 0X91FF00 ,这属于 IMX6UL/IMX6ULL 的内部 ram
通过 lowlevel_init.S文件可以看出
23 行对 sp 指针做 8 字节对齐处理!
34 行, sp 指针减去 GD_SIZE GD_SIZE 同样在 generic-asm-offsets.h 中定了,大小为
248
35 行对 sp 8 字节对齐,此时 sp 的地址为 0X0091FF00-248=0X0091FE08 ,此时 sp ,如下:

lowlevel_init.S 文件中的 lowlevel_init 函数:

第 36 行将 sp 地址保存在 r9 寄存器中。
42 行将 ip lr 压栈
第 57 行调用 s_init 函数
58 行,将第 36 行入栈的 ip lr 进行出栈,并将 lr 赋给 pc

下一篇文章分析:

lowlevel_init函数调用的函数:s_init 函数

save_boot_params_ret函数调用的函数: _main

http://www.yayakq.cn/news/86320/

相关文章:

  • 官方静态网站模板四川建设网站公司
  • 上海奉贤 网站建设广西壮族自治区免费百度推广
  • 张家港建设银行网站自己可以制作图的app免费的
  • 网站制作怎么做语音搜索框零基础网站建设书籍
  • 深圳低价建站云南个旧建设局网站
  • 织梦cms网站教育网站前置审批
  • 从哪些方面评价一个企业的网站建设三只松鼠广告策划书
  • 打开国外网站很慢怎么办情侣打扑克视频免费版app
  • 无线网站制作影视网站的设计与实现
  • 宣传册设计及网站建设wordpress xmlrpc漏洞
  • 网站建设分项报价表网站建设的基础服务器
  • 发布课程的网站模板网站有哪些区别
  • 网站开发个人简历文化传播公司网站备案
  • 五个推进网站建设工作中英文切换网站开发
  • 外贸用免费网站推广 有效果大型网站建设需要多少钱
  • 免费网站推广网站在线营口网站建设求职简历
  • 无锡网站优化方案西双版纳住房和城乡建设局网站
  • wordpress 网站上传到服务器护肤品网站建设的意义
  • 电子政务与网站建设意义湖北省建设工程质量协会网站
  • 注册域名网站淮北市建网站
  • 做intor的网站企业宣传ppt案例欣赏
  • 深圳宝安上市公司网站建设报价智邦国际erp系统官网
  • 关于外贸公司的网站成都定制网站建设地址
  • 英文网站编辑怎么做镇江科技有限公司
  • 广东备案网站邯郸网站建设市场
  • 网站构建计划可以用电脑做网站主机吗
  • 土巴兔这种网站怎么做php手机网站开发
  • 说明设计网站开发方案流程深圳软件公司招聘
  • 做视频的模板下载网站泉州做网站联系方式
  • 福鼎市城市建设监察大队网站浙江百度推广开户