bootloader

上传人:野鹰 文档编号:1087577 上传时间:2017-05-27 格式:TXT 页数:8 大小:13.30KB
返回 下载 相关 举报
bootloader_第1页
第1页 / 共8页
bootloader_第2页
第2页 / 共8页
bootloader_第3页
第3页 / 共8页
bootloader_第4页
第4页 / 共8页
bootloader_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《bootloader》由会员分享,可在线阅读,更多相关《bootloader(8页珍藏版)》请在金锄头文库上搜索。

1、S3C2440 BootLoader启动流程分析1-startup2009-11-14 20:52在基于ARM内核的嵌入式处理器的板级支持包中,BootLoader是系统在上电过程中要首先执行的第一段代码,虽然BootLoader不是系统在启动过程中所必需的,但是它的存在可以对嵌入式产品的开发和调试带来很多的方便,例如:每次对操作系统镜像进行修改以后,可以以太网,串口的硬件端口将镜像下载到目标嵌入式设备中,比起每次修改以后就要重新烧写Flash要简便得多。Windows CE BootLoader的软件框架主要可以分为如下5个部分(1).BLCOMMON:BootLoader通用代码库,主要完

2、成boot过程中与硬件无关的操作.这一部分不需要用户自己开发,它主要是导出与硬件相关的硬件函 口 OEM代码 ,BLOCMMON代码主要完成 析操作系统镜像 件,对下载的镜像 执行 , 下载进 (2)EBoot 支持代码:主要 与以太网相关的函 , BLCOMMON代码一 , 是 与硬件无关的操作: dhcp,tftp,udp 网 的,但 用于Eboot的 , 要导出与硬件相关的函 用户 。 (3).Ethdbg 动程 : 来,Ethdbg 动程 不是 的 动程 ,它用来 基的网 端口操作Ethdbg 动程 不 要为BootLoader,要为OAL(OEMcurrency1代码)“的KITL(

3、内核无关)。(4).OEM代码:这是需要用户开发的代码核fi, BLCOMMON导出的与硬件相关的函 。主要完成BootLoader的fl ,硬件 (MMU的 ,内存的设”,OAL 的 ) (5).BootPart支持库,BootLoader 存分, 写, 式 存设备操作。系统上电第一 Startup函 ,Eboot sources 件中一” EXEENTRY=StartUp” 是用于”启动过程中 行入口函 StartUp.系统上电后第一 就是 行Startup函 的代码,这是一个 函 ,主要 主要 是执行 级 : 中 ,”系统 , BootLoader镜像到内存,设”存器的 写 ,内存,启用

4、MMU, 启用内存Startup函 首先 重要的 , ram 的 理基 和的基 :这是startup函主要操作的 理 PHYBASE EQU 0x30000000 ;ram 的基 PTs EQU 0x30010000 ;用于存的基 在进入入口函 以后首先通过对 处理器的操作来 TLB, Cache和 Cachemcr p15, 0, r0, c8, c7, 0 ; flush both TLBmcr p15, 0, r0, c7, c5, 0 ; invalidate instruction cachemcr p15, 0, r0, c7, c6, 0 ; invalidate data ca

5、che然后I/O端口F 存器写入0x55aa,部中 EINT4-7设为出,在main函 中OEMInitDebugLED函 将通过这 个 亮LED灯.Ldr r0,=GPFCONLdr r1,0x55aaStr r1,r0在startup中将设” 中 ,系统进入轮询“式,这主要是为了保证BootLoader顺 执行,简 了开发和理 难 ,虽然损失了效 ,但是在BootLoader 行过程中 是 导操作系统加载,不会用到很多的设,很明显,这是利大于弊的,通过INTMSK存器写入相应的位来 中 ,此之INTSUBMSK(中 子屏蔽存器)及看门狗中 (别忘了哦!)将所的中 设”为部中 (此已经被屏蔽

6、):ldr r0, = INTMSKldr r1, = 0xffffffff ; disable all interruptsstr r1, r0ldr r0, = INTSUBMSKldr r1, = 0x7fff ; disable all sub interruptstr r1, r0ldr r0, = INTMODmov r1, #0x0 ; set all interrupt as IRQstr r1, r0 所中 后开”系统 :Ldr r0, = CLKDIVNLdr r1,0x7Str r1, r0CLNDIVN( 分存器) 设”UCLK( USB总线 ),FCLK与HCLK(A

7、HB总线 )的比例,HCLK与PCLK(APB总线 的比例)详 可以参考s3c2440A 档第七章ldr r0, = MPLLCON ldr r1, = PLLVAL str r1, r0MPLLCON设”主 的 :具体计算如下:Mpll = (2 * m * Fin) / (p * 2s)m = (MDIV + 8), p = (PDIV + 2), s = SDIVUPLLCON设”USB总线 ,S3C2440a的 档列出了一些参考值,兴趣可以去深入了 一下ldr r0, = UPLLCON ldr r1, = (0x3c 18)=的 ,r10的起 r2=的 存 add r0, r0, r

8、3 ; r0= 及 写 性( 20位)+ 理内存段起 ( 12位),r0即 所存的内 35 str r0, r2, #4 存内 到 中 add r0, r0, #0x00100000 ; (r0) = PTE for next physical page, 下一个的起 理 ,1MB单位sub r4, r4, #1 ; Decrement number of MB left,要的的 目cmp r4, #0 bne %b35 ; 判 是 完成,如完成, 续,到一个 目完成为 bic r0, r0, #0xF0000000 ; Clear Section Base Address Fieldbic

9、r0, r0, #0x0FF00000 ; Clear Section Base Address Field, 理内存段 ,r0在的过程中要作为存内 的存器 利用,每一个 目完成之后,都要段 b %b30 ; 内存的下一个 目下面的内 是uncachable,对应的 currency1是cachable +20000000, 理 不40 tst r0, #8bic r0, r0, #0x0C ; 位,即内 的2,3位add r10, r10, #0x0800 ; (r10) =uncachable的基 ,即30012800,即r10 了0xa0000000 对应的起 bne %b25 ; go

10、 setup PTEs for uncached space,此已经完成了g_oalAddressTable的cachable和uncachablesub r10, r10, #0x3000 ; (r10) = restore address of 1st level page table; Setup mmu to map (VA = 0) to (PA = 0x30000000).ldr r0, =PTs ; PTE entry for VA = 0,“建从 理 30000000到 0的ldr r1, =0x3000040E ; uncache/unbuffer/rw, PA base =

11、 0x30000000, 写 性 ,cachable,bufferablestr r1, r0 存内 ; uncached area.add r0, r0, #0x0800 ; PTE entry for VA = 0x0200.0000 , uncached,对 理0 被到 0x02000000的uncachable起 ldr r1, =0x30000402 ; uncache/unbuffer/rw, base = 0x30000000,uncachable,unbufferablestr r1, r0 完成以后 0对应0x30000000的cachable, 0x2000000对应0x3

12、0000000的uncached; Comment:; The following loop is to direct map RAM VA = PA. i.e. ; VA = 0x30XXXXXX = PA = 0x30XXXXXX for S3C2400; Fill in 8 entries to have a direct mapping for DRAM建立 到相 的 理 的;ldr r10, =PTs ; restore address of 1st level page tableldr r0, =PHYBASEadd r10, r10, #(0x3000 / 4) ; (r10)

13、 = ptr to 1st PTE for 0x30000000(3000000018)得到 理 30000000的的 add r0, r0, #0x1E ; 1MB cachable bufferable,cachable 性orr r0, r0, #0x400 ; set kernel r/w permission 写 性mov r1, #0 mov r3, #64 要64MB的 ,r3 “建 目45 mov r2, r1 ; (r2) = virtual address to map Bank atcmp r2, #0x20000000:SHR:BANK_SHIFT 0x2000000020=512MBadd r2, r10, r2, LSL #BANK_SH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号