嵌入式多核DSP高性能軟件開發 版權信息
- ISBN:9787302589365
- 條形碼:9787302589365 ; 978-7-302-58936-5
- 裝幀:70g膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
嵌入式多核DSP高性能軟件開發 本書特色
本書由淺入深、概念齊全、實踐性強、指導性強,結合了多年嵌入式多核軟件開發的實際經驗,對多核設計中常見的問題進行了詳細描述。
從基本概念出發,層層推進,介紹了多核并行、數據傳輸與處理并行和多層次并行設計的經驗,是嵌入式多核DSP并行軟件開發者**的參考書。
嵌入式多核DSP高性能軟件開發 內容簡介
本書系統介紹了C66x多核軟件開發的知識,并基于C6678的設計實例介紹了相關設計經驗。系統介紹了C66x DSP器件的基礎概念和多核軟件設計的基礎知識,引領讀者循序漸進地掌握多核軟件設計技術。對于傳統DSP開發人員比較陌生的一些概念,如Cache、預取、數據一致性、數據依賴、死鎖等,進行了重點描述。系統介紹了C66x多核器件的存儲器、DMA傳輸、中斷等內容,并結合工作實際,介紹了多核軟件優化、多核并行設計及任務級優化經驗。很后,以多普勒成像的設計實例描述了如何實現并行設計。
全書共13章,內容包括C66x DSP的基本組成,如存儲器組織、DMA傳輸、中斷和異常、Cache緩存和數據一致性等,并包含CCS軟件開發環境、SYS/BIOS實時操作系統、多核并行設計、軟件設計優化等相關知識。
本書的特點是由淺入深、概念齊全、實踐性強、指導性強。本書結合了多年多核軟件開發的實際經驗,對多核設計中常見的問題進行了詳細的描述; 從基本概念出發,層層推進,介紹了多核并行、數據傳輸與處理并行和多層次并行設計的經驗。
對于從事C66x多核軟件開發的設計師,本書具有很強的指導意義,本書還適合作為高校計算機、數據處理、信號處理、通信等相關專業的本科生和研究生教材。
嵌入式多核DSP高性能軟件開發 目錄
目錄
第1章TI多核C66x DSP介紹
1.1C6678處理器
1.1.1C6678概覽
1.1.2外圍設備
1.266AK處理器
1.366AK2H14/12/06和C6678各項功能對比
1.4C66x處理器內核
1.5電源休眠控制器
1.5.1C66x內核電源休眠管理介紹
1.5.2電源休眠管理特征
1.6鎖相環及其設置
1.6.1主PLL和PLL控制器
1.6.2DDR3 PLL
1.6.3PASS PLL
1.7C6678處理器接口通信相關外圍設備
1.7.1I2C外圍設備
1.7.2SPI外圍設備
1.7.3HyperLink 外圍設備
1.7.4UART外圍設備
1.7.5PCIe外圍設備
1.7.6TSIP 外圍設備
1.7.7EMIF16外圍設備
1.7.8網絡協處理器和以太網驅動程序
1.7.9串行RapidIO(SRIO)端口
1.7.10通用目的輸入/輸出(GPIO)
1.8定時器
1.9信號量
1.10多核導航器
1.10.1PDSP固件
1.10.2Packet DMA
1.10.3隊列管理器
1.10.4描述符
1.10.5包發送過程概述
1.10.6包接收過程概述
1.10.7映射信息
1.11設計建議
1.11.1初始化
1.11.2接口驅動程序
1.11.3時間戳的獲取
1.11.4EVM板的使用
1.11.5示例程序
第2章C66x多核引導方法
2.1多核引導概述
2.2復位
2.3RBL引導
2.3.1RBL簡介
2.3.2RBL引導過程
2.3.3引導模式分類
2.3.4引導模式設置
2.3.5引導配置格式
2.4EVM板上SPI NOR Flash引導設計
2.4.1RBL執行過程
2.4.2需要引導的應用程序
2.4.3應用程序中的引導代碼
2.4.4燒寫引導鏡像的生成
2.4.5程序燒寫
2.4.6SPI NOR Flash二次引導的設計
2.5多核引導和改進
2.6I2C二級引導(IBL和MAD)
2.6.1MAD基礎組件
2.6.2MAD使用模式
2.6.3多核應用程序部署工具包
2.6.4在目標上調試應用程序
2.6.5Image Processing示例程序使用MAD工具實現多核加載
2.7設計建議和注意事項
第3章SRIO
3.1SRIO介紹
3.1.1物理層1×/4×LP系列規范
3.1.2SRIO外圍數據流
3.1.3SRIO包
3.2SerDes宏及其配置
3.3DeviceID配置
3.4支持Rx組播和多個DestID
3.4.1離散組播ID支持
3.4.2混雜ID和DestID 支持
3.4.3接收模式設置
3.5回環
3.5.1內部數字回環
3.5.2SERDES回環
3.5.3外部線路回環
3.6菊花鏈操作和包轉發
3.6.1包轉發介紹
3.6.2包轉發設置
3.7DirectIO操作
3.7.1LSU模塊介紹
3.7.2定義LSU寄存器組合及中斷狀態方式
3.7.3設置LSU寄存器
3.7.4詳細數據路徑描述
3.7.5Tx操作
3.7.6Rx操作
3.7.7DirectIO操作特殊情況
3.7.8調度
3.7.9錯誤處理
3.7.10DirectIO編程注意事項
3.8消息傳遞
3.8.1Rx操作
3.8.2Tx操作
3.8.3消息Packet DMA設置
3.8.4消息傳送編程示例
3.9維護
3.10門鈴操作
3.11原子操作
3.12擁塞控制
3.13字節存儲順序
3.13.1內存映射寄存器空間的轉換
3.13.2有效負載數據的轉換
3.14中斷操作
3.14.1DirectIO(門鈴)服務中斷
3.14.2消息傳遞服務中斷
3.14.3中斷寄存器
3.14.4中斷處理
3.14.5中斷調步
3.15中斷設置
3.16其他SRIO編程注意事項
3.16.1匹配ACKID
3.16.2軟件復位
3.16.3優化和技巧提示
3.17SRIO_LoopbackDioIsrexampleproject介紹
第4章C66x存儲器組織
4.1C66x存儲控制器
4.1.1L1P存儲控制器
4.1.2L1D存儲控制器
4.1.3L2存儲控制器
4.1.4外部存儲控制器
4.1.5擴展存儲控制器
4.2多核共享存儲控制器
4.2.1概覽
4.2.2C66x內核從接口
4.2.3系統從接口
4.2.4系統主接口
4.2.5外部存儲器主接口
4.2.6MSMC存儲器
4.3擴展存儲控制器XMC
4.3.1存儲器映射寄存器概要
4.3.2XMC存儲器保護和地址擴展
4.3.3存儲器保護和地址擴展過程
4.3.4地址擴展
4.3.5XMC存儲器保護結構支持
4.3.6預取緩沖
4.4存儲器保護架構
4.4.1存儲器保護的目的
4.4.2特權級別
4.4.3存儲器保護架構
4.5帶寬管理
4.5.1介紹
4.5.2帶寬管理架構
4.5.3帶寬管理寄存器
4.6設計建議
4.6.1合理規劃使用存儲器
4.6.2存儲器設置成不被Cache緩存和預取
第5章Cache緩存和數據一致性
5.1為什么使用Cache
5.2C64x和C66x DSP之間的Cache區別
5.3Cache存儲器結構概覽
5.4Cache基礎知識
5.4.1直接映射Cache——L1P Cache
5.4.2Cache缺失的類型
5.4.3組相聯Cache
5.4.4二級Cache
5.5L1P Cache
5.5.1L1P存儲器和Cache
5.5.2L1P Cache結構
5.5.3L1P凍結模式
5.5.4程序啟動的一致性操作
5.6L1D Cache
5.6.1L1D存儲器和Cache
5.6.2L1D Cache結構
5.6.3L1D凍結模式
5.6.4程序發起的Cache一致性操作
5.7L2 Cache
5.7.1L2存儲器和Cache
5.7.2L2 Cache結構
5.7.3L2凍結模式
5.7.4程序發起的Cache一致性操作
5.7.5Cache能力控制
5.8使用Cache
5.8.1配置L1 Cache
5.8.2配置L2 Cache
5.9數據一致性
5.9.1Snoop一致性協議
5.9.2在外部存儲器和Cache之間維持一致性
5.9.3對L2 Cache一致性操作使用指導
5.9.4對L1 Cache一致性操作使用指導
5.10片上Debug支持
5.11在運行中改變Cache配置
5.11.1禁用外部存儲器Cache功能
5.11.2在運行中改變Cache尺寸
5.12優化Cache性能
5.12.1Cache性能特征
5.12.2阻塞情況
5.12.3優化技術概覽
5.12.4應用級優化
5.12.5過程級優化
5.12.6C66x DSP Cache一致性操作小結
5.13設計建議
5.13.1消除虛假地址
5.13.2數據一致性問題
第6章DMA傳輸
6.1IDMA
6.1.1IDMA結構
6.1.2IDMA通道0
6.1.3IDMA通道1
6.2EDMA3控制器
6.2.1EDMA3控制器介紹
6.2.2EDMA3器件特定的信息
6.2.3EDMA3通道控制器配置
6.2.4EDMA3傳輸控制器配置
6.2.5EDMA3通道同步事件
6.2.6EDMA3通道控制器
6.2.7EDMA3傳輸控制器
6.3EDMA3傳輸類型
6.3.1A同步傳輸
6.3.2AB同步傳輸
6.4參數RAM
6.4.1PaRAM參數集
6.4.2Dummy與Null傳輸比較
6.4.3參數集更新
6.4.4連接傳輸
6.4.5常數地址模式傳輸/對齊問題
6.4.6單元大小
6.5發起一個DMA傳輸
6.5.1DMA通道
6.5.2QDMA通道
6.5.3完成一個DMA傳輸
6.5.4EDMA3中斷
6.6提升DMA性能的幾點建議
6.6.1盡量用較大的ACNT
6.6.2線性傳輸
6.6.3地址對齊
6.6.4恰當使用多個CC和TC傳輸
第7章中斷和異常
7.1C6678處理器中斷簡介
7.2芯片中斷控制器
7.3C66x內核中斷控制器概述
7.3.1特征
7.3.2功能塊圖
7.4中斷控制器結構
7.4.1事件寄存器
7.4.2事件合并器
7.4.3中斷選擇器
7.4.4異常合并器
7.5C66x內核事件
7.6中斷控制器與DSP交互
7.6.1DSP中斷控制器接口
7.6.2DSP服務中斷事件
7.7C6678中斷的設計
7.7.1不經過CIC的中斷事件
7.7.2經過CIC的中斷
7.7.3中斷掛接
7.7.4多個事件映射同一中斷的掛接
7.8中斷設計建議
7.8.1不要過多使用中斷或中斷嵌套
7.8.2中斷服務程序中代碼不宜過長
7.8.3中斷服務程序改變的全局變量要加上volatile標志
第8章如何使用CCS
8.1常用界面
8.1.1Project Explorer
8.1.2程序窗口
8.1.3目標配置窗口
8.1.4Debug窗口
8.1.5Memory窗口
8.1.6Expressions窗口
8.1.7Breakpoints窗口
8.1.8Problems窗口
8.1.9Console窗口
8.2新建工程
8.3新建一個目標配置文件
8.3.1新建ccxml文件
8.3.2設置仿真器
8.3.3添加器件
8.4常用操作
8.4.1Launch
8.4.2Group
8.4.3Connect
8.4.4加載程序
8.4.5設置斷點調試程序
8.4.6復位
8.5常見問題
8.5.1頭文件找不到
8.5.2EVM板未初始化,調試找不到DDR3
8.5.3選中不了仿真器
8.5.4加斷點調試錯誤
8.5.5域選擇不正確
8.5.6仿真器連接中斷電
8.6設置字體和代碼風格
8.6.1修改字體
8.6.2代碼風格設置
8.7MCSDK
8.7.1MCSDK架構
8.7.2MCSDK特點
8.8TI函數庫調用
8.8.1格式選擇
8.8.2庫的調用
8.8.3庫的使用
8.9理解CMD文件
8.9.1CMD文件簡介
8.9.2MEMORY命令
8.9.3SECTIONS命令
第9章SYS/BIOS實時操作系統
9.1什么是SYS/BIOS
9.1.1SYS/BIOS的優勢
9.1.2SYS/BIOS和XDC TOOL的關系
9.2SYS/BIOS包
9.3SYS/BIOS中使用C++
9.3.1存儲器管理
9.3.2Name Mangling
9.3.3從配置調用對象方法
9.3.4類構造器和析構器
9.4SYS/BIOS配置和編譯
9.4.1在工程中添加SYS/BIOS支持
9.4.2創建一個獨立的配置工程
9.4.3配置SYS/BIOS應用
9.4.4用XGCONF打開一個配置文件
9.4.5用XGCONF執行任務
9.4.6保存配置
9.4.7關于XCONFG視圖
9.4.8使用可用產品視圖
9.4.9使用概要視圖
9.4.10使用屬性視圖
9.4.11使用問題視圖
9.4.12找到并修正錯誤
9.5編譯一個SYS/BIOS應用
9.5.1了解編譯流程
9.5.2編譯和連接優化
9.6線程模塊
9.6.1SYS/BIOS啟動順序
9.6.2線程模塊的概覽
9.6.3線程類型
9.6.4線程優先級
9.6.5讓步和搶占
9.6.6鉤子
9.7硬件中斷
9.7.1創建中斷
9.7.2硬件中斷嵌套和系統堆棧大小
9.7.3硬件鉤子
9.8軟件中斷
9.8.1創建軟件中斷對象
9.8.2設置軟件中斷優先級
9.8.3軟件中斷優先級和系統堆棧大小
9.8.4軟件中斷執行
9.8.5優點和折中
9.8.6軟件中斷函數同步
9.8.7軟件鉤子
9.9任務
9.9.1創建任務
9.9.2任務執行狀態和調度
9.9.3任務堆棧
9.9.4測試堆棧溢出
9.9.5任務鉤子
9.9.6空閑循環
9.10SYS/BIOS同步模塊
9.10.1信號量
9.10.2事件模塊
9.10.3門模塊
9.10.4郵箱
9.10.5隊列
9.11定時服務
9.12Memory
9.12.1新建一個Platform
9.12.2棧
9.12.3Cache配置
9.12.4Cache Runtime API
9.12.5動態存儲器分配
9.12.6Heap的實施
9.13硬件抽象層
9.14典型設計實例和建議
9.14.1典型設計
9.14.2設計建議
9.14.3RTA分析
9.14.4SYS/BIOS Semaphore與Semaphore2
第10章多核并行設計
10.1并行粒度和并行級別
10.2并行方式
10.3任務類型
10.3.1相同任務的多個副本
10.3.2多個獨立任務
10.3.3單個任務拆分成多個子任務
10.3.4多個松散耦合任務
10.3.5耦合度高的任務
10.4依賴關系
10.4.1數據依賴
10.4.2存儲器依賴
10.5死鎖和活鎖
10.5.1死鎖
10.5.2活鎖
10.6同步
10.6.1SYS/BIOS同步模塊
10.6.2采用控制信號實現多核對等同步
10.7forkjoin
10.8OpenMP并行設計
10.9任務級優化設計
10.9.1一種典型的任務處理流程
10.9.2優化設計實例
第11章軟件優化設計
11.1for循環優化
11.1.1移出能在循環外完成的計算
11.1.2循環體內的大運算換成小運算
11.1.3多重循環
11.1.4for循環中有判斷
11.2多核for循環并行任務優化
11.2.1資源占用小的for循環
11.2.2資源占用大的for循環
11.3if聲明優化
11.3.1if轉換
11.3.2消除if聲明
11.3.3相同代碼合并減少if聲明
11.3.4減少嵌套的if
11.3.5優化條件表達式
11.3.6優化稀疏矩陣
11.4軟件流水
11.5正確使用編譯指示和關鍵字
11.5.1restrict關鍵字
11.5.2_nassert關鍵字
11.5.3interrupt中斷關鍵字
11.5.4near和far關鍵字
11.5.5const關鍵字
11.5.6UNROLL編譯指示
11.5.7MUST_ITERATE編譯指示
11.5.8CODE_SECTION編譯指示
11.5.9DATA_SECTION編譯指示
11.5.10SET_CODE_SECTION和SET_DATA_SECTION編譯指示
11.5.11DATA_ALIGN編譯指示
11.5.12STRUCT_ALIGN
11.6采用內建函數
11.6.1數據移動和打包函數
11.6.2使用除法指令
11.6.3使用C66x定點指令實現復數矩陣操作和向量操作
11.6.4浮點和矢量運算
11.7選定正確的優化級別
11.8軟件優化小結
第12章距離多普勒成像設計實例
12.1背景介紹
12.2距離多普勒成像算法
12.3數據組織形式
12.4算法的并行化設計
12.5forkjoin的設計
12.6脈沖壓縮的設計
12.6.1IFFT轉為FFT
12.6.2無緩存的大點數FFT、IFFT設計
12.6.3有數據緩沖多核大點數FFT、IFFT設計
12.6.4資源使用情況
12.6.5復數相乘
12.6.6脈沖壓縮的偽碼實現
12.7其他階段任務分解
12.8實驗結果分析
第13章展望
13.1異構多核SoC處理器
13.1.1異構多核DSP
13.1.2異構多核FPGA
13.2嵌入式軟件設計思考
13.2.1掌握系統架構
13.2.2做好軟件模塊化設計
13.2.3片上系統架構設計的挑戰
13.2.4自動化并行設計
附錄A
附錄B
附錄C
附錄D
附錄E
參考文獻
展開全部
嵌入式多核DSP高性能軟件開發 作者簡介
夏際金,男,1979年,江西上饒人,研究員級高級工程師,嵌入式軟件、軟件工程專家。長期從事嵌入式軟件開發,在嵌入式多核軟件設計和并行計算方面具有深入研究。