/*
* 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第一阶段关键位置分析的更多相关文章

  1. uboot之第一阶段

    U-boot的启动一般分为两个阶段,现在我们先将第一阶段. 在此之前,我们先了解一下uboot的目录结构,各个文件夹是什么作用. 如果连各个文件夹是干什么的都不清楚就开始移植剪裁,势必会和我刚拿到开发 ...

  2. U-BOOT概述及源码分析(一)

    嵌入式Linux系统从软件角度通常可以分为以下4个层次: 引导加载程序 | Linux内核 | 文件系统 | 用户应用程序 嵌入式Linux系统中典型分区结构: 正常启动过程中,Bootloader首 ...

  3. uboot启动阶段修改启动参数方法及分析

    作者:围补 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织.毕竟文字跟有声语言表达有别.但愿简单的东西别让我讲的太复杂! Arm板系统文件一般有三个——bootloa ...

  4. UBoot启动代码第一阶段流程

    http://blog.csdn.net/xautfengzi/article/details/7470134 前段时间了看了UBoot的源码,放了一段时间之后忘得差不多了.现做一些注释,方便以后温习 ...

  5. uboot两阶段代码分析

    1.启动过程特征总结(1)第一阶段为汇编阶段(start.s).第二阶段为C阶段(board.c中的start_armboot 函数)(2)第一阶段在SRAM中.第二阶段在DRAM中(3)第一阶段注重 ...

  6. uboot 2013.01 代码简析(2)第一阶段初始化

    uboot执行"make smdk2410_config"之后就可以进行编译了,可以执行make命令进行编译, 因为整个输出太长,我仅仅列出部分最关键的输出(部分我不关心的内容直接 ...

  7. 【ARM-Linux开发】 uboot启动阶段修改启动参数方法及分析

    作者:围补 本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织.毕竟文字跟有声语言表达有别.但愿简单的东西别让我讲的太复杂! Arm板系统文件一般有三个--bootloa ...

  8. u-boot启动第一阶段

    目标板:2440开发板 u-boot启动的第一阶段是在文件start.S中完成的,这个过程对不同硬件平台的设置是不同的.下面进入start.S _start: b reset //跳转到reset / ...

  9. 从0移植uboot (二) _启动流程分析

    经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,其次,此时的uboot.bin也没有结合 ...

随机推荐

  1. yum install mysql56

    官方有写: http://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html yum update ...

  2. Android Studio 遇到 No Debuggable Applications 的解决方案

    一.在菜单的Tools -> Android -> 勾选 Enable ADB Integration 二.在工程的build.gradle(Module:app)里加上一行代码

  3. SharePoint 2013 Disaster Recovery——迁移内容数据库

    安装和配置SharePoint Farm时,一定要注意将内容数据库不要放在C盘,除非你的C盘能足够承受起日益增长的数据.由于在安装SQL SERVER中没有注意,我将数据库存放在默认的 C:\Prog ...

  4. Java Nashorn--Part 6

    Nashorn 的 JavaScript 语言的扩展 正如我们所讨论的,Nashorn 是一个完全符合 ECMAScript 5.1 的实现.然而除此之外,Nashorn 还实现了很多 JavaScr ...

  5. nginx Server names

    通配符名称 正則表達式名称 混合名称 优化 兼容性 server名称定义使用的server_name指令和决定哪个server块用于一个给定的请求. 參见"怎样Nginx处理一个请求&quo ...

  6. ms12_004漏洞进行渗透

    环境: 攻击机:kail linux (IP:192.168.31.54) 目标机:winds 7 (IP:192.168.31.136) 1.启动metaspolit 2.输入命令search ms ...

  7. 使用 NodeJS + Express 從 GET/POST Request 取值 -摘自网络

    過去無論哪一種網站應用程式的開發語言,初學者教學中第一次會提到的起手式,八九不離十就是 GET/POST Request 的取值.但是,在 Node.js + Express 的世界中,彷彿人人是高手 ...

  8. Spring Security教程(四):自定义登录页

    在前面的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果. ...

  9. idea搭建javaweb项目 Artifacts生成

    菜单:File - > Project Structure 图1 图2:静态资源文件 图3:java文件编译到WEB-INF/classes 图4:Inherit project compile ...

  10. 如何运行你的Android程序?

    原文链接:http://android.eoe.cn/topic/android_sdk 本文中你将了解到: 1. 在真机上运行App 2. 在模拟器上运行App 你还应该阅读: 1. Using H ...