瑞芯微(EASY EAI)RV1126B 嵌入式底层开发简介
1. 嵌入式底层开发介绍
嵌入式底层开发通常指的是:uboot、kernel、rootfs开发。
Uboot:(Universal Boot Loader,通用引导加载器)是一个主要用于嵌入式系统(Kernel,内核)的引导加载程序,可以支持多种不同的计算机系统结构,包括ARM、AVR32、x86与Nios等。是遵循GPL条款的开放源码项目。
Kernel:Linux内核,它是一个用C语言写成,符合POSIX标准的类Unix操作系统。通过对CPU资源进行时分复用,实现了多进程管理和调度;通过各种子模块,实现了对内存、磁盘等资源的管理和调度;通过给各种外设编写设备驱动,以及修改设备树,实现了外设与Linux系统的交互。其实嵌入式内核开发的大部分工作,就是对外设资源的增、删、改,通常就是通过“开发设备驱动”和“修改设备树”完成。
Rootfs:(Root file system,根文件系统)是内核启动时所mount的第一个文件系统。文件系统是对一个存储设备上的数据和元数据进行组织的机制。这种机制有利于用户和操作系统的交互。
2. EAI UbuntuSDK介绍
EAI UbuntuSDK是一款由EASY-EAI团队基于ubuntu系统专门优化适配的嵌入式系统,它对比传统嵌入式SDK以下特点:
(1)支持快速启动,常规应用程序运行从开机仅需6-7秒,支持1秒级快速启动功能;
(2)继承传统ubuntu系统容易安装依赖库与软件生态强大的特点,ROS2、python库快速部署;
(3)文件系统可靠性高,支持RamDisk可自动修复文件系统坏块,防止因为磁盘异常/掉电,文件系统无法正常启动;
(4)系统初始化化可靠性高,默认支持外部看门狗(1.6秒),防止因为任何异常导致uboot/kernel无法正常初始化(用户应用程序则调用芯片内置看门狗,保护应用程序);
(5)底层开发简单,无需研究庞大的Buildroot SDK代码,仅需修改内核、设备树;
(6)底层开发效率高,一般完整编译SDK只需15分钟,而传统的Buildroot SDK需要90分钟(同等性能电脑,CPU@4.2GHz 12核24线程);
(7)支持rootfs一键导出,用户在开发板安装好的库与开发好的APP可通过以太网一键导出,轻松输出量产镜像;
(8)支持软件库在线升级,sudo apt-get upgrade即可从我们专用服务器(http://os.easy-eai.com)同步更新跟底层相关性比较大的依赖库(如: rkaiq、rga、gstreamer等),及时修复芯片原厂bug;
(9)应用开发效率高,支持开发板本地编译与在线交叉编译,在线交叉编译应用依赖库直接依赖到板卡文件系统,规避库兼容问题且能利用PC的编译性能与源码编辑器;
(10)支持OTA方案,规避软件导致的量产事故与应用/系统迭代更新;
(11)支持A、B分区方案,具有极高的系统可靠性,但是会占用大量的存储空间;
(12)UI交互方案选择灵活,支持安装桌面系统、支持安装浏览器,用户可以多种技术方式开发自己的UI界面(默认没有预装运行,不占系统资源);
(13)软件部署更灵活,支持docker部署。
3. EAI UbuntuSDK开发流程
固件开发流程介绍:
【uboot.img】通常由UbuntuSDK源码编译生成,但99%的情况无须改动以及替换。
【boot.img】是内核镜像,通常也是由UbuntuSDK源码生成,用户可自由修改。
【rootfs.img】是文件系统镜像,通常采用【从开发板上完整导出】的方式获得,然后拿去替换固件中的rootfs.img
