Uboot S3C2440 BL1 的流程
1. reset
中断向量表
2. 进入reset
(1) 设置svc32 模式
(2) flash I/D caches
(3)disable MMU 和 cache
(4)2440 没有onenand
(5)bl lowlevel_init
接 (5)
1.初始化时钟
2. 初始化UART,串口
3.nandflash 简单初始化
4. 判断当前uboot 是否运行在内存中,如果不是则进行内存初始化
返回 (5)后面
跳过宏定义
从NandFlash 中拷贝bootloader到内存中
设置堆栈,为C语言做准备
清除BSS段
uboot 配置编译:
make smdk2440 config
make
arm-linux-objdump -D -S uboot.bin 30000000
./dnw uboot.bin 30000000
souceinsight 高亮 shift + F8
第二部分从startarmboot开始
做两件事情:
1.硬件初始化
2.软件初始化,初始化一些环境变量
(1)初始化串口
(2)LCD 初始化
(3)初始化 网卡
(4)初始化LED
(5)main loop 最后执行用户输入命令
1.通过uboot 下面的 Makefile 找到对应的芯片的配置
2. 在 board/samsung/xxx 找到 链接器脚本 u-boot.lds
可以看到代码段的入口文件 Start.o --》 Strat.S
3. Start.S 文件在 cpu/xxxx 里面
4. 分析第一阶段(BL1)的bootloader 代码
5.有一个中断向量表,向量表最前面是 reset
6. 分析 reset 的内容
(1) svc
(2) I/D cache
(3) 关闭 MMU
(4)外侧基地址初始化 (6410独有)
(5)OneNand
(6) bl lowlevel_init (lowlevel_init.S 单独文件)
board/samsung/xxx
点亮LED,
disable watchdog 关闭所有中断 (为什么2440 没有做呢?2440 在 时钟初始化函数里面做了)
返回
(7) copy from nand
(8)堆栈初始化
(9)清除bss段
进入第二阶段 BL2
210 分析过程
svc
跳转到 xxx
关闭L1
disable MMU 和cache
low level init
检查 reset状态
IO引脚初始化(恢复IO引脚为默认值)
disable watchdog
SRam SRom 初始化
时钟初始化 内存初始化
串口初始化
取消存储保护区
简单初始化NandFlash
disable ADB
返回
设置堆栈
判断当前是否在内存运行
判断从哪种flash启动的
进入 board_init_f_nand 函数
跳转 到内存里执行 BL2
BL2 在连接器脚本里面, u-boot.lds
arch/arm/cpu/armv7
Uboot S3C2440 BL1 的流程的更多相关文章
- u-boot中nandflash初始化流程分析(转)
u-boot中nandflash初始化流程分析(转) 原文地址http://zhuairlunjj.blog.163.com/blog/static/80050945201092011249136/ ...
- uboot学习之uboot.bin的运行流程
上篇博客:http://www.cnblogs.com/yeqluofwupheng/p/7347925.html 讲到uboot-spl的工作流程,接下来简述一下uboot.bin的工作流程,这对应 ...
- 从0移植uboot (二) _uboot启动流程分析
经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,同时,此时的uboot.bin也没有结合 ...
- (转)从0移植uboot (二) _uboot启动流程分析
ref:https://www.cnblogs.com/xiaojiang1025/p/6496704.html 经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够 ...
- 从0移植uboot (二) _启动流程分析
经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,其次,此时的uboot.bin也没有结合 ...
- am335x uboot2016.05 (MLO u-boot.img)执行流程
am335x的cpu上电后,执行流程:ROM->MLO(SPL)->u-boot.img 第一级bootloader:引导加载程序,板子上电后会自动执行这些代码,如启动方式(SDcard. ...
- 嵌入式Linux开发之uboot启动Linux整体流程分析
嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWo ...
- am335x uboot2016.05 (MLO u-boot.img)执行流程(转)
am335x的cpu上电后,执行流程:ROM->MLO(SPL)->u-boot.img 第一级bootloader:引导加载程序,板子上电后会自动执行这些代码,如启动方式(SDcard. ...
- u-boot 编译,启动流程分析,移植
分析u-boot-1.1.6 的启动流程 移植u-boot 2012.04版本到JZ2440开发板 源码百度云链接:https://pan.baidu.com/s/10VnxfDWBqJVGY3SCY ...
随机推荐
- hdu 4123 树形DP+单调队列
http://acm.hust.edu.cn/vjudge/problem/25790 这题基本同poj 3162 要注意mx,mx2,vx,vx2每次都要初始化 #include <iostr ...
- RAL调用
[RPC的定义].RPC的全称为 Remote Procedure Call(远程过程调用).远程过程调用是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额 ...
- 07、Spark集群的进程管理
07.Spark集群的进程管理 7.1 概述 Spark standalone集群模式涉及master和worker两个守护进程.master进程是管理节点,worker进程是工作节点.spark提供 ...
- 梦织未来Windows驱动编程 第03课 驱动的编程规范
最近根据梦织未来论坛的驱动教程学习了一下Windows下的驱动编程,做个笔记备忘.这是第03课<驱动的编程规范>. 驱动部分包括基本的驱动卸载函数.驱动打开关闭读取写入操作最简单的分发例程 ...
- Arduino-定义串口
在一个老外写的代码中找到了一个非常好的定义串口的方法! Arduino用下面这种方法定义串口可以方便的把协议应用的任意的端口,大大提高了代码的修改性和移植性. 以下是范例: ...
- IOS tableView的基本使用
tableView Style:Plain(头部标题 向上移 不会消失) tableView Style:Grouped(头部标题 向上移 会 消失) #import "ViewCont ...
- jwt 在.net core 2.0的使用
jwt个人觉得更适合作共享session的传递格式,本身保密性不好,容易泄露重要信息,他的格式为头.一些用户的自定义声明.前两者的加密(公私对称密钥形式) 需要引用nuget: System.Iden ...
- POJ-1840 Eqs---二分
题目链接: https://vjudge.net/problem/POJ-1840 题目大意: 给出一个5元3次方程,输入其5个系数,求它的解的个数 其中系数 ai∈[-50,50] 自变量xi∈[ ...
- #WPF的3D开发技术基础梳理
原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...
- which,whereis,locate,find
which 查看可执行文件的位置 [root@redhat ~]# which passwd /usr/bin/passwd which是通过 PATH 环境变量到该路径内查找可执行文件,所 ...