您的位置 首页 FPGA

ARM裸机开发bootloader我是bootloader设计师

一、bootloader设计蓝图1、什么是bootloader如果说系统内核是航天飞机的话,那么bootloader就是助推器,它带动了内核。在内核启动之前它要…

一、bootloader规划蓝图

1、什么是bootloader

如果说体系内核是航天飞机的话,那么bootloader便是助推器,它带动了内核。在内核发动之前它要做许多硬件的初始化操作,来合适体系的安全发动。

2、bootloader规划办法-仿照

90%的规划从仿照开端,仿照参加自己的主意便是规划。bootloader的仿照咱们一般会参照职业老迈uboot。

3、uboot简介

uboot能够支撑多种嵌入式cpu,例如X86、ARM、MIPS

还能够支撑多种嵌入式操作体系,例如wince、linux、vxworks、QNX

uboot分为自主形式和开发形式:自主形式下,uboot的运转不需求人的参加,这往往也是产品形式。

开发形式是供开发人员运用,对uboot进行修正,来习惯自己的需求。

4、uboot的检查

咱们一般会运用sourceinsight来检查相对比较大的程序,它能够主动定位函数方位。这方便了咱们的查找。

二、ARM的发动流程

为什么要关怀ARM的发动流程

这是由于软件的规划要遵从硬件的要求。分量硬件的一些要求。

主要从三个方面进行介绍:1、发动方法 2、地址布局 3、发动流程

几点阐明:一上电,处理器会从0地址开端读取指令并碑文。 Nandflash不参加一致编址。

2440:

1、发动方法:Norflash Nandflash

2、内存地址从00×30000000开端

3、发动流程(来自手册):s3c2440A boot code can be executed on an external NAND flash memory. In order to support nand flash bootloader, the s3c2440A is equipped with an internal SRAM buffer called “steppingstone”. When booting, the first 4 KBytes of the NAND flash memory will be loaded into steppingstone and the boot code loaded into stippingstone will be executed.

Generally, the boot code will copy NAND flash content to SDRAM. the main program will be executed on the SDRAM.

6410:

1、发动方法:SROM、OneNAND、MODEM、IROM(NAND、SD)

2、bootloader的开端地址0x0C000000, 之前的为internal ROM。0地址处为映像区。DRAM开端地址为0x50000000.

3、a、iROM supportsinitialboot up : initialize system clock, D-TCM, device specific controller and booting device.

b、iROM boot codes can load4KBof bootloader tostepping stone. The8 KBbootloader is called BL1.

c、BL1:BL1 can initialize system clock, UART, and SDRAM for user. After initializing, BL1 will load remaining boot loader which is calledBL2on theSDRAM

d、Finally,jump to start address of BL2. That will make good environment to use system.

210:

1、发动方法:同6410

2、地址布局:0地址处为Boot area,内存地址从0x20000000开端。

3、发动流程:a、iROM can do initial boot up : initialize system clock, device specific controller and booting device.

b、b、iROM boot codes can load boot-loader to SRAM. The boot-loader is called BL1. then iROM verify integrity of BL1 in case of secure boot mode.

c、BL1 will be executed: BL1 will load remained boot loader which is called BL2 on the SRAM then BL1 verify integrity of BL2 in case of secure boot mode.

d、BL2 will be executed: BL2 initialize DRAM controller then load OS data to SDRAM

e、finally, jump to start address of OS. that will make good environment to use system.

三、Uboot 作业流程剖析

1、程序进口

2、第一阶段程序剖析

3、第二阶段程序剖析

也便是上面谈到的BL1和BL2,这两部分也是要咱们自己来编写的部分。BL0厂家已固化在硬件中,就不需求咱们自己编写了。

2440

1、检查两个文件

1、uboot下的Makefile

2、uboot/board/samsung/smdk2440/uboot.lds下检查代码段首文件,ENTRY标明程序进口(链接器脚本),start.S(cup/s3c24XX/start.o(.text))。

2、BL1剖析(进口start.S 中 _start)

运用source Insight

剖析/cpu/s3c24XX/start.S

提示:start.S中设置仓库为c言语做衬托。

1、设置中断向量表

2、设置处理器为SVC形式

3、改写I/D cache

4、封闭mmu和cache

5、初始化体系时钟

6、初始化串口

7、简略初始化nand flash

8、进行内存初始化

9、nand flash中的bl到内存

10、设置仓库

11、铲除bss段

3、BL2剖析(进口start_armboot)

1、初始化串口

2、LCD初始化

3、初始化网卡

4、初始化LED

5、碑文用户输入指令(死循环,一向等候用户的运用)

6410同2440简直有相同的作业,不过碑文的先后顺序和方法不同。而210是新版本的U-boot,它的BL1、BL2别离产生了两个.bin文件。它有厂家固化的irom,BL1被到iram中,BL2被到内存中。

三、Bootloader架构规划

在进行规划之前,咱们遵从的准则:尽量归类收拾,分阶段去完结。还便是要尽早的运用c言语这样编程比较简略些。下面是思想导图:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/265149.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部