課程內容
SoC FPGA整合了FPGA架構與處理器至單一裝置,帶來了多面相優勢。不僅有完善的IP可供使用,加速產品開發時程,SoC FPGA同時擁有FPGA的可編程性和嵌入式處理器的計算能力,適用於嵌入式系統、通信系統等廣泛應用,提供了更多選擇和靈活性。此外,SoC FPGA節省了空間和功耗,整合了獨立配置所需的處理器和FPGA硬體,有助於更有效地管理資源。SoC FPGA的發展反映了多核心、異構運算的趨勢,能夠滿足IoT、高速網路、AI硬體加速等應用的需求,提供高效的運算能力。
課程引導學員養成系統的概念,可由現成的IP中,組合出符合規格要求的產品;驅動程式。
課程目標
1. 了解 Intel® SoC FPGA Embedded Development Suite(SoC EDS)設計流程並利用 Linux Driver 來控制自行設計的 IP。
2. 掌握開發Linux驅動程式設計需要的知識,能分析程式碼,進而修改程式碼,了解驅動程式形成的每個細節。
3. 在SoC上讀取/控制FPGA上的IP,並知道如何編寫Driver建構出基本的SoC FPGA嵌入式系統軟體。
階段一 : SoC FPGA 嵌入式系統晶片開發
➢SoC FPGA - 嵌入式系統晶片開發實務
★ 硬體設計- 設計你的 SoC FPGA 晶片
1. Intel Cyclone V SoC FPGA 簡介
2. Intel Avalon Bus Interface Protocol 介紹
3. 利用 Platform Designer 軟體整合 Embedded Peripherals IP 來設計系統電路
4. 利用 Intel Qsys 整合軟體設計 SoC system
5. LAB:使用 Platform Designer 整合 GPIO design 至 FPGA,並利用 System Console 做系統驗證
★ 將自行設計的 IP 利用 Platform Designer 整合至 Intel SoC FPGA,並和 Linux Driver 結合,再利用 Linux APP 做控制
1. LAB: GPIO Driver 控制 SoC FPGA 開發板上的 LED
階段二 : Linux驅動程式設計
1. 字元裝置Driver
2. Linux Misc Device
3. Linux GPIO 驅動程式 for LED, Button,Relay
4. Raspberry Pi 3 功能說明與BCM283x 使用說明
5. Pi 擴充卡硬體功能介紹與電路圖接腳說明
6. Linux 中斷註冊 & 中斷控制器HAL層架構
7. Bottom Halves (Tasklet & Work Queue)
8. 進階字元Driver :
1) Non- blocking I/O : 使用Wait Queue & completion 機制
2) kernel 對UserSpace通知: SIGIO 信號非同步通知,call_usermodehelper()
9. Kernel Timer List (Jiffies, timer ticks) for LED 閃爍
10. Linux Serial port 驅動程式 for Bluetooth 模組
11. Linux Platform Device & Platform Driver 架構
12. Linux Device Tree
13. Linux SPI Client驅動程式 for ADC Driver (MCP3008)
14. Linux IIO Driver(Linux Industrial I/O Subsystem)
15. Linux SPI Bus master 驅動程式 for BCM2835 SPI controller
16. Linux I2C Client驅動程式 for EEPROM
17. Linux I2C Bus master驅動程式 for BCM2835 I2C controller
18. Linux User Space Driver