好文档 - 专业文书写作范文服务资料分享网站

u-boot-2019.06启动流程分析共26页文档

天下 分享 时间: 加入收藏 我要投稿 点赞

此文来源:赵春江老师的CNSD博客,希望帮到更多的人: http://blog.csdn.net/zhaocj

u-boot支持许多CPU,以及一些常见的开发板。本文以u-boot-2019.06这个最新版本为例,简要介绍一下u-boot在smdk2410上的启动流程。

首先系统是从arch/arm/cpu/arm920t目录下的start.s文件开始执行,并且实际开始执行的代码是从第117行开始: 117:start_code: 118: /*

119: * set the cpu to SVC32 mode 120: */

121: mrs r0, cpsr 122: bic r0, r0, #0x1f 123: orr r0, r0, #0xd3 124: msr cpsr, r0

上述代码的含义是设置cpu为SVC32模式,即超级保护模式,用于操作系统使用。 140:#ifdef CONFIG_S3C24X0 141: /* turn off the watchdog */ 142:

143:# if defined(CONFIG_S3C2400) 144:# define pWTCON 0x15300000

145:# define INTMSK 0x14400008 /* Interupt-Controller base addresses */ 146:# define CLKDIVN 0x14800014 /* clock divisor register */

第 1 页

147:#else

148:# define pWTCON 0x53000000

149:# define INTMSK 0x4A000008 /* Interupt-Controller base addresses */ 150:# define INTSUBMSK 0x4A00001C

151:# define CLKDIVN 0x4C000014 /* clock divisor register */ 152:# endif 153:

154: ldr r0, =pWTCON 155: mov r1, #0x0 156: str r1, [r0] 157: 158: /*

159: * mask all IRQs by setting all bits in the INTMR - default 160: */

161: mov r1, #0xffffffff 162: ldr r0, =INTMSK 163: str r1, [r0]

164:# if defined(CONFIG_S3C2410) 165: ldr r1, =0x3ff 166: ldr r0, =INTSUBMSK 167: str r1, [r0]

第 2 页

168:# endif 169:

170: /* FCLK:HCLK:PCLK = 1:2:4 */ 171: /* default FCLK is 120 MHz ! */ 172: ldr r0, =CLKDIVN 173: mov r1, #3 174: str r1, [r0]

175:#endif /* CONFIG_S3C24X0 */

该段代码的含义为,先定义几个需要的寄存器,然后关闭开门狗定时器,以及屏蔽所有中断和子中断,最后设置三个时钟频率之间的比值。 181:#ifndef CONFIG_SKIP_LOWLEVEL_INIT 182: bl cpu_init_crit 183:#endif

在第182行中,程序跳转到cpu_init_crit中,它也是在start.s文件中,函数的位置在第328行至第356行,它的作用是设置一些重要的寄存器(如MMU和caches等)以及内存时序。其中在第353行,程序又跳转到了lowlevel_init函数,它是在board/samsung/smdk2410目录下的lowlevel_init.s文件中定义的,这个文件的目的就是为了设置内存的时序。 186:call_board_init_f:

187: ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)

188: bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ 189: ldr r0,=0x00000000 190: bl board_init_f

第 3 页

u-boot-2019.06启动流程分析共26页文档

此文来源:赵春江老师的CNSD博客,希望帮到更多的人:http://blog.csdn.net/zhaocju-boot支持许多CPU,以及一些常见的开发板。本文以u-boot-2019.06这个最新版本为例,简要介绍一下u-boot在smdk2410上的启动流程。首先系统是从arch/arm/cpu/arm920t目录下的start.s文件开始执行,并且实
推荐度:
点击下载文档文档为doc格式
3i42e7udjc4m0xd0pw4b4c2db011p100maf
领取福利

微信扫码领取福利

微信扫码分享