一、Efinity工程
io_memoryClk是与存储器接口共用的时钟,需要连接正确。
UART
由于钛金系列是有片上晶振的,所以有些客户可能会选择片上晶振作为SOC的系统时钟或者选择片上晶振作为PLL的参考时钟,再由该PLL的输出时钟作为SOC的系统时钟,但是由于片上晶振频率偏差比较大,所以UART的波特率是不准确的,这也是为什么UART出问题的原因。
FLASH
flash管脚interface设置。
flash出问题也是一个很常见的问题,
之前遇到有客户反馈riscv 烧写到flash启动不了,原因是 riscv 必须要控制flash,因为bootloader会读取flash中的数据用于加载APP;
(2)flash的IO输入输出都要添加IO寄存器,之前遇到有客户不能读写flash的情况。
|
|
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发布之后,这直没有时间操作一下,它为RISC-V ‘ C ‘和’ c++ ‘软件开发提供了一个完整、无缝的环境;今天终于安装了,但安装自不必多说,一路点击下去就可以了。来体验一把。
2.1 打开IDE自带工程。
(1)首先打开软件。
step1:选择工程的工作空间。如果工作空间长时间不变可以勾选Use this as the default and do not ask agin。
与老版本的区别是,新版本可以将该选择到任何地方。
![图片[1]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143323346-61729319603.png?v=1729319603)
step2:生成sapphire的example。
step2: Import工程。选择Import Projectes… 或者在Project Explorer中右击,然后选择Import… 或者File -> Import.
![图片[2]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143324758-51729319604.png?v=1729319604)
![图片[3]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143325609-61729319605.png?v=1729319605)
step3:在打开的Import对话框中选择Efinix Projects-> Efinix Makefile Project可以导入。
![图片[4]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143326602-101729319606.png?v=1729319607)
step4:选择bsp位置,这里我选择
D:FPGA_Prj�9_T120F324�1_RISCV_DEMOT120F324_devkitembedded_swefx_socbsp
如果是FreeRTOS的话,两个都要输入。
![图片[5]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143328193-91729319608.png?v=1729319608)
setp5:选择下一步,然后勾选相应工程前面的方框,点击finish即可以导入相应的demo工程。
![图片[6]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143329246-31729319609.png?v=1729319609)
step6:右键选择build Project.
step7:run或者debug。
从2022版本之后,只要把路径转换到soc之后,不需要再设置debug路径
![图片[7]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143330891-61729319610.png?v=1729319610)
这里以gpioDemo为例。
![图片[8]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143332937-101729319612.png?v=1729319612)
进入debug调试界面。
![图片[9]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143333374-101729319613.png?v=1729319613)
查看串口打印信息,在Window->Show View ->Terminal-> open the termianl。选择Serial Terminal设置相关的串口信息。
![图片[10]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143334397-61729319614.png?v=1729319614)
![图片[11]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143335283-41729319615.png?v=1729319616)
其实在Debug时经常会报出以下问题:
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description ‘ELITES-232DL’, serial ‘*’ at bus location ‘*’
![图片[12]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143336803-41729319616.png?v=1729319616)
这个错误其实并不陌生,文档也有一个相关的记录.
目前易灵思的下载器主要使用的是FTDI的 FT232,FT2232和FT4232方案。下图是FT2232和FT4232芯片的原理图,FT2232有channel 0,1两个通道,在下图已经标出。FT4234有channel 0,1,2,3共4个通道;而ELITES-232DL使用的是FT232,它只有channel 0.所以在使用不同的下载噐方案时,尤其是在对RISCV进行debug时就是使用不同的配置参数;否则就会报上面的错误。
![图片[13]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143337536-81729319617.png?v=1729319618)
![图片[14]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143338699-101729319618.png?v=1729319619)
那么怎么区别下载器使用的是什么芯片方案及对应的JTAG channel号呢?这个在打开programmer之后,就可以看到相应的ID.位置如下图所示。而channel号是由易灵思的驱动来指定的,下表中列出JTAG使用的channel号。
![图片[15]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143339178-11729319619.png?v=1729319620)
| FTDI器件 | ID | JTAG channel |
| FT232 | 0403:6014 | 0 |
| FT2232 | 0403:6010 | 1 |
| FT4232 | 0403:6011 | 1 |
在上面的图中我们还把USB Target用红色框框了出来,因为不同的下载器名字是不一样的,也是要修改的。
知道了上面的信息之后,我们就可以很清楚的知道我们的下载器使用的器件情况。
到现在我们可以对上面的报错进行修改了,出现上面的报错时应该怎么样修改呢?这里还要分两种情况,一种是hard jtag,另一种是soft的JTAG。区别在于修改的文件不同。
对于hard jtag,我们需要把embedded_swsoc_xxbspefinixEfxSapphireSocopenocdftdi.cfg(或者ftdi_ti.cfg,其中ftdi.cfg用于trion系列,而ftdi_ti.cfg 用于钛金系列)修改成下载器读出来的名字,这里包括ftdi_device_desc,ftdi_vid_pid及ftdi_channel三个参数,只需要按照上面的说明配置即可。
![图片[16]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143340865-51729319620.png?v=1729319621)
比如以YLS_DL下载器为例,
它使用的是FT2232的方案。修改结果如图。
![图片[18]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143344293-81729319624.png?v=1729319624)
对于soft jtag,老版本的EFinity修改的是c232hm_ddhsl_0.cfg文件,而在2023.1版本的RISCV中已经没有c232hm_ddhsl_0.cfg文件了。代之的是一个external.cfg文件。里面的内部与上面的是一样的。
另外也遇到过修改了上面的问题还是存在问题的,经过确认客户安装的驱动是libusb-win32,可以用zadig的libusbk试试。
![图片[19]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143345602-11729319625.png?v=1729319625)
2.2、新建工程
File -> New -> Project…
![图片[20]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143345274-61729319625.png?v=1729319625)
可以选择Standalone也可以选择FreeRTOS
![图片[21]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143346936-21729319626.png?v=1729319626)
三、接口操作
APB3接口
请在公众号中搜索”APB3接口应用”
GPIO
请在公从号中搜索”SOC GPIO操作”
四、逻辑文件与RISCV工程文件合并烧写
在programmer中点击Combine Multiple Image Files。打开Combine Multiple Image Files对话框,
![图片[22]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143347996-11729319627.png?v=1729319627)
选择Generic Image Combination.并选择右侧的“*”添加文件,逻辑文件是生成的hex文件,RISCV工程生成的是bin文件。
![图片[23]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143348256-91729319628.png?v=1729319629)
输入output file 文件名。指定地址,逻辑文件地址为0,
软核的起始地址是大工程中指定的起始文件,最后点击Aplly。
![图片[24]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143349652-101729319629.png?v=1729319629)
把合成的文件烧写到flash。
最后:
我们会为各种应用提供相应的demo,欢迎关注我们的硬件平台
![图片[25]-Efinity RISC-V IDE入门使用-4-易灵思(Elitestek)社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2024/10/20241019143350641-61729319630.png?v=1729319631)





没有回复内容