完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
int main(void)
{ #ifdef CFG_HW_INIT hw_init(); #endif 硬件的初始化,配置了硬件的IO的设置,比如串口调试、蜂鸣器...... #ifdef CFG_DATAFLASH load_df(AT91C_SPI_PCS_DATAFLASH, IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); #endif 串行dataflash的配置,未定义CFG_DATAFLASH,所以不执行此处。作用就是将dataflash 加载到SDRAM中。 #ifdef CFG_NANDFLASH load_nandflash(IMG_ADDRESS, IMG_SIZE, JUMP_ADDR); #endif nandflash的配置,加载nandflash的内容到RAM里面执行,IMG_ADDRESS= 0x20000就是 uboot的烧写地址,这也正符合我们前面将uboot烧写到nandflash里面0x20000处,我们将 nandeflash里面的uboot加载到RAM里面执行, #ifdef GUNZIP decompress_image((void *)IMG_ADDRESS, (void *)JUMP_ADDR, IMG_SIZE); /* NOT IMPLEMENTED YET */ #endif /* GUNZIP */ 解压缩映像,对于linux内核的解压缩目前我还没有分析过,所以此处待续...... #ifdef LINUX_ARG linux_arg(LINUX_ARG); /* NOT IMPLEMENTED YET */ #endif /* LINUX_ARG */ 设置启动参数,不需要,因为bootstrap只加载uboot到SDRAM中,启动参数在uboot 里面设置。 #ifdef CFG_SYS_BEEP pio_set_value(AT91C_PIN_PD(19), 1); #endif 此处就是在一上电以后蜂鸣器响一声的代码。 return JUMP_ADDR; } 通过上面的分析可以知道bootstrap最后的核心是启动bootlaoder,也就是将bootloader 加载到SDRAM里面执行,那么和我们硬件相关的只有hw_init();下面大致分析一下此函数: writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -->关闭看门狗 writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); -->启用主振荡器,配置PLLA和MCK cp15 = get_cp15(); cp15 |= I_CACHE; set_cp15(cp15); -->配置CP15,CP15 系统控制协处理器 ,CP15系统控制协处理器(the system control coprocessor)他通过协处理器指令 MCR和 MRC 提供具体的寄存器来配置和控制 caches、MMU、保护系统、配置时钟模式。CP15 的寄存器只能被 MRC和 MCR(Move to Coprocessor from ARM Register )指令访问 dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); dbg_print("Start AT91Bootstrap...nr"); -->配置调试的串口和打印信息。 ddramc_hw_init(); -->初始化DDRAM 分析总结可以可以知道bootstrap作用: 1. 硬件初始化 2. 加载bootloader到SDRAM 后续分析bootloader |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【盈鹏飞RK3399安卓主板 XPC-3399Pro免费试用】+烧写出厂固件
10319 浏览 0 评论
【盈鹏飞EVB-T335开发板试用体验】debian系统烧写
3347 浏览 1 评论
【盈鹏飞I.MX6UL工控开发板试用体验】linux can 测试
3226 浏览 0 评论
301浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 14:25 , Processed in 0.592145 second(s), Total 68, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号