关于操作系统:韦东山鸿蒙移植02必备基础知识

90次阅读

共计 1426 个字符,预计需要花费 4 分钟才能阅读完成。

1. 基础知识

移植内核对技术的要求比拟高、比拟细。

1.1 单片机相干的常识

  • 栈的作用
  • 加载地址、链接地址
  • 重定位
  • 几个简略的硬件常识

   串口

   定时器

  • 定时器
  • 中断的概念

1.2 Linux 操作相干的常识

  • Linux 常用命令
  • 简略的脚本:脚本就是把命令写在一个文件里
  • Makefile
  • GCC 编译命令

1.3 芯片相干常识

  • 能浏览芯片手册 (英文):移植最小零碎时,波及的手册内容不多
  • 能看懂硬件原理图:移植最小零碎时,波及的原理图内容不多

2. 驱动程序常识

对于只有单片机常识的人来说,怎么去操作硬件?

  • 间接读写寄存器
  • 应用库函数

在 RTOS 中,实质也是去读写寄存器,然而须要有对立的驱动程序框架。
所以:RTOS 驱动 = 驱动框架 + 硬件操作

2.1 以点灯为例

2.1.1 硬件原理

2.1.2 单片机点灯

  • 办法 1:间接读写寄存器

  • 办法 2:应用厂家的 HAL 库

2.1.3 FreeRTOS 点灯

2.1.4 rt-thread 点灯

  • 办法 1:间接操作寄存器

  • 办法 2:应用驱动程序

  驱动模型如下:

  驱动示例如下:

  调用过程框架

  调用过程示例

2.1.5 Liteos-a/Linux 怎么点灯

应用 MMU 时,个别 APP 与内核是互相隔离的。APP 通过规范的 open/read/write 等文件操作函数去调用驱动程序。
如下图所示:

为何要多此一举?

  • 它们反对 MMU(内存治理单元)
  • 用户程序跟内核是分隔开的,用户程序不能间接读写寄存器
  • 用户程序通过标准接口拜访驱动程序
  • 基于这些内核的软件个别都比单片机软件简单,术业有专攻
  • 不应该让写 APP 的人去看原理图、写驱动、写寄存器
  • 软件和硬件隔离,硬件再怎么变动,只须要改驱动,APP 不须要改

2.1.6 Android 怎么点灯

  • Android 是 Linux 操作系统上的一套操作系统
  • Android 通过 Linux 来拜访硬件,实质还是 Linux 驱动
  • 个别的 C 程序、C++ 程序,能够间接调用 open/read/write 等函数
  • 应用 java 编写的程序要拜访 C 函数须要通过 JNI

2.2 以 LCD 为例

2.2.1 硬件原理

  • 设置 LCD 控制器,它会主动从 FrameBuffer 中读取每个像素的数据发送到 LCD 上
  • 把要显示的文字、图像放入 FrameBuffer 中

2.2.2 Liteos-a/Linux 怎么操作 LCD

为何要多此一举?

  • 它们反对 MMU(内存治理单元)
  • 用户程序跟内核是分隔开的,用户程序不能间接读写寄存器
  • 用户程序通过标准接口拜访驱动程序
  • 基于这些内核的软件个别都比单片机软件简单,术业有专攻
  • 不应该让写 APP 的人去看原理图、写驱动、写寄存器
  • 软件和硬件隔离,硬件再怎么变动,只须要改驱动,APP 不须要改

2.2.3 Android 怎么操作 LCD

Android/QT 等 GUI 零碎里:

  • LCD 会被多个 APP 应用,如果不对立治理必然乱套
  • 所以,必定有一个管理软件,或称为服务软件
  • APP 自行结构本人的界面,提交给显示显示服务软件
  • 显示服务软件:依据多个 APP 的前后档次,合并最终的显示图像
  • 再调用驱动程序显示进去

2.2.4 鸿蒙怎么操作 LCD

鸿蒙反对 Liteos、Linux 内核,在内核之上怎么去为多个 APP 治理惟一的显示设施?
鸿蒙还反对软总线,实践上能够反对更多的 LCD,怎么做?
务软件:

  • 依据多个 APP 的前后档次
  • 合并最终的显示图像
  • 再调用驱动程序显示进去

原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201396913445810055?fid=0101303901040230869
作者:韦东山

正文完
 0