SoC芯片
通用SoC是系統級芯片 既可以是單核 也可以是多核
該芯片中可以包含數字電路 模擬電路 數字模擬混合電路 及射頻電路
片上系統可使用單個芯片進行數據的采集 轉換 儲存 處理 及I/O口功能
智能手機 和平板都使用的SOC
WAV是未壓縮的數字音頻 音質與CD相當
音頻視頻壓縮編碼
**視頻壓縮編碼**有四種 MPEG-1 MPEG-2 MPEG-3 MPEG-4 目前數字有線電視所傳輸的數字視頻采用的壓縮編碼是 MPEG-2 (該壓縮編碼制定于1994)
MP3音樂格式采用過MPEG-1
MPEG-3會導致畫面輕微扭曲
APE是流行的數字音樂無損的壓縮格式之一
數字音頻信號數字化
順序是 取樣 量化 編碼
量化的過程其實是模數轉換的過程
量化精度是量化后的樣本 一般用2位 8位 16位 的二進制整數表示
IP地址
共分5類 A, B, C, D, E
A, B, C為基本類 D, E分別為組播地址和備用地址
A類:由一個網絡地址(最高位為‘0’)和三個主機地址組成 可連接16387064個主機
C類:前三個字節為網絡地址 第四個字節為主機地址 IP地址為192.0.0.1到223.255.255.254 適合于小規模局域網 最多包含254個計算機
嵌入式系統 ,處理器及芯片
移植操作系統有4種操作類型 宿主機移植 體系結構移植 目標板移植 升級BSP
嵌入式系統的CPU有多種類型 比如DSP ARM FPAG
影響CPU性能的主要因素 主頻 指令系統 高速緩沖存儲器的容量和結構 邏輯結構(包指令流水線的數目)
嵌入式系統的特點: 專用性 隱蔽性 軟硬件資源受限 高可靠性 實時性 軟件固化
嵌入式CPU的特點 :支持實時處理 低功耗 結構可拓展 集成了測試電路
嵌入式系統使用Cache 增加少量的成本 就能提高性能
CPU使用最頻繁的少量代碼和數據放在Cache
CPU的時鐘頻率已經超過10GHZ
嵌入式產品開發的特點 使用宿主機----目標機的開發構架 與底層硬件控制程序的關系密切 軟硬件資源受限 需要固化程序
嵌入式軟件的特點 軟件固化存儲 對代碼時空效率和實時性要求高 軟件可裁剪 軟件生命周期較長
選擇嵌入式系統軟件結構的一個·基本原則是 選擇可以滿足響應時間需求的最簡單的結構 而非輪詢結構
嵌入式芯片中 高速組件采用的標準是AHB 低速組件采用的標準是APB
**處理器的分類*根據儲存結構可分為馮·諾依曼結構和哈佛結構 MSP430采用的是馮·諾依曼結構 根據體系結構可分為CISC(復雜指令集結構)和RISC(精簡指令集結構)ps: ARM處理器都是RISC**系統的分類**根據軟硬件的復雜程度可分為 高端系統 中端系統 低端系統根據系統所使用的存儲器的存儲特性 可分為RAM(隨機存取存儲器)和ROM (只讀存儲器)根據存儲器的物理位置可分為 片內存儲器 片外存儲器 外部存儲器DDR SDRAM中DDR指的是雙倍數據速率DDR2 SDRAM 可預讀取4位數據
ARM處理器
ARM處理器在ARM11之后產品改名為Cortex命名 并分為A, R,M
A: 基于虛擬內存的操作系統和用戶應用 主要應用于高端層次
R:應用于實時系統
M:針對微控制器
NVIC 面向Cortex-M
MPU是ARM處理器的內存保護單位
MMU是ARM處理器的內存管理單位 負責虛擬地址到物理地址的映射
單周期和指針流水線技術都是ARM處理器的技術特征
ARM處理器有三種工作狀態 1. ARM狀態 2.Thumb及Thumb-2狀態 3. 調試狀態
ARm狀態工作在32位指令狀態 指令代碼全是4字節長度
Thumb工作在16位指令狀態 指令長度是16位
Thumb-2兼容16位和32位指令狀態
支持Thumb-2指令集的處理器有Cortex-M Cortex-R
現在許多ARM芯片內部已經集成了CAN控制器
32位ARM處理器支持字 半字 字節 三種數據類型
ARM處理器的工作模式 用戶模式(ARM處理器的正常運行狀態) 快速中斷模式(支持高速數據傳輸和管道處理) 管理模式(保護模式) 系統模式(運行具有特權的系統任務)
除此之外還有數據訪問中止模式 中斷模式 未定義指令中止模式
ARM處理器從異常中斷返回程序繼續向下執行 恢復原本被保護的用戶寄存器 將SRSR_mode寄存器值復制到CRSR 根據異常類型將PC值恢復成斷電地址 清除I和F標志 允許IRQ和FIQ中斷
在ARM經典處理器中 將7種中斷異常分成6級 最高是復位 最低是軟件中斷SMI和未定義的指令UND
復位異常后 首地址是0x00000000
任何情況下 復位操作均自動進入正常工作模式
大(小)端模式
大端:從低位地址到高位地址讀取數據 小端反之
PS:0x563412以大端模式存放到0x00000000~0x00000002
0x00000000 存放 0x56
0x00000001 存放 0x34
0x00000002 存放 0x12
前(后)向通道
前向通道是輸入 后向通道是輸出
AMBA總線協議
作用:用于連接和管理片上系統(SoC)中功能模塊的開放標準和片上互連規范
連接AMBA的系統總線和外圍總線的是橋接器
系統總線是低速總線 APB 外圍總線是高速總線 AHB
高帶寬外部存儲器是和系統總線相連
AMBA有四個版本
ARM7和ARM9用的不是一個AHBA標準
實時系統
實時操作系統的特征
能夠及時響應外部發生的隨機任務請求 并在規定時間內完成任務
1.具有異步 I/O 和中斷處理能力
2.任務切換時間和中斷延時時間的確定
3.優先級中斷和調度
4.搶占式調度
5.內存鎖定
6.連續文件
7.同步
實時性能標準 : 吞吐量 生存時間 響應時間
實時系統的屬性 包括可靠性 可預測性 時間約束性
硬實時 軟實時 準實時的概念對時限沒有要求
如果任務執行時間超過截止時間后系統的收益變為負 這個叫硬實時操作系統
如果任務執行時間超過截止時間后系統的收益下降 但仍為正 這個叫軟實時操作系統
操作系統的分類
強實時性 :VxWorks, pSoS, uC/OS-II
典型微內核操作系統 Symbian VxWorks uC/OS-II QNX IOS 微內核 各功能切換之間開銷較大
單(宏)內核 :Andriod OS WinCE Linux Mac OS DOS
TinyOS 是開放源代碼的操作系統 主要用于無線傳感器
uc/OS-II是免費的 uc/OS-III是收費的
ucLinux RTLinux uc/OS-II 都是開源的 VxWorks是不開源的
VxWorks是實時性很強 可靠性很高的嵌入式實時操作系統 支持基于搶占式任務調度 是嵌入式開發環境的組成部分
VxWorks屬于硬實時微內核操作系統
FreeRTOS是完全免費的操作系統
uC/OS-II
uC/OS-II是搶占式 微內核 操作系統 不支持時間片輪轉 最多可管理64個任務 其中8個任務是系統提供的 56個是用戶自己編寫的
且每個任務的優先級都是不同的
uC/OS-II 中斷嵌套最多可以有255層
uC/OS-II 的事件控制塊 有四種實現函數 OSSemCreate() OSMutexCreate() cOSMboxCreate() OSQCreate()
uC/OS-II能提供周期性時鐘信號(即時鐘節拍) 用于實現任務的正確延時和超時確認
uC/OS-II 一般具有四層軟件結構 從上到下 依次為 應用軟件層 應用程序接口層 內核層 設備驅動層
uC/OS-II 空閑任務是系統創建的·第一個任務 是一個不可或缺的系統任務 也是優先級最低的任務 大多數情況下 每個任務都是無限循環 都是出于這5種狀態 空閑任務的狀態不會一直不變
使用uC/OS-II的棧空間校驗函數 可以確定每個函數需要多少棧空間
移植uC/OS-II 到一個嵌入式電路板上正常運行 必須滿足 :
1.處理器的c編譯器能產生可重入代碼 且用c就可完成開關中斷
2.處理器支持中斷 并能完成定時
3.具有支持一定數量(可能為幾千個字節)的硬件棧區
集成電路
根據規模可分為 小規模 中規模 大規模 超大規模 極大規模
嵌入式處理芯片一般是超大規模和極大規模
集成電路的工作速度取決于組成邏輯門電路的晶體管的尺寸
集體管尺寸越小 其極限工作頻率越高 門電路的開關速度越快
集成電路的集成度每過18-24月翻一番 這就是有名的 摩爾定律
圖像類
一個1024 * 768 的彩色圖片 像素16位 壓縮比5倍 求這個圖片的大小??
(1024 * 768 * 16 / 8) / 5 = 0.3M
真彩色是24位
BMP JPEG GIF PNG都屬于靜態圖像格式
用于描述數字圖像的參數主要有圖像大小(分辨率) 位平面數目 像素深度 顏色模型
一幅圖像的數據量 = 圖像水平分辨率 * 圖像垂直分辨率 * 像素深度/ 8
網絡相關模塊
以太網數據幀組合:7位前導碼 1位幀起始定界符 6位目的MAC地址 6位源MAC地址 2位類型/長度 數據(45 ~1500字節) 4位幀校驗序列
路由器的主要功能 將多個異構或同構的物理網絡進行連接
可總結為 1.網絡互連 2.網絡管理 3.數據處理
Wifi局域網 使用2.4GHz和5.8GHz兩個頻段
局域網使用專門鋪設的傳輸介質進行聯網和數據通信
IPv4的地址已經用完了 現在使用IPv6 為128位
組建以太網不可缺少的是集線器或交換機
JTAG
是一種嵌入式測試技術 卡可用于多個設備串聯在一起一同測試 支持在線編程
有5根信號線
JTAG是和系統總線(APB)相連
JTAG調試不占用IO口或存儲器
51單片機不支持JTAG調試
通信模塊
**通信協議**
雙向通信 UART IIC SPI CAN USB EthernetIIC有兩條信號線 SDA SCL 每次傳輸的字節沒有限制
IIC的從地址只能為8位UART 收發信息有兩種FIFO 普通模式 每次傳輸的數據位的長度可為5, 6, 7, 8RS-232 無法消除共模干擾 傳輸距離是15m 負邏輯信號傳輸
RS-485 有很強的抗共模干擾 傳輸距離約為1200m 差分信號傳輸
232的傳輸速率低于485USB總線(1.1和2.0兩個版本) 采用半雙工差分方式 通訊方式 主從式CAN通信數據幀為8位 通信校驗方式位CRC**通信傳輸**有線通信的傳輸介質可以使金屬導體或光導纖維
光纖通信利用光波傳輸信息 屬于有線通信
有線通信在一些領域是無線通信無法代替的電波通過自由空間傳播 能量分散 傳輸效率較低
開發工具及調試
RDVS支持ARM芯片 支持對flash存儲器的編程 代碼執行效率高于其他編譯器
ADS1.2中的一個工程文件至少有一個生成目標 生成來源可為Debug Release DebugRel
編譯器GCC可編譯c語言和匯編
當用GBD調試時 用file命令調試 用run命令來運行調試軟件
嵌入式開發的集成開發環境 一般包含項目管理器 文本編譯器 編譯連接器
指令集模擬器是在宿主機上模擬調試程序·代碼·
屏幕
**觸摸屏**
分為電容屏(硬屏) 和電阻屏(軟屏)電容屏支持 多點觸摸 相對來說較貴
電阻屏只能單點觸摸 必須用專用的硬筆 廉價 **顯示屏**LCD顯示屏接口有一定標準 DVI VGA 現在最流行的是 HDMI
HDMI的傳輸速率最高可為10.2Gbps
字符的形狀有兩種描述方法 點陣法 輪廓法
點陣法是描述字符在離散點陣中筆畫的占位信息
輪廓法 把字符的輪廓用一組直線和曲線來勾畫 字符庫中記錄的是每一個直線和曲線的端點及控制點的坐標
存儲器
NOR flash 和 NAND flash 是市場上主要的閃存技術
NOR以字節讀取 NAND以行(頁)讀取 NAND具有很長的使用壽命
存儲卡和U盤均使用的是NAND
S3c2410存儲器 地址空間共1G 其I/O口與存儲器采用統一編址方式(和一般的IO口映射編址不同)
引導加載程序
英文簡寫是 Boot
Boot要進行的操作:
1.初始化處理器及外設的硬件資源配置
2.建立內存空間的映射關系 使能MMU 將內存和外存的地址變換激活
3.裝載操作系統映像到內存
4.對Flash存儲器編程
5,運行操作系統
6.傳遞系統啟動參數
7.命令行解析和輸入/輸出控制
BSP包括初始化程序 設備驅動程序 配置文件 引導加載程序
HAL的作用 提供標準庫 提供標準接口 在main()函數之前就完成了初始化
硬件抽象層 包含在嵌入式軟件中直接訪問底層硬件的例程集合
U-Boot 全稱為universal Boot Loader 是德國開發的 源代碼開放
Linux操作系統的處理器種類最多的是U-Boot
U–Boot是被認為功能全面 具有靈活性 以及應用廣泛的開放源碼板級支持包
設備驅動程序包括設備的打開和關閉 設備初始化 設備的讀取和寫入
DSP
DSP是一種專用于數字信號處理的微處理器
DSP指令系統具有單指令多數據并行處理的一些特殊指令
DSP適合于音頻 視頻等數字信號的處理
DSP的特點之一是指令系統增加了SIMD類型的一些特殊指令 SIMD表示單指令多數據
進程調度和任務調度
任務處于休眠期是任務暫存于內存中 但不執行
進程調度模塊所采用的調度策略是使各個進程公平合理訪問CPU 同時保證內核能實現硬件操作
OSInit需要先建立四個空白的數據鏈表 分別是 任務控制塊鏈表 事件控制塊鏈表 內存控制塊鏈表 標志鏈表
真正實現任務切換的是OSCtxSW()函數 任務級的調度是OSSched()函數執行 中斷的調度是OSIntExit()
判斷OSSched()執行成功的標志 OSIntNesting = 0 OSLockNesting = 0
OS_CPU_C.c 用于創建任務的自用棧空間 定義用戶接口
OS_CORE_C.c 為核心代碼調度
OS_MEM_C.c 內存管理
OS_TASK_C.c 任務管理
處于運行態的任務因為優先級更高的任務就緒 所以被CPU剝奪使用權 將會進入就緒態
進行任務級的調度三個條件 1.所有中斷服務函數都執行完畢 2.調度沒有被禁止 3.任務就緒表中查到的最高優先級任務的優先級高于當前執行任務的優先級
保護任務間的共享數據及通信的方法 1. 開關中斷 2. 利用信號量 3.鎖和解鎖
運行態不可能轉入休眠態
用戶必須在多任務調度啟動以后再激活時鐘節拍器
使任務從等待轉入就緒態 的函數 是 OSSemPost()
處于運行態的任務調用OSTaskDel()后轉入休眠態
任務調度的三個條件 中斷嵌套層數共享全程變量 OSIntNesting = 0 任務調度加鎖層數共享全程變量OSLockNesting = 0
就緒表查找到的最高優先級任務的優先級高于當前任務的優先級
進入臨界區之前必須關中斷 執行完臨界區的代碼之后開中斷
中斷服務函數可以主動要求事件控制塊發信號 不會等待事件控制塊發信號
中斷服務子程序的偽碼結構為 保存全部CPU寄存器到棧 調用OSIntEnter() 函數或對OSIntNeseting變量+1
執行中斷服務代碼或發出IPC消息通知特定任務去中斷服務 調用OSIntExit()函數 恢復所有CPU寄存器 執行中斷返回函數
被中斷的任務不可能直接轉入等待態
使運行的任務進入等待態的函數是 OSTimeDly()
編碼
GB2313大約有6000多個漢字 以及一些圖片符號(包括俄文 日本假字 拉丁文 漢語拼音 希臘文等)
GB2312的所有字符在GB18030全部存在 且編碼相同
UTF-16 是雙字節可變長編碼
一個漢字在txt格式中為兩個字節。
Linux
Linux的運行效率低于Unix
嵌入式Linux系統主要是由用戶進程 OS服務組件 Linux內核組成
電源
在掉電模式和休眠模式下 只要有任何一個外部中斷或RTC時鐘中斷發生 均將返回正常模式
嵌入式系統常用的電源模塊是交流變直流(AC-DC) 直流到直流(DC-DC) 低壓差穩壓器(LD0)
其他
數碼相機的操作控制是由低功耗8位MCU來控制的。
狀態標志位一般放在CPSR寄存器中
系統復位引腳為nRESET 表示低電平復位
GPIO口輸入具有緩沖作用 GPIO輸出具有鎖存作用
RTC寄存器內部的數據只能以8位的方式訪問
RTC中的時鐘分頻系數受時鐘源控制 無法通過編程控制
GPIO的數據寄存器既可以存放輸入數據 也可以存放輸出數據
GPIO口輸入具有緩沖作用 GPIO輸出具有鎖存作用
基于Cortex-M0的專家處理器為SC100 基于Cortex-M3的專家處理器為SC300
IP是中文知識產權的英文縮寫
ULCONO寄存器用于確定傳輸幀的格式