1.Arm Linux 调试-QEMU调试环境 搭建
2.总结uboot的重要概念,不知道的看过来
3.从零开始移植最新版本(2023.10)主线Uboot到Orange Pi 3(全志H6)
4.F35比F22先进,为什么美国肯卖F35不肯卖F22?
Arm Linux 调试-QEMU调试环境 搭建
ARM Linux调试,尤其是针对QEMU虚拟机环境的搭建,是开发者进行嵌入式系统开发的重要环节。QEMU,贝米源码资本全称Quick Emulator,是一个开源的模拟器,支持多种架构,包括ARMv8。安装QEMU可通过两种方式:直接通过包管理器如apt-get安装全架构的qemu-system或针对x架构的qemu-system-x,或者选择源码编译以获取更全面的支持。
QEMU的启动参数设计灵活,支持ATF启动、UEFI启动、u-boot启动和Linux kernel启动。对于使用Linux kernel协议的guest,如非ELF文件,秀站源码DTB(Device Tree Blob)的地址会被传递到相应寄存器。而对于bare-metal类型的引导,DTB位于RAM的起始地址。Flash memory和RAM的配置对于引导过程至关重要,例如,Flash1用于装载ATF FIP格式的Image,包含BL2、BL、BL(可能包含Image而非U-Boot),而Flash0用于装载BL(可能为QEMU_EFI.fd,可替代U-Boot)。
在QEMU的virt平台上,启动过程涉及BootRom加载BL2,BL2加载BL3,随后BL执行引导。QEMU支持两种引导方式,针对不同的ble tools 源码引导方式,客户代码定位DTB的方式有所差异。具体启动实例中,QEMU会根据硬件配置自动将DTB加载到特定的物理地址,可以通过GDB调试工具在启动时查看寄存器信息,确认DTB加载位置。
若需要深入了解和分析DTB,QEMU提供了dump功能,将virt machine的DTB导出并转换为DTS格式。对于ARMv8的支持、virt machine的详细信息以及QEMU调试ARM内核的方法,相关参考资料可供查阅。
总结uboot的重要概念,不知道的看过来
本篇内容不讲解uboot源码,只总结面试中高频问到的重要知识点。内容适用于嵌入式新人了解uboot,对老手有复习和查漏补缺的作用。
1、exe获取源码PC机启动:上电后,BIOS程序初始化DDR内存和硬盘,从硬盘读取OS镜像到DDR,跳转执行OS。
2、嵌入式Linux系统启动:上电后执行uboot,初始化DDR、Flash,将OS从Flash读到DDR,启动OS。
3、uboot定义与作用:uboot属于bootloader,作为单线程裸机程序,主要作用是初始化硬件、内存、flash等,引导内核启动。rom 3310 源码
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中完成,命令用于操作,环境变量如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)的详细指南如下:
要将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内核以完成整个引导过程。
F比F先进,为什么美国肯卖F不肯卖F?
F只有部分技术比f先进。
为啥只卖f,主要有两个关系。
一是f本就是多国研发的,至少是多国出钱研发的,其定位就是要出售的。技术保密性低。而f是美国独立研发的,技术保密性高。且f在隐身,雷达等方面不如f。
其次要发挥f的优势,需要系统的配合,比如卫星,预警机,数据链等等,这样不仅把美国盟友绑定在北约系统下,加强对美国的依赖性,而且其盟友也没办法用f对美国造成威胁。象英国就抱怨过美国愿意卖给他们的f跟美国自用的比不了,可以理解成美国出售给盟友的f有所缩水,或者英国拿f无法发挥出同样战斗力。
而且即便如此,美国出售f仍然有所保留,比如美国不肯出售系统源代码。让北约国家都不满。