Aug
28
在用BSB Wizard建工程的时候,会让你选择是HW的Debug Module还是SW的,或者是None。
平时都用HW的,心血来潮研究一下SW的。
首先,不管是选HW的还是SW的,只要有debug module都可以用XMD连接MicroBlaze进行下载或调试。
如果是HW的,那么生成的软件在set compiler option菜单中需要选择executable,并且applications中的 microblaze_0_xmdstub不能选中。
如果是SW的,那么有两种方法分别是用JTAG Interface和Serial Interface
具体介绍看这里:d:/Xilinx101/EDK/doc/usenglish/platform_studio/ps_c_dbg_xmdstub_based_debugging.htm
Set Compiler Option要设置成XmdStub,microblaze_0_xmdstub选择为Mart to Initialize BRAM。
这样就类似于BRAM中有一个Load/Debug程序,把真正的工程当作自程序跑。
注意SW Debug不能设Hardware Breakpoint。
结论:如果不是一定要省这点MDM的资源,还是用HW的吧。
平时都用HW的,心血来潮研究一下SW的。
首先,不管是选HW的还是SW的,只要有debug module都可以用XMD连接MicroBlaze进行下载或调试。
如果是HW的,那么生成的软件在set compiler option菜单中需要选择executable,并且applications中的 microblaze_0_xmdstub不能选中。
如果是SW的,那么有两种方法分别是用JTAG Interface和Serial Interface
具体介绍看这里:d:/Xilinx101/EDK/doc/usenglish/platform_studio/ps_c_dbg_xmdstub_based_debugging.htm
Set Compiler Option要设置成XmdStub,microblaze_0_xmdstub选择为Mart to Initialize BRAM。
这样就类似于BRAM中有一个Load/Debug程序,把真正的工程当作自程序跑。
注意SW Debug不能设Hardware Breakpoint。
结论:如果不是一定要省这点MDM的资源,还是用HW的吧。
Aug
19
在vsim后,run之前,输入命令
可以将所有信号的翻转情况记录下来,如果需要在Wave窗口再添加信号,就不用restart,添加信号,然后再重新run了。
引用
log -r /*
可以将所有信号的翻转情况记录下来,如果需要在Wave窗口再添加信号,就不用restart,添加信号,然后再重新run了。
Jul
11
1. 在EDK里怎么用malloc?要不要include什么头文件?
- 不需要include。直接用就可以了。malloc是包含在lib里的。
2. malloc格式?
double *p = malloc( sizeof *p ); /* 不推荐用 sizeof( double ) */
free(p);
//according to http://cpp.ga-la.com/html/3/3/0510/7.htm
3. 潜在问题?
Xilinx AR30878 - reset后malloc返回null
其实如果malloc后,如果已经free了,那么再怎么reset也无妨。问题只是malloc后没有free,导致.bss内容变化,但reset cpu不重写BRAM/DDR RAM中的.bss,因此需要一段代码在启动时重新加载.bss - 这样.bss就需要先存储到non-volatile中了。很麻烦吧:)
- 不需要include。直接用就可以了。malloc是包含在lib里的。
2. malloc格式?
double *p = malloc( sizeof *p ); /* 不推荐用 sizeof( double ) */
free(p);
//according to http://cpp.ga-la.com/html/3/3/0510/7.htm
3. 潜在问题?
Xilinx AR30878 - reset后malloc返回null
其实如果malloc后,如果已经free了,那么再怎么reset也无妨。问题只是malloc后没有free,导致.bss内容变化,但reset cpu不重写BRAM/DDR RAM中的.bss,因此需要一段代码在启动时重新加载.bss - 这样.bss就需要先存储到non-volatile中了。很麻烦吧:)
Jul
11
此篇宗旨:因为还写了一篇文章叫《Ricky版FPGA常见问题(FAQ)》,内容相近却不同,难免混淆。此篇仅写一些Xilinx提供的一些不引人注意却又有用的小工具和某个工具的属性。
1、coe文件模板
经常会不知道coe文件怎么写,怎么生成,语法怎么回事。原来在%Xilinx%/coregen/data目录下,有coe文件模板,各种作用下的模板,比如DA FIR, BlockRAM等等
2、控制XST插入buffer的方法
1、用buffer_type约束。具体使用方法在XST User Guide
2、手动插入BUFG,然后设置允许使用BUFG的数量,那么手动插入的将拥有高优先级而先占用了BUFG。
3、同时更改所有IO管脚的电平标准
要更改所有IO Pin的IO Standard,可以打开PACE,选择所有管脚(通过shift或ctrl键多选),按右键,Create Constraints,然后自己选需要的吧:)
4、子模块的网表分别存在多个目录怎么办
当子模块以网表形式提供时,NgdBuilder (Translate)会搜索工程目录下的edn, ngc等网表文件。
如果存在子目录中,在Translate属性中的Macro Search Path填写目录名。
如果有多个子目录,不是在Macro Search Path中填写多个目录名,而要在下面一条填写其他Translate option的地方写上 -sd -sd 。每个-sd后只能写一个目录名。这一点在dev.pdf中提到。
5、Timing Analyzer中的Tioop之类的delay type的图形解释?
Tioop之类的延时信息首先是在Datasheet中有详细定义。一般在DC and Switching Characteristics章节中。Datasheet会列出定义以及各个速度等级的延时。
另外在ISE的安装目录doc\usenglish\help\delay_types中还有图形化的解释,只不过不是所有器件都有。
6、xps_archiver 打包用于重建工程的文件
http://www.rickysu.com/bo/post/202/
1、coe文件模板
经常会不知道coe文件怎么写,怎么生成,语法怎么回事。原来在%Xilinx%/coregen/data目录下,有coe文件模板,各种作用下的模板,比如DA FIR, BlockRAM等等
2、控制XST插入buffer的方法
1、用buffer_type约束。具体使用方法在XST User Guide
2、手动插入BUFG,然后设置允许使用BUFG的数量,那么手动插入的将拥有高优先级而先占用了BUFG。
3、同时更改所有IO管脚的电平标准
要更改所有IO Pin的IO Standard,可以打开PACE,选择所有管脚(通过shift或ctrl键多选),按右键,Create Constraints,然后自己选需要的吧:)
4、子模块的网表分别存在多个目录怎么办
当子模块以网表形式提供时,NgdBuilder (Translate)会搜索工程目录下的edn, ngc等网表文件。
如果存在子目录中,在Translate属性中的Macro Search Path填写目录名。
如果有多个子目录,不是在Macro Search Path中填写多个目录名,而要在下面一条填写其他Translate option的地方写上 -sd
5、Timing Analyzer中的Tioop之类的delay type的图形解释?
Tioop之类的延时信息首先是在Datasheet中有详细定义。一般在DC and Switching Characteristics章节中。Datasheet会列出定义以及各个速度等级的延时。
另外在ISE的安装目录doc\usenglish\help\delay_types中还有图形化的解释,只不过不是所有器件都有。
6、xps_archiver 打包用于重建工程的文件
http://www.rickysu.com/bo/post/202/
Jul
11
原来还有这么个小工具,可以把XPS所管理的文件备份并压缩成zip文件,包含重建一个EDK工程所需要的最少量的文件,方便重建工程、版本管理、工程分享。
叫啥名 - xps_archiver
在哪里 - EDK安装目录下bin/nt/
都谁有 - 我看到9.1 9.2 10.1都有,8不知道
怎么用 - 打开cmd,cd到工程目录,xps_archiver -o xx.zip xx.xmp
产生啥 - archiver目录下产生xx.zip
叫啥名 - xps_archiver
在哪里 - EDK安装目录下bin/nt/
都谁有 - 我看到9.1 9.2 10.1都有,8不知道
怎么用 - 打开cmd,cd到工程目录,xps_archiver -o xx.zip xx.xmp
产生啥 - archiver目录下产生xx.zip







