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

1. 基础知识

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

1.1 单片机相关的知识

栈的作用

加载地址、链接地址

重定位

几个简单的硬件知识

○串口

○定时器

中断的概念

1.2 Linux操作相关的知识

Linux常用命令

简单的脚本:脚本就是把命令写在一个文件里

Makefile

GCC编译命令

1.3 芯片相关知识

能阅读芯片手册(英文)

○移植最小系统时,涉及的手册内容不多

能看懂硬件原理图

○移植最小系统时,涉及的原理图内容不多

2. 驱动程序知识

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

直接读写寄存器

使用库函数

在RTOS中,本质也是去读写寄存器,但是需要有统一的驱动程序框架。

所以:RTOS驱动 = 驱动框架 + 硬件操作

2.1 以点灯为例

2.1.1 硬件原理

e0e2fe157583d918aebd377c022d2824.png

2.1.2 单片机点灯

方法1:直接读写寄存器

9d9583700ea9fd4c2f1f571b4add7d46.png

方法2:使用厂家的HAL库

e4954b0e8fc7895d73736927549e8558.png

2.1.3 FreeRTOS点灯

aa985d17c459178ea131f58d2053aa03.png

2.1.4 rt-thread点灯

方法1:直接操作寄存器

8d4271ac06ba2450650ba7f699f89c1f.png

方法2:使用驱动程序

○驱动模型如下

273698e2d46f65ebebabea63d4bd53a3.png

○驱动示例如下:

a3977ba13719f4b732e3223b37d087e7.png

调用过程框架

109287192d981ab423c5ef9e517f7e86.png

调用过程示例

26910ca40e705bfba141fd9b36d09dd2.png

2.1.5 Liteos-a/Linux怎么点灯

使用MMU时,一般APP与内核是相互隔离的。APP通过标准的open/read/write等文件操作函数去调用驱动程序。

如下图所示:

2e02800a6213bfb22eb8fcff2f84ba06.png

为何要多此一举?

它们支持MMU(内存管理单元)

用户程序跟内核是分隔开的,用户程序不能直接读写寄存器

用户程序通过标准接口访问驱动程序

基于这些内核的软件一般都比单片机软件复杂,术业有专攻

不应该让写APP的人去看原理图、写驱动、写寄存器

软件和硬件隔离,硬件再怎么变化,只需要改驱动,APP不需要改

2.1.6 Android怎么点灯

a9a2e6d86d0cebfaa0cb05d598e278fd.png

Android是Linux操作系统上的一套操作系统

Android通过Linux来访问硬件,本质还是Linux驱动

一般的C程序、C++程序,可以直接调用open/read/write等函数

使用java编写的程序要访问C函数需要通过JNI

2.2 以LCD为例

2.2.1 硬件原理

415751c64abc231d33574c2f009e48aa.png

设置LCD控制器,它会自动从FrameBuffer中读取每个像素的数据发送到LCD上

把要显示的文字、图像放入FrameBuffer中

2.2.2 Liteos-a/Linux怎么操作LCD

408b46c39d6ac1552be07036c8bc7b51.png

为何要多此一举?

它们支持MMU(内存管理单元)

用户程序跟内核是分隔开的,用户程序不能直接读写寄存器

用户程序通过标准接口访问驱动程序

基于这些内核的软件一般都比单片机软件复杂,术业有专攻

不应该让写APP的人去看原理图、写驱动、写寄存器

软件和硬件隔离,硬件再怎么变化,只需要改驱动,APP不需要改

2.2.3 Android怎么操作LCD

f707ce49429d134ad308fa5e4910ee89.png

Android/QT等GUI系统里:

LCD会被多个APP使用,如果不统一管理必定乱套

所以,肯定有一个管理软件,或称为服务软件

APP自行构造自己的界面,提交给显示显示服务软件

显示服务软件:根据多个APP的前后层次,合并最终的显示图像

再调用驱动程序显示出来

2.2.4 鸿蒙怎么操作LCD

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

作者:韦东山

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值