一、Efinity工程
io_memoryClk是與存儲(chǔ)器接口共用的時(shí)鐘,需要連接正確。
由于鈦金系列是有片上晶振的,所以有些客戶可能會(huì)選擇片上晶振作為SOC的系統(tǒng)時(shí)鐘或者選擇片上晶振作為PLL的參考時(shí)鐘,再由該P(yáng)LL的輸出時(shí)鐘作為SOC的系統(tǒng)時(shí)鐘,但是由于片上晶振頻率偏差比較大,所以UART的波特率是不準(zhǔn)確的,這也是為什么UART出問(wèn)題的原因。
FLASH
flash管腳interface設(shè)置。
flash出問(wèn)題也是一個(gè)很常見(jiàn)的問(wèn)題,
之前遇到有客戶反饋riscv 燒寫到flash啟動(dòng)不了,原因是 riscv 必須要控制flash,因?yàn)閎ootloader會(huì)讀取flash中的數(shù)據(jù)用于加載APP;
(2)flash的IO輸入輸出都要添加IO寄存器,之前遇到有客戶不能讀寫flash的情況。
Instance Name |
Ext_flash_clk
|
Ext_flash_cs
|
Mode
|
output
|
output
|
I/O Standard
|
1.8V LVCMOS
|
1.8V LVCMOS
|
Connection Type
|
--
|
--
|
Register Option
|
register
|
register
|
Double Data
I/O Option
|
none
|
none
|
Enable Serialization
|
No
|
No
|
Clock Pin Name
|
soc_clk
|
soc_clk
|
Pull Option
|
-
|
-
|
Drive Strenght
|
4
|
4
|
Instance Name
|
Ext_falsh_dx
|
||
Base
|
Output
|
||
Mode
|
inout
|
Constant Output
|
none
|
I/O Standard
|
1.8V lvcmos
|
Register Option
|
register
|
Input
|
Double Dat
|
none
|
|
Connection Type
|
normal
|
Enable Serialization
|
No
|
Register Option
|
register
|
Drive Strength
|
4
|
Clock
|
Clk
|
Enable Slew Rate
|
No
|
Double data
|
None
|
Static Delay Setting
|
0
|
Pull Option
|
None
|
Output Enable
|
|
Enable Schmitt
|
No
|
Register Option
|
Register
|
Enable bus hold
|
No
|
Oputput Clock
|
|
Static Delay setting
|
0
|
Pin Name
|
Clk
|
Inverted
|
No
|
二、RISCV 工程
自從新版本的Efinity RISC-V IDE發(fā)布之后,這直沒(méi)有時(shí)間操作一下,它為RISC-V ' C '和' c++ '軟件開(kāi)發(fā)提供了一個(gè)完整、無(wú)縫的環(huán)境;今天終于安裝了,但安裝自不必多說(shuō),一路點(diǎn)擊下去就可以了。來(lái)體驗(yàn)一把。
2.1 打開(kāi)IDE自帶工程。
(1)首先打開(kāi)軟件。
step1:選擇工程的工作空間。如果工作空間長(zhǎng)時(shí)間不變可以勾選Use this as the default and do not ask agin。
與老版本的區(qū)別是,新版本可以將該選擇到任何地方。

step2:生成sapphire的example。
step2: Import工程。選擇Import Projectes... 或者在Project Explorer中右擊,然后選擇Import... 或者File -> Import.


step3:在打開(kāi)的Import對(duì)話框中選擇Efinix Projects-> Efinix Makefile Project可以導(dǎo)入。

step4:選擇bsp位置,這里我選擇
D:FPGA_Prj9_T120F3241_RISCV_DEMOT120F324_devkitembedded_swefx_socbsp
如果是FreeRTOS的話,兩個(gè)都要輸入。

setp5:選擇下一步,然后勾選相應(yīng)工程前面的方框,點(diǎn)擊finish即可以導(dǎo)入相應(yīng)的demo工程。

step6:右鍵選擇build Project.
step7:run或者debug。
從2022版本之后,只要把路徑轉(zhuǎn)換到soc之后,不需要再設(shè)置debug路徑

這里以gpioDemo為例。

進(jìn)入debug調(diào)試界面。

查看串口打印信息,在Window->Show View ->Terminal-> open the termianl。選擇Serial Terminal設(shè)置相關(guān)的串口信息。


2.2 Debug優(yōu)化設(shè)置
OpenOCD有三個(gè)環(huán)境變量,DEBUG,BENCH,DEBUG_OG.

在IP生成時(shí),可以通過(guò)Application Debug Mode設(shè)置Debug開(kāi)關(guān)狀態(tài),在/embedded_sw/bsp/efinix/EfxSapphireSoc/include/soc.mk

下面是osc.mk關(guān)于DEBUG與DEBUG_OG的設(shè)置。

當(dāng)然也可以在Window -> Preferences進(jìn)行修改。

或者在工程的makefile中修改

在調(diào)試完成后推薦的設(shè)置是
DEBUG = NO
DEBUG_OG = NO
BENCH = no/yes[-O3生成的文件會(huì)比-Os大,速度會(huì)快一點(diǎn),但是也是個(gè)位數(shù)百分比的]
2.3 debug問(wèn)題補(bǔ)充
其實(shí)在Debug時(shí)經(jīng)常會(huì)報(bào)出以下問(wèn)題:
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description 'ELITES-232DL', serial '*' at bus location '*'
這個(gè)錯(cuò)誤其實(shí)并不陌生,文檔也有一個(gè)相關(guān)的記錄.
目前易靈思的下載器主要使用的是FTDI的 FT232,FT2232和FT4232方案。下圖是FT2232和FT4232芯片的原理圖,F(xiàn)T2232有channel 0,1兩個(gè)通道,在下圖已經(jīng)標(biāo)出。FT4234有channel 0,1,2,3共4個(gè)通道;而ELITES-232DL使用的是FT232,它只有channel 0.所以在使用不同的下載噐方案時(shí),尤其是在對(duì)RISCV進(jìn)行debug時(shí)就是使用不同的配置參數(shù);否則就會(huì)報(bào)上面的錯(cuò)誤。


那么怎么區(qū)別下載器使用的是什么芯片方案及對(duì)應(yīng)的JTAG channel號(hào)呢?這個(gè)在打開(kāi)programmer之后,就可以看到相應(yīng)的ID.位置如下圖所示。而channel號(hào)是由易靈思的驅(qū)動(dòng)來(lái)指定的,下表中列出JTAG使用的channel號(hào)。

FTDI器件 | ID | JTAG channel |
FT232 | 0403:6014 | 0 |
FT2232 | 0403:6010 | 1 |
FT4232 | 0403:6011 | 1 |
在上面的圖中我們還把USB Target用紅色框框了出來(lái),因?yàn)椴煌南螺d器名字是不一樣的,也是要修改的。
知道了上面的信息之后,我們就可以很清楚的知道我們的下載器使用的器件情況。
到現(xiàn)在我們可以對(duì)上面的報(bào)錯(cuò)進(jìn)行修改了,出現(xiàn)上面的報(bào)錯(cuò)時(shí)應(yīng)該怎么樣修改呢?這里還要分兩種情況,一種是hard jtag,另一種是soft的JTAG。區(qū)別在于修改的文件不同。
對(duì)于hard jtag,我們需要把embedded_swsoc_xxbspefinixEfxSapphireSocopenocdftdi.cfg(或者ftdi_ti.cfg,其中ftdi.cfg用于trion系列,而ftdi_ti.cfg 用于鈦金系列)修改成下載器讀出來(lái)的名字,這里包括ftdi_device_desc,ftdi_vid_pid及ftdi_channel三個(gè)參數(shù),只需要按照上面的說(shuō)明配置即可。
比如以YLS_DL下載器為例,
它使用的是FT2232的方案。修改結(jié)果如圖。

對(duì)于soft jtag,老版本的EFinity修改的是c232hm_ddhsl_0.cfg文件,而在2023.1版本的RISCV中已經(jīng)沒(méi)有c232hm_ddhsl_0.cfg文件了。代之的是一個(gè)external.cfg文件。里面的內(nèi)部與上面的是一樣的。
另外也遇到過(guò)修改了上面的問(wèn)題還是存在問(wèn)題的,經(jīng)過(guò)確認(rèn)客戶安裝的驅(qū)動(dòng)是libusb-win32,可以用zadig的libusbk試試。

2.4、新建工程
File -> New -> Project...

可以選擇Standalone也可以選擇FreeRTOS

三、接口操作
APB3接口
請(qǐng)?jiān)诠娞?hào)中搜索"APB3接口應(yīng)用"
GPIO
請(qǐng)?jiān)诠珡奶?hào)中搜索"SOC GPIO操作”
四、邏輯文件與RISCV工程文件合并燒寫
在programmer中點(diǎn)擊Combine Multiple Image Files。打開(kāi)Combine Multiple Image Files對(duì)話框,

選擇Generic Image Combination.并選擇右側(cè)的“*”添加文件,邏輯文件是生成的hex文件,RISCV工程生成的是bin文件。
輸入output file 文件名。指定地址,邏輯文件地址為0,
軟核的起始地址是大工程中指定的起始文件,最后點(diǎn)擊Aplly。

把合成的文件燒寫到flash。
最后:
我們會(huì)為各種應(yīng)用提供相應(yīng)的demo,歡迎關(guān)注我們的硬件平臺(tái)
-
IDE
+關(guān)注
關(guān)注
0文章
353瀏覽量
47817 -
RISC-V
+關(guān)注
關(guān)注
46文章
2598瀏覽量
48967
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA與RISC-V淺談

芯來(lái)科技亮相RISC-V Day Tokyo 2025
關(guān)于RISC-V芯片的應(yīng)用學(xué)習(xí)總結(jié)
如何使用 RISC-V 進(jìn)行嵌入式開(kāi)發(fā)
關(guān)于RISC-V學(xué)習(xí)路線圖推薦
RISC-V,即將進(jìn)入應(yīng)用的爆發(fā)期
加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未來(lái) !

RISC-V Summit China 2024 青稞RISC-V+接口PHY,賦能RISC-V高效落地

RISC-V Summit China 2024 | 青稞RISC-V+接口PHY,賦能RISC-V高效落地
2024 RISC-V 中國(guó)峰會(huì):華秋電子助力RISC-V生態(tài)!

評(píng)論