嵌入式linux系統(tǒng)設計與應用 課件全套 王劍 第1-9章 嵌入式系統(tǒng)基礎知識- 嵌入式Linux高級編程_第1頁
嵌入式linux系統(tǒng)設計與應用 課件全套 王劍 第1-9章 嵌入式系統(tǒng)基礎知識- 嵌入式Linux高級編程_第2頁
嵌入式linux系統(tǒng)設計與應用 課件全套 王劍 第1-9章 嵌入式系統(tǒng)基礎知識- 嵌入式Linux高級編程_第3頁
嵌入式linux系統(tǒng)設計與應用 課件全套 王劍 第1-9章 嵌入式系統(tǒng)基礎知識- 嵌入式Linux高級編程_第4頁
嵌入式linux系統(tǒng)設計與應用 課件全套 王劍 第1-9章 嵌入式系統(tǒng)基礎知識- 嵌入式Linux高級編程_第5頁
已閱讀5頁,還剩578頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

嵌入式Linux系統(tǒng)原理與應用第一章嵌入式系統(tǒng)基本概念第一章嵌入式系統(tǒng)基本概念一、課程定位課程教學的指導依據(jù)/嵌入式系統(tǒng)的基本概念和分類/嵌入式系統(tǒng)的學習層次分析和兩種應用模式二、單片機與嵌入式系統(tǒng)PC編程與嵌入式編程的區(qū)別/單片機和嵌入式系統(tǒng)的關系/單片機的典型應用案例:指夾式血氧儀/嵌入式系統(tǒng)的典型應用案例:腦機接口/單片機的設計模式:輪詢/前后臺/狀態(tài)機/RTOS/嵌入式系統(tǒng)的開發(fā)流程:經(jīng)典模式與協(xié)同開發(fā)/嵌入式系統(tǒng)技術展望三、RTOS與Linux嵌入式操作系統(tǒng)定義與常見的嵌入式操作系統(tǒng)/嵌入式操作系統(tǒng)與物聯(lián)網(wǎng)操作系統(tǒng)的關系/RTOS的主要特點/實時

Linux:從軟實時到硬實時嵌入式系統(tǒng)課程教學的指導依據(jù)

《普通高等學校本科專業(yè)類教學質(zhì)量國家標準》國際ACM/IEEE計算課程體系規(guī)范CC2020全國計算機技術與軟件專業(yè)技術資格嵌入式系統(tǒng)設計師考試大綱普通高等學校專業(yè)課程大綱國際ACM/IEEE計算課程體系規(guī)范CC2020勝任力模型IT勝任力模型CC2020規(guī)范應用實例(嵌入式系統(tǒng))嵌入式系統(tǒng)的基本概念和分類國際定義

國內(nèi)定義國際電氣和電子工程師協(xié)會(theInstituteofElectricalandElectronicsEngineers,IEEE)對嵌入式系統(tǒng)的定義為:嵌入式系統(tǒng)是用來控制、監(jiān)視或者輔助機器、設備或裝置運行的裝置。廣泛定義國內(nèi)普遍認同的嵌入式系統(tǒng)定義是:嵌入式系統(tǒng)是以應用為中心、以計算機技術為基礎,軟、硬件可裁剪,適應于應用系統(tǒng)對功能、可靠性、成本、體積、功耗等方面有特殊要求的專用計算機系統(tǒng)。--定義收縮,強調(diào)“嵌入性”、“專用性”與“計算機系統(tǒng)”嵌入式系統(tǒng)的特點

與“嵌入性”相關的特點:由于是嵌入到對象系統(tǒng)中,因此必須滿足對象系統(tǒng)的環(huán)境要求,如物理環(huán)境(小型)、電氣/氣氛環(huán)境(可靠)、成本(價廉)等要求。

與“專用性”的相關特點:軟、硬件的裁剪性;滿足對象要求的最小軟、硬件配置等。

與“計算機系統(tǒng)”相關的特點:嵌入式系統(tǒng)必須是能滿足對象系統(tǒng)控制要求的計算機系統(tǒng)。Q:實時性是嵌入式系統(tǒng)的充要條件嗎?嵌入式系統(tǒng)的分類和兩種應用模式按其形態(tài)的差異,一般可將嵌入式系統(tǒng)分為:芯片級(MCU、SoC)、板級(單板機、模塊)、設備級(工控機)。從嵌入式系統(tǒng)發(fā)展的歷史過程,以及嵌入式應用的多樣性中,可以了解到客觀上形成的兩種應用模式:以電子技術應用工程師為主體的電子系統(tǒng)智能化應用以計算機專業(yè)人士為主體,基于嵌入式系統(tǒng)軟硬件平臺,以網(wǎng)絡、通信為主的嵌入式上層應用。嵌入式系統(tǒng)的學習層次分析層面1—構建嵌入式系統(tǒng)平臺層面2—利用現(xiàn)成平臺但需設計新的接口驅(qū)動層面3—利用現(xiàn)成平臺完成嵌入式應用軟件主要內(nèi)容是“嵌入式系統(tǒng)原理及接口”。重點學習某個具有代表性的嵌入式CPU(如ARM系列)內(nèi)部寄存器結構、匯編指令系統(tǒng)、中斷(異常)管理機制及常用的外圍接口,使學生掌握嵌入式硬件平臺設計的有關知識。并具有啟動引導程序的設計的知識和能力。主要內(nèi)容是“嵌入式操作系統(tǒng)及接口驅(qū)動設計”。重點學習某個具有代表性的嵌入式操作系統(tǒng)(如Linux)的內(nèi)核原理、I/O驅(qū)動機制及驅(qū)動程序框架,并結合具體的外圍接口電路,使學生具備該接口的驅(qū)動程序設計能力,并具有操作系統(tǒng)裁剪能力主要內(nèi)容是“嵌入式系統(tǒng)應用軟件開發(fā)”。重點學習某個具有代表性的嵌入式操作系統(tǒng)環(huán)境下的交叉編譯工具、進一步需介紹該操作系統(tǒng)所提供的API函數(shù)及API函數(shù)的應用方法。PC編程與嵌入式編程的區(qū)別案例1串口的驅(qū)動程序。串口驅(qū)動提供了一個查詢驅(qū)動緩沖區(qū)字符的函數(shù):GetRxBuffCharNum()。上層需要接收一定數(shù)量的字符后才能對包做解析。偽代碼如下:bExit=FALSE;do{if(GetRxBuffCharNum()>=30)bExit=ReadRxBuff(buff,GetRxBuffCharNum());}While(!bExit);PC編程與嵌入式編程的區(qū)別案例1修改后:CPU可能無法正常響應串口中斷案例分析:在嵌入式系統(tǒng)里,大部分的RTOS應用都是不帶串口驅(qū)動。如果設計代碼時,沒有充分考慮代碼與內(nèi)核的結合。將會造成代碼深層次的問題。PC編程與嵌入式編程的區(qū)別案例2第二個例子:驅(qū)動一個14094串口轉(zhuǎn)并口的芯片。串行信號采用IO模擬。偽代碼如下:將數(shù)據(jù)的8個bit在每個高電平從bit0到bit7發(fā)送出去。注意:14094要求clock的高電平和低電平均需要持續(xù)10ns。Onlyhighleveldelay修改:嵌入式系統(tǒng)的典型組成BoardSupportPackage(板級支持軟件包,簡稱BSP)它對于用戶(開發(fā)者)是開放的,用戶可以根據(jù)不同的硬件需求對其作改動或二次開發(fā),BSP在系統(tǒng)中的角色,很相似于BIOS在PC系統(tǒng)中的地位。嵌入式處理器典型架構推動嵌入式計算機系統(tǒng)走向獨立發(fā)展道路的芯片,也稱單片微型計算機,簡稱單片機(single-chipmicrocomputer)。由于這類芯片的作用主要是控制被嵌入設備的相關動作,因此,業(yè)界常稱這類芯片為微控制器(MicrocontrollerUnit,MCU)。片上系統(tǒng)(SystemonChip,SoC)是ASIC(ApplicationSpecificIntegratedCircuits)設計方法學中產(chǎn)生的一種新技術,是指以嵌入式系統(tǒng)為核心,以IP(IntellectualProperty)復用技術為基礎,集軟、硬件于一體,并追求產(chǎn)品系統(tǒng)最大包容的集成芯片。單片機和嵌入式系統(tǒng)的關系(狹義)推動嵌入式計算機系統(tǒng)走向獨立發(fā)展道路的芯片,也稱單片微型計算機,簡稱單片機(single-chipmicrocomputer)。由于這類芯片的作用主要是控制被嵌入設備的相關動作,因此,業(yè)界常稱這類芯片為微控制器(MicrocontrollerUnit,MCU)。片上系統(tǒng)(Systemon

Chip,SoC)是ASIC(ApplicationSpecificIntegratedCircuits)設計方法學中產(chǎn)生的一種新技術,是指以嵌入式系統(tǒng)為核心,以IP(IntellectualProperty)復用技術為基礎,集軟、硬件于一體,并追求產(chǎn)品系統(tǒng)最大包容的集成芯片。單片機和嵌入式系統(tǒng)的關系(狹義)從工程實用的角度出發(fā):通常把芯片中不帶MMU(內(nèi)存管理單元,memorymanagementunit)從而不支持虛擬地址,只能跑裸機或RTOS(典型如ucos、華為LiteOS、RT-Thread、freertos等)系統(tǒng)定義為單片機(典型如STM32、NXPLPC系列等)通常把芯片自帶MMU可以支持虛擬地址,能夠運行Linux、Vxworks、WinCE、Android這樣的操作系統(tǒng)的系統(tǒng)叫嵌入式。單片機的典型應用案例:指夾式血氧儀血氧儀原理基于動脈搏動期間光吸收量的變化。分別位于可見紅光光譜(660納米)和紅外光譜(940納米)的兩個光源交替照射被測試區(qū)(一般為指尖或耳垂)。在這些脈動期間所吸收的光量與血液中的氧含量有關。微處理器計算所吸收的這兩種光譜的比率,并將結果與存在存儲器里的飽和度數(shù)值表進行比較,從而得出血氧飽和度。血氧儀常用MCU:STM32ST于2007年發(fā)布了第一款STM32。STM32是ARMCortex-M內(nèi)核的單片機,實際上同樣使用ARMCortex-M系列內(nèi)核的單片機還有很多(譬如NXP的LPC系列,原Freescale的K60系列,新唐的M051系列,國內(nèi)如兆易創(chuàng)新的GD32系列等)。單片機的設計模式:輪詢/前后臺/狀態(tài)機/RTOS

1、輪詢系統(tǒng)輪詢系統(tǒng)即是在裸機編程的時候,先初始化好相關的硬件,然后讓主程序在一個死循環(huán)里面不斷循環(huán),順序地做各種事情。裸機系統(tǒng)通常分成輪詢系統(tǒng)和前后臺系統(tǒng)。int

main(void)

{

/*

硬件相關初始化

*/

HardWareInit();

/*

無限循環(huán)

*/

for

(;;)

{

/*

處理事情

1

*/

DoSomething1();

/*

處理事情

2

*/

DoSomethingg2();

/*

處理事情

3

*/

DoSomethingg3();

}}輪詢系統(tǒng)只適合順序執(zhí)行的功能代碼,當有外部事件驅(qū)動時,實時性就會降低。單片機的設計模式:輪詢/前后臺/狀態(tài)機/RTOS2、前后臺系統(tǒng)在裸機系統(tǒng)中,所有的操作都是在一個無限的大循環(huán)里面實現(xiàn),支持中斷檢測。外部中斷緊急事件在中斷里面標記或者響應,中斷服務稱為前臺,main函數(shù)里面的while(1)無限循環(huán)稱為后臺,按順序處理業(yè)務功能,以及中斷標記的可執(zhí)行的事件。適用于小型的電子產(chǎn)品。int

flag1

=

0;

int

flag2

=

0;

int

flag3

=

0;

int

main(void)

{

HardWareInit();

/*

無限循環(huán)

*/

for

(;;)

{

if

(flag1)

{

/*

處理事情

1

*/

DoSomething1();}

if

(flag2)

{

/*

處理事情

2

*/

DoSomethingg2();

}

if

(flag3)

{

/*

處理事情

3

*/

DoSomethingg3();

}

}}void

ISR1(void)

{

flag1

=

1;

/*

置位標志位

*/

DoSomething1();}

void

ISR2(void)

{

flag2

=

2;

/*

置位標志位

*/

DoSomething2();}

void

ISR3(void)

{flag3

=

1;

/*

置位標志位

*/

DoSomething3();}狀態(tài)機在裸機狀態(tài)下實現(xiàn):只有一個執(zhí)行序列,所有的操作都是串行執(zhí)行的,唯一需要注意的控制流程就是中斷處理。單片機的設計模式:輪詢/前后臺/狀態(tài)機/RTOS單片機的設計模式:輪詢/前后臺/狀態(tài)機/RTOSRTOS實時操作系統(tǒng)(RTOS),又稱即時操作系統(tǒng),它會按照排序運行、管理系統(tǒng)資源,并為開發(fā)應用程序提供一致的基礎。實時操作系統(tǒng)與一般的操作系統(tǒng)相比,最大的特色就是“實時性”,如果有一個任務需要執(zhí)行,實時操作系統(tǒng)會馬上(在較短時間內(nèi))執(zhí)行該任務,不會有較長的延時。這種特性保證了各個任務的及時執(zhí)行。Q:速度快,吞吐量大,代碼精簡,代碼規(guī)模小等。。。。它們就是RTOS嗎???嵌入式系統(tǒng)的典型應用案例:腦機接口基于ARM的微型電腦主板:RaspberryPi首先從腦部讀取生物電信號,然后傳到處理器中處理,最后用輸出信號控制其他設備。嵌入式系統(tǒng)的典型應用案例:腦機接口國際10-20系統(tǒng)的腦電圖檢測電極位置,其中首字母代表大腦不同的分區(qū),例如F為額葉,P是頂葉,T是顳葉等當大腦在進行不同的活動時,也會同時產(chǎn)生可以區(qū)分的電信號模式。這樣這些電極就可以檢測到電信號,用以進行后續(xù)的分析處理。

嵌入式系統(tǒng)的典型應用案例:腦機接口咀嚼和眨眼動作的測試嵌入式系統(tǒng)的開發(fā)流程:經(jīng)典模式與協(xié)同開發(fā)嵌入式系統(tǒng)技術展望

邊緣計算技術發(fā)展嵌入式人工智能技術發(fā)展嵌入式開發(fā)安全可信技術發(fā)展RISC-V指令集架構發(fā)展高性能嵌入式操作系統(tǒng)發(fā)展物聯(lián)網(wǎng)技術與垂直行業(yè)技術發(fā)展邊緣計算技術發(fā)展物聯(lián)網(wǎng)快速發(fā)展下的邊緣計算范式。邊緣節(jié)點(包括智能家電、手機、平板等)產(chǎn)生數(shù)據(jù),上傳到云中心,服務提供商也產(chǎn)生數(shù)據(jù)上傳到云中心。邊緣節(jié)點發(fā)送請求到云中心,云中心返還相關數(shù)據(jù)給邊緣節(jié)點?;贚iteOS的端側(cè)AI框架LiteOS

現(xiàn)已集成

MindSpore

輕量級AI推理框架,在LiteOSStudio中輸入模型文件,例如人臉識別、指紋識別等模型文件,MindSpore進行模型解析、優(yōu)化,生成模型AI代碼,再鏈接預置算子庫后與LiteOS工程進行編譯,即可將AI模型快速部署到端側(cè)實現(xiàn)端側(cè)AI推理。嵌入式開發(fā)安全可信技術發(fā)展LiteOS的安全框架RISC-V指令集架構發(fā)展RISC-V指令集與其他開源指令集架構相比,在不同的特性上都有改進高性能嵌入式操作系統(tǒng)發(fā)展LiteOS操作系統(tǒng)采用“1+N”架構。這個“1”指的是LiteOS內(nèi)核,它包括基礎內(nèi)核和擴展內(nèi)核,部分開源,提供物聯(lián)網(wǎng)設備端的系統(tǒng)資源管理功能?!癗”指的是N個中間件,其中最重要的是:互聯(lián)互通框架、傳感框架、安全框架、運行引擎和Javascript框架等。嵌入式操作系統(tǒng)定義和常見的嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)的極為重要的組成部分,通常包括與硬件相關的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設備驅(qū)動接口、通信協(xié)議、圖形用戶界面及標準化瀏覽器等。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實時高效性、硬件的相關依賴性、軟件固化以及應用的專用性等方面有突出的特點。常見的嵌入式操作系統(tǒng)有:嵌入式Linux、華為Liteos、WindowsCE、Symbian、Android、uC/OS-II、VxWorks等。嵌入式操作系統(tǒng)舉例:HuaweiLiteOS基礎

內(nèi)核架構開源內(nèi)核,基礎內(nèi)核體積可以裁剪至不到10K大小,支持動態(tài)加載、分散加載和靜態(tài)裁剪嵌入式操作系統(tǒng)與物聯(lián)網(wǎng)操作系統(tǒng)的關系物聯(lián)網(wǎng)操作系統(tǒng)整體分層架構嵌入式操作系統(tǒng)與物聯(lián)網(wǎng)操作系統(tǒng)的關系物聯(lián)網(wǎng)操作系統(tǒng)與傳統(tǒng)嵌入式操作系統(tǒng)特征比較實時操作系統(tǒng)RTOS的主要特點實時性考慮的不是速度、性能、吞吐量,而是確定性,也就是說:當一個事件發(fā)生的時候,可以確定性的保證在多長時間內(nèi)得到處理,只要能滿足這個要求,就可以成為硬實時。實時操作系統(tǒng)根據(jù)任務執(zhí)行的實時性,分為“硬實時”和“軟實時”:“硬實時”操作系統(tǒng)必須使任務在確定的時間內(nèi)完成?!败泴崟r”操作系統(tǒng)能讓絕大多數(shù)任務在確定時間內(nèi)完成。“硬實時”操作系統(tǒng)比“軟實時”操作系統(tǒng)響應更快、實時性更高,“硬實時”操作系統(tǒng)大多應用于工業(yè)領域衡量實時性的指標1.中斷延時:一個外部事件引發(fā)的中斷發(fā)生時,到相應的中斷處理程序第一條指令被執(zhí)行時,所經(jīng)過的時間;一旦外部中斷發(fā)生,操作系統(tǒng)必須在足夠短的時間內(nèi)響應中斷并做出處理2.任務搶占延時:當一個高優(yōu)先級的任務準備就緒時,從正在執(zhí)行的低優(yōu)先級任務中搶奪CPU資源所經(jīng)過的時間;一旦任務或線程所需的資源或進一步運行的條件準備就緒,必須能夠馬上得到調(diào)度。顯然,基于非搶占式調(diào)度方式的內(nèi)核很難滿足這些實時性要求。實時Linux:從軟實時到硬實時Linux系統(tǒng)是軟實時(1)內(nèi)核不可搶占(2.6版本后已變成可搶占)(2)自旋鎖(3)中斷的優(yōu)先級高(4)同步操作時關閉中斷單內(nèi)核解決方案:給Linux內(nèi)核打補丁,例如:RT-Preempt;雙內(nèi)核解決方案:在硬件抽象層之上,運行2個內(nèi)核:實時內(nèi)核+Linux內(nèi)核,它們分別向上層提供API函數(shù),例如:Xenomai;RT-linux目前影響Linux

內(nèi)核實時性因素主要有時鐘精度、系統(tǒng)中斷、進程調(diào)度算法和內(nèi)核可搶占性等。

實時Linux:從軟實時到硬實時RTLinux的設計思想是:應用硬件的實時約束將實時程序分割成短小簡單的部分,較大部分承擔較復雜的任務。Xenomai在底層硬件和兩個內(nèi)核之間還加了一層硬件抽象層ADEOS(AdoptiveDomainEnvironmentforOperatingSystem)本章小結本章內(nèi)容眾多,從嵌入式系統(tǒng)課程教學的指導依據(jù)出發(fā),介紹了嵌入式系統(tǒng)的基本概念、分類、應用模式和典型結構,然后探討了單片機與嵌入式系統(tǒng)的關系,對嵌入式系統(tǒng)的技術發(fā)展進行了展望,最后對嵌入式操作系統(tǒng)和實時操作系統(tǒng)做了分析討論,這些都為后續(xù)的課時內(nèi)容的學習奠定了基礎。第二章典型嵌入式架構與指令集:

ARM與RISC-V

第二章典型嵌入式架構與指令集:ARM與RISC-V(1)ARM處理器架構ARM處理器概述

/ARMCortex-A8處理器架構與工作模式/ARMCortex-A8存儲器管理/ARMCortex-A8異常管理/ARM安全機制trustzone技術(2)RISC-V指令集與架構RISC-V概述/RISC-V指令集/RISC-V硬件平臺ARM處理器概述按指令系統(tǒng)分類,嵌入式微處理器分為:復雜指令集系統(tǒng)CISC:代表IntelX86精簡指令集系統(tǒng)RISC:代表ARM(1)單周期的執(zhí)行。(2)采用高效的流水線操作。(3)無微代碼的硬連線控制。(4)指令格式的規(guī)格化和簡單化。(5)采用面向寄存器組的指令。(6)采用Load/Store(裝載/存儲)指令結構。(7)注重編譯的優(yōu)化,力求有效地支撐高級語言程序。ARM處理器概述:內(nèi)核版本變化體系結構ARM內(nèi)核版本v1ARM1v2ARM2v2aARM2aS、ARM3v3ARM6、ARM600、ARM610、ARM7、ARM700、ARM710v4StrongARM、ARM8、ARM810v4TARM7TDMI、ARM720T、ARM740T、ARM9TDMI、ARM920T、ARM940Tv5TEARM9E-S、ARM10TDMI、ARM1020Ev6ARM11、ARM1156T2-S、ARM1156T2F-S、ARM1176JZF-S、ARM11JZF-Sv7ARMCortex-M、ARMCortex-R、ARMCortex-Av8Cortex-A53/57、Cortex-A72等v4版本

該版本在v3版本的基礎上做了進一步的擴充,是目前被應用最廣的ARM體系結構,ARM7TDMI、ARM9、StrongARM等都采用該結構。它的主要特點有:(1)增加了對有符號、無符號半字及有符號字節(jié)的存/取指令;(2)增加T變種,引入Thumb狀態(tài),處理器工作在該狀態(tài)下時,指令集為新增的16位Thumb指令集;(3)增加了系統(tǒng)模式,該模式下處理器使用用戶寄存器;(4)完善了軟件中斷(SWI)指令功能;(5)把一些未使用的指令空間捕獲為未定義指令。v5版本

.在v4版本的基礎上增加了一些新的指令。ARM9E、ARM10和Intel的XScale處理器都采用該版本結構。它的主要特點有:(1)改進了ARM指令集和Thumb指令集的混合使用效率;(2)增加了帶有鏈接和交換的轉(zhuǎn)移指令(BLX)、計數(shù)前導零指令(CLZ)、軟件斷點指令(BKPT);(3)v5TE版本中增加了DSP(數(shù)字信號處理)指令集,包括全部算法和16位指令集;支持新的Java,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速性能。v6版本

該版本2001年發(fā)布,并應用在2002年發(fā)布的ARM11處理器中。該版本降低耗電量的同時提高了圖像處理能力,適合無線和消費類電子產(chǎn)品;高數(shù)據(jù)吞吐量和高性能的結合。它的主要特點有:(1)支持多微處理器內(nèi)核;(2)Thumb代碼壓縮技術;(3)引入Jazelle技術,提高了Java性能,降低了Java應用程序?qū)?nèi)存的空間占用;(4)通過SIMD(單指令多數(shù)據(jù)流)技術,提高了音/視頻處理能力。v7版本

v7版本架構是在v6版本的基礎上誕生的,對于早期的ARM處理器軟件提供了較好的兼容性。它的主要特點有:(1)采用了在Thumb代碼壓縮技術上發(fā)展的Thumb-2技術,比純32位代碼減少了31%的內(nèi)存占用,減小了系統(tǒng)開銷,能夠提供比基于Thumb技術的解決方案高出38%的性能;(2)首次采用NEON信號處理擴展集,它是一個結合64位和128位的SIMD指令集,對H.264和MP3等媒體解碼提供加速,將DSP和媒體處理能力提高了近4倍,并支持改良的浮點運算;(3)支持改良的運行環(huán)境,迎合不斷增加的JIT(JustInTime)和DAC(DynamicAdaptiveCompilation)技術的使用ARM處理器概述:ARMCortex處理器分類Cortex-ACortex-RCortex-M設計特點高時鐘頻率,長流水線,高性能,對媒體處理支持(NEON指令集擴展)高時鐘頻率,較長流水線,高確定性(中斷延遲低)通常較短的流水線,超低功耗系統(tǒng)特征內(nèi)存管理單元(MMU),cachememory,ARMTrustZone安全擴展內(nèi)存保護單元(MPU),cachememory,緊耦合內(nèi)存(TCM)內(nèi)存保護單元(MPU),嵌套向量中斷控制器

(NVIC),喚醒中斷控制器(WIC),最新ARMTrustZone安全擴展目標市場移動計算,智能手機,高效能服務器,高端微處理器工業(yè)微控制器,汽車電子,硬盤控制器,基帶微控制器,深度嵌入系統(tǒng)(例如傳感器,MEMS,混合信號IC,IoT)Cortex-M3實現(xiàn)$1

ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU產(chǎn)品售價僅1美元ARMCortex-M3微控制器內(nèi)核,專門針對MCU應用領域而設計,突出低成本、低功耗和高效率。v8版本

2011年11月,ARM公司發(fā)布了新一代處理器架構ARMv8的部分技術細節(jié),這是ARM公司的首款支持64位指令集的處理器架構,將被首先用于對擴展虛擬地址和64位數(shù)據(jù)處理技術有更高要求的產(chǎn)品領域,如企業(yè)應用、高檔消費電子產(chǎn)品。目前的ARMv7架構的主要特性都將在ARMv8架構中得以保留或進一步拓展,如TrustZone技術、虛擬化技術及NEONadvancedSIMD技術等。ARMv8架構將64位架構支持引入ARM架構中,其中包括:(1)64位通用寄存器、SP(堆棧指針)和PC(程序計數(shù)器);(2)64位數(shù)據(jù)處理和擴展的虛擬尋址;(3)兩種主要執(zhí)行狀態(tài):AArch64(64位執(zhí)行狀態(tài))和AArch32(32位執(zhí)行狀態(tài));ARMCortex-A8處理器架構Cortex-A8處理器是第一款基于ARMv7構架的的應用處理器,使用了Thumb-2技術,新增了130條指令。新增的功能使用戶在進行終端服務時無需在ARM和Thumb模式間進行切換,產(chǎn)生的代碼保持Thumb指令的傳統(tǒng)代碼密度,卻可以實現(xiàn)32位ARM代碼的性能流水線技術理想的3級流水線(ARM7TDMI:無訪存操作)LDR流水線從存儲器中讀取指令解碼指令中用到的寄存器寄存器讀(從寄存器Bank)移位及ALU操作寄存器寫(到寄存器Bank)思考題設指令由取指、分析、執(zhí)行3個子部件完成,每個子部件的工作周期均為Dt,采用常規(guī)標量單流水線處理機。若連續(xù)執(zhí)行10條指令,則共需時間?Dt。(3)A.8 B.10 C.12 D.142.1.4

ARM開發(fā)工具簡介ARM開發(fā)工具就是ARM公司為龐大的各領域工程師和開發(fā)人員裝備的完整的開發(fā)工具鏈,幫助迅速搭建開發(fā)平臺,降低開發(fā)的成本和難度,縮短開發(fā)周期,讓工程師們充分針對ARM架構處理器進行開發(fā)。根據(jù)開發(fā)目標平臺的不同,ARM提供不同的工具解決方案。最常見的是MDK-ARM、RVDS,ARMDS5。他們分別針對低端和高端ARM處理器應用。1.MDK-ARMRealViewMicrocontrollerDevelopmentKit(MDK)支持基于包括ARM7,ARM9,Cortex-M3微控制處理器等在內(nèi)的眾多處理器,例如Atmel,F(xiàn)reescale,Luminary,NXP,OKI,Samsung,Sharp,ST,TI等廠家的產(chǎn)品。MDK提供工業(yè)標準的編譯工具和強大的調(diào)試支持。MDK主要是為終端客戶提供價格低廉,功能強大的開發(fā)工具。集成了RealView編譯工具,KeiluVision開發(fā)環(huán)境,支持基于ARM7,ARM9,Cortex-M1,Cortex-M3,Cortex-R4等ARM產(chǎn)品的仿真,提供非常高效的RTOSKernel,此外,提供的Real-Time庫還有TCP/IP網(wǎng)絡套件,F(xiàn)lash文件系統(tǒng),USB器件接口,CAN總線接口等,方便終端用戶進行應用開發(fā)。因此對于MDK用戶來說,他們得到的就是可以對MCU進行仿真和調(diào)試,容易使用又沒有冗余的功能,關鍵是價格實惠,而且用戶可以先試用再購買。2.RVDSRVDS(RealViewDevelopmentSuite)是ARM公司推出的專為SOC,F(xiàn)PGA以及ASIC用戶開發(fā)復雜嵌入式應用程序或者和操作系統(tǒng)平臺組件接口而設計的開發(fā)工具,被業(yè)界稱為最好的ARM開發(fā)工具。RVDS支持器件設計,支持多核調(diào)試,支持基于所有ARM和Cortex系列CPU的程序開發(fā)。RVDS還可以和第三方軟件進行很好的連接。RVDS是ARM公司繼SDT與ADS1.2之后主推的新一代開發(fā)工具,目前最高版本是4.1。RVDS對代碼密度的提升、代碼執(zhí)行速度的提高,都可以由ARM開發(fā)工具自動實現(xiàn),而不需要軟件開發(fā)人員花費過多的時間手動優(yōu)化高級語言代碼。這是RVDS的優(yōu)勢所在。RVDS包含有四個模塊:(1)IDE:RVDS中集成了EclipseIDE,用于代碼的編輯和管理。支持語句高亮和多顏色顯示,以工程的方式管理代碼,支持第三方Eclipse功能插件。(2)RVCT:RVCT是業(yè)界最優(yōu)秀的編譯器,支持全系列的ARM和XSCALE架構,支持匯編語言、C語言和C++語言。RVDS的編譯器根據(jù)最新的ARM架構進行特別的優(yōu)化,針對每個ARM架構都提供最好的代碼執(zhí)行性能,最優(yōu)的代碼密度??梢愿鶕?jù)需要選擇調(diào)試信息級別,以及不同的代碼優(yōu)化方向和優(yōu)化級別。(3)RVD:是RVDS中的調(diào)試軟件,功能強大,支持Flash燒寫和多核調(diào)試,支持多種調(diào)試手段,快速錯誤定位。(4)RVISS:是指令集仿真器,支持外部設備虛擬,可以使軟件開發(fā)和硬件開發(fā)同步進行,同時可以分析代碼性能,加快軟件開發(fā)速度。3.ARMDS5ARMDS5,也叫ARMDS-5,是一款支持開發(fā)所有ARM內(nèi)核芯片的集成開發(fā)環(huán)境,也是一套針對ARM支持的linux和android平臺的全面的端到端軟件開發(fā)工具套件。ARMDS5提供具有跟蹤、系統(tǒng)范圍性能分析器、實時系統(tǒng)模擬器和編譯器的應用程序和內(nèi)核空間調(diào)試器。這些功能包含在定制的、功能強大且用戶友好的基于Eclipse的IDE中。借助于該工具套件,可以很輕松地為ARM支持的系統(tǒng)開發(fā)和優(yōu)化基于Linux的系統(tǒng),縮短開發(fā)和測試周期,并且可幫助工程師創(chuàng)建資源利用效率高的軟件。圖2-2ARMDS-5功能框架圖2-1ARMDS5的工程配置思考題某計算機系統(tǒng)由下圖所示的部件構成,假定每個部件的千小時可靠度R均為0.9,則該系統(tǒng)的千小時可靠度約為(2)。(2)A.0.882 B.0.951 C.0.9 D.0.99試題(2)分析

本題考查系統(tǒng)可靠度的概念。串聯(lián)部件的可靠度=各部件的可靠度的乘積。并聯(lián)部件的可靠度=1?–?各部件失效率的乘積。題目中給出的系統(tǒng)由三個部件串聯(lián)組成,其中第二、第三部件又分別由兩個部件并聯(lián)構成,因此整個系統(tǒng)的可靠度為0.9?′?(1?–?(1?–?0.9)?′?(1?–?0.9))?′?(1?–?(1?–?0.9)?′?(1?–?0.9))?≈?0.882參考答案(2)A

Cortex-A8處理器工作模式和狀態(tài)PartThree2.3ARMCortex-A8處理器工作模式用戶模式非用戶模式,或特權模式異常模式特權模式:是為了服務中斷或異常,或訪問受保護的資源,具有多系統(tǒng)資源的完全訪問權限,可自由的切換工作模式。用戶模式系統(tǒng)模式:系統(tǒng)模式不能由任何異常進入,它有與用戶模式完全相同的寄存器。系統(tǒng)模式供需要訪問系統(tǒng)資源的操作系統(tǒng)任務使用,這樣避免使用和異常模式相關的寄存器,保證在任何異常發(fā)生時都不會使任務的狀態(tài)不可靠。異常模式:除了可以通過程序切換進入外,還可以在發(fā)生特定的異常中斷時進入。每一種異常模式都有一組專用的寄存器,以保證在進入異常模式時用戶模式下的寄存器(保存著工作模式切換前的程序運行狀態(tài))不被破壞。Cortex-A8處理器狀態(tài)Cortex-A8處理器是32位處理器,可執(zhí)行32位ARM指令集指令,同時兼容16位Thumb-2指令集指令和數(shù)據(jù)類型。有3種工作狀態(tài),這些狀態(tài)由程序狀態(tài)寄存器(CPSR)的T位和J位控制與切換。(1)ARM狀態(tài):執(zhí)行32位的字對齊的ARM指令集指令,T位和J位為0;(2)Thumb狀態(tài):執(zhí)行16位或32位半字對齊的Thumb-2指令集指令,T位為1,J位為0;(3)ThumbEE狀態(tài):執(zhí)行為動態(tài)產(chǎn)生目標而設計的16位或32位半字對齊的Thumb-2指令集的變體,T位和J位為1。ARM指令必須在ARM狀態(tài)下執(zhí)行;Thumb指令也必須在Thumb狀態(tài)下執(zhí)行;ARM處理器可以在兩種狀態(tài)下切換,只要遵循ATPCS調(diào)用規(guī)則,ARM子程序和Thumb子程序之間可以相互調(diào)用。ARM狀態(tài)和Thumb狀態(tài)之間的切換并不影響處理器工作模式和寄存器組的內(nèi)容。處理器復位后開始執(zhí)行代碼時,處于ARM狀態(tài)。

Cortex-A8存儲器管理PartFour2.47.若內(nèi)存按字節(jié)編址,用存儲容量為8K*8比特的存儲器芯片構成地址編號A0000H~DFFFFH的內(nèi)存空間,則至少需要多少片。本題考查內(nèi)存容量的計算。給定起、止地址碼的內(nèi)存容量?=?終止地址?–?起始地址?+?1。將終止地址加1等于E0000H,再減去起始地址,即E0000H?–?A0000H?=?40000H。十六進制的?(40000)16?=?218。組成內(nèi)存儲器的芯片數(shù)量?=?內(nèi)存儲器的容量/單個芯片的容量。218/(8*210)?=?218/213?=?25ARM的數(shù)據(jù)類型Cortex-A8是32位處理器,支持多種數(shù)據(jù)類型:字節(jié)(Byte):8位;以字節(jié)為單位,按1字節(jié)對齊;半字(Halfword):16位;以半字為單位,按2字節(jié)對齊,地址最末一位為0;字(Word):32位;雙字(Doubleword):64位。浮點運算使用在ARM硬件指令集中未定義的數(shù)據(jù)類型。另外ARM公司還提供了C語言編寫的浮點庫作為ARM浮點指令集的替代方法(Thumb代碼只能使用浮點指令集)。以字為單位,按4字節(jié)對齊,地址最末兩位為00。ARM的體系結構將存儲器看成是從0x00000000地址開始的按字節(jié)編碼的線性存儲結構,每個字節(jié)都有對應的地址編碼。由于數(shù)據(jù)有不同的字節(jié)大?。?字節(jié)、2字節(jié)、4字節(jié)等),導致數(shù)據(jù)在存儲器中存放不是連續(xù)的,這樣降低了存儲系統(tǒng)的效率,甚至引起數(shù)據(jù)讀寫錯誤。因此數(shù)據(jù)必須按照一下方式對齊:以字為單位,按4字節(jié)對齊,地址最末兩位為00。以半字為單位,按2字節(jié)對齊,地址最末一位為0;以字節(jié)為單位,按1字節(jié)對齊;2.4.2浮點數(shù)據(jù)類型浮點運算使用在ARM硬件指令集中未定義的數(shù)據(jù)類型。在協(xié)處理器指令空間定義了一系列浮點指令,這些指令全部可以通過未定義指令異常(該異常收集所有硬件協(xié)處理器不接受的協(xié)處理器指令)在軟件中實現(xiàn),其中的一小部分也可以由浮點運算協(xié)處理器FPA10以硬件方式實現(xiàn)。另外ARM公司還提供了C語言編寫的浮點庫作為ARM浮點指令集的替代方法(Thumb代碼只能使用浮點指令集)。該庫支持IEEE標準的單精度和雙精度格式。C編譯器有一個關鍵字標志來選擇,它產(chǎn)生的代碼與軟件仿真(通過避免中斷、譯碼和浮點指令仿真)相比既快又緊湊。大/小端存儲模式Cortex-A8處理器支持大端(Big-endian)、小端(Little-endian)、混合大小端模式和非對齊數(shù)據(jù)訪問。可以通過硬件的方式設置端模式。大端模式是被存放字數(shù)據(jù)的高字節(jié)存儲在存儲系統(tǒng)的低地址中,而被存放的字數(shù)據(jù)的低字節(jié)則存放在存儲系統(tǒng)的高地址中。小端模式中,存儲系統(tǒng)的低地址中存放的是被放字數(shù)據(jù)中的低字節(jié)內(nèi)容,存儲系統(tǒng)的高地址存放的是被存字數(shù)據(jù)中的高字節(jié)內(nèi)容。例如,一個32位的字數(shù)據(jù)

0x12345678處理器大小端模式的判斷typedefunion{charchChar;shortshShort;}UnEndian;boolIsBigEndian(){UnEndiantest;test.shShort=0x10;if(test.chChar==0x10){returntrue;}returnfalse;}同時也可以采用如本書微課2.4.3大小端模式與程序判斷的完整程序進行演示如果需要在大端模式和小端模式之間相互轉(zhuǎn)換,最經(jīng)典的做法是使用套接字庫中的ntohs、ntohl、htons和htonl進行轉(zhuǎn)換。內(nèi)存和I/O–大小端

大端:小端:0xb32045000xddddddd00xb32045000xddddddd0f6f673734b4bcdcddada0000實例變量A:wordA=0xf6734bcd,在內(nèi)存中的起始地址為0xb3204500變量B:halfwordB=218,在內(nèi)存中的起始地址為0xddddddd0問題:halfwordB=218與wordC=218在內(nèi)存中的存放方式有何不同?請分大端和小端兩種情況說明。圖2-7ARM狀態(tài)下的通用寄存器組圖2-8ARM狀態(tài)下的狀態(tài)寄存器組不分組的通用寄存器分組的通用寄存器在特權模式下,特定模式下的寄存器陣列才是有效的。=特權模式Cortex-A8存儲器管理:通用寄存器組

R8~R12寄存器分別對應兩個不同的物理寄存器,分別是快速中斷模式下的相應存儲器和非快速中斷模式下的相應存儲器。R13、R14寄存器分別對應七個不同的物理存儲器,除了用戶和系統(tǒng)模式共用一個物理寄存器外,其它六個分別是fiq、svc、abt、irq、und和mon模式下的不同物理寄存器。R13常作堆棧指針(SP:StackPointer);R14子程序鏈接寄存器(LR:LinkRegister),該寄存器由ARM編譯器自動使用。在執(zhí)行BL和BLX指令時,R14保存返回地址。。

程序計數(shù)器R15(PC),用于記錄程序當前的運行地址。ARM處理器每執(zhí)行一條指令,都會把PC增加4字節(jié)(Thumb模式為兩個字節(jié))。此外,相應的分支指令(如BL等)也會改變PC的值。在ARM狀態(tài)下,PC字對齊;在Thumb和ThumbEE狀態(tài)下,PC半字對齊。FIQ模式下有7個分組寄存器映射到R8~R14,即R8_fiq~R14_fiq,所以很多快速中斷處理不需要保存任何寄存器。Cortex-A8存儲器管理:狀態(tài)寄存器主要功能是:保存最近執(zhí)行的算術或邏輯運算的信息、控制中斷的允許或禁止、設置處理器工作模式(1)條件標志位:N、Z、C和V統(tǒng)稱為條件標志位,這些標志位會根據(jù)程序中的算術和邏輯指令的執(zhí)行結果修改。處理器則通過測試這些標志位來確定一條指令是否執(zhí)行。N(Negative):N=1表示運算的結果為負數(shù),N=0表示結果為正數(shù)或零。Z(Zero):Z=1表示運算的結果為零,Z=0表示運算的結果不為零。C(Carry):在加法指令中,當結果產(chǎn)生了進位,C=1,其他情況C=0;在減法指令中,當運算發(fā)生了借位,C=1,其他情況C=0;在移位運算指令中,C被設置成被移位寄存器最后移出去的位。V(oVerflow):對于加/減法運算指令,當操作數(shù)和運算結果為二進制補碼表示的帶符號數(shù)時,V=1表示符號位溢出。(2)Q標志位:在帶有DSP指令擴展的ARMv5及以上版本中,Q標志位用于指示增強的DAP指令是否發(fā)生了溢出。Q標志位具有粘性,當因某條指令將其設置為1時,它將一直保持為1直到通過MSR指令寫CPSR寄存器明確地將該位清0,不能根據(jù)Q標志位的狀態(tài)來有條件地執(zhí)行某條指令。(3)IT塊:IT塊用于對Thumb指令集中if-then-else這一類語句塊的控制。如果有IT塊,則IT[7:5]為當前IT塊的基本條件碼。在沒有IT塊處于活動狀態(tài)時,該3位為000。IT[4:0]表示條件執(zhí)行指令的數(shù)量,不論指令的條件是基本條件碼或是基本條件的逆條件碼。在沒有IT塊處于活動狀態(tài)時,該5位為00000。當處理器執(zhí)行IT指令時,通過指令的條件和指令中Then、Else(T和E)參數(shù)來設置這些位。(4)J標志位:用于表示處理器是否處于ThumbEE狀態(tài)。T=1時,J=0,表示處理器處于Thumb狀態(tài)。J=1,表示處理器處于ThumbEE狀態(tài)。注意:T=0時,不能夠設置J=1;當T=0時,J=0。不能通過MSR指令來改變CPSR的J標志位。(5)GE[3:0]位:該位用于表示在SIMD指令集中的大于、等于標志。在任何模式下讀可寫。(6)E標志位:該標志位控制存取操作的字節(jié)順序。0表示小端操作,1表示大端操作。Arm和Thumb指令集都提供指令用于設置和清除E標志位。當使用CFGEND0信號復位時,E標志位將被初始化。(7)A標志位:表示異步異常禁止。該位自動置為1,用于禁止不精確的數(shù)據(jù)中止。(8)控制位:程序狀態(tài)寄存器的低8位是控制位。當異常發(fā)生時,這些位的值將發(fā)生改變。在特權模式下,可通過軟件編程來修改這些標志位的值。中斷屏蔽位:I=1,IRQ中斷被屏蔽;F=1,F(xiàn)IQ中斷被屏蔽。狀態(tài)控制位:T=0,處理器處于ARM狀態(tài);T=1,處理器處于Thumb狀態(tài)。模式控制位:M[4:0]為模式控制位,決定處理器的工作模式,ARMState與ThumbState寄存器關系CPSR寄存器的使用

CodeA

voidincrement(int*restrictb,

int*restrictc)

{

inti;

for(i=0;i<100;i++)

{

c[i]=b[i]+1;

}

}CodeB

voidincrement(int*b,int*c)

{

inti;

int*pb,*pc;

intb3,b4;

pb=b-1;

pc=c-1;

b3=pb[1];

for(i=(100/2);i!=0;i--)

{

b4=*(pb+=2);

pc[1]=b3+1;

b3=pb[1];

*(pc+=2)=b4+1;

}

}

循環(huán)100次變成了循環(huán)50次(loopunrolling),減少了跳轉(zhuǎn)次數(shù);數(shù)組變成了指針,減少每次計算數(shù)組偏移量的指令;微調(diào)了不同代碼操作的執(zhí)行順序,減少了流水線stall的情況;循環(huán)從++循環(huán)變成了――循環(huán)。這樣可以使用CPSR的條件位,為每次循環(huán)減少了一條判斷指令Cortex-A8存儲系統(tǒng)MMU的任務

(1)實現(xiàn)虛擬存儲空間到物理存儲空間的映射。(2)存儲器訪問權限的控制,提供硬件機制的內(nèi)存訪問授權。(3)設置虛擬存儲空間緩沖的特性。虛擬地址由編譯器和連接器在定位程序時分配;物理地址用來訪問實際的主存儲器硬件模塊。在ARM中采用了頁(Page)式虛擬存儲管理方式。虛擬地址空間劃分成稱為頁的單位,而相應的物理地址空間也被進行劃分,單位是頁幀(frame)。頁與頁幀之間在MMU的調(diào)度下是如何進行映射:虛擬地址0被送往MMU,MMU發(fā)現(xiàn)該地址在頁0(0~4095)的范圍內(nèi),頁0所映射的頁框為2(頁框2的地址范圍是8192~12287)。因此MMU將該虛擬地址轉(zhuǎn)化為物理地址8192,并把地址8192送到內(nèi)存地址總線上。內(nèi)存對地址的映射過程并不清楚,它只是接收到一個對地址8192的訪問請求并執(zhí)行。MMU的一個重要任務就是讓每個任務都運行在各自的虛擬存儲空間中。MMU做為轉(zhuǎn)換器,將程序和數(shù)據(jù)的虛擬地址轉(zhuǎn)換成實際的物理地址,也就是實現(xiàn)虛擬存儲空間到物理存儲空間的映射。除此之外,MMU的其他重要功能還包括:(1)存儲器訪問權限的控制,提供硬件機制的內(nèi)存訪問授權。(2)設置虛擬存儲空間緩沖的特性。MMU中的虛擬地址轉(zhuǎn)換成實際的物理地址的變換過程是通過兩級頁表實現(xiàn)的:(1)一級頁表中包含有以段為單位的地址變換條目以及指向二級頁表的指針。一級頁表實現(xiàn)的地址映射力度較大。以段為單位的地址變換過程只需要一級頁表。(2)二級頁表中包含有以大頁和小頁為單位的地址變換條目。有一種類型的二級頁表還包含有以極小頁為單位的地址變換條目。以頁為單位的地址變換過程需要二級頁表。

Cortex-A8異常處理PartFive2.5Cortex-A8異常處理Cortex-A8異常處理Cortex-A8異常處理:響應與返回ARM處理器對異常的響應過程如下:(1)進入與特定的異常相應的運行模式。(2)將CPSR寄存器的值保存到將要執(zhí)行的異常中斷各自對應的SPSR_mode中。(3)將引起異常指令的下一條指令的地址存入相應的鏈接寄存器LR(R14_mode)。(4)設置CPSR寄存器的低5位,使處理器進入相應的工作模式。(5)根據(jù)異常類型,將相應向量地址強制復制給程序計數(shù)器PC。ARM處理器從異常處理程序中返回的過程如下:(1)恢復原來被保存的用戶寄存器。(2)將SPSR_mode寄存器的值復制到CPSR中,以恢復被中斷的程序工作狀態(tài)。(3)根據(jù)異常類型將PC寄存器值恢復成斷點地址,以執(zhí)行原來被中斷打斷的程序。(4)清除CPSR中的中斷屏蔽標志位I和F,開放外部中斷和快速中斷。Cortex-A8處理器S5PC100中斷機制S5PC100集成了3個向量中斷控制器(VIC)和3個TZIC(針對于TrustZone技術所涉及的中斷控制器)ARM安全機制trustzone技術TrustZone技術的系統(tǒng)架構TrustZone構建的可信執(zhí)行環(huán)境RISC-V概述:模塊化的指令子集

RISC-V的指令集使用模塊化方式進行組織,每一個模塊使用一個英文字母來表示。RISC-V最基本也是唯一強制要求實現(xiàn)的指令集部分是由I字母表示整數(shù)指令子集。其他的指令子集部分均為可選的模塊,其代表性的模塊包括M、A、F、D、C,RISC-V概述:規(guī)整的指令編碼RISC-V

基本指令類型分別為R類、I類、S類、U類。RISC-V

的指令集編碼非常規(guī)整,指令所需的通用寄存器的索引(INDEX)都被放在固定的位置。典型RISC-V開源處理器核與ARM處理器對比ARM和RISC-V都是開放授權的指令集,ARM是商業(yè)授權指令集,RISC-V是開源的指令集。但

RISC-V因為有著精簡、高效、低能耗、模塊化、可拓展、免費開放、無歷史負累低效指令等優(yōu)勢,常見RISCV_ISA軟件核:賽昉SiFive賽昉科技RISC-V指令集架構單板計算機基于JH7110的VisionFive2單板計算機本章小結本章內(nèi)容眾多,從ARM體系結構的概念出發(fā),介紹了ARMCortex-A8處理器的組成結構、寄存器組織、運行模式和狀態(tài)、異常處理以及存儲管理方法,然后對RISC-V指令集做了分析討論,這些都是為嵌入式Linux軟件開發(fā)的學習奠定了基礎。嵌入式Linux系統(tǒng)原理與應用第三章Linux基礎目錄3.1Linux和Shell3.2常見Linux發(fā)行版本3.3Linux文件管理3.4Linux目錄3.5Linux文件權限和訪問模式3.6Linux環(huán)境變量3.7Linuxyum命令3.8Linuxapt命令3.9本章小結嚴格的來講,Linux不算是一個操作系統(tǒng),只是一個Linux系統(tǒng)中的內(nèi)核,即計算機軟件與硬件通訊之間的平臺;Linux的全稱是GNU/Linux,這才算是一個真正意義上的Linux系統(tǒng)。Linux是一個多用戶多任務的操作系統(tǒng),也是一款自由軟件,完全兼容POSIX標準,擁有良好的用戶界面,支持多種處理器架構,移植方便。

Linux和ShellPartOne3.1關于Linux,涉及的幾個重要概念:內(nèi)核:內(nèi)核是操作系統(tǒng)的核心。命令和工具:有250多個命令,每個命令都有多個選項;第三方工具。文件和目錄:Linux系統(tǒng)中所有的數(shù)據(jù)都被存儲到文件中,這些文件被分配到各個目錄,構成文件系統(tǒng)。Shell:Shell是一個處理用戶請求的工具,它負責解釋用戶輸入的命令,調(diào)用用戶希望使用的程序。Shell既是一種命令語言,又是一種程序設計語言。何為Shell?Shell與Shell腳本Linux的Shell種類運行Shell腳本的兩種方法1.作為可執(zhí)行程序chmod+x./test.sh#使腳本具有執(zhí)行權限./test.sh#執(zhí)行腳本2.作為解釋器參數(shù)/bin/shtest.sh/bin/phptest.php

常見Linux發(fā)行版本PartTwo3.2Linux的發(fā)行版本可以大體分為兩類:商業(yè)公司維護的發(fā)行版本;社區(qū)組織維護的發(fā)行版本。主流Linux發(fā)行版本1.RedHatLinux2.UbuntuLinux3.SuSELinux4.GentooLinux5.其他Linux發(fā)行版

Linux文件管理PartThree3.3

Linux中的所有數(shù)據(jù)都被保存在文件中,所有的文件被分配到不同的目錄。目錄的結構類似于樹的結構。本節(jié)主要講解基本的文件操作,如創(chuàng)建文件、刪除文件、復制文件、重命名文件以及為文件創(chuàng)建鏈接等內(nèi)容。Linux中有三種基本的文件類型:1.普通文件

普通文件是以字節(jié)為單位的數(shù)據(jù)流,包括文本文件、源碼文件、可執(zhí)行文件等。2.目錄

目錄可以包含普通文件和特殊文件,目錄相當于Windows和MacOS中的文件夾。3.設備文件

Linux中,為便于統(tǒng)一管理,所有的外部設備都被視為文件,Linux與外部設備(例如光驅(qū),打印機,終端,modern等)通過設備文件來進行通信。ls命令

查看當前目錄下的文件和目錄可以使用$ls列出當前目錄下的文件$ls-l

列出當前目錄下文件的詳細信息3.3.1查看文件前綴描述-普通文件。如文本文件、二進制可執(zhí)行文件、源代碼等。b塊設備文件。硬盤可以使用塊設備文件。c字符設備文件。硬盤也可以使用字符設備文件。d目錄文件。目錄可以包含文件和其他目錄。l符號鏈接(軟鏈接)??梢枣溄尤魏纹胀ㄎ募愃朴赪indows中的快捷方式。p具名管道。管道是進程間的一種通信機制。s用于進程間通信的套接字。

字符前綴和文件類型

元字符是具有特殊含義的字符。也稱為通配符,*和?都是元字符,*可以匹配多個任意字符,?匹配一個字符。3.3.2元字符隱藏文件的第一個字符為英文句號或點號(.),Linux程序(包括Shell)通常使用隱藏文件來保存配置信息。.profile:BourneShell(sh)初始化腳本;.kshrc:KornShell(ksh)初始化腳本;.cshrc:CShell(csh)初始化腳本;.rhosts:RemoteShell(rsh)配置文件。查看隱藏文件需要使用

ls

命令的

-a

選項3.3.3隱藏文件

cat

命令來查看文件內(nèi)容,

-b

選項來顯示行號。3.3.4

查看文件內(nèi)容

wc

命令來統(tǒng)計當前文件的行數(shù)、單詞數(shù)和字符數(shù)3.3.5

統(tǒng)計單詞數(shù)目

cp

命令來復制文件。3.3.6復制文件

mv

命令重命名文件

。3.3.7重命名文件

rm命令刪除文件,使用需慎重。3.3.8刪除文件

Linux目錄PartFour3.4

登錄后,用戶所在的位置就是主目錄(或登錄目錄)進入主目錄的命令為cd:$cd~$cd~username$cd-3.4.1主目錄3.4.2

絕對路徑和相對路徑

Linux中目錄有清晰的層次結構,/代表根目錄,所有的目錄都位于/下面;文件在層次結構中的位置可以用路徑來表示。路徑以/開頭,就稱為絕對路徑

/etc/passwd不以/開頭的路徑稱為相對路徑

chem/notes常用的與路徑相關的命令:pwd:獲取當前所在的目錄

ls

:查看目錄中的文件

mkdir

命令用來創(chuàng)建目錄,語法為:$mkdirdirname常有以下形式:$mkdirmydir$mkdir/tmp/test-dir$mkdirdocspub$mkdir-p/tmp/amrood/test3.4.3

創(chuàng)建目錄rmdir

命令用來刪除空目錄,非空目錄無法刪除,語法為:$rmdirdirname例如刪除多個目錄:$rmdirdirname1dirname2dirname33.4.4

刪除目錄mv

(move)命令用來重命名目錄,語法為:$mvolddirnewdir3.4.6

重命名目錄cd

命令用來改變當前所在目錄,進入任何有權限的目錄,語法為:$cddirname3.4.5

改變所在目錄

Linux文件權限和訪問模式PartFive3.5

Linux中,不同的文件有不同的權限,每個文件都擁有下面三種權限:所有者權限:文件所有者能夠進行的操作;組權限:文件所屬用戶組能夠進行的操作;外部權限(其他權限):其他用戶可以進行的操作。命令

ls-l查看文件權限相關信息,示例:$ls-l/home/amrood-rwxr-xr--1amroodusers1024Nov200:10myfile第一列包含了文件或目錄的權限。第一列的第一個字符代表文件類型,-代表是普通文件,d代表是文件夾。而接下來的字符所對應的權限一共分成3組,3個一組,分別屬于文件所有者(o)、文件所屬用戶組(g)和其他用戶(u)。權限中的每個字符都代表不同的權限,其中分別為讀取(r)、寫入(w)和執(zhí)行(x)。3.5.1查看文件權限基本的權限有讀取(r)、寫入(w)和執(zhí)行(x)。讀?。河脩裟軌蜃x取文件信息,查看文件內(nèi)容寫入:用戶可以編輯文件,可以向文件寫入內(nèi)容,也可以刪除文件內(nèi)容執(zhí)行:用戶可以將文件作為程序來運行3.5.2

文件訪問模式目錄的訪問模式:讀?。河脩艨梢圆榭茨夸浿械奈募懭耄河脩艨梢栽诋斍澳夸浿袆h除文件或創(chuàng)建文件執(zhí)行:執(zhí)行權限賦予用戶遍歷目錄的權利,例如執(zhí)行cd和ls命令。3.5.3

目錄訪問模式示例:$ls-ltestfile-rwxrwxr--1amroodusers1024Nov200:10testfile$chmodo+wxtestfile$ls-ltestfile-rwxrwxrwx1amroodusers1024Nov200:10testfile$chmodu-xtestfile$ls-ltestfile-rw-rwxrwx1amroodusers1024Nov200:10testfile3.5.4

改變權限符號說明+為文件或目錄增加權限-刪除文件或目錄的權限=設置指定的權限1.使用符號表示權限2.使用數(shù)字表示權限數(shù)字說明權限0沒有任何權限1執(zhí)行權限--x2寫入權限-w-3執(zhí)行權限和寫入權限:1(執(zhí)行)+2(寫入)=3-wx4讀取權限r(nóng)--5讀取和執(zhí)行權限:4(讀取)+1(執(zhí)行)=5r-x6讀取和寫入權限:4(讀取)+2(寫入)=6rw-7所有權限:4(讀取)+2(寫入)+1(執(zhí)行)=7rwx3.5.5

更改所有者和用戶組chown:chown命令是"changeowner"的縮寫,用來改變文件的所有者。語法如下:$chownuserfilelist示例:$chownamroodtestfilechgrp:chgrp命令是"changegroup"的縮寫,用來改變文件所在的群組。語法為:$chgrpgroupfilelist示例:$chgrpspecialtestfileLinux中,用戶的密碼保存在

/etc/shadow文件中,使用

passwd

命令來更改密碼時,需要對

/etc/shadow文件有寫入權限。通過給程序設置SUID(SetUserID)和SGID(SetGroupID)位來賦予普通用戶特殊權限。當運行一個帶有SUID位的程序時,就會繼承該程序所有者的權限;如果程序不帶SUID位,則會根據(jù)程序使用者的權限來運行。如果程序設置了SUID位,就會在表示文件所有者可執(zhí)行權限的位置上出現(xiàn)'s'字母。給程序設置SGID后,會根據(jù)程序所在組的組權限運行。如果設置了SGID,就會在表示文件群組可執(zhí)行權限的位置上出現(xiàn)'s'字母。語法:

$chmodug+sdirname示例:

$ls-l

drwsr-sr-x2rootroot4096Jun1906:45dirname

Linux環(huán)境變量PartSix3.6

Linux中,環(huán)境變量可以由系統(tǒng)、用戶、Shell以及其他程序來設定。這里變量就是一個可以被賦值的字符串,賦值范圍包括數(shù)字、文本、文件名、設備以及其他類型的數(shù)據(jù)。Bourneshell的初始化過程?

登錄系統(tǒng)后,Shell會有一個初始化的過程,用來設置環(huán)境變量。這個階段,Shell會讀取/etc/profile和.profile兩個文件,Shell首先檢查

/etc/profile文件是否存在,如果存在,就讀取內(nèi)容,否則就跳過,但是不會報錯。然后檢查主目錄(登錄目錄)中是否存在

.profile文件,如果存在,就讀取內(nèi)容,否則就跳過,也不會報錯。/etc/profile文件包含了通用的Shell初始化信息,由Linux管理員維護,一般用戶無權修改。用戶可以修改主目錄下的

.profile文件,增加一些特定初始化信息,包括:設置默認終端類型和外觀樣式;設置Shell命令查找路徑,即PATH變量;設置命令提示符等。3.6.1

profile文件用戶使用的終端是由login或getty程序設置,對于沒有使用過的終端,可能會比較生疏,不習慣命令的輸出樣式,交互起來略顯吃力。

用戶會將終端設置成下面的類型:

$TERM=vt100

Vt100是被絕大多數(shù)Linux系統(tǒng)所支持的一種虛擬終端規(guī)范,常用的還有ansi、xterm等。3.6.2

設置終端類型

Shell會根據(jù)PATH變量來查找該命令對應的程序,PATH變量指明了這些程序所在的路徑。

$PATH=/bin:/usr/bin多個路徑使用冒號(:)分隔。3.6.3

設置PATH變量PS1變量用來保存命令提示符,可以隨意修改,如果用戶不習慣使用$作為提示符,也可以改成其他字符。

示例:

$PS1='=>'=>=>PS1="[\u@\h\w]\$"

[root@ip-72-167-112-17/var/www/tutorialspoint/Linux]$3.6.4PS1和PS2變量如果用戶輸入的命令不完整,Shell還會使用第二提示符來等待用戶完成命令的輸入。默認的第二命令提示符是>,保存在PS2變量,可以隨意修改。

示例:

$echo"thisisa>test"thisisatest$$PS2="secondaryprompt->"$echo"thisisasecondaryprompt->test"thisisatest$3.6.5常用環(huán)境變量變量描述DISPLAY用來設置將圖形顯示到何處。HOME當前用戶的主目錄。IFS內(nèi)部域分隔符。LANGLANG可以讓系統(tǒng)支持多語言。例如,將LANG設為pt_BR,則可以支持(巴西)葡萄牙語。PATH指定Shell命令的路徑。PWD當前所在目錄,即cd到的目錄。RANDOM生成一個介于0和32767之間的隨機數(shù)。TERM設置終端類型。TZ時區(qū)??梢允茿ST(大西洋標準時間)或GMT(格林尼治標準時間)等。UID以數(shù)字形式表示的當前用戶ID,Shell啟動時會被初始化。

Linuxyum命令PartSeven3.7何為Linuxyum?

Linuxyum(YellowdogUpdater,Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。Linuxyum的功能?Linuxyum基于RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包。

Linuxyum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔。Linuxyum語法:

yum[options][command][package...]

其中options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為"yes"),-q(不顯示安裝的過程);command:要進行的操作;package:安裝的包名。Linuxyum常用命令包括:1.yumchec

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論