1 FPGA 和CPLD
##1.1 FPGA和CPLD的區別差異
①CPLD更適合完成各種算法和組合邏輯,FPGA更適合于完成時序邏輯。換句話說,FPGA更適合于觸發器豐富的結構,而CPLD更適合于觸發器有限而乘積項豐富的結構。
②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
⑤CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FASTFLASH技術,無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。 ⑥CPLD的速度比FPGA快,并且具有較大的時間可預測性。這是由于FPGA是門級編程,并且CLB之間采用分布式互聯,而CPLD是邏輯塊級編程,并且其邏輯塊之間的互聯是集總式的。
⑦在編程方式上,CPLD主要是基于E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編 程器上編程和在系統編程兩類。FPGA大部分是基于SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其 優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
隨著復雜可編程邏輯器件(CPLD)密度的提高,數字器件設計人員在進行大型設計時,既靈活又容易,而且產品可以很快進入市常許多設計人員已經感受到 CPLD容易使用。時序可預測和速度高等優點,然而,在過去由于受到CPLD密度的限制,他們只好轉向FPGA和ASIC?,F在,設計人員可以體會到密度 高達數十萬門的CPLD所帶來的好處。
1.2 FPGA的組成
CLB : 可編程邏輯宏單元
IOB :可編程輸入輸出單元
互聯資源:可編程的互聯開關矩陣、內部長線、總線等
重構邏輯和程序存儲器
2 嵌入式微處理器基礎
2.1 結構和類型
立即尋址就是指令當中自帶數據,直接讀取,最快;
直接尋址就是指令中存放的是地址,直接解析這個地址;
間接尋址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
2.2 多核結構
對于多核CPU,優化操作系統任務調度算法是保證效率的關鍵。一般任務調度算法有全局隊列調度和局部隊列調度。前者是指操作系統維護一個全局的任務等待隊列,當系統中有一個CPU核心空閑時,操作系統就從全局任務等待隊列中選取就緒任務開始在此核心上執行。這種方法的優點是CPU核心利用率較高。后者是指操作系統為每個CPU內核維護一個局部的任務等待隊列,當系統中有一個CPU內核空閑時,便從該核心的任務等待隊列中選取恰當的任務執行,這種方法的優點是任務基本上無需在多個CPU核心間切換,有利于提高CPU核心局部Cache命中率。目前多數多核CPU操作系統采用的是基于全局隊列的任務調度算法。
多核的中斷處理和單核有很大不同。多核的各處理器之間需要通過中斷方式進行通信,所以多個處理器之間的本地中斷控制器和負責仲裁各核之間中斷分配的全局中斷控制器也需要封裝在芯片內部。
另外,多核CPU是一個多任務系統。由于不同任務會競爭共享資源,因此需要系統提供同步與互斥機制。而傳統的用于單核的解決機制并不能滿足多核,需要利用硬件提供的“讀-修改-寫”的原子操作或其他同步互斥機制來保證。
Big_endian ,little-endian 大的結尾,小的結尾(結尾指的是小的地址)
4 # 嵌入式微處理器中斷和異常
4.1 異常
異常就是正常的用戶程序被暫時中止,處理器就進入異常模式。
ARM CPU的異常分為:復位異常、中斷異常(IRQ,FIR)、預取指令中止異常、未定義指令異常、軟件中斷指令異常、數據中止訪問異常。
中斷:
軟件中斷指令(swi)異常(軟件中斷指令)
異常是應用程序自己調用時產生的,用于用戶程序申請訪問硬件資源時,例如:printf()打 印函數,要將用戶數據打印到顯示器上,用戶程序要想實現打印必須申請使用顯示器,而用戶程序又沒有外設硬件的使用權,只能通過使用軟件中斷指令切換到內核態,通過操作系統內核代碼來訪問外設硬件,內核態是工作在特權模式下,操作系統在特權模式下完成將用戶數據打印到顯示器上。這樣做的目的無非是為了保護操 作系統的安全和硬件資源的合理使用,該異常在管理模式下處理。
硬件中斷:
硬件中斷是由外設引發的, 軟中斷是執行中斷指令產生的.
硬件中斷的中斷號是由中斷控制器提供的, 軟中斷的中斷號由指令直接指出, 無需使用中斷控制器.
硬件中斷是可屏蔽的, 軟中斷不可屏蔽.
硬件中斷處理程序要確保它能快速地完成任務, 這樣程序執行時才不會等待較長時間, 稱為上半部.
軟中斷處理硬中斷未完成的工作, 是一種推后執行的機制, 屬于下半部.
不可屏蔽中斷:
不可屏蔽中斷屬于 中斷請求 的一種。外部不可屏蔽中斷請求經由專門的CPU針腳NMI,通知CPU發生了災難性事件,如電源掉電、總線奇偶位出錯等。內部不可屏蔽中斷請求是CPU內部自發產生的,如存儲器讀寫出錯、溢出中斷、除法出錯中斷等。NMI線上中斷請求是不可屏蔽的(既無法禁止的)、而且立即被CPU鎖存。因此NMI是邊沿觸發,不需要電平觸發。NMI的優先級也比INTR高。不可屏蔽中斷的類型指定為2,在CPU響應NMI時,不必由中斷源提供中斷類型碼,因此NMI響應也不需要執行總線周期INTA。
可屏蔽中斷:
可屏蔽中斷由有中斷能力的外圍設備所產生,包括處在定時模式的定時器溢出。每個可屏蔽中斷源可以由中斷使能位所單獨關閉,或者由由狀態寄存器中的通用中斷使能位GIE一齊關閉
5 嵌入式系統的存儲體系
5.1 層次結構:
寄存器-----內部緩存(SRAM)--外部緩存(DDRAM,SRAM等)--主存貯(flash等)
---存儲器(磁盤等)---遠程二級存儲(web服務器,分布式文件系統)
5.2 MMU的功能和作用
將邏輯地址轉換成物理地址。內存映射。
內存映射
存儲區訪問權限控制
設置虛擬存儲空間的緩沖特性
5.2常見的RAM類型
SRAM:靜態RAM,不用刷新,速度非???,常用于內部cache。需要晶體管多(6個),價格昂貴。SRAM有四種引腳: CE =1 ,data禁用。 Addres 是一組地址線。
DRAM: 動態隨機存儲器。在刷新的時間需要插入等待時間。
引腳: 行地址選擇線
: 列地址選擇線。
DDRAM: SDRAM只能工作在133MHZ。 DDRAM是基于SDRAM。芯片內部的數據寬度增大一倍??梢栽谏仙睾拖陆笛舅⑿聰祿?。帶寬和傳輸速率都增大了一倍。
FLASH:只能從1變成0,所以寫入之前需要先擦除。擦除最小的單位是一個區塊,而不是一個單位。非容易丟失的內存。
NORFLASHL:程序可以直接運行(帶SRAM接口),寫入速度慢。讀速度快。代碼閃存。
NANDflash: 程序不能直接運行,寫入快(U盤)。隨機讀取能力差?;贜AND的閃存可以取代硬盤。數據閃存。
NVRAM: 常的,我們將數據斷電后仍能保留的半導體存儲器稱為“非易失性(或非發揮性)隨機訪問存儲器”——Non-Volatile Random Access Memory,即NVRAM,而像DRAM與SRAM這樣的存儲器則就稱為NVRAM:
Non-Volatile RAM. The target is to have a electrical device that could be accessed quite fast, most of the time the content is calculated by bytes and the content could be saved after power down. There are different technical ways to implement this concept such as EEPROM which is very common. Please note, in mobile phone design, most of the time one or two sectors of ROM (most of the time it is FLASH) will be used to simulate NVRAM, the only reason is cost saving since ROM is a "must" but NVRAM is not.
FLASH: One kind of ROM and the difference to other ROM is semiconductor level. Please note, FLASH must be read/write by sectors but NVRAM should be read/write by bytes. It is why NVRAM driver have to implement an algorithm such as copying all the content in one sector to RAM first.
高速緩存的分類:
cache: 能夠減少內存的平均訪問時間。
分類: (1)統一cache 和獨立的數據、
寫通cache 和寫回cache:
寫通cache: CPU 在更新cache時,同時更新主存
寫回cache: CPU在更新cache的時候,不更新主存。
cache和內存都分成相同大小的塊。主存地址可以由塊號M和塊內地址N組成。 Cache地址也由塊號m和塊內地址n組成。
CPU訪問Cache時,CPU送來主存地址,放到主存地址寄存器中,然后通過地址變換部件變成cache的塊號m,并放到cache的地址寄存器中。同時將主存中的塊內地址N直接作為cache的塊內地址n送到cache的地址寄存器中。如果地址變換成功(命中),就用得到的cache地址訪問cache。從cache中取出數據送到CPU中。如果變換不成功,則產生cache失效的消息。則直接讀主存到CPU,同時放到cache中。如果cache滿了,就要采用替換策略進行替換。
直接地址映射和變換:
組相關聯地址映射和變換:命中率高,每個組有n個單元。
全關聯地址映射和變換: 主存中任何一個塊可以映射到內存的任意位置。
cache的替換: 輪換法和隨機替換法
6 外設
6.1 A/D 接口和原理
A/D轉換的方法: 計數法,雙積分法, 和逐次逼近法。
優點: 簡單 缺點:速度慢
雙積分式: 雙積分式A/D的基本原理是對輸入的模擬電壓和參考電壓進行兩次積分、轉換成與輸入電壓均值成正比的時間間隔。具有很高的抗工頻干擾,轉換精度高,但是速度很慢。朱
逐次逼近法:最高位放置位1 ,如果高于Vi,最高位清零,如果低于Vi,控制電路保留最高位,次高位放置為1,繼續比較。實質是對分搜索法
特點:速度快,轉換精度高。最常用的方法。
重要的指標:
分辨率和精度:
LSB所對應的電平值來表述
分辨率高,精度不一定高,精度受到溫度漂移,線性度等影響
絕對精度: 誤差的最大值。
相對精度;絕對精度/量程 *100%
轉換時間
量程:
6.2 D/A 的原理
采用T形網絡將數字轉換成模擬電流,然后將電流轉換成電壓輸出(運放)。
D/A 轉換的分類:
電壓型: 無放大輸出部分的延遲,常用作高速D/A (高阻抗負載)
電流型: 外接電流電壓轉換,轉換到電壓。(接運放)。
乘算型:
主要指標:
分辨率: 最小的模擬量輸出。
建立時間: 穩定所需的時間。
6.3 LCD
LCD:耗電省,體積小。
如果電流流過,液晶分子會以電流的方向排列。
如果提供了帶有細小溝槽的外層,將液晶倒入后,液晶分子會順著溝槽排列。并且內層和外層是同樣的排列方式。
液晶層允許光線扭轉。能夠過濾除了從特殊角度射入的光線。如果液晶層扭轉,光線將會隨之扭轉,以不同的方向從另一個方向射出。
讓液晶分子發生扭轉
6.4 音頻和視頻接口
音頻:PCM: 光盤
MPEG(MP3):
AC3:TV,HDTV
編碼或者解碼音頻的總線是IIS。 分時復用數據線,信道選擇線,時鐘線。
6.7 串口
232串行總線:
RS422 : 差分傳輸
RS485 : 幾千米距離 差分傳輸
6.8 并行總線接口
并口: LPT: 分為SPP(標準),EPP(增強),和ECP(擴展).
IEEE488總線: SCSI總線,MXI總線
串口總線 USB總線: 通用串行總線
特點:(1)使用簡單
(2) 每個USB設備有主機,最大127級
(3)較低成本電纜,較強的糾錯能力
USB系統: USB主機,USb設備和USB互聯
USB設備: 有HUB和Function功能
每個USB系統只有一個主機,到主計算機的USB接口被稱為主控制器。
USB協議: 查詢協議
USB上鎖掛連的外設通過主機調度和基于令牌的協議共享USB帶寬。
健壯性: 差分驅動和屏蔽保護
控制器和數據域的CRC校驗
連接斷開檢測
協議自我修復
對數據的流量控制
采用數據管道和控制管道
USB接口的原理: 主機啟動或是USB插入的時候都要對設備進行配置。
USB設備與主機的問答過程。
SPI: 同步協議接口
四種工作模式:
時鐘級性: 空閑SCK的狀態
時鐘相位:數據輸出上升沿還是下降沿有效
IIC 總線:
主發送,主接收,從發送,從接收
IIC協議起始位
SCL為高電平時,SDA出現下降沿,產生一個起始位。
IIC協議結束位
SCL為高電平時,SDA出現上升沿,產生一個結束位。
IIC讀寫單字節時序
IIC主機對IIC從機寫入數據時,SDA上的每一位數據在SCL的高電平期間被寫入從機中。對于主機,在SCL的低電平期間改變要寫入的數據。
6.9 網絡接口
常用的協議標準IEEE802.3
編碼方式:曼徹斯特編碼或者差分曼徹斯特編碼。
曼徹斯特編碼: 用高到低的跳變表示0,從低到高的跳變表示1
曼徹斯特差分編碼:
以太網傳輸傳輸特點,低位開始傳輸。
6.10 TCP/IP 協議
分層的協議。
應用層,傳輸層,網絡層和數據鏈路層,物理層
ARP: 從物理地址到MAC地址的轉換。
每層上的協議:
應用層: BSD Sockets
傳輸層: TCP和UDP
網絡層: IP,ARP,ICMP,IGMP
數據鏈路: MAc
物理層:
ICMP: IP的附屬協議。網絡控制報文協議。
IP: Internet Protocol 網際協議:
所有TCP,UDP,ICMP和IGMP,都用IP數據包來傳輸。最長655535字節
IP提供不可靠,無連接的數據包傳送服務。
可靠性由TCP來提供
IP數據包可以不按順序接收
TCP: 傳輸控制協議
面向連接可靠的協議。
UDP :不可靠 比如網絡管理 SNMP,域名解析DNS,簡單文本傳輸TFTP
靠端口號來識別上層的用戶,FTP 21,Telent 的TCP 23,TFTP 的UDP 端口69
6.11 CAN 總線的接口和原理
控制器局域網
允許110個節點
1MB的傳輸速率
多主方式的串行總線
差分傳輸
6.12 WLAN 特點
- 802.11協議,定義了兩個RF傳輸和一個紅外傳輸
RF標準是跳頻擴頻和直接序列擴頻
工作范圍2.4G到2.4835G
現在被IEEE802.11b 取代
802.11a 是b 的后續標準
6.13 藍牙
2.4G ISM
基帶協議: 電路交換和分組交換。
傳輸距離短
采用個跳頻擴展技術
劃分為79個頻點,采用快速跳頻。(安全和抗干擾)。開始頻率2.4G,終止頻率2.48G
1600跳/S
(5)時分復用多路訪問技術
語音支持,語音信道CVSD編碼
糾錯計劃,FEC向前的方案
組成: 無線單元,基帶單元(跳頻控制和數據和信息的打包),鏈路管理和控制(核心)
周期性的監聽其他設備發出的查詢消息或者尋呼消息。
6.14 1394的應用
串行總線技術,串行工業總線標準
多媒體領域,比如DVD,攝像機燈
總線可以接63個設備
支持多種總線技術
即插即用
同步和異步出書
支持點對點通信
標準IEEE1212標準
較遠傳輸距離
協議棧: 物理層,鏈路及事物層。管理層。
6.15 ZigBee的特點
簡單的說,ZigBee是一種高可靠的無線數傳網絡,類似于CDMA和GSM網絡。ZigBee數傳模塊類似于移動網絡基站。通訊距離從標準的75m到幾百米、幾公里,并且支持無限擴展。
ZigBee是一種無線連接,可工作在2.4GHz(全球流行)、868MHz(歐洲流行)和915 MHz(美國流行)3個頻段上,分別具有最高250kbit/s、20kbit/s和40kbit/s的傳輸速率,它的傳輸距離在10-75m的范圍內,但可以繼續增加。作為一種無線通信技術,ZigBee具有如下特點:
7 電子電路設計
原理圖,網絡表 ,設計印刷電路板
可靠性: 地線設計:單點和多點 數字和模擬 加粗 環路
電磁兼容設計: 合理的導線寬度 正確布線策略 去耦電容 抑制反射干擾 散熱設計
測試方法和原理: 故障檢測和診斷
放到測試設備上進行,輸入一系列測試信號
JTAG測試接口
抗干擾設計:
8 嵌入式軟件以及常識
分類: 系統軟件,支撐軟件(中間件和可配置組件)、應用軟件
系統軟件: 設備驅動,操作系統,中間件
應用軟件: 手機軟件等
支撐軟件: 輔助開發的工具 系統分析,在線仿真,交叉編譯,模擬配置
無操作系統: 循環輪轉和前后臺(增加了中斷)
中斷是前臺,輪循是后臺
系統引導(bootloader): 嵌入式系統上電后運行的第一段代碼。
PC中,位于只讀ROM的BIOS,和硬盤引導記錄中的引導程序。
BIOS硬件檢測和資源分配。
操作系統運行之前運行的一小段程序。(硬件初始化和內存映射)。
初始化包括:片級初始化和板級初始化。
BSP:板級支持包:
所有與硬件相關的代碼。基本思想是把嵌入式系統與硬件隔離
設備驅動程序: 對硬件初始化和管理。包括硬件啟動,停用,讀,寫
分類:
單體結構: 模塊間可以互相調用
分層結構: 上一層只能調用下一層 MS_DOS
微內核結構: 只保留核心的功能單元
多重獨立安全等級結構:
高可靠的嵌入式實時操作系統: 相關的標準,區分概念,隔離保護,健康監控
多道程序技術: 允許多個任務同時運行
進程的概念: 一個進程就是一個正在運行的程序。
程序是一個靜態的概念,進程是一個動態的概念
特性: 動態性,獨立性和并發性
線程: 進程中的一條執行流程。
對于同一個進程的各個線程,運行在相同的資源平臺上。可以共享各進程的各種走遠。
任務: 嵌入式中能夠獨立運行的實體稱為任務。其實就是線程。
任務的狀態;
運行狀態:
就緒狀態:
阻塞狀態:
任務管理通過TCB來管理:
Task Control Block :任務控制塊兒,用來管理和描述一個任務的數據結構。
任務管理的信息(任務ID,任務狀態,優先級,調度,時間,指針,隊列)
CPU上下文信息,通用寄存器,PC,PSW,SP。每個進程都有一份邏輯的寄存器
資源信息管理: 段表指針,頁表信息等
TCB是任務存在的唯一標志,有新任務創建,就有一個新的TCB產生。
任務切換過程:
將CPU上下文信息放到TCB中
跟新當前的任務狀態
按照一定的策略,選擇一個就緒的任務
修改新任務狀態
根據TCB內容,回復新任務的上下文環境。
任務隊列:
不同的狀態用不同的隊列表示。
運行隊列,阻塞隊列,就緒隊列
信號量S的阻塞隊列,所有等待該信號量的任務都掛在此隊列
郵箱M的隊列: 正在等待郵箱M的任務?!?/p>
調度器的原理:
調度算法
不可搶占式: 一直運行,直到被阻塞或者主動交出CPU使用權
可搶占式: 正在運行時被其他任務打斷。
一些關鍵的可以打斷一些不重要的:
調度算法的性能指標:
響應時間,切換就緒任務的時間
周轉時間(提交到完成)
調度開銷 (時間和空間)
公平性
均衡性
吞吐量
算法: 先來現服務: FCFS(first come first served)
按照任務先后到來的順序,不可搶占式的。
缺點: 一批任務的周轉時間決定于任務的排序。
短作業優先法: (SJF)short job first
可搶占 和不可搶占的類型都有。
可以得到最小的平均周轉時間
時間片輪轉:
公平性
活動性
主要問題:需要選擇一個合適的q值(時間片大小)
每個任務的等待時間(n-1)*q
優先級算法:
給每個任務設置一個優先級,每次運行優先級最高的任務。
動態優先級: 提高等待任務的優先級,防止被餓死。
高優先級的任務會搶占低優先級的任務。
優先級反轉:
產生原因:
共享資源(IO設備,信號量,郵箱),高優先級等待低優先級釋放資源。
低優先級又在等待中優先級的任務。
比如低優先級的任務占用R,一直被其他任務中斷,導致R無法釋放,導致很高優先級的另一個任務也不能運行。
實時系統的調度:
任務模型(執行時間,周期和的時間期限)
RMS算法: 單調速率調度算法: 靜態優先級的調度算法
任務周期越短,優先級越高。
缺點: CPU使用上限位0.69
假定任務相同獨立的,周期性的,任務在任何位置都可以被搶占,任務之間不通信是不切實際的
EDF算法: 動態優先級的調度算法:
根據任務的截止時間來確定優先級。
EDF是最優的單處理器的調度算法,CPU利用上限位100%。
缺點:實時系統不易實現,系統開銷大。
優先級反轉:
優先級天花板策略(Priority ceilings): 優先級天花板是指將申請(占有)某資源的任務的優先級提升到可能訪問該資源的所有任務中最高優先級任務的優先級.(這個優先級稱為該資源的優先級天花板) 。在上述例子中體現為當低優先級任務申請占有某資源時就將這個低優先級任務的優先級升為能訪問該資源的所有任務中最高優先級任務的優先級
優先級繼承策略對任務執行流程的影響相對較小,因為只有當高優先級任務申請已被低優先級任務占有的臨界資源這一事實發生時,才抬升低優先級任務的優先級。而天花板策略是誰占有就直接升到最高。
任務之間通信:
共享內存: 需要結合互斥條件。
消息: 內存空間中一段長度可變的緩沖區(建立通信鏈路,(send receive操作))
直接通信:
send(P,message)發送消息給任務P
receive (Q,message ) 接收消息從任務Q
特點: (1)鏈路自動建立,操作系統維護
只涉及一對互相通信
單方向或者雙方向
間接通信:
不需要指出來源和去向,而是通過郵箱來發送和接收。
send(A,message) 發送消息到郵箱
receive(A,message)接收消息從郵箱
特點: 一個郵箱可以被多個任務訪問
單向或者雙向通信
只能存放單條信息,如果放多條,稱為消息隊列
管道: 連接兩個任務的共享文件
信號: 信號機制也被稱為軟中斷機制,和中斷相似。
8.1 同步和互斥
任務之間的關系:
相互獨立,任務互斥,任務同步(依存關系),任務通信(需要傳遞數據和信息)
互斥: 競爭條件: 兩個或者多個任務對同一個共享數據進行讀寫。 把這種現象就做競爭條件。
對共享資源進行訪問的代碼,這些訪問可能導致共享競爭的出現,叫做臨界區
,把需要互斥訪問的資源稱為臨界資源。
解決方案
關閉中斷法
繁忙等待法
信號量(用來解決互斥的問題)
用一種新的變量類型,也就是信號量也記錄當前可利用資源的個數。
正數或者0 : 表示可利用資源的個數
負數: 等待進入臨界區的任務個數。
信號量是系統來維護的,任務不能直接修改它的值。
只能通過初始化和兩個標準原語(P,v)來進行訪問。
原語: 不可中斷的一段程序,在內核下關中斷來實現。
P、v原語是內核代碼的一部分
在等待進入臨界區時,任務會被阻塞起來。
P,主要功能是申請一個空閑的資源。把信號量的值減一,如果成功,會退出原語,失敗,阻塞任務。
V,釋放一個被占用的資源,把信號量的值加1 。 如果發現被阻塞的任務,把它喚醒。
P實際就是一個函數。
信號量同步的優點:
可以允許多個任務同時進入臨界區
當任務無法進入臨界區時,會被阻塞
代碼L
semphors S
s.N = N
P(S)
臨界區
V(S)
非臨界區
任務同步:
存在時序關系或者先后的關系
可以使用信號量進行同步,把信號量看做共享的資源,
在一個任務內部使用P原語,另一個任務內部使用V原語。
死鎖:
PV執行不當(兩個PV)
每個任務都占據著某種資源,而又在等待其他資源,同時資源都不能釋放。
8.2 存儲管理
存儲管理:
存儲管理方式:
固定分區: 各個分區大小可以相等,也可以不等,固定的分區。
可變分區: 不會產生內碎片,但是會可能產生外碎片
內存管理:
最先匹配法:
下次匹配法;
最佳匹配法:
最壞匹配法:
地址重定位:
地址映射。
邏輯地址:相對的地址或者虛地址。
目標代碼一般都是虛地址的形式。
MMU來管理地址映射。
靜態地址映射: 程序裝入內存時,直接對指令進行修改。一次性實帶孩子轉換。
缺點: 程序裝入內存后就不能再移動了
動態地址映射: 程序訪問內存時,在轉換。硬件地址映射機制來完成。
頁式存儲管理:
打破存儲的連續性。
數據結構: 頁表(邏輯和物理的對應),物理頁面表(各個物理頁面的分配情況)
地址映射: 邏輯地址分析,頁表查找,物理地址合成。
優點: 沒有外碎片 ,程序不用連續存放
缺點:程序必須全部裝入
每個任務維護一個頁表
虛擬內存技術:
MMU還提供虛擬內存技術。
在頁式存儲的基礎上,增加了請求調用頁面和頁面置換的功能,
裝入部分程序。
程序局部性原理:執行的指令和訪問的存儲空間局限在一定區域內。
頁面置換算法:
最優頁面置換算法
最久未用置換算法
最不常用算法
先進先出算法
時鐘頁面置換算法
8.3 設備
邏輯設備: 程序請求的設備
虛擬設備: 利spooling 技術實現,將邏輯設備虛擬成多臺設備
字符設備:以字符 為單位進行傳輸,比如打印機,鍵盤
塊設備: 應用程序可以隨機訪問設備數據,程序可自行確定讀取數據的位置。硬盤、軟盤、CD-ROM驅動器和閃存都是典型的塊設備,應用程序可以尋址磁盤上的任何位置,并由此讀取數據。此外,數據的讀寫只能以塊(通常是512B)的倍數進行。與字符設備不同,塊設備并不支持基于字符的尋址。
網絡設備是特殊設備的驅動,它負責接收和發送幀數據,可能是物理幀,也可能是ip數據包,這些特性都有網絡驅動決定
設備驅動程序:
是直接同I/O設備打交道
8.3 文件系統
FAT
NFS:
文件和目錄: 文件是一種抽象的機制
存?。?順序和隨機
訪問: 打開,關閉,讀寫,添加,定位
8.4 程序設計
解釋器: 直接解釋執行源程序?;蛘邔⒃闯绦蚍g成某種中間形式。解釋程序和源程序都要參與到目標語言程序。
編譯器: 將源程序翻譯成目標程序。
偽指令:不產生機器碼,常數定義偽指令,存儲定義偽指令,匯編控制(IF),開始偽指mi令,結束偽指令,
面向對象的語言:
8.5 測試
黑盒測試:極限情況測試,邊界測試,異常測試,錯誤猜測,隨機測試,性能測試
百盒測試: 對程序的路徑和過程進行測試 獨立路徑,循環,判斷,內部數據的有效性
覆蓋測試: 早期,在單元測試期間。
覆蓋策略:
語句覆蓋,判定覆蓋(一次真,一次假),條件覆蓋(每個條件都獲得多有的邏輯值)
條件覆蓋: 只要各個邏輯的取值都出現過就好,分支不一定執行。
比如if(A && B )
則: 條件覆蓋取值只要兩個測試用例即可
用例1 A=TRUE , B = True
2 A = false , B = false
判定/條件覆蓋: 每個分支都執行,,每個條件獲得所有的邏輯值
條件組合覆蓋: 每個條件組合出現一次。條件覆蓋滿足,則一定滿足判斷覆蓋,條件覆蓋和判斷/條件覆蓋。
路徑測試: 被稱為最強的覆蓋條件,要圖的每個路徑都要執行一次。路勁覆蓋還是不能取代判斷覆蓋。
9 嵌入式系統開發和管理
常用的開發模型:
- 瀑布模型: 制定計劃,需求分析,軟件設計,程序編寫,軟件測試,運行維護。
自上而下的設計,如同瀑布流水。
快速原型(1)建造一個快速原型 ,隨后客戶反饋,快速修改模型。
增量模型: 增量構架來設計,各個階段并不交付一個完整的產品
螺旋模型: 結合瀑布模型和快速原型模型,沿著螺旋進行若干次迭代。(強調了風險分析)
演化模型(事先不能定義完整的需求)
項目管理: 項目計劃,項目組織,質量管理,費用控制,進度控制。
用戶需求: 從用戶局角度來描述系統功能和非系統功能。避免專業性的描述。
系統需求: 結構化系統分析。使用PDL系統分析。標準接口分析
系統規格書的說明文檔: 是對用戶需求分析和系統需求分析之后的文檔。
系統設計:傳統的設計方法,瀑布模型,自上而下。
內容耦合: 一個模塊直接修改另一個模塊的數據
公共耦合:
控制耦合; 傳遞信號(開關值,標記量)
標記耦合
數據耦合
非直接耦合
盡量使用使用數據耦合,少用控制耦合,避免內容耦合。
** 10 網絡攻擊**
DOS 攻擊: DoS是Denial of Service的簡稱,即拒絕服務,造成DoS的攻擊行為被稱為DoS攻擊,其目的是使計算機或網絡無法提供正常的服務。最常見的DoS攻擊有計算機網絡帶寬攻擊和連通性攻擊。
一定要時刻記得,DOS不是DOS操作系統。
DDOS:分布式的DOS攻擊。
(1)制造大流量的無用的數據
(2)利用TCP/IP 協議的缺陷,制造大量的無用數據
(3)使用僵尸電腦進行攻擊
11 密碼加密:
1 摘要算法
常用的摘要算法有MD5,SHA1。摘要算法是一個不可逆過程,就是無論多大數據,經過算法運算后都是生成固定長度的數據,一般結果使用16進制進行顯示。
MD5和SHA1的區別:MD5結果是128位摘要,SHa1是160位摘要。那么MD5的速度更快,而SHA1的強度更高。
下面統一使用MD5算法進行說明,SHA1類似。
主要用途有:驗證消息完整性,安全訪問認證,數據簽名。
消息完整性:由于每一份數據生成的MD5值不一樣,因此發送數據時可以將數據和其MD5值一起發送,然后就可以用MD5驗證數據是否丟失、修改。
安全訪問認證:這是使用了算法的不可逆性質,(就是無法從MD5值中恢復原數據)對賬號登陸的密碼進行MD5運算然后保存,這樣可以保證除了用戶之外,即使數據庫管理人員都無法得知用戶的密碼。
數字簽名:這是結合非對稱加密算法和CA證書的一種使用場景。
一般破解方法:字典法,就是將常用密碼生成MD5值字典,然后反向查找達到破解目的,因此建議使用強密碼。
對稱加密算法只是為了區分非對稱加密算法。其中鮮明的特點是對稱加密是加密解密使用相同的密鑰,而非對稱加密加密和解密時使用的密鑰不一樣。對于大部分情況我們都使用對稱加密,而對稱加密的密鑰交換時使用非對稱加密,這有效保護密鑰的安全。非對稱加密加密和解密密鑰不同,那么它的安全性是無疑最高的,但是它加密解密的速度很慢,不適合對大數據加密。而對稱加密加密速度快,因此混合使用最好。
常用的對稱加密算法有:AES和DES.
DES:比較老的算法,一共有三個參數入口(原文,密鑰,加密模式)。而3DES只是DES的一種模式,是以DES為基礎更安全的變形,對數據進行了三次加密,也是被指定為AES的過渡算法。
AES:高級加密標準,新一代標準,加密速度更快,安全性更高(不用說優先選擇)
.非對稱加密(RSA)
這里主要對RSA進行介紹。
對稱加密加密解密使用的是相同的密鑰,而非對稱加密加密解密時使用的不同的密鑰,分為公鑰(public key)和私鑰(private key).公鑰可以公開,而私鑰自己保存。它利用的是兩個大質數相乘十分容易,而對其乘積進行因素分解十分困難。這樣就可以將乘積作為密鑰了,這個乘積為N值,根據兩個大質數選擇e和生成d,刪掉兩個大質數。這樣(N,e)為公鑰,(N,d)為私鑰,公鑰無法破解出私鑰(不作詳細介紹,我們不是研究算法的)。由于非對稱加密的密鑰生成麻煩,所以無法做到一次一密,而且其加密速度很慢,無法對大量數據加密。因此最常用的使用場景就是數字簽名和密碼傳輸,用作數字簽名時使用私鑰加密,公鑰解密;用作加密解密時,使用公鑰加密,私鑰解密。
作者:宇o風
來源:CSDN
原文:https://blog.csdn.net/u013565368/article/details/53081195
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
11 補充
公共端口號:
(1)公認端口(Well Known Ports):從0到1023,它們緊密綁定(binding)于一些服務。通常這些端口的通訊明確表明了某種服務的協議。例如:80端口實際上總是HTTP通訊。
(2)注冊端口(Registered Ports):從1024到49151。它們松散地綁定于一些服務。也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的。例如:許多系統處理動態端口從1024左右開始。
- 動態和/或私有端口(Dynamic and/or Private Ports):從49152到65535。理論上,不應為服務分配這些端口。實際上,機器通常從1024起分配動態端口。但也有例外:SUN的RPC端口從32768開始。
著作權: 給公司開發的,我只有署名權。其他權利屬于公司。
PERT圖:
1、事件(Events)表示主要活動結束的那一點;
2、活動(Activities)表示從一個事件到另一個事件之間的過程;
3、松弛時間(slack time)不影響完工前提下可能被推遲完成的最大時間;
4、關鍵路線(Critical Path)是PERT網絡中花費時間最長的事件和活動的序列
要點: 每個時間完整,一定要和它相連的所有事項都要完成。
11
9 盲點
9.1 浮點數的表示
9.2 多處理器調度
應該要掌握的考點:
(1)TCP/IP 協議必須熟悉
(2)測試模型必須熟悉
(3)實時操作系統一定會考
2018 考試總結:
1 信號量分為互斥信號量和同步信號量
2 信號量的使用方法
3 信號量操作函數 take(P 操作),如果沒有可用資源,可以阻塞任務,但不是永久的,可以設置阻塞的時間。