博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《tiny6410裸机程序》第三章:基础汇编test1
阅读量:4180 次
发布时间:2019-05-26

本文共 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/

你可能感兴趣的文章
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
[转]C语言printf
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>