学了两年的ARM,都不知道学了什么,今天,弄一个汇编的程序更让我纠结,不但,汇编语言看的不是太懂,就连错误也犯得相当的低级,看来,在IT界传言的-----汇编语言不会编也是挺靠谱的,接着咱就看看我这个小菜鸟的第一个汇编程序吧
一、汇编语言的准备-----编辑器RealView MDK Keil uVision 4.14的安装
1、首先是双击Keil u Vision 4.14后的欢迎界面
2.next后是接受安装的界面
3、接着next后是自定义的安装目录界面
4、接着next后是填写用户的信息界面
5、接着next后是成功安装的界面
6、接着finish后就可以成功安装了MDK ARM V4,14
7、finish后就会显示短暂的安装界面
8、创建一个新工程project-------new --------u Vision project 在hello world 文件夹里创建hello.uvproj 工程
9、为工程选择一个CPU我选择的是samsung的s3c2410A
10、 注意!!!注意!!!这里是简单的汇编程序,因此不需要添加启动代码。不然就会再编译的时候出现以下错误
hello.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.
11、选择开发工具project---manage---components
12、ok后建立汇编程序源文件 file---new test.s (汇编程序源文件) test.sct(分散加载文件) DebugInRam.ini(调试脚本文件)文件
和设置编译连接控制选项基本配置Target界面(project---option for target) ,顺便把test.s 文件添加到工程里工程-------右键----Add---group -----add files to
13、基本配置 ----- Linker
14、基本配置--Debug ----
15、编译连接工程 projiect --->Build target (F7快捷键) 调试工程 Debug ----start\stop Debug Session (Ctrl + F5 快捷键)
备注:
test.s文件
addr equ 0x31000100
preserve8
area reset,code,readonly
entry
arm
start ldr r0,=addr
mov r1,#10
mov r2,#20
add r1,r1,r2
str r1,[r0]
b start
end
test.sct文件
LR_ROM1 0x30000000
{
ER_ROM1 0x3000000 0x1000000
{
*.o(RESET,+First)
*(InRoot$$Sections)
.ANY(+RO)
}
RW_RAM1 0x31000000 0x01000000
{
.ANY(+RW+ZI)
}
RW_IRAM 0x40000000 0x00001000
{
.ANY(+RW+ZI)
}
}
DebugInRam.ini文件
FUNC void Setup(void)
{
PC=0x030000000
}
map 0x00000000,0x00200000 read write exec
map 0x30000000,0x34000000 read write exec
Setup();