擦鞋匠 发表于 2018-8-30 09:50:22

请教msp430f5438a(IAR)中如何设置栈8字节(双字)对齐

之前使用stm32f103(mdk),需要使用如下语句(有些芯片默认已经开启栈双字对齐特性):
SCB->CCR |= SCB_CCR_STKALIGN_Msk;

请教在msp430f5438a(iar)中如何开启这个特性?非常感激!

wye11083 发表于 2018-8-30 10:49:21

msp430好像是16位机,栈是几个字节的不清楚哎,没用过,然而你真的需要去考虑栈对齐的问题吗?

擦鞋匠 发表于 2018-8-30 13:06:25

本帖最后由 擦鞋匠 于 2018-8-30 13:07 编辑

wye11083 发表于 2018-8-30 10:49
msp430好像是16位机,栈是几个字节的不清楚哎,没用过,然而你真的需要去考虑栈对齐的问题吗? ...

首先,感谢阁下回复。

目前我不能确定一定就是这个原因。

额,实际上我是将之前的mdk工程转到iar工程下(因为使用msp430单片机,mdk不支持)。

我现在遇到的问题是:在no errer no waning 前提下,debug (在main()开始位置)不能出现程序光标指针,我也是一直在排查,目前还未找到真正的原因。

wye11083 发表于 2018-8-30 13:54:15

擦鞋匠 发表于 2018-8-30 13:06
首先,感谢阁下回复。

目前我不能确定一定就是这个原因。


这样啊,你是要在线调试么,你先查编译选项,看看debug有没有打开,然后再看看IAR怎样挂JTAG调430。肯定有办法的。

擦鞋匠 发表于 2018-8-30 14:44:07

wye11083 发表于 2018-8-30 13:54
这样啊,你是要在线调试么,你先查编译选项,看看debug有没有打开,然后再看看IAR怎样挂JTAG调430。肯定 ...

非常感谢阁下指教。

额,初次接触msp430(因此也是初次接触iar),有个很棘手的问题,还想麻烦阁下指教!

我尽可能把问题描述的详细一点。

图1:


<1>图1中如果第315行代码如果注释掉(316~319行代码也注释掉),现象如图2和图3所示:可以进入main()。
<2>图1中如果第315行代码如果未注释(316~319行代码也注释掉),现象如图4和图5所示:不可以进入main(),并且汇编窗口显示<unavailable when executing>。

个人感觉不像是内存溢出或者堆栈溢出,我使用的是msp430f5438a,有16K RAM 和 256K FLASH。想请教下为什么会出现图4中的现象(似乎程序指针已经跑飞)?

图2:


图3:


图4:


图5:

xiaomu 发表于 2018-8-30 16:33:22

static menu_item_t item_arr_m[] ->> static const menu_item_t item_arr_m[]


增加const, 把数组放到flash区,应该可以运行正确

定义看下,感觉ram 分配有问题, 看一下map文件,分析一下ram的分配

true_elecom 发表于 2018-8-31 11:26:49

xiaomu 发表于 2018-8-30 16:33
static menu_item_t item_arr_m[] ->> static const menu_item_t item_arr_m[]




{:biggrin:}
页: [1]
查看完整版本: 请教msp430f5438a(IAR)中如何设置栈8字节(双字)对齐