uboot第一阶段关键位置分析
2018-02-10 13:55
281 查看
/* * the actual reset code */ reset: /* * set the cpu to SVC32 mode */ mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,#0xd3 msr cpsr,r0
为什么一来需要把cpu 设置成svc管理模式?
usr模式,此模式不可以直接访问板子的硬件资源,而uboot初始化,必须要去访问此类资源,所以不可以设置为usr模式。
svc模式属于特权模式,可以访问所有硬件受控资源。相对于其他的模式,SVC模式可以访问的资源更多。
还有就是:
需要再次说明的是,arm920T上,复位或者上电时,系统处于svc管理模式,之所以这里还要写进入svc模式,是因为uboot支持的单板非常多,这样也更严谨,不过我们要知道,在我们这里的特定cpu,上电就是svc模式的。
_TEXT_BASE:
.word TEXT_BASE
其中的TEXT_BASE在u-boot-1.1.6\board\100ask24x0\config.mk,定义为:
TEXT_BASE = 0x33F80000
33F80000刚好为512k,在64M sdram中的最上面,如果我们以后的uboot编译出来大于512k了,那么需要改变这里的值。
现在我们来看看顶层的Makefile,了解一下整个框架的主要连接点。
在此,我先忽略脚本语言的一些语法,因为刚开始学习实在不适合又去学个新的脚本语法,但是之后肯定是需要进一步了解的。
先是把uboot用起来,而不是一来就要自己能全部写出,不然学起来太茫然了,经过了这么久的琢磨,终于也不再对uboot感到畏惧和陌生了,之后的工作中,肯定也是用官方提供的uboot,自己做一些移植和更改,所以现在先学好怎么使用,不能再钻牛角尖了。如同刚从单片机转过来的时候,在想要不要把汇编再买本书重新学一遍一样,事实证明,学习是一个过程,量变到质变,汇编遇到不会的就查,一般而言自己写的汇编都是简单级别的,复杂的我们就用C语言代替了,脚本至少目前我还不需要着急又去学一下,因为我要先启动内核,跑几个APP再说啊,不然一直就停留在这里了,如果学习到后面,确实需要主目录下的mkconfig里面的脚本知识,就再去学习一下语法吧。
前面说到,我们在编译uboot之前需要先配置uboot,在韦老师的bsp中是执行make 100ask24x0_config
这个配置达到了什么效果呢?
SRCTREE := $(CURDIR)
MKCONFIG := $(SRCTREE)/mkconfig
mkconfig是个脚本,执行make 100ask24x0_config相当于执行
(ps:博客的
符号总是抽)
$+数字:代表的是命令行的参数排序。
然后是脚本的
cd ./include
rm -f asm
ln -s asm-$2 asm
注:脚本的语句没有解释,只是说明脚本执行的和执行后的效果。
ln -s asm-$2 asm
等价于:ln -s asm-arm asm 创建符号链接是为了方便移植和开发,比如这里把asm指向asm-arm
eg:
include<asm/type.h>就等价于include<asm-arm/type.h> 因为uboot支持的cpu是在太多了,有asm-i386等,为了不每次都更改 asm- 的后缀,这里使用符号链接达到简化移植的目的。
这里执行完之后,include目录下的config.mk文件内容就是:
ARCH =arm
CPU = arm920t
BOARD =100ask24x0
SOC = s3c24x0
我们查看一下这个config.mk和config.h看看是否和我们分析的一样:
果然,和我们分析一致,现在,我们知道ARCH,CPU,BOARD,SOC等于什么了,下面就开始分析第二阶段了。
相关文章推荐
- Uboot优美代码赏析2:第一阶段_硬件平台启动start.s分析
- uboot第一阶段详细分析
- uboot第一阶段详细分析
- 图解U-Boot(没有SPL的uboot早期版本):第一阶段源码分析
- uboot第一阶段详细分析
- uboot启动第一阶段详细分析
- uboot分析之第一阶段源码
- uboot_1.1.6源码分析——第一阶段
- uboot分析第一阶段
- uboot启动分析第一阶段(start.S)
- uboot源码分析-第一阶段(汇编部分)
- uboot第一阶段详细分析
- uboot源码分析-第一阶段(汇编部分)
- uboot启动第一阶段分析
- uboot第一阶段详细分析
- uboot第一阶段详细分析
- uboot分析第一阶段学习笔记
- uboot第一阶段分析(目前还有很多不懂的地方)
- uboot第一阶段代码概要分析
- uboot第一阶段代码分析