[移植第一天视频]移植第一天

 admin   2022-09-12 22:43   90 人阅读  0 条评论

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

本文地址:http://51ac.top/post/18186.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?