版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、系统启动与Boot Loader,史先强 南京博芯电子技术有限公司,SEP4020地址空间分配,0 x0400 0000,0 x1000 0000,0 x2000 0000,0 x3000 0000,Nand_Data (0 x11000200),0,4G,关于系统启动,什么是启动? 从CPU内核行为看,启动就是从零地址取第一条指令并执行 系统零地址映射 硬件设定 EMI配置,SEP4020启动方式介绍,SEP4020启动方式 SystemSetup2:0000:NOR启动001:NAND启动3级地址,512byte010:NAND4级地址512byte011:NAND4级地址2Kbyte10
2、0:NAND5级地址2Kbyte UB4020MB_Lite(V1.1) SystemSetup0=0 SystemSetup1=J501(ON:NorFlash启动,OFF:NandFlash启动) SystemSetup2=0,NorFlash启动,NorFlash读写特性 读:可以实现字节寻址 写:不能字节寻址,须按页或块写入 UB4020EVB上NorFlash地址 起始地址:CSA,0 x20000000开始 结束地址:2MB, 0 x20200000,解决存储与速度的矛盾:BootLoader,NorFlash,0 x0,0 x20000000,0 x30000000,SDRAM,
3、PC,BootLoader,Project Image,NorFlash启动,NorFlash启动一:配置系统环境 配置PMU PMU_PCSR、PMU_PMDR PMU_PLTR、PMU_PMCR 配置EMI EMI_CSACONF、EMI_CSECONF EMI_SDCONF1、 EMI_SDCONF2,NorFlash启动,NorFlash启动二:将代码拷贝到SDRAM NorFlash启动三:将SDRAM映射到零地址 NorFlash启动四:程序跳转,NorFlash启动,关于地址重映射-Remap,0 x00000080/0 x20000080: ldr pc, =0 x200000
4、88 0 x00000084/0 x20000084: movr0, r0 0 x00000088/0 x20000088: movr0, r0 0 x0000008C/0 x2000008C: movr0, r0 0 x00000090/0 x20000090: movr0, r0 REMAP 0 x00000094/0 x20000094: ldrr1, =0 x11000020 0 x00000098/0 x20000098: ldrr2, =0 x0000000b 0 x0000009C/0 x2000009C: strr2, r1 0 x200000A0: ldr pc, =0 x0
5、,NorFlash,NandFlash启动,NandFlash读写特性 读:不能字节寻址,须通过命令按页读 写:不能字节寻址,须按页或块写入 SEP4020的NandFlash控制器 FIFO地址:0 x1100 0200 FIFO结构:32bit宽,4级深度,NandFlash启动,NandFlash启动时的硬件设置 SystemSetup2:0000:NOR启动001:NAND启动3级地址,512byte010:NAND4级地址512byte011:NAND4级地址2Kbyte100:NAND5级地址2Kbyte 系统零地址映射 NandFlash控制器FIFO:0 x1100 0200,
6、NandFlash启动,NandFlash启动过程 上电后,NandFlash控制器向NandFlash发出读命令,读取第一页数据 内核从NandFlash控制器的FIFO取指,由于是高位地址选通,低位地址变化不会影响取指 FIFO读空后,NandFlash控制控制器再从NandFlash中读取个字的数据(16BYTE) 第一页数据读取并执行完毕,程序控制PC跳转,NandFlash启动,NandFlash启动方式的制约 不可以使用类似LDRR0, 12345678的伪指令,须用mov指令代替 例如: MOV R0, #0 x12000000 ADD R0, R0, #0 x00340000
7、ADD R0, R0, #0 x00005600 ADD R0, R0, #0 x00000078,NandFlash启动,NandFlash启动方式的制约 不可以在启动代码中使用类似B的跳转指令 不可以在启动代码中执行Remap操作 启动代码长度必须达到512+16BYTE(以512B/页为例) PC跳转必须放在启动代码的最后一条,NandFlash启动,NandFlash启动一: 配置EMI: EMI_CSECONF:0 x8CFFFFF1 EMI_SDCONF1:0 x1D004177 EMI_SDCONF2:0 x80001860,NandFlash启动,NandFlash启动二: 配
8、置NAND控制器 NAND_ADDR1:0 x00000200 NAND_CONF1:0 x06302857 NAND_CONF2:0 x00114353,NandFlash启动,NandFlash启动三: 配置DMAC DMAC_C0SRCADDR:0 x11000200 DMAC_C0DSTADDR:0 x30001000 DMAC_C0CONTROL:0 x0021249B DMAC_C0CONFIGRATION:0 x31D,NandFlash启动,NandFlash启动四: 配置必要的寄存器 R10:0 x11000104 R11:0 x80000000 R9:0 x100 R8:0
9、 x30001000,NandFlash启动,NandFlash启动五: 写入条指令到0 x30000000 0 x30000000: mov r11, r10 0 x30000004: A subs r9, r9, #0 x1 0 x30000008: bne A 0 x3000000c: mov pc, r8,NandFlash启动,NandFlash启动六: 程序指针PC跳转 用NOP填满一页(528),最后一条指令跳转到0 x30000000去执行上一步写好的指令,NandFlash启动,NandFlash启动七: 启动NandFlash传输 0 x30000000: mov r11,
10、 r10 将0 x80000000写入0 x11000104,即:启动NandFlash读 通过DMA将NandFlash第二页数据(主程序代码,或BOOT第二部分)搬运到:0 x30001000,NandFlash启动,NandFlash启动八: 等待NandFlash传输完成 0 x30000004: A subs r9, r9, #0 x1 0 x30000008: bne A 空循环,等待DMA传输完毕,NandFlash启动,NandFlash启动九: 程序跳转 0 x3000000c: mov pc, r8 此时DMA已经将主程序搬运到0 x30001000,跳转到该地址,Stic
11、k Out Until Success,24,NandFlash启动完成后内存数据:,NandFlash启动,U-BOOT移植与原理,U-BOOT简介 UBoot ,全称UniversalBootLoader,是由德国DENX小组的开发,并遵循GPL条款的开放源码项目。它的主要功能是完成硬件设备的初始化、操作系统代码的搬运,并提供一个控制台及一个命令集在操作系统运行前操控硬件设备。,U-BOOT支持的处理器与操作系统,处理器: PowerPc、MIPs、xs6、ARM、NIOs、Xsca 操作系统: OpenBSD,NetBSD,FreeBSD,Linux,SVR4,Esix,SolariS,
12、Irix,SCO,Dell,NcR,vxworks,1,ynxos,pSOS,QNX,RTEMS,ARTOS,U-BOOT简介,常用的U-BOOT命令 bootm、cmp、cp、erase、flinfo、mw、md、printenv、setenv、save、reset、tftp、nand、tftp、ping,U-BOOT启动代码分析,系统启动流程(NorFlash启动) 1cpu/sep4020/start.S 执行汇编指令,初始化CPU 2lib_arm/board.c start_armboot 是U-Boot 执行的第一个C 语言函数,完成系统初始化工作,进入主循环,处理用户输入的命令。
13、 3init_sequence init_sequence数组保存着基本的初始化函数指针。,U-BOOT启动代码分析,系统启动后内存分配图,U-BOOT引导操作系统分析,U-BOOT格式的内核映像 mkimage -n Kernel 2.4.18 -A arm -O linux -T kernel -C none -a 30007fc0 -e 30008000 -d 4020.bin vmlinux-2.4.18.img,U-BOOT引导操作系统分析:bootm命令的实现,读取Image头部信息,通过Magic number判断Image,通过CRC信息较验内核,获得内核实际入口地址 函数指针
14、与绝对地址跳转 theKernel = (void (*)(int, int, uint)ntohl(hdr-ih_ep); theKernel (0, bd-bi_arch_number, bd-bi_boot_params);,U-BOOT引导操作系统分析:传参方法,用TAG传递更多引导信息 struct tag struct tag_header hdr; union struct tag_corecore; struct tag_mem32mem; struct tag_videotextvideotext; struct tag_ramdiskramdisk; struct tag_
15、initrdinitrd; struct tag_serialnrserialnr; struct tag_revisionrevision; struct tag_videolfbvideolfb; struct tag_cmdlinecmdline; struct tag_acornacorn; struct tag_memclkmemclk; u; ;,struct tag_header u32 size; u32 tag; ;,33,用TAG传递更多引导信息 0 x30000100 00000005 54410001 00000000 00000000 0 x30000110 0000
16、0000 0000000F 54410009 746F6F72 0 x30000120 65642F3D 61722F76 7220306D 6F632077 0 x30000130 6C6F736E 74743D65 2C305379 30303639 0 x30000140 696E6920 6C2F3D74 78756E69 EA006372 0 x30000150 00000004 54420005 30300040 00200000 0 x30000160 00000000 00000000,#define ATAG_CORE0 x54410001 struct tag_core u32 flags;/* bit 0 = read-only */ u32 pagesize; u32 rootdev; ;,#define ATAG_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产中介客户信息保密协议范本2篇
- 二零二五年三方二手车交易风险防范及保险合同2篇
- 二零二五年度企业合同管理培训与人才发展意见建议书3篇
- 护理本科专业课课程思政教学评价指标体系的构建
- 服装知识培训课件
- 2025版绿色家居装饰工程劳务合作合同2篇
- Unit 4《Lesson 3 My tidy bag》(说课稿)-2024-2025学年粤人版(2024)英语三年级上册
- 工业机器人智能生产线升级改造扩建项目可行性研究报告写作模板-备案审批
- 二零二五年度房地产项目股权划转及融资合作协议3篇
- 湖南省长沙市2025年新高考适应性考试生物学模拟试题(含答案)
- 智能制造企业数字化转型建设方案
- (隐蔽)工程现场收方计量记录表
- 病理生理学课件脂代谢紊乱
- 教师幽默朗诵节目《我爱上班》
- 《细胞工程学》考试复习题库(带答案)
- 中学课堂教学评价量表
- 食堂食材配送以及售后服务方案
- 称量与天平培训试题及答案
- 块单项活动教学材料教案丹霞地貌
- 青年人应该如何树立正确的人生观
- 开封办公楼顶发光字制作预算单
评论
0/150
提交评论