1.ramdisk Դ?码解???
ramdisk Դ????
本篇内容不讲解uboot源码,只总结面试中高频问到的码解重要知识点。内容适用于嵌入式新人了解uboot,码解对老手有复习和查漏补缺的码解作用。
1、码解PC机启动:上电后,码解35源码 反码 补码BIOS程序初始化DDR内存和硬盘,码解从硬盘读取OS镜像到DDR,码解跳转执行OS。码解
2、码解嵌入式Linux系统启动:上电后执行uboot,码解初始化DDR、码解Flash,码解gradleidea原版源码将OS从Flash读到DDR,码解启动OS。码解
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是试用源码系统初始化硬件、内存、flash等,引导内核启动。
4、uboot启动阶段(不同平台差异):MTK平台:boot rom -> preloader -> lk -> kernel;RK平台:bootrom -> spl(miniloader) -> uboot -> trust -> kernel;NXP平台:bootrom -> bl2 -> ATF -> uboot -> kernel。
5、python模拟源码uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,jsp发布源码命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。