1.ubootsplԴ?源码?
2.从零开始移植最新版本(2023.10)主线Uboot到Orange Pi 3(全志H6)
ubootsplԴ??
本篇内容不讲解uboot源码,只总结面试中高频问到的源码重要知识点。内容适用于嵌入式新人了解uboot,源码对老手有复习和查漏补缺的源码作用。
1、源码PC机启动:上电后,源码通达信B点指标指标源码BIOS程序初始化DDR内存和硬盘,源码从硬盘读取OS镜像到DDR,源码跳转执行OS。源码
2、源码嵌入式Linux系统启动:上电后执行uboot,源码初始化DDR、源码Flash,源码将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、uboot支持多种启动方式:SPI Flash/eMMC/Nvme/SD/Hard Disk/U-Disk/net。启动方式不同,固件存放位置也不同。
6、掌握uboot的关键点:命令和环境变量。uboot启动后大部分工作在shell中完成,tvbj2源码命令用于操作,环境变量如bootcmd和bootargs,用于设置启动参数。
7、bootargs参数详解:root用于指定rootfs位置,console用于设置控制台,mem用于指定内核使用内存大小,ramdisk_size用于设置ramdisk大小,initrd用于指定initrd参数,init用于指定启动脚本,打涨停交易源码mtdparts用于设置分区。
8、常用bootargs组合:文件系统为ramdisk、jffs2类型、nfs等不同情况下的bootargs设置示例。
总结,了解uboot是嵌入式开发的基础,掌握其启动过程和关键参数,对提高开发效率和解决问题有重要作用。
从零开始移植最新版本(.)主线Uboot到Orange Pi 3(全志H6)
从零开始移植最新版(.)主线Uboot到Orange Pi 3(全志H6)的xyplayer4.1源码详细指南如下:
要将U-Boot .最新代码移植到Orange Pi 3开发板,首先从Das Uboot官网下载最新代码(.-rc4--gc0cbe-dirty),构建编译环境,配置并编译。移植过程涉及理解CPU启动流程,全志H6作为armV8 位架构,其启动流程需明确不同阶段和所需bin文件。具体来说,需要三个文件:BL、SPL-uboot和完整uboot,通过合并写入TF卡以启动运行。
移植前,务必掌握全志H6的启动流程,确认uboot在哪个阶段加载,以调整相应配置。对于移植,有几种方式,本文选择通用性更强的,即从头开始,不依赖硬件公司提供的特定代码,以便适应新开发板。
在官方代码仓库找到Orange Pi 3的配置文件后,按部就班进行:安装交叉编译工具链(如GCC),配置U-Boot,确保匹配全志H6的架构。接着,下载源代码,执行编译步骤,生成u-boot-sunxi-with-spl.bin,这将包含ATF、SPL和uboot主体,适应多种启动源,如SD卡或eMMC。
最后,烧录u-boot到TF卡上,确保清除SD卡分区,将编译后的镜像写入,并通过UART0串口连接调试。如果运行时遇到EFI boot manager的错误,那是由于没有提供Linux内核镜像,这是正常的,后续文章将介绍如何移植Linux内核以完成整个引导过程。