liteos内核驱动和linux,移植RTOS必备基础知识
1. 基礎(chǔ)知識(shí)
移植內(nèi)核對(duì)技術(shù)的要求比較高、比較細(xì)。
1.1 單片機(jī)相關(guān)的知識(shí)
棧的作用
加載地址、鏈接地址
重定位
幾個(gè)簡(jiǎn)單的硬件知識(shí)
○串口
○定時(shí)器
中斷的概念
1.2 Linux操作相關(guān)的知識(shí)
Linux常用命令
簡(jiǎn)單的腳本:腳本就是把命令寫(xiě)在一個(gè)文件里
Makefile
GCC編譯命令
1.3 芯片相關(guān)知識(shí)
能閱讀芯片手冊(cè)(英文)
○移植最小系統(tǒng)時(shí),涉及的手冊(cè)內(nèi)容不多
能看懂硬件原理圖
○移植最小系統(tǒng)時(shí),涉及的原理圖內(nèi)容不多
2. 驅(qū)動(dòng)程序知識(shí)
對(duì)于只有單片機(jī)知識(shí)的人來(lái)說(shuō),怎么去操作硬件?
直接讀寫(xiě)寄存器
使用庫(kù)函數(shù)
在RTOS中,本質(zhì)也是去讀寫(xiě)寄存器,但是需要有統(tǒng)一的驅(qū)動(dòng)程序框架。
所以:RTOS驅(qū)動(dòng) = 驅(qū)動(dòng)框架 + 硬件操作
2.1 以點(diǎn)燈為例
2.1.1 硬件原理
2.1.2 單片機(jī)點(diǎn)燈
方法1:直接讀寫(xiě)寄存器
方法2:使用廠家的HAL庫(kù)
2.1.3 FreeRTOS點(diǎn)燈
2.1.4 rt-thread點(diǎn)燈
方法1:直接操作寄存器
方法2:使用驅(qū)動(dòng)程序
○驅(qū)動(dòng)模型如下
○驅(qū)動(dòng)示例如下:
調(diào)用過(guò)程框架
調(diào)用過(guò)程示例
2.1.5 Liteos-a/Linux怎么點(diǎn)燈
使用MMU時(shí),一般APP與內(nèi)核是相互隔離的。APP通過(guò)標(biāo)準(zhǔn)的open/read/write等文件操作函數(shù)去調(diào)用驅(qū)動(dòng)程序。
如下圖所示:
為何要多此一舉?
它們支持MMU(內(nèi)存管理單元)
用戶程序跟內(nèi)核是分隔開(kāi)的,用戶程序不能直接讀寫(xiě)寄存器
用戶程序通過(guò)標(biāo)準(zhǔn)接口訪問(wèn)驅(qū)動(dòng)程序
基于這些內(nèi)核的軟件一般都比單片機(jī)軟件復(fù)雜,術(shù)業(yè)有專攻
不應(yīng)該讓寫(xiě)APP的人去看原理圖、寫(xiě)驅(qū)動(dòng)、寫(xiě)寄存器
軟件和硬件隔離,硬件再怎么變化,只需要改驅(qū)動(dòng),APP不需要改
2.1.6 Android怎么點(diǎn)燈
Android是Linux操作系統(tǒng)上的一套操作系統(tǒng)
Android通過(guò)Linux來(lái)訪問(wèn)硬件,本質(zhì)還是Linux驅(qū)動(dòng)
一般的C程序、C++程序,可以直接調(diào)用open/read/write等函數(shù)
使用java編寫(xiě)的程序要訪問(wèn)C函數(shù)需要通過(guò)JNI
2.2 以LCD為例
2.2.1 硬件原理
設(shè)置LCD控制器,它會(huì)自動(dòng)從FrameBuffer中讀取每個(gè)像素的數(shù)據(jù)發(fā)送到LCD上
把要顯示的文字、圖像放入FrameBuffer中
2.2.2 Liteos-a/Linux怎么操作LCD
為何要多此一舉?
它們支持MMU(內(nèi)存管理單元)
用戶程序跟內(nèi)核是分隔開(kāi)的,用戶程序不能直接讀寫(xiě)寄存器
用戶程序通過(guò)標(biāo)準(zhǔn)接口訪問(wèn)驅(qū)動(dòng)程序
基于這些內(nèi)核的軟件一般都比單片機(jī)軟件復(fù)雜,術(shù)業(yè)有專攻
不應(yīng)該讓寫(xiě)APP的人去看原理圖、寫(xiě)驅(qū)動(dòng)、寫(xiě)寄存器
軟件和硬件隔離,硬件再怎么變化,只需要改驅(qū)動(dòng),APP不需要改
2.2.3 Android怎么操作LCD
Android/QT等GUI系統(tǒng)里:
LCD會(huì)被多個(gè)APP使用,如果不統(tǒng)一管理必定亂套
所以,肯定有一個(gè)管理軟件,或稱為服務(wù)軟件
APP自行構(gòu)造自己的界面,提交給顯示顯示服務(wù)軟件
顯示服務(wù)軟件:根據(jù)多個(gè)APP的前后層次,合并最終的顯示圖像
再調(diào)用驅(qū)動(dòng)程序顯示出來(lái)
2.2.4 鴻蒙怎么操作LCD
鴻蒙支持Liteos、Linux內(nèi)核,在內(nèi)核之上怎么去為多個(gè)APP管理唯一的顯示設(shè)備? 鴻蒙還支持軟總線,理論上可以支持更多的LCD,怎么做? 不知道,一起期待它開(kāi)放出更多源碼吧。
作者:韋東山
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com?jssq
總結(jié)
以上是生活随笔為你收集整理的liteos内核驱动和linux,移植RTOS必备基础知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux删除目录是显示非空,Linux
- 下一篇: linux ls的所有参数,Linux