《SylixOS启程之旅》是一门公开课,点开下面链接即可观看:
SylixOS启程之旅
一、SylixOS 引导过程分析
1. SylixOS 常用引导程序
-
U-Boot
U-Boot是在嵌入式领域应用最广泛的一个开源的引导程序。功能非常强大。U-Boot支持丰富的设备驱动,如串口、以太网卡,SDRAM,Flash,EP2ROM等。同时还提供丰富的用户接口命令,支持串口 网络文件下载功能。 支持多种微处理器架构,如ARM、PowerPC、SPARC、RISC-V和C-SKY等。 -
PMON
PMON国产龙芯处理器(MIPS)采用它作为其引导程序 -
GRUB
GRUB多用于X86处理器的引导程序,支持多种操作系统引导,如Linux,SylixOS等(SylixOS在X86处理器上运行用到的引导程序就是GRUB)
2. SylixOS 支持ARM设备的几种引导方式
3.SylixOS引导过程分析——总流程分析
3.1 一个设备从上电到启动完成的整个流程
- 没有操作系统的设备
系统上电——>直接执行系统应用程序 - 有操作系统的设备
(0)系统上电后,CPU执行ROM上的硬件出厂固化的启动程序。
(1)启动程序根据启动引脚找到外部设备。通常外部设备起始位置存放着引导程序BootLoader。启动程序找到这个引导程序BootLoader。
(2)硬件将外存中的BootLoader引导程序加载到内存RAM中运行。
(3)BootLoader再去加载操作系统到RAM中运行。
(4)启动操作系统。
3.2 引导程序和操作系统镜像的存储
3.3 U-Boot引导SylixOS
-
总体流程
-
U-Boot第一阶段
-
U-Boot第二阶段
二、引导过程中的几个基本概念
2.1 运行地址和加载地址
2.2 BIN 文件与 ELF 文件
SylixOS IDE在编译BSP时,会同时生成 BIN 和 ELF 文件,开发者可以根部自己实际需求来选择相应的文件。目前只有龙芯和 X86 用 ELF 文件,其他都用的 BIN 文件。
三、在ARM设备上安装SylixOS
3.1 设备环境说明
3.2 启动IDE中的 tfpt 服务器
3.3 U-Boot 的常用命令
3.4 网络启动 SylixOS
3.4.1 总体概述
3.4.2 具体流程
-
通过 setenv 命令设置ipaddr、netmask、serverip等环境变量
-
通过 ping 命令测试网络是否连通
-
通过saveenv 命令保存环境变量
-
通过 tfptboot 命令下载并加载 SylixOS镜像文件,
-
执行 go 命令,去指定的地址执行操作系统内核程序,启动操作系统
3.5 SylixOS系统固化
通过网络加载的SylixOS 镜像文件,只存在于内存中。 重启后就没有了,因此我们需要对操作系统镜像进行固化。
3.5.1 总体概述
3.5.2 具体流程
3.5.2.1 对SD卡进行分区
SylixOS 一般分两个区,一个存放SylixOS 镜像文件,一个作为SylixOS操作系统和用户来使用。
这里的分区是3个区,一般是两个区,这里因为提前已经把U-Boot程序烧入了SD卡,它存放在SD卡开始的7M空间里。所以分区时多一个分区。
- 分区前先检查一下SD卡是否挂载文件。若有输入 umount sd ,命令进行删除。
- 输入 cd /dev 命令查看sd卡在哪里。
我们这里是快存储,所以在blk/ 下。然后输入 cd /blk 命令查看当前内存的大小。输入ll 命令,发现它是14G。
- 输入 fdisk -f sdcard-0 命令进行分区
这里问要分几个分区 : 3
问是第一个分区大小。一般选择4K(注意输入的不是4K 而是对应字节大小):4096
问第一个分区占总存储的百分比,因为我们U-Boot文件只有7M,所以这里只需要 1%(已经14M了) :1
问是否激活第一分区(是):y
问第一个分区的文件类型(这里选择保留分区):4
问第二个分区大小,这里存放SylixOS 镜像文件(10%):10
问是否激活第二分区:y
问第二个分区文件类型:FTA
问第三个分区大小:0
问是否激活第三个分区: n
第三个分区文件类型:TPSFS(掉电安全文件系统)
分区成功。
3.5.2.2 格式化
- 我们需要先把SD卡挂载上去 输入命令:remount sdcard-0 ,样表示我们把SD卡重新挂载到SylixOS上了。
- 输入 mkfs sdc 进行格式化
3.5.2.3 将SylixOS镜像文件放到U-Boot下
-
将SylixOS镜像文件上传到我们根目录的boot文件下
-
我们先输入cd /boot 进入这个目录 在输入 ll 命令查看是否有文件
-
到IDE内进行操作,将SylixOS镜像文件上传到我们的boot文件上。
-
去我们虚拟机上进行确认
3.5 设置从SD卡启动 SylixOS
3.5.1 总体概述
3.5.2 具体流程
输入命令:setenv sylixOS_mme_boot “fatload mmc 0:2 0x49000000 bsporangepi_oneplus_bin; go64 0x29000000”