ARM问答
浮点数寄存器(F0-F7...)",2104
是否具有这些寄存器
2.如果EasyArm不支持浮点运算,而我的程序需要用到浮点运算,请问可以实现吗
A:1.没有.
2.用C就可以用浮点运算.
第61问:
Q:EASYARM2104的例子程序怎么都是调用C写的程序,汇编那个怎么没用的啊
A:按如下步骤进行处理:
1.在项目管理窗口中删除原来的所有文件;
2.在项目管理窗口中增加汇编文件*.S;
3.编译链接,调试.
第62问:
Q:请问版主:在AXD调试软件中,我单步运行到一定时候,我想让自己编的软件从复位处
重新运行, 在AXD软件中,EXECUTE栏目中有单步,连续,运行到光标处等功能,但
无复位功能,如果要实现此功能,如何操作
A:我也没有发现,目前只能用重新装载的操作实现.
第63问:
Q:在AXD调试中,通过从jtag接口,连接上lpc2106,出现如下信息:
TKSimulator for ADS, V1.2, 2003/08
Software Supplied by: ZLGMCU
ARM7TDMI-S, Little Endian
在从file|load imgage...文件,出现两种情况:
1.正常,完全能调试;
2.出现问题,如下:
RDI Warning 00254: Unimplemented RDI message
请问,这是错在哪里 如何解决 谢谢!
A:可能是电源或其他接插件接触不良引起.
第64问:
Q:请教几个问题:
1.移植中底层接口里的__swi关键字在SDT中能用吗
2.为什么在勘误文档中时钟节拍服务子程序里去掉了开中断及关中断的宏
3.时钟节拍中断的优先级应该设为最高吗
16
A:1.不知,请自己看一看软件自带文档.
2.因为中断服务程序中肯定是关中断的.
3.不必.
第65问:
Q:arm汇编中的中括号是什么意思 比如下面的例子中括号是什么作用呀
[ PLLONSTART
ldr r0,=PLLCON
ldr r1,=((0xe8<12)+(0x4<4)+0x2)
str r1,[r0]
]
A:等效于:
IF PLLONSTART
ldr r0,=PLLCON
ldr r1,=((0xe8<12)+(0x4<上电->启动AXD.现象:数码管能
显示不断变化的数字0--F,但是AXD的连接失败,提示"DBE Warning 00041: ....".
重复试了几遍,现象相同.
请教原因以及对策.
A:刚才把我机器的Win2K系统的用户属性从"PowerUser"修改为"Administrator"就没
问题了.可能是ADS/AXD安装的时候用了Administrator权限,在"PowerUser"下工作
有问题吧.
如果哪位老兄有类似问题,不妨试一下这个方法.
第67问:
Q:在Init.s中有这样一段:
Reset
BL InitStack ;初始化堆栈
BL TargetResetInit ;目标板基本初始化
B __main ;跳转到c语言入口
谁知道__main()函数的具体内容
假如我不需要调用库函数的话,是否可以改为B main
A:看调试是汇编代码里有__main(),组成成分与一些链接选项有关.
可以.但是全局变量初始化不了.
17
第68问:
Q:我在C中嵌入这样一条语句
__asm
{
MRS R4,CPSR;
STMFD SP!,{R4};
ORR R4,R4,0x80;
MSR CPSR_cxsf,R4
}
会出新报错"illegal write to sp"版主和各位大侠有什么办法解决阿
A:嵌入汇编不能使用SP.
第69问:
Q:请问 ADS如下的编译错误是什么意思
L6221E:Execution region ER_RO overlays with Execution region ER_ZI
A:程序段内存分配可能有问题,RO(只读),ZI(0初始化)
第70问:
Q:在axd中有没有运行程序的时间计算器 keil中就有那样的东西.
A:有的,不过不是时间而是执行周期,可以换算成时间.在debugger internals中,具体
可以参考帮助文档.
第71问:
Q:我最初的init.s中没有加入heap的分配和__user_initial_stackheap函数,结果程序
跳到SWI中死循环.我把他们加入后就好了.或者不加入他们,把B __main改为B main
也可以.请问何解 另外,就算目标板会陷入死循环,但是用软件仿真却可以正常运
行.何解
A:堆的位置没有分配到有效的RAM中.
第72问:
Q:在ARM汇编语言中,对立即数的有要求,我记得原来没有这样一说了.现在反而糊涂了,
用立即数时候,很小心很忌讳,不回象51下随心所欲的使用了,有对立即数熟悉的朋友
站出来给大家释疑.
A:如使用"非法数据可以使用lrd送到寄存器"的方法.
首先在存储器中定义一个常量,再ldr进去,编译器是这样弄的.可以看下面语句反汇
编的区别;
int z=0x101;
int z=0Xff;
18
第73问:
Q:请教各位:我在AXD中单步运行一段程序后,想回到程序的开始重新运行,除了重新加
载,
还有其他方法或按键
A:你的程序有多大 程序在Flash运行点击Reload Current Image也不需要1秒吧~
或在代码窗口Set PC=0
第74问:
Q:在《ARM微控制器基础与实战》程序清单6.22的376页的OSIntCtxSW_1中:
LDR R4, [R6]
ADD SP, R4, #68
LDR LR, [SP, #-8]
MSR CPSR_c, #(NoInt | SVC32Mode)
MOV SP, R4
LDMFD SP!, {R4,R5}
LDR R3, =OsEnterSum
STR R4, [R3]
MSR SPSR_cxsf, R5
LDMFD SP!, {R0-R12, LR, PC }^
请问高手:LDMFD SP!, {R0-R12, LR, PC }^是不是恢复新任务工作寄存器和工作模式,
LR寄存器一并得到恢复,那么ADD指令后面的 LDR LR, [SP, #-8] 指令是不是可
以去掉
A:两者恢复的是两个不同处理器模式的LR.
ARM问 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)