专栏首页韦东山嵌入式韦东山鸿蒙移植01-移植RTOS需要做的事

韦东山鸿蒙移植01-移植RTOS需要做的事

1. 框架

鸿蒙是一套完整的、普通人可以直接使用的操作系统,跟Windows、安卓、IOS类似。

常见的错误观点是把鸿蒙跟Linux放在一起来对比,这不对:

  • Linux只是一个内核,普通人无法使用
    • 还需要在Linux之上安装各类程序
    • 比如Ubuntu等发行版,它们在Linux内核之上,还有桌面、各类办公软件
  • 鸿蒙支持多种内核:Linux、Liteos(又分为Liteos-a、Liteos-m)
  • 在内核之上,鸿蒙还有各种子系统,在子系统之上又有桌面等软件

2. 嵌入式软件系统的组成

我们可以把内核之上的软件,简单称为APP(实际上还可以细分,比如各类子系统、桌面等APP)。

启动内核,并不复杂,使用U-boot即可。

3. 移植最小系统要做的几件事

  • 串口相关
    • 打印(只是打印调试信息)
    • 串口驱动(可发可收,APP执行printf时可以从串口打印,所以需要驱动)
  • MMU(Memory Management Unit,内存管理单元)的设置:虚拟地址与物理地址
  • 完善中断子系统
    • 提供系统tick时钟
    • 为串口驱动实现基于中断的读取字符函数
  • 实现存储设备驱动程序
  • 在存储设备上烧录文件系统

3.1 串口相关

与Linux的串口驱动相比,鸿蒙的串口驱动极大简化了。

对于输出:不使用中断,直接使用查询方式输出。 对于输入:使用中断,我们只需要提供底层硬件相关的代码。

要注意:使用的是虚拟地址。

3.2 MMU设置

MMU有2大功能:

3.2.1 权限管理

  • 比如可以把进程A、B的地址空间完全隔离开,它们互不影响
  • 写得差的进程、有恶意的进程,不能影响到其他进程
  • 用户程序、内核地址空间完全隔离开:不允许用户直接访问硬件
  • 示例如下

3.2.2 地址映射

  • 使能MMU后,CPU发出的地址被称为"虚拟地址",它不是直接发送给硬件,而是发给MMU
  • MMU根据页表
    • 进行权限判定
    • 转换为物理地址,发给外设

运行app1时,CPU发出的addr,通过MMU映射到paddr1; 运行app2时,CPU发出的同一个addr,通过MMU映射到paddr2; 虽然app1、app2使用的地址相同,但是对应的内存不同,如下图:

  • 在移植过程中,我们不需要关注“权限”,只需要关注“地址映射”

3.3 中断子系统

操作系统跟单片机程序最大的区别,就是多任务,也就是同时运行多个程序。 同时,对人类来说是这样的,多个程序好像可以同时运行,实际上它们是轮流运行。

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就不是你写的,它在库文件里。 根文件系统里会有这些内容:

  • 程序
  • 配置文件
  • 用户数据(可选)
  • 驱动程序(可选)

4. 想做更多

  • 为有更好的人机交互可以移植LCD、触摸屏驱动
  • 为了方便开发,移植EMMC驱动、网卡驱动
  • 要接各类外设,还需要I2C、SPI、GPIO、UART驱动
  • 摄像头、声卡驱动

百问网技术论坛: http://bbs.100ask.net/

线上教学网站: https://www.100ask.net/index

百问网开发板: https://weidongshan.tmall.com/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 韦东山-首批华为鸿蒙系统课程开发者

    昨天下午,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 (HarmonyOS 2.0),正式面向应用开发者发布鸿蒙 ...

    韦东山
  • 【鸿蒙OS最新进展】鸿蒙内核liteos-a体验

    上周鸿蒙2.0开源,想必很多人都想第一时间体验。 今天,百问网发布鸿蒙IMX6ULL烧写工具以及鸿蒙体验手册,欢迎下载体验。

    韦东山
  • 韦东山鸿蒙移植02_必备基础知识

    在RTOS中,本质也是去读写寄存器,但是需要有统一的驱动程序框架。 所以:RTOS驱动 = 驱动框架 + 硬件操作

    韦东山
  • 鸿蒙不是Linux也不是安卓

    先举个例子,大家很熟悉的Windows里面含有内核,也含有UI系统,含有桌面程序,普通人可以直接使用Windows。但是Linux仅仅是一个内核(它提供进程管理...

    韦东山
  • 不吹不擂,一文揭秘鸿蒙操作系统

    ? 作者:michalliu,腾讯 WXG 客户端开发工程师 华为鸿蒙OS有什么创新,是否自主研发完全开源,本文带你深入鸿蒙的世界。 一、初识鸿蒙 国内在计算...

    腾讯技术工程官方号
  • 物联网操作系统的江湖恶战

    安卓手机市场份额超过80%,全球出货量排得上名次的智能手机,搭载的几乎都是安卓系统;剩余的份额则几乎被苹果的iOS系统独家占有。

    IT大咖说
  • 吐槽一下开源鸿蒙系统

    最近一直在研究开源鸿蒙系统,但碰到一个问题,卡壳了,弄得我茶不思饭不想。在上一篇文章鸿蒙系统研究之四:根文件系统中,碰到一个难题:

    云水木石
  • 【鸿蒙学院】鸿蒙App开发直播学员提问与回答

    Q1. 安卓开发的APP能运行在鸿蒙系统么,鸿蒙和安卓的关系是子集还是扩展或是完全独立不同的

    蒙娜丽宁
  • 让 Flutter 在鸿蒙系统上跑起来

    鸿蒙系统 (HarmonyOS)是华为推出的一款分布式操作系统,那么如何在保证开发迭代效率的前提下,以相对低的成本将移动应用快速移植到鸿蒙平台上呢?美团外卖 M...

    美团技术团队
  • 鸿蒙系统研究之三:迈出平台移植第一步

    OpenHarmony OS 2.0 发布时,标准系统只支持 Hi3516DV300 一种硬件平台,而 Android、IOS 均提供了模拟器供开发人员使用。这...

    云水木石
  • 走进uCOS III操作系统

    写在前面 最近的更新频率有些慢,因为有许多东西在网上是有大量资料的,所以我想尽量多写一点带有思考性的,或者是遇到的一些问题,少写一些同质化的东西。另外,我...

    飞哥
  • TencentOS tiny 正式开源 | 极速上手探索体验

    国产 RTOS 如雨后春笋般诞生的今天,腾讯于昨日正式开源发布了自己的物联网操作系统:TencentOS-tiny,来看看官方怎么说:

    Mculover666
  • 为什么国内手机巨头们都不支持鸿蒙?

    鸿蒙OS2.0出世,国内一众智能手机厂商终于有了国产的系统使用,不再仰仗洋人的鼻息,眼巴巴地排队等着安卓系统的更新和推送,终于可以翻身农奴把歌唱了!这是国产科技...

    悲了伤的白犀牛
  • 【STM32F429】第1章 选择ThreadX的优势

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514

    armfly
  • 【STM32H7】第1章 选择ThreadX的优势

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514

    armfly
  • 【STM32F407】第7章 RL-USB裸机版和各种RTOS版相关问题

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710

    armfly
  • 【STM32F429】第7章 RL-USB裸机版和各种RTOS版相关问题

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710

    armfly
  • 【STM32H7】第7章 RL-USB裸机版和各种RTOS版相关问题

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710

    armfly
  • 她:两篇新英格兰,一篇柳叶刀

    冻胚移植是指经与新鲜胚胎相同的体外培养后,使用超低温胚胎冷冻技术保存,等到合适的时间再行移植。

    用户6317549

扫码关注云+社区

领取腾讯云代金券