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,怎么做? 不知道,一起期待它开放出更多源码吧。

作者:韦东山

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com?jssq

liteos内核驱动和linux,移植RTOS必备基础知识相关推荐

  1. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  2. linux内核中的文件描述符(一)--基础知识简介

    linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...

  3. Linux之(6)Kconfig基础知识

    Linux之(6)Kconfig基础知识 Author:onceday date:2022年8月25日 本文档收集整理于互联网,可参考以下文档: Kconfig Language linux kern ...

  4. Linux系统编程——进程基础知识

    Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...

  5. 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识

    原标题:实战 | 电商业务的性能测试(一): 必备基础知识 1. 测试步骤及模型分析 1.1 测试步骤总览 需求分析与测试设计(性能需求目标+业务模型拆解) 测试数据准备和构造(基于模型的数据准备) ...

  6. python基础一入门必备知识-Python数据分析入门必备基础知识

    今天,老师要带大家解数据分析的定义.核心思路.应用领域以及开发流程,向大家全方位展示数据分析入门必备基础知识,全都是干货哦!虽然看完本文,不能让大家立马变身为一名数据分析师,但是能让大家对数据分析有一 ...

  7. 笔刷怎么做_零基础怎么学板绘?板绘小白必备基础知识

    零基础怎么学板绘?板绘小白必备基础知识!零基础学板绘需要准备什么东西?零基础学板绘需要学习哪些软件?板绘是做电影时要用到的人物场景原画的最重要的绘画方式,也是美术爱好者日常学习和创作的首选方式之一.那 ...

  8. java高手之路上的必备基础知识

    其实Java也就这么回事,重要的还是坚持,不能三天打鱼两天晒网.每一个分支下都是一门专业的技术,重要的是证明学精,熟练运用各项软件语言. 下面和大家分享java高手之路上的必备基础知识: 1.面向对象 ...

  9. 【网络通信】【电信运营商实战工程师】思科设备篇-网络工程师必备基础知识

    电信运营商实战工程师系列文章. 思科设备篇-网络工程师必备基础知识. 文章目录 1. 电信运营商网络设备机房 2. 认识并管理运营商网络设备 3. GNS3 安装与配置 4. IPv4地址及子网划分 ...

最新文章

  1. 飞书与IAI国际广告奖,协同实现国内营销史上的创新“云终审”
  2. Bzoj2440 完全平方数
  3. JMeter处理jdbc请求后的响应结果
  4. 给定一个年份,判断这一年是不是闰年。
  5. python坐牢-为什么说炒股要保护好本金 ?
  6. java 返回两个集合_使用 java stream 获取两个集合之间的交集.差集
  7. DRDoS分布反射式拒绝服务攻击(什么是DRDoS)
  8. 分布式唯一ID的几种生成方案
  9. c语言中memset_C中的memset()
  10. 2012 ServerStandardEval 激活
  11. 幽默笑话大全 API 接口
  12. 大数据发展与情报资源整合的关系探索
  13. 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程
  14. 1分钟反勾稽金蝶销售出库,财务开心啦,一条语句简单实用,直接替换,执行即可。...
  15. 信用社计算机专业大纲,信用社计算机专业试题
  16. soj115 御坂网络
  17. Docker容器---dockerfile简介
  18. 计算机中什么是适配器及作用,什么是电脑适配器
  19. HTML5+CSS3基础学习笔记:2
  20. Re-脱壳技术 脱壳实战(3): 脱壳及修复IAT

热门文章

  1. 深入理解 Lua 虚拟机
  2. 用lua扩展你的Nginx(整理)
  3. 用 Gearman 分发 PHP 应用程序的工作负载
  4. 一张图看懂小程序全生态
  5. Spark的实战题目——寻找5亿次访问中,访问次数最多的人
  6. tmux 如何自定义背景颜色 | How does the tmux color palette work?
  7. JVM从入门到精通(十):垃圾回收算法串讲:CMS,G1,三色标记算法
  8. 在centos服务器上运行第一个Helloworldjava程序
  9. 数据仓库与联机分析处理笔记
  10. CentOS下Storm 1.0.0集群安装详解