我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
Eric Ma:
yutian,
芯片有没有加密?
有没有从Flash中copy一些代码在RAM中运行,Memcpy函数有没有及时调用,即在访问这些函数前就已经复制完成了。
你可以在main函数中使用GPIO翻转的测试代码,然后用仿真器观察GPIO口,比如把GPIO0翻转放在main的第一条语句,如果有翻转,表示能够找到main入口,再使用相同方法,定位一下程序是不是在哪里跑飞。
Eric
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
yutian li:
回复 Eric Ma:
芯片没有加密,有几个子程序搬移到RAM中运行。我是在main函数开始,先 InitSysCtrl();然后就是memcpy()函数和 InitFlash();下面才开始别的函数,这样做有问题吗?
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
Eric Ma:
回复 yutian li:
yutian,
flash 的CMD文件是不是TI例程中的,工程中有code start文件没有?把你的memcpy函数贴上来。
另外可以根据我建议的GPIO硬件测试法,看程序在哪里跑飞。
Eric
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
yutian li:
回复 Eric Ma:
CMD文件好像不是TI例程中的,但是之前别的项目也用过,没有问题。工程中添加了DSP281x_CodeStartBranch.asm文件,使用的memcpy函数是系统自带的那个默认的函数,之前的项目也是这样用的,也是可以的。GPIO硬件测试法还没做呢,正准备做,谢谢
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
yutian li:
回复 Eric Ma:
我刚才试了,连着仿真器在FLAH中运行,程序也没问题。GPIO测试也做了,有点问题,在程序中将对应的GPIO口拉低,但是烧写进去后,观察到的却不是一个完全的低电平,中间有一小段的高电平,可能是这个影响的吗?
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
Eric Ma:
回复 yutian li:
yutian,
memcpy函数是否跟下面是一一致的?
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);
Eric
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
Eric Ma:
回复 yutian li:
yutian,
不要直接拉低电平吧,你直接在main的第一条语句那里 翻转GPIO100次,看能够进入main。如果你Flash仿真没有问题,那你直接reset CPU,不要restart,然后选择run to main,能够找到main入口。
再次确认一下memcpy。
Eric
我在做一个项目,使用到了XINTF进行外扩,在连着仿真器运行时都没问题,但是一旦烧写到片子内后,就出现问题,实现不了基本的功能,这是怎么回事?2812的仿真运行和烧写后运行存在哪些区别啊?谢谢
yutian li:
回复 Eric Ma:
不好意思,前几天出去玩了,这是我用的memcpy函数,和你那个不一样,但是应该远离一样吧?
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, &RamfuncsLoadEnd – &RamfuncsLoadStart);