大师们,小弟理解这个load是这样:CCS会更具定义的CMD文件把Out文件load到CMD文件规定的位置。然后我不理解CSS怎么去把PS指针跳到main函数那。我遇到的问题就是:我加载程序后ps的指针没有跳到main函数,而是直接跑起来了。我就人为的暂停ccs,然后修改ps为main函数的指针,再让其运行。请问大师们,怎么解决这类问题,这个load程序后ps的值(指针)是怎么确定跳到main函数的。这个跟硬件dsp的配置有关吗?我配置的是从emif 16 nor flash启动的。谢谢。附件为加载后直接跑起然后暂停的位置。
bomer:
上面的ps应该是core register的pc。
jack hu:
bomer你好,我是贴了个帖子说网口的那位,你能详细的跟我说下,我应该在哪里修改switch函数选择sgmii0呢?是gel文件里面还是我跑的那个hello world例程里呢,我都么有找到额? 谢谢啦
bomer:
回复 jack hu:
在平台初始化里面有对SGMII初始化的,你可以仔细看看。这个没有去弄。
jack hu:
回复 bomer:
奥,可是平台初始化函数是封装好了的,程序里直接调用,修改不了啊。。。 bomer,我的QQ是495525230,能加我好友么,方便交流交流~ 谢谢啦
Wei:
回复 jack hu:
Bomer,
看起来你应该已经理解了这个问题。
在main之前的代码是建立C环境的代码,这个代码会初始化一下常量,有可能还会初始化部分变量。如果这个过程中出现问题,那么程序就不会执行到main。
如果需要调试这个问题,你需要把工程属性中关于程序加载以后自动执行到main的属性去掉,这样程序会停在c_int00处。
有可能导致这类问题的原因是
. 常量或者变量放在了没有初始化的空间,如DDR
. 多核的间的数据段分配到相同空间等
可能还有其他情况,欢迎补充。
BO ZHAI:
回复 Wei:
你好,我也遇到了这个问题,但是现在解决了,不知道能否帮得到你。
我重新加载了一下gel文件,然后在Scripts选项中选中了EVMC6678 Init Functions 成功之后程序就自动跳转到main函数中了。