將FPGA(Nios軟體部分)程式放在SDRAM裡面跑
加了Nios並在上面跑uCOS的時候,nios裡面的onchip memory已經無法滿足程式的規模了。即使是EP4CE6的,單跑一個帶uCOS的nios cpu也不夠放。所以必須放到板上的SDRAM(記憶體)裡面去跑。
1. 先建立一個Nios核。
注意new_sdram_controller的最後一個Conduit的s需要雙擊輸出埠。
2. 在設定sdram_controller的時候注意要與開發板上的sdram型號對應
我的是hy57v641620,配置如圖:
3. 當然CPU(NIos Processor)裡面的Reset Vector 和 Exception Vector不能再是Onchip Memory而應該是new_sdram_controller。
4. 其他什麼自動分配基地址,中斷等等都一樣。然後生成。
5. 回到硬核新增Nios
這裡注意:
(1)sdram_controller的s引出的管腳必須嚴格對應開發板sdram型號的分配
(2)SDRAM_controller的時鐘雖然在nios內部設定的時候從clk連線到了controller上面,但是sdram本身的時鐘必須與Nios系統的時鐘分開。
具體操作是:在硬核中加一個PLL,input是板上的晶振,output用兩個c0,c1。c0不倍頻接給Nios,c1需要向右邊移動63相位。
c1配置如圖:
硬體連線如圖:
6. 軟核部分
(1)開啟eclipse建立帶bsp的工程blahblah。。。
建立hello microOS模板工程
(2)edit bsp
common裡面有這幾個地方修改:
Advanced裡面設定成這樣:
(3)build and run
如果build過了,run到一半出現無法下載elf的錯誤,多半是管腳sdram_controller的s甩出來的那一堆管腳沒有分配正確導致;另外就是SDRAM本身沒有分配單獨的一個時鐘訊號。