ARM汇编语言初学----之Keil uVision 4.14的安装与使用

时间:2022-06-21 01:10:06

       学了两年的ARM,都不知道学了什么,今天,弄一个汇编的程序更让我纠结,不但,汇编语言看的不是太懂,就连错误也犯得相当的低级,看来,在IT界传言的-----汇编语言不会编也是挺靠谱的,接着咱就看看我这个小菜鸟的第一个汇编程序吧

一、汇编语言的准备-----编辑器RealView MDK Keil uVision 4.14的安装

 1、首先是双击Keil u Vision 4.14后的欢迎界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


2.next后是接受安装的界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


3、接着next后是自定义的安装目录界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


4、接着next后是填写用户的信息界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


5、接着next后是成功安装的界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


6、接着finish后就可以成功安装了MDK ARM V4,14


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


7、finish后就会显示短暂的安装界面


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


8、创建一个新工程project-------new --------u Vision project 在hello world 文件夹里创建hello.uvproj 工程


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


9、为工程选择一个CPU我选择的是samsung的s3c2410A


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


10、  注意!!!注意!!!这里是简单的汇编程序,因此不需要添加启动代码。不然就会再编译的时候出现以下错误

        hello.axf: Error: L6411E: No compatible library exists with a definition of startup symbol __main.


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


11、选择开发工具project---manage---components


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


12、ok后建立汇编程序源文件 file---new     test.s (汇编程序源文件)  test.sct(分散加载文件)   DebugInRam.ini(调试脚本文件)文件

        和设置编译连接控制选项基本配置Target界面(project---option for target) ,顺便把test.s 文件添加到工程里工程-------右键----Add---group  -----add files to


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


13、基本配置 ----- Linker


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


14、基本配置--Debug  ----   


ARM汇编语言初学----之Keil uVision 4.14的安装与使用


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();