天天看點

DS5使用記錄

最近使用ds5操作fpga原型驗證闆子,  記錄點使用方法。

1. fpga原型驗證型号, 無非就是A家(Altera)和X家(Xilinx)... 我整的闆子用的是賽靈思的Virtex UltraScale系列。 最高端的VU440, 檢視官網描述, 最多可以支援4000萬ASIC門電路的設計和驗證。 另外當然還有控制闆, 用的是常見的ZYNQ7000系列, 内部內建了一個ARMv7 Cortex-A9 處理器。 可以用作驗證環境的控制, 如重新開機, 燒錄bitfile, 互動, 控制等等。

2. 介紹下fpga, Field Programmable Gate Array 即現場可程式設計的邏輯門陣列。顧名思義, 它是一個可以程式設計改變的内部門電路連線的晶片, 除了fpga, 其他諸如asic, dsp, cpu啥的各種晶片, 都無法動态改變内部的邏輯門電路。 

3. 我這邊也不搞晶片設計, 不寫verilog, 反正拿到bitfile, 燒錄到fpga上就開始整。 從bootloader到核心, 再到各種功能驗證。 基本和arm端整Linux沒啥差別。

4. ok, 由于我這邊arm端隻會燒寫下bitfile, 修改下時鐘頻率。是以fpga這端bootrom能起來後, 就直接接ds5進行操作了。

這裡記錄下ds5使用過程中遇到的一些問題:

Q: ds5查找不到usb裝置? (ds5用usb和用戶端主機相連) 

A: ds5 reset按鈕按下試試...

Q: ds5連接配接不到target? 說target不存在或連接配接線問題?

A: 嗯, 可能是bitfile有問題, 晶片bootrom都沒起來... (和澎湃S2一樣?)

    我這邊換了幾個bitfile, 還是連接配接不上, 後來發現是fpga全局時鐘沒配置。(GCCLK?)  正确配置時鐘頻率後bootrom的log就能出來了。

Q: bootrom代碼到底在哪裡? 

A: 關于bootrom, 我的感覺是bitfile中已經含有了。即最開始的這部分bootrom代碼已經固化成了硬體邏輯電路了。即最開始的start.s, BL1的代碼, 都經過編譯, 彙編 以及其他的一些方式變成bitfile的一部分了。不管怎樣, 這部分代碼 跟晶片本身邏輯門電路一樣, 流片後就無法改變了... 類似三星以前的stepping stone, 利用跳線方式可以支援很多種啟動方式, 比如Nand 啟動, 可将Nand Flash的前4K, 上電後自動拷貝到特定的sram中。stepping stone這個機制本事其實就是bootrom。也是soc中的特定機制,  流片後無法改變。

Q: ds5連接配接上後為啥隻有一個cpu核心?

A: 前面說了賽靈思VU440系列也就隻能支援4000萬ASIC門電路的模拟... 現在的soc半導體數量動則幾十億上百億的級别。 比如麒麟980采用台積電7nm工藝,内部內建了69億個半導體。最新的990內建了103億個半導體... 是以千萬數量級的fpga片子肯定無法把所有ip設計都放入裡面。故基本都是按子產品隻放需要驗證的ip進去。 例如需要驗證usb控制器,  那就把cpu, usb控制器, dma, gic一類的必要ip放進去, 即可。包括cpu核心, fpga内部不一定能放下多個核心, 是以有些bitfile就放一個cpu核心是正常的。

Q: ds5如何配置?

A: 建立配置資料庫,選擇platfrom... autodetect到相應target, 之後就可以建立調試工程, 關聯該資料庫, 可以attch上闆子, 利用jtag控制記憶體, cpu, 寄存器等。基本和trace32操作類似。具體就不詳細貼了,  可參考相關手冊。

Q: ds5啟動uboot

A: 我都是用ddr boot, 這個簡單, 編譯uboot, 将uboot鏡像加載到指定記憶體。(如0x2000000) 

pc指向entry point。 (一般是reset異常向量處)  執行即可。

Q: ds5啟動linux核心

A: ddrboot簡單, 把核心, 裝置樹加載到記憶體指定位址, 如果使用initrd作為最終根檔案系統, 可将initrd編入核心鏡像。

最後利用uboot的boot指令。 如未壓縮的Image核心鏡像, 利用booti kern_addr fdt_addr boot_args啥的, 

如果是uImage格式, 可利用bootm方式。

================================================================================================

ok... 就先記錄這些。

2019.10.11