首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >韦东山鸿蒙移植02_必备基础知识

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

作者头像
韦东山
发布2020-11-04 14:29:37
6400
发布2020-11-04 14:29:37
举报
文章被收录于专栏:韦东山嵌入式韦东山嵌入式

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的前后层次,合并最终的显示图像

  • 再调用驱动程序显示出来

2.2.4 鸿蒙怎么操作LCD

鸿蒙支持Liteos、Linux内核,在内核之上怎么去为多个APP管理唯一的显示设备? 鸿蒙还支持软总线,理论上可以支持更多的LCD,怎么做? 不知道,一起期待它开放出更多源码吧。

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 基础知识
    • 1.1 单片机相关的知识
      • 1.2 Linux操作相关的知识
        • 1.3 芯片相关知识
        • 2. 驱动程序知识
          • 2.1 以点灯为例
            • 2.1.1 硬件原理
            • 2.1.2 单片机点灯
            • 2.1.3 FreeRTOS点灯
            • 2.1.4 rt-thread点灯
            • 2.1.5 Liteos-a/Linux怎么点灯
            • 2.1.6 Android怎么点灯
          • 2.2 以LCD为例
            • 2.2.1 硬件原理
            • 2.2.2 Liteos-a/Linux怎么操作LCD
            • 2.2.3 Android怎么操作LCD
            • 2.2.4 鸿蒙怎么操作LCD
            • 2.2.4 鸿蒙怎么操作LCD
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档