原创
olink改名为vsllink,已经正式加入到OpenOCD中
由于google里可以搜索到其他的olink,所以,Versaloon中的OpenOCD支持部分改名为vsllink -- VerSaLoon-LINK。
从OpenOCD SVN1291之后,OpenOCD已经集成了vsllink的支持,这样,补丁文件只是对OpenOCD的一些修正,而不用包括vsllink的支持了。
对OpenOCD的修正说明:
1.src/Makefile.am中,把$(top_srcdir)/guess-rev.sh改为sh $(top_srcdir)/guess-rev.sh。
在MinGW的MSYS中,单单执行./guess-rev.sh会提供找不到文件,需要执行sh ./guess-rev.sh
2.src/target/armv7m.h中,把ARMV7_GDB_HACKS去掉(把前面的#if 1改为#if 0)。
这里的GDB_HACKS主要是原来GDB不支持CM3核的芯片,所以使用的是ARM7的命令界面,所以需要Hack一下。目前几个支持CM3的GCC Toolchain的最新版本基本都使用了GDB 6.8,这个Hack就可以去掉了。而且,如果使用IAR作为开发环境,就一定需要去掉这个Hack。
3.src/target/cortex_swjdp.c中的一些代码。
以前OpenOCD收到一个Report,说是这里有问题,从修改处的注释也可以看出,修改者也不明白什么会出问题,我这里经过测试发现这个地方并没有引起问题,反而使得速度减少超过20%,所以就去掉了。
4.src/target/target.c中的memory访问函数。
这里的问题还是和我原来发现的GDB中的一个Bug有关,就是对于某些芯片,复位后,lr(连接寄存器)里的数据是0xffffffff,所以GDB会在这个位置(实际位置为0xfffffffe,因为CM3的指令地址的align为2,既最低位为0)放置中断。所以GDB会发出对0xfffffffe出的memory操作的代码(发现是从0xfffffffe开始读取4字节,这个显然是自己骗自己)。这里把这个LOG_ERROR改为LOG_WARNING,这样上位机就不会报错,只是发出一个警告,以后等到GDB修复了这个Bug后,就可以去掉这里的修噶了。
文章评论(0条评论)
登录后参与讨论