本文共 2106 字,大约阅读时间需要 7 分钟。
一、CodeWarrior for RVDS建立工程
1.File->New->Project
选ARM EXecutable Image;Project name填test1.mcp,Location填C:\work\6410\test1\
二、CodeWarrior for RVDS添加源文件
test1.mcp窗口的空白处点击右键,选择Add Files、选test1.s。
三、CodeWarrior for RVDS的DebugRel Setting设置
Edit->DebugRel Setting
1.Target(目标)设置
Target Settings:Linker选择ARM RealView Linker;Post-Linker选择ARM RealViews FromELF。
2.Language Settings(编译语言)设置
RealView Assembler(汇编)->Target:Architecture or选ARM1176JZF-S。
RealView Compiler(C语言)->Target:Architecture or Processor选ARM1176JZF-S。
3.Linker(链接)设置
RealView Linker->Output:
Linkertype选Simple;Simple image中RO Base填0x50200000.RealView FromELF->Output:
Output format选Plain binary;Output file name选test1.bin。4.Debugger(调试器)设置
RealView Debugger->Choose Debugger:Choose a Debugger选AXD(ARM eXtended Debugger)。
RealView Runner->Choose Debugger:Choose a Debugger选AXD(ARM eXtended Debugger)。
四、CodeWarrior for RVDS编译
Project->make
五、CodeWarrior for RVDS调出AXD调试器
Project->Dwbug
六、AXD分析
1.说明:AXD需要的是C:\work\6410\test1\Debug\test1.axf;
2.AXD打开寄存器和内存显示
Processor Views->Rigister;
Processor Views->Memory。
3.看看源程序test.s
COUNT EQU 0x50003100 ; 宏定义COUNT,其值是0x50003100 AREA start,CODE,READONLY ; 声明代码段 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令START LDR R1,=COUNT ; 存储器访问指令:将立即数COUNT值存储到R1寄存器 MOV R0,#0 ; 存储器访问指令:将立即数0装载到寄存器R0 STR R0,[R1] ; 存储器访问指令:LDR的逆操作,将R0寄存器中的值存储到R1所指的内存地址 LOOP LDR R1,=COUNT ; 存储器访问指令:将COUNT值存储到R1寄存器 LDR R0,[R1] ; 存储器访问指令:STR的逆操作,将R1所指内存地址中的值存储到R0寄存器 ADD R0,R0,#1 ; 算数逻辑运算指令:将R0中的值加1后重新赋给R0 STR R0,[R1] ; 存储器访问指令:LDR的逆操作,将R0寄存器中的值存储到R1所指的内存地址 B LOOP END
说明:
ARM时RISC结构,数据从内存到CPU之间的移动只能使用LDR/STR指令来完成;
MOV指令只是在寄存器之间的移动数据/把立即数移动到寄存器。
编译和连接器目录:
C:\Program Files\ARMRVDS\RVCT\Programs\2.2\349\win_32-pentium\
===================================================================================================================================
如果不用RVDS的集成开发环境,以下是Window平台armcc编译器在DOS下的Makefile:
all: armasm -o test.o test.s --debug --keep --cpu=ARM1176JZF-S armlink -o test.axf test.o --ro_base=0x50200000 fromelf -o test.bin --bin test.axfclean: del *.o *.axf *.bin完后在AXD下,load该文件test.axf即可。
转载地址:http://jegai.baihongyu.com/