Apr 15
如果你还没有注意到这些新工具,或许可以去看一下:

Xilinx Troubleshoot Center
Troubleshoot Content Portal列举了一些碰到疑难问题是需要检查的方面,比如Clocking Debug Guide等,还罗列了软件工具的Known issue list。
Configuration Problem Solver通过一系列问题检查Configuration过程中可能遇到的问题。

FPGA Design Best Practices
通过一系列视频教程告诉大家怎样才是一个好的设计,设计的时候需要考虑什么,改怎样利用时钟资源等等。
Tags:
Apr 9
在Xilinx Forum上有一则关于Bootloader的讨论,人们说为什么用了Bootloader以后interrupt就不起作用了呢?

很久之前回了贴,回头一看竟变成了热贴。跟人讨论了之后才发现我原来把EDK自带的bootloader和Xapp1053中的Bootloader搞混淆了。

还记得我在《跟着Xapp1053继续做》一文中种种Customize吗?在那时我就提过Xapp1053中的Bootloader是不能处理中断的,于是忙乎了老半天把中断的相关内容复制到BRAM中。

忙乎了老半天,发现标准的Bootloader其实并没有这个缺陷。

关键在于标准bootloader使用SREC保存ELF信息。而Xapp1053的实现则使用了二进制bin的方式。
SREC中同时包含地址信息和数据;
BIN文件中只有数据没有地址。

因此用标准bootloader解析SREC后复制到目标地址,就跟直接用XMD下载ELF是一样的结果;
而用Xapp1053 Bootloader时,目标地址是手动指定的,并不是ELF中原生的地址,这样就有可能产生错误了。

【参考资料】
SREC: http://en.wikipedia.org/wiki/SREC_(file_format)
Tags:
Apr 1
问题:通常我们设置breakpoint只能设置在某个函数或者某条指令上,那么我能不能在某个变量变化的时候让程序停下并让GDB指示现在停在哪里?

解决:通过XMD的Watch功能。

怎样使用watch功能?
- EDK --> MicroBlaze --> Configure IP --> Debug --> Number of Write/Read Address Watchpoints 设置为需要的数目,因为watch功能需要硬件支持
- 在使用GDB连接XMD并下载程序之后,在XMD输入相应的watch命令:
watch {r | w} <address> [<data>]

引用
Example Usage:
watch r 0x400 0x1234
watch r 0x40X 0x12X4
watch r 0b01000000XXXX 0b00010010XXXX0100
watch r 0x40X

说明:
Sets a read or write watchpoint at address. If the value compares to data, stop the processor.
•  Address and Data can be specified in hex “0x” format or binary “0b” format.
•  Don’t care values are specified using X.
•  Addresses can be only of contiguous range.
•  Default value of data is 0xXXXXXXXX. That is, it matches any value.

- 在GDB中Continue,程序就会在相应的地方停下,并在XMD窗口显示如下内容:
引用
XMD% watch w 0xbe4
XMD% Write Watchpoint 1 Hit, Processor Stopped at 0x000002e4


后续问题1: 这个watch和GDB图形程序中的Watch Expression有什么区别?
Watch Expression只能看到Expression的内容,不会在内容改变时将停下。

后续问题2: 怎样找到某个variable的地址?
方法1: 定义一个指针,把指针指向这个variable,就能得到地址了
方法2: 在GDB的Watch Experession中使用取地址符将这个variable的地址取出来。
方法3: 把这个变量定义为全局变量,那么地址在objdump的结果中就能直接找到。

【参考资料】
est_rm.pdf --> XMD章节
Mar 19
研究了一下Xapp925和EPC Core。一些笔记和问题。
Mar 18
Walkie同学详细阐述了怎么在EDK系统中用标准的scanf()函数,提醒大家要注意heap大小的设置,并提供了简化的scanf()代码。推荐阅读。

现在就去看看 --> 在xilinx的FPGA系统中scanf函数的使用
分页: 5/35 第一页 上页 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]