This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS load程序的原理



大师们,小弟理解这个load是这样:CCS会更具定义的CMD文件把Out文件load到CMD文件规定的位置。然后我不理解CSS怎么去把PS指针跳到main函数那。我遇到的问题就是:我加载程序后ps的指针没有跳到main函数,而是直接跑起来了。我就人为的暂停ccs,然后修改ps为main函数的指针,再让其运行。请问大师们,怎么解决这类问题,这个load程序后ps的值(指针)是怎么确定跳到main函数的。这个跟硬件dsp的配置有关吗?我配置的是从emif 16  nor flash启动的。谢谢。附件为加载后直接跑起然后暂停的位置。

  • 上面的ps应该是core register的pc。

  • ccs 按照cmd文件load程序到dsp相映的为之后会自动的跑一段初始化程序,如建立c环境,或者对dsp做一些初始化等。然后才跳转到main函数。如果前段自动加载跑的初始化程序出了问题,就会出现load程序后乱跑的情况。就不会load程序后跳到main函数那。

  • bomer你好,我是贴了个帖子说网口的那位,你能详细的跟我说下,我应该在哪里修改switch函数选择sgmii0呢?是gel文件里面还是我跑的那个hello world例程里呢,我都么有找到额? 谢谢啦

  • 在平台初始化里面有对SGMII初始化的,你可以仔细看看。这个没有去弄。

  • 奥,可是平台初始化函数是封装好了的,程序里直接调用,修改不了啊。。。 bomer,我的QQ是495525230,能加我好友么,方便交流交流~  谢谢啦

  • Bomer,

    看起来你应该已经理解了这个问题。

    在main之前的代码是建立C环境的代码,这个代码会初始化一下常量,有可能还会初始化部分变量。如果这个过程中出现问题,那么程序就不会执行到main。

    如果需要调试这个问题,你需要把工程属性中关于程序加载以后自动执行到main的属性去掉,这样程序会停在c_int00处。

    有可能导致这类问题的原因是

    . 常量或者变量放在了没有初始化的空间,如DDR

    . 多核的间的数据段分配到相同空间等

    可能还有其他情况,欢迎补充。

  • 你好,我也遇到了这个问题,但是现在解决了,不知道能否帮得到你。

    我重新加载了一下gel文件,然后在Scripts选项中选中了EVMC6678 Init Functions 成功之后程序就自动跳转到main函数中了。