swi 1
在招商银行期,造成极度
1,SPSR = CPSR
2,修正CPSR
3,留存回到门牌号
4 ,PC = 0x8(极度矢量表的出口处)(物理门牌号)
0x0 -> 0x2000 0000
0x8 -> 0x2000 0008
5,继续执行极度流程
6,极度回到
s5pv210开启难题
参照文件格式
BL
Bootloader开启流程 u-boot.bin
操作系统 Linux
开发板通过拨码开关的设定从Nand flash开启
u-boot.bin(开启流程,bootloader),烧写在Nand Flash的0门牌号
1,开发板上电,CPU最先继续执行IROM中开启代码(三星固化,IROM被硬件映射在0门牌号,因为,板子上电,默认到0门牌号找流程继续执行)
2,IROM代码判断拨码开关,从哪种设备开启系统,IROM就从Nand flash的0门牌号读取开启代码BL1(u-boot.bin,但是读8K),读到CPU内部的IARM中的BL1位置(由于IARM是SARM,物理特性决定,上电即可使用)
3,继续执行BL1 即 u-boot.bin的前8K代码,最为关键的是硬件初始化,初始化CPU内部的SDRAM控制器,使得开发板外接的1G的外接内存就可以使用
4,当1G SDRAM内存可以使用,BL1 将整个u-boot.bin从Nand Flash中读到SDRAM中。
5,跳转到SDRAM中继续继续执行u-boot.bin代码
6,继续继续执行u-boot.bin,敲击空格,进入u-boot.bin的shell模式:
tarena
不敲空格,u-boot.bin会加载操作系统(Nand Flash)到SDRAM
7,开启操作系统
1,为什么u-boot.bin烧写在Nand flash的0门牌号?
2,IROM如何知道要读多大代码BL1(8K)?
在u-boot.bin流程的最开始要有16个字节的头信息
16个字节 4个字
第一字:指定IROM读取BL1代码的大小,8K
第二字:保留0
第三字:累加和校验值(用户写)
第四字:保留0
开发板上电,它从Nand Flash读第一个字,得知要读多少代码到IARM中,在读的过程中,动态的计算累加和,最后将计算得到的累加和第三个字中累加和校验值比较,如果相等,说明读正确,继续执行BL1,如果不等,就不继续执行!
shell流程部署到Nand flash的0门牌号
u-boot.bin
硬件初始化代码(看门狗、系统时钟、SDRAM控制器。。。。)
Linux系统移殖
1),基于裸板开发
没有操作系统的支持,没有库支持,包括硬件驱动和应用流程都是自己开发,
若实现相对简单的流程,相对容易,如果实现一些复杂功能,
2),基于操作系统
操作系统为我们提供了很多资源,提供了大量的封装好的系统调用,可以使用库,流程员可以使用系统的函数,简化流程的实现难度
接下来,需要做的一件非常重要的事情,就是为我们的TPAD部署系统,使其将来支持操作系统编写的应用流程的继续执行。
Windows PC需要部署哪些内容?
1),准备安装流程
2),引导流程(BIOS+Bootloader)
系统自带,只要做相应的设置即可,用户不需要关心其实现
3),windows操作系统
windows内核
文件系统
4),驱动流程
TPAD部署系统
1),装备安装流程
我们可以在一些指定网站上下载标准版本的引导流程的源码,制作文件系统的开源软件包,但是由于嵌入式硬件平台之间的差异性(非标准化),导致它们不能直接在我们TPAD上使用,只能经过移殖(修正代码)。
把不能用的代码
—>经过移殖(修正)
—>与硬件匹配一致且能使用的代码
2),引导流程(u-boot.bin)
3),操作系统内核(zImage)
4),文件系统(rootfs.cramfs)
移殖课做什么事情?
1,基于移殖前的代码经过移殖(修正)成为可以运行的代码
—–掌握移殖的方法和原理
2,将移殖后生成的可继续执行流程(引导流程、内核、文件系统)部署(烧写)到TPAD上。环境变量的配置
—–要求熟练掌握
1,引导流程(1.5天)(理论+实践)
2,操作系统内核(2天)(理论+实践)
3,文件系统(1天)(实践)
1,引导流程(BIOS+bootloader)
bootloader = boot+loader
在操作系统运行之前运行的一段代码
1),boot:
初始化硬件设备,建立内存空间映射图,将系统的软硬环境带到一个合适的状态
2),loader:
将操作系统内核文件加载至内存,之后跳转到内核所在的门牌号运行。
2,操作系统内核
www.kernel.org
Linux内核的本质:
1),C语言:内核就是C语言函数的集合
2),硬件:内核是管理者
3),应用流程:内核是服务的提供者
内核功能:
1),系统调用:实现了应用流程和内核的交互
2),进程管理:
3),内存管理
4),设备驱动
5),虚拟文件系统
6),平台相关代码
7),网络协议
文件系统:
包含Linux系统运行的必需的应用流程和库。
uboot引导流程:
uboot
引导流程bootloader
bootlaoder的实现是非常依赖于具体的硬件,在嵌入式系统中硬件配置千差万别,即使是相同的CPU,外设也有可能不可,所以不可能有一个bootloader支持所有的硬件平台,除非里面的配置与你的板子刚好相同,否则需要进行移殖(修正)
1),开启加载模式
上电后,bootloader从板子的某个固态存储设备上将系统加载到内存中运行,整个过程没有用户的介入。
产品发布期,bootloader工作在此模式
2),下载更新模式
在这种模式下,开发人员可以使用各种命令,通过串口或者网络等手段从主机端中下载文件到指定内存中运行,或者烧写至Nand Flash中。开发期
源码:ftp://ftp.denx.de/pub/u-boot
u-boot-1.3.4
u-boot通用性
1,支持多种架构的CPU: ARM、PowerPC、MIPS等等
2,支持多种操作系统:Linux 、Vxworks、QNX等等
u-boot源码:
与硬件相关:
与硬件无关:
相关目录:
1.cpu 相关目录:
cpu
包含和CPU架构相关的代码,u-boot支持的CPU在该目录下对应一个子目录
2,开发板相关的目录
board
包含和开发板相关的文件,每一个开发板都以一个目录出现在该目录下。
3,driver:各类具体设备的驱动,基本上可以通用
4,lib_arm 支持ARM架构下的通用文件
5,include/configs/CW210.h 文件(定义了大量的宏)
找出口处:
uboot(.lds)链接脚本,可以找到最开始继续执行的文件,找到了出口处
uboot链接脚本
1,配置u-boot
make CW210_config
2,编译u-boot
make
找到使用链接脚本,从而找到出口处文件
1:10
发表评论