韦东山鸿蒙移植01-移植RTOS需要做的事
1. 框架
文章插图
【韦东山鸿蒙移植01-移植RTOS需要做的事】鸿蒙是一套完整的、普通人可以直接使用的操作系统 , 跟Windows、安卓、IOS类似 。
常见的错误观点是把鸿蒙跟Linux放在一起来对比 , 这不对:
- Linux只是一个内核 , 普通人无法使用还需要在Linux之上安装各类程序比如Ubuntu等发行版 , 它们在Linux内核之上 , 还有桌面、各类办公软件
- 鸿蒙支持多种内核:Linux、Liteos(又分为Liteos-a、Liteos-m)
- 在内核之上 , 鸿蒙还有各种子系统 , 在子系统之上又有桌面等软件
文章插图
我们可以把内核之上的软件 , 简单称为APP(实际上还可以细分 , 比如各类子系统、桌面等APP) 。
启动内核 , 并不复杂 , 使用U-boot即可 。
3. 移植最小系统要做的几件事
- 串口相关打印(只是打印调试信息)串口驱动(可发可收 , APP执行printf时可以从串口打印 , 所以需要驱动)
- MMU(Memory Management Unit , 内存管理单元)的设置:虚拟地址与物理地址
- 完善中断子系统提供系统tick时钟为串口驱动实现基于中断的读取字符函数
- 实现存储设备驱动程序
- 在存储设备上烧录文件系统
对于输出:不使用中断 , 直接使用查询方式输出 。 对于输入:使用中断 , 我们只需要提供底层硬件相关的代码 。
要注意:使用的是虚拟地址 。
3.2 MMU设置MMU有2大功能:
3.2.1 权限管理
- 比如可以把进程A、B的地址空间完全隔离开 , 它们互不影响
- 写得差的进程、有恶意的进程 , 不能影响到其他进程
- 用户程序、内核地址空间完全隔离开:不允许用户直接访问硬件
- 示例如下
- 使能MMU后 , CPU发出的地址被称为"虚拟地址" , 它不是直接发送给硬件 , 而是发给MMU
- MMU根据页表进行权限判定转换为物理地址 , 发给外设
文章插图
- 在移植过程中 , 我们不需要关注“权限” , 只需要关注“地址映射”
3.3.1 操作系统"同时"运行多个任务轮流运行:
文章插图
3.3.2 串口接收数据的中断使用串口接收数据时 , 如果使用"查询"方式 , 低效并且费电 。 一般都使用中断方式 。
3.4 存储设备的驱动程序板子上一般都有EMMC、SD/TF卡、Nor Flash、Nand Flash等存储设备 。 Nor Flash、Nand Flash的驱动程序相对简单 , 但是这些设备比较少见了 。 而EMMC、SD/TF卡的驱动程序又太复杂 , 足够出一个专题了 。 我们聚焦在最小系统的移植 , 先把流程走通:用内存来模拟Flash 。
3.5 根文件系统光有存储设备还不行 , 上面需要有文件:这就是根文件系统 。 一个程序要能运行 , 除了你写出的程序本身 , 还需要其他库 , 比如printf就不是你写的 , 它在库文件里 。 根文件系统里会有这些内容:
- 程序
- 库
- 配置文件
- 用户数据(可选)
- 驱动程序(可选)
- 为有更好的人机交互可以移植LCD、触摸屏驱动
- 为了方便开发 , 移植EMMC驱动、网卡驱动
- 要接各类外设 , 还需要I2C、SPI、GPIO、UART驱动
- 摄像头、声卡驱动
- 华为|华为鸿蒙2.0系统手机版,界面曝光?
- OLED驱动芯片|华为三喜临门,OLED芯片自研成功,鸿蒙OS本月测试
- 新机|华为新机确认,120Hz+液态镜头+鸿蒙系统,期待P50Pro
- 苹果|华为P50 Pro再曝光,麒麟9000+鸿蒙OS,再次领先三星苹果
- 效仿华为鸿蒙系统!微软放大招:新版Win10系统兼容安卓应用
- 机会|最终时间已确定,手机鸿蒙Bate版即将开放,荣耀还有机会吗?
- 贪污|韦方卸任百度关联公司监事,此前因涉嫌贪污被抓
- 贪污|韦方退出百度关联公司监事,此前因涉嫌贪污被抓
- 华为鸿蒙系统|华为官宣鸿蒙系统!12月16日,这一天是华为的“历史时刻”
- 倒计时16天!鸿蒙上线时间官宣:这手机优先升级?