[ZLG-MCU] 关于crossstudio for arm的汇编

[复制链接]
 楼主| yeool 发表于 2007-1-8 10:27 | 显示全部楼层 |阅读模式
OSPendSV:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;psp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PSP&nbsp;is&nbsp;process&nbsp;stack&nbsp;pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CBZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;OSPendSV_nosave&nbsp;//skip&nbsp;register&nbsp;save&nbsp;the&nbsp;firsttime<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R0,&nbsp;#0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;{&nbsp;r4&nbsp;-&nbsp;r11&nbsp;}&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;出错了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。<br />OSPendSV_nosave:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSH&nbsp;&nbsp;&nbsp;&nbsp;{R14}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;&nbsp;need&nbsp;to&nbsp;save&nbsp;LR&nbsp;exc_return&nbsp;value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;__OS_TaskSwHook&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;&nbsp;OSTaskSwHook();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BLX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{r14}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;出错了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,&nbsp;__OS_PrioCur&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;&nbsp;OSPrioCur&nbsp;=&nbsp;OSPrioHighRdy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R5,&nbsp;__OS_PrioHighRdy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDRB&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R5]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STRB&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R4]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R4,&nbsp;__OS_TCBCur&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;&nbsp;OSTCBCur&nbsp;&nbsp;=&nbsp;OSTCBHighRdy;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;__OS_TCBHighRdy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R6]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R6,&nbsp;[R4]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;[R6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;{R4-R11}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;出错了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R0,&nbsp;#0x20<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;psp,&nbsp;R0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;&nbsp;load&nbsp;PSP&nbsp;with&nbsp;new&nbsp;process&nbsp;SP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR,&nbsp;LR,&nbsp;#0x04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;出错了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP<br /><br />以上代码在iar上编译通过但在Crossstudio&nbsp;for&nbsp;arm上出错了:错误如下:<br /><br />Building&nbsp;“ucTest”&nbsp;in&nbsp;configuration&nbsp;“THUMB&nbsp;Flash&nbsp;Debug”&nbsp;—&nbsp;4&nbsp;errors<br />&nbsp;&nbsp;Assembling&nbsp;os_cpu_a.asm&nbsp;—&nbsp;4&nbsp;errors<br />&nbsp;&nbsp;&nbsp;&nbsp;D:/soft/lm3s/ucProg/uCOS-II/Ports/arm-cortex-m3/Generic/IAR/os_cpu_a.asm:&nbsp;Assembler&nbsp;messages:<br />&nbsp;&nbsp;&nbsp;&nbsp;Error:&nbsp;lo&nbsp;register&nbsp;required&nbsp;--&nbsp;`stm&nbsp;r0,{r4-r11}'<br />&nbsp;&nbsp;&nbsp;&nbsp;Error:&nbsp;invalid&nbsp;register&nbsp;list&nbsp;to&nbsp;push/pop&nbsp;instruction&nbsp;--`pop&nbsp;{r14}'<br />&nbsp;&nbsp;&nbsp;&nbsp;Error:&nbsp;lo&nbsp;register&nbsp;required&nbsp;--&nbsp;`ldm&nbsp;R0,{R4-R11}'<br />&nbsp;&nbsp;&nbsp;&nbsp;Error:&nbsp;unshifted&nbsp;register&nbsp;required&nbsp;--&nbsp;`orr&nbsp;LR,LR,#0x04'<br />Build&nbsp;failed<br /><br />有没有crossstudio&nbsp;for&nbsp;arm&nbsp;关于汇编的文档啊,或者gcc关于汇编的也行,<br />还有gcc的主页是什么啊?
zlgarm 发表于 2007-1-12 08:48 | 显示全部楼层

CrossWork编译出错-解决办法

在程序开始地方加入&quot;.syntax&nbsp;unified&quot;,编译就不会出错,如下所示:<br /><br />.code&nbsp;16<br />.align&nbsp;0<br />.thumb_func<br />.syntax&nbsp;unified<br /><br /><br />OSPendSV:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MRS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;psp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PSP&nbsp;is&nbsp;process&nbsp;stack&nbsp;pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CBZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;OSPendSV_nosave&nbsp;//skip&nbsp;register&nbsp;save&nbsp;the&nbsp;firsttime<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;R0,&nbsp;#0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;{&nbsp;r4&nbsp;-&nbsp;r11&nbsp;}&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;出错了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.
 楼主| yeool 发表于 2007-1-8 13:24 | 显示全部楼层

以下是cortexM3的文档,其中有关如STM的例句

同样的语句为什么crossStudio会报错呢
 楼主| yeool 发表于 2007-1-9 10:58 | 显示全部楼层

没有人知道吗?

是不是gcc对于cortex&nbsp;m3支持不够好啊?
zlgarm 发表于 2007-1-9 18:35 | 显示全部楼层

32位 stm,pop错误

&nbsp;&nbsp;“stm&nbsp;r0,&nbsp;{&nbsp;r4&nbsp;-&nbsp;r11&nbsp;}”和&nbsp;pop&nbsp;{r14}&nbsp;是32位Thumb2指令,初步估计是CrossStudio对16位Thumb和32位Thumb2指令,交互编译不太完善。我们已向Rowley公司提出此问题。
 楼主| yeool 发表于 2007-1-9 19:50 | 显示全部楼层

我想也是的

因为同样的语句在iar和keil下都没有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

171

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部