打印

关于MSP430和CCS的几个难度比较大的问题!!!

[复制链接]
2475|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
johdon23|  楼主 | 2015-4-9 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 johdon23 于 2015-4-9 17:26 编辑

- 问题1:个人的理解,MSP430复位之后,根据复位中断向量首先会调用_c_int00_noexit()函数。
               我是通过断点监控预启动程序 _system_pre_init(),发现它是被位于$\ccsv6\tools\compiler\msp430_4.3.3\lib\src路径下的boot.c
               中的_c_int00_noexit()函数所调用,因而得出此结论。
               所以可以认为_c_int00_noexit()函数的首地址是整个程序的入口地址。
               这一点,在编译得到的map文件中也得到了印证。在map文件的最开始,有如下描述:
               ENTRY POINT SYMBOL: "_c_int00"  address: 0000e000                  这个地址与map文件中描述的_c_int00_noexit()函数的地址一致!
               我现在的问题是,_c_int00_noexit()函数的这个地址,是否可以按照需要进行指定??
               我尝试了修改boot.c文件中对_c_int00_noexit()函数的定位,但是不起作用!??

- 问题2:如何在汇编跳转指令中调用C语言中定义的地址变量。我有试过网上找到的几篇**介绍的方法,行不通。能否给出具体例程?

- 问题3:如何在汇编跳转之后,返回之前的程序地址。我测试发现,强行用汇编跳转到一个函数的首地址,函数执行完后,无法返回之前的地址,程序死了。

- 问题4:如果定义了某个函数,但它在程序中没有被调用,那么编译之后,CCS不会给这个函数分配相应的地址空间。
               但我只想为这个函数分配一个地址空间,而不想去调用它,可行吗?
               对于这个问题,大家如果有兴趣,又装了CCS的话,很容易就试出来了:
               定义一个函数,但程序里不去调用它,然后编译,通过查看map文件,可以发现map文件根本没有为这个函数分配任何的地址空间。

相关帖子

沙发
shenmu2012| | 2015-4-9 20:05 | 只看该作者
如何在汇编跳转指令中调用C语言中定义的地址变量?有点难度的。

使用特权

评论回复
板凳
dirtwillfly| | 2015-4-9 22:26 | 只看该作者
第一个问题需要查查资料才能回答

使用特权

评论回复
地板
dirtwillfly| | 2015-4-9 22:29 | 只看该作者
第二个问题,建议固定这个变量的储存位置,这样比较容易处理和使用

使用特权

评论回复
5
dirtwillfly| | 2015-4-9 22:32 | 只看该作者
第三个问题,正常调用一个函数,除了开始进入函数的入口地址之外,最后还会返回到原来的进程或者地址。
使用汇编直接跳到一个函数的首地址,执行完毕,记得加上返回的汇编代码

使用特权

评论回复
6
dirtwillfly| | 2015-4-9 22:35 | 只看该作者
第四个问题,可以实现的。注意ccs的优化选项

使用特权

评论回复
7
cowboy2014| | 2015-4-30 11:35 | 只看该作者
总结的挺好的,学到不少知识

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝