mtk-preloader代码分析
这里简单介绍了preloader的启动流程,ATF的实现部分可参考https://blog.csdn.net/chenying126/article/details/78638944 1.链接器脚本link_descriptor.ld定义了preloader的入口函数 OUTPUT_ARCH(arm) ENTRY(_start) 2.init.S定义了_start,并跳转到main执行 .globl _start _start: b resethandler /* * 设置svc32模式 * 禁止中断fiq&irq * clear BSS * setup stack * 跳转main执行 */ ...... entry : LDR r0, = bldr_args_addr B main 3.main函数,截取了部分代码 void main(u32 * arg) { /* get the bldr argument */ p_bldr_param = & bldr_param; //_start函数中将bldr_args_addr作为参数传给main,这里为0 memcpy(( void *) p_bldr_param,( void *) *arg, sizeof (bl_param_t)); //必要的硬件初始化 mtk_uart_init(UART_SRC_CLK_FRQ,