拿到芯片厂商提供的SDK,我们先来看下有哪些东西
SDK目录
1. brandy:Bootloader目录
2. buildroot-201611:工具链、依赖和生产最终烧录包
3. doc:参考文档
4. linux-3.10:操作系统
5. tools:用到的工具
整个工程编译依赖“build.sh"脚本,具体使用可以查看脚本。
启动步骤
-
BROM 阶段:机器上电后,执行固化在 BROM 里面的引导程序,依次遍历 sd/mmc 卡、nand 和 spinor 等支持的启动介质,找到第一个支持的介质后,从固定位置读入 Bootloader 的 Boot0 到 SRAM,然后跳到 SRAM 执行。
-
Bootloader 阶段:Bootloader 分为 Boot0 和 Boot1 两部分。Boot0 负责初始化 DRAM,加载 Boot1 到 DRAM;Boot1 进行系统调频,将 CPU 的频率调到用户在 sys_config1.fex target 段配置的 boot_clock,然后加载 U - Boot 到 DRAM。
-
U - Boot 阶段:U - Boot 引导内核分为两个阶段,第一阶段关闭 I/D cache 和 MMU,重定位 U - Boot 到最高地址;第二阶段有完整的 C 环境,执行平台相关的初始化,初始化存储设备,初始化 fastboot 和 android recovery 等。
-
内核启动阶段:调用一系列函数完成处理器信息查找、页表创建、MMU 和 Cache 初始化等操作,最终启动用户空间的 init 进程,完成设备初始化以及外设及其驱动程序的加载和初始化。