a64 uboot 代码走读
已经完整梳理主要程序流,对于每个主程序流会按章节阻逐个细化分解。
uboot 入口main
main完成一些状态初始化和标记,之后通过board_init_f和board_init_r 完成早期、中期初始化工作;
对于如上初始化board_init_f主要通过预定义并且初始化的函数指针列表init_sequence_f[]依次执行完成;
同样地,对于board_init_r 通过预先定义好的init_sequence_r 数组依次完成函数调用;
之后程序进入main_loop 通过解析预定义环境变量bootcmd=x执行后续操作。
bootcmd的函数实体通过预先定义好命令序列。
完成boot image的查找查找android 引导分区,为kernel 跳转查找基地址;
在这里完成boot到kernel 基地址跳转;
详细分析mmc初始化流程。
allwinner a64支持uboot阶段显示静态图片,这里梳理程序结构,确定gac-350未什么未生效,同时确定从boot->rootfs 整个过程显示蓝屏的根本原因。
从如上代码走的来看,lcd完整驱动区分如下层次关系;
此uboot中的disp模块同内核/linux-3.10/drivers/video/sunxi/disp2/disp中的一一对应。
不同的是,内核中的显示驱动通过内核模块的方式加载。也就是,在uboot通过的boardc_r.c ...