bootloader
引导程序(英语:bootloader)是指在电脑系统中负责初始化周边设备、启动操作系统的程序。
操作系统在硬盘上,主板上电到读取硬盘之间还有一段路要走。
- 第一阶段引导加载程序的例子包括BIOS、UEFI、coreboot、Libreboot和Das U-Boot。
- 第二阶段引导加载程序,如GNU GRUB、rEFInd、Windows Boot Manager、Syslinux和NTLDR
在个人电脑 PC 上:
BIOS(英文:Basic Input/Output System),即基本输入输出系统, is a type of firmware used to ……
The BIOS in older PCs(个人电脑) initializes and tests the system hardware components, and loads a boot loader from a mass storage device which then initializes a kernel.
统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写 UEFI) 是 PC BIOS 的继任者。
In computing, [firmware][firmware ] is software that provides low-level control of computing device hardware.
在嵌入式设备上:
Das U-Boot is an open-source boot loader used in embedded devices
- to perform various low-level hardware initialization tasks
- and boot the device’s operating system kernel.
U-Boot 既是第一阶段引导加载程序,也是第二阶段引导加载程序。
BIOS 和 Bootloader
BIOS(或UEFI)与Bootloader是计算机启动过程中的前后衔接关系。
- BIOS是固化在主板上的固件,负责初始化硬件并寻找启动设备;
- 而Bootloader是存储在硬盘等设备上的软件,由BIOS加载,专注于引导操作系统内核。
BIOS是“起步者”,Bootloader是“承接者”。二者详细关系:
- 工作顺序与流程:
- BIOS/UEFI:电脑按下电源后首先运行,进行POST(上电自检),初始化基本硬件(CPU、内存、显卡)。
- 移交控制权:BIOS根据配置找到启动磁盘,读取其第一扇区(MBR)或EFI系统分区的Bootloader(如GRUB、Windows Boot Manager)到内存中。
- Bootloader:接管控制权,将操作系统内核加载到内存并运行,随后将控制权移交给系统。
- 功能分工:
- BIOS:平台通用,与操作系统无关,硬件平台特性相关。
- Bootloader:更灵活,支持文件系统,专门为了启动特定的操作系统。
- 嵌入式场景的区别:
- 在嵌入式系统中,通常没有单独的BIOS,硬件初始化与加载内核的功能往往都合并在一个增强的Bootloader中(如U-Boot)
U-Boot 和设备树
设备树(也写作 device tree)是一种用于描述特定计算机的硬件组件的数据结构,以便操作系统内核可以使用和管理这些组件。
- 采用 x86 架构的个人电脑(比如 Windows)通常不使用设备树,而是依赖各种自动配置协议(例如ACPI)来发现硬件。
- 在 ARM 架构上,自 2012 年以来,所有新的 SoC 都必须使用设备树。
- 设备树广泛用于基于 ARM 的 Android设备。
This can be seen as a remedy(补救) to the vast number of forks (of Linux and Das U-Boot) that have historically been created to support (marginally 略微) different ARM boards. The purpose is to move a significant part of the hardware description out of the kernel binary, and into the compiled device tree blob, which is handed to the kernel by the boot loader, replacing a range of board-specific C source files and compile-time options in the kernel.
Using Device tree, a vendor(供应商)might be able to use a less modified mainline U-Boot on otherwise special purpose hardware.
硬件千差万别,但又区别不大。以前呢,这种硬件差异造成 Linux 和 U-boot 分支满天飞,引入设备树是将这种差异单拎出来,减少 Linux / U-boot 分支。
Mainline U-Boot
主线 U-Boot(Mainline U-Boot)是指由 Denx 维护的官方、最新版本的开源引导加载程序,
不同于芯片厂商(SoC Vendor)维护的旧版本、定制化强的 U-Boot,主线 U-Boot 支持 Linux 的设备树(Device Tree)标准化管理。
UNT403a 线刷
- 打开 USB_Burning_Tool
- 保持设备断电
- 插上双公头两端:主机是网口旁边的 USB 口,盒子也是靠近网口的 USB 口
- 按下 Reset 键上电 6 秒左右松开 Reset (刷机神器不亮灯,用不了)
- 显示设备已连接
在 https://github.com/ophub/kernel/releases/tag/tools 给出的包用不了
android_tv_hubei_mobile_unt403a_um-s905l3a-2+8g_android9_dangbei.tar.xz能刷成功,开机黑屏android_tv_unt403a_s905l3a.tar.xz线刷1%:加载DDR报错,[0x10102002]Romcode/初始化DDR/初始化寄存器/USB控制命令出错- 全都是 1% ; 取消勾选后,全都在 7% 失败
拆机后发现 SOC 不是 S905L3A ,而是 S905L3B ,所以上述固件全部失败,这个版本的不好找。
b863av3.2-m 线刷
- 打开 USB_Burning_Tool
- 保持设备断电
- 插上双公头两端:主机是网口旁边的 USB 口,盒子也是靠近网口的 USB 口
插上刷机神器(不需要短接竟然),然后上电- 显示设备已连接
在 https://github.com/ophub/kernel/releases/tag/tools 给出的包用不了
android_tv_zxv10_b863av3.2-m_s905l3a.tar.xz线刷7%:格式化报错
1 | [23:40:39 651][HUB1-2][Err]--usb_reap_async_nocancel Try 2 time! ret=-116 Timeout= 30 |
- 全都是 7%
竟然不需要短接/刷机神器就能够连接,所以,大概率是 https://www.znds.com/tv-1223970-1-1.html 这里提到的现象了。