嵌入式多核DSP高性能軟件開發
內容描述
本書系統介紹了C66x多核軟件開發的知識,並基於C6678的設計實例介紹了相關設計經驗。系統介紹了C66x DSP器件的基礎概念和多核軟件設計的基礎知識,引領讀者循序漸進地掌握多核軟件設計技術。對於傳統DSP開發人員比較陌生的一些概念,如Cache、預取、數據一致性、數據依賴、死鎖等,進行了重點描述。系統介紹了C66x多核器件的存儲器、DMA傳輸、中斷等內容,並結合工作實際,介紹了多核軟件優化、多核並行設計及任務級優化經驗。最後,以多普勒成像的設計實例描述瞭如何實現並行設計。 全書共13章,內容包括C66x DSP的基本組成,如存儲器組織、DMA傳輸、中斷和異常、Cache緩存和數據一致性等,並包含CCS軟件開發環境、SYS/BIOS實時操作系統、多核並行設計、軟件設計優化等相關知識。 本書的特點是由淺入深、概念齊全、實踐性強、指導性強。本書結合了多年多核軟件開發的實際經驗,對多核設計中常見的問題進行了詳細的描述; 從基本概念出發,層層推進,介紹了多核並行、數據傳輸與處理並行和多層次並行設計的經驗。 對於從事C66x多核軟件開發的設計師,本書具有很強的指導意義,本書還適合作為高校電腦、數據處理、信號處理、通信等相關專業的本科生和研究生教材。
目錄大綱
目錄
1章TI多核C66 DSP介紹
1.1C6678處理器
1.1.1C6678概覽
1.1.2外圍設備
1.266AK處理器
1.366AK2H14/12/06和C6678各項功能對比
1.4C66處理器內核
1.5電源休眠控制器
1.5.1C66內核電源休眠管理介紹
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章C66多核引導方法
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支持R組播和多個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.5T作
3.7.6R作
3.7.7DirectIO作特殊情況
3.7.8調度
3.7.9錯誤處理
3.7.10DirectIO編程注意事項
3.8消息傳遞
3.8.1R作
3.8.2T作
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_LoopbackDioIsreampleproject介紹
4章C66存儲器組織
4.1C66存儲控制器
4.1.1L1P存儲控制器
4.1.2L1D存儲控制器
4.1.3L2存儲控制器
4.1.4外部存儲控制器
4.1.5擴展存儲控制器
4.2多核共享存儲控制器
4.2.1概覽
4.2.2C66內核從接口
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.2C64和C66 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.1Sop一致性協議
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性能
作者介紹
夏際金,男,1979年,江西上饒人,研究員級高級工程師,嵌入式軟件、軟件工程專家。長期從事嵌入式軟件開發,在嵌入式多核軟件設計和並行計算方面具有深入研究。