[国嵌笔记][024][ARM汇编编程概述]

汇编程序用途

1.在bootloader与内核初始化时,还没有建立C语言运行环境,需要用到汇编程序

2.在对访问效率要求很高的情况下,需要用到汇编程序

ARM汇编分类

1.ARM标准汇编:适合于Windows在平台下使用

2.GUN汇编:适合于Linux在平台下使用

汇编程序框架

完整版:

.section .data   数据段
	<初始化数据>
.section bss   bss段
	<未初始化数据>
.section .text   代码段
.global _start   通过global申明给全局标号,方便被外部引用
_start:   程序入口
	<汇编代码>

简化版:

.text
.global _start
_start:
	<汇编代码>

建立汇编环境

1.创建汇编文件

vim start.S

2.编写代码

.text
.global _start
_start:
        mov r1,#1
        mov r2,#2
        mov r3,#3

3.编写Makefile

  vim Makefile

all:start.o
		arm-linux-ld -Ttext 0x30000000 $^ -o start.elf   “-Ttext”表示不指定链接器脚本时,直接指定链接地址。”0x30000000”表示2440内存的起始地址。引用要生成elf文件直接下载到内存中调试
%.o:%.S
		arm-linux-gcc -g -c $^ -o [email protected]
clean:
		rm *.o *.elf

4.连接开发板

  JLinkGDBServer   启动后的窗口不要关掉

5.启动eclipse

  1.创建工程

    file->new->Makefile Project...

  2.编译工程

    project->build all

  3.配置调试

    1.debug->debug configurations...

    2.添加调试文件   添加elf文件

    3.添加调试工具   arm-linux-gdb,同时去掉stop on main选项

    4.添加初始化脚本   调试器对处理器进行初始化

时间: 2024-10-24 22:16:46

[国嵌笔记][024][ARM汇编编程概述]的相关文章

[国嵌笔记][021-022][ARM处理器工作模式]

[ARM处理器工作模式] 处理器工作模式 1.User(urs):用户模式,linux应用程序运行在用户模式 2.FIQ(fiq):快速中断模式 3.IRQ(irq):中断模式 4.Supervisor(svc):系统保护模式,linux内核运行在系统保护模式 5.Abort(abt):异常模式 6.Undefined(und):未定义指令模式 7.System(sys):系统模式 [ARM寄存器详解] ARM寄存器(37个) 通用寄存器(31个) 1.未分组通用寄存器(R0-R7) 2.分组通

[国嵌笔记][020][ARM家族大检阅]

ARM芯片:2440(arm9) 6410(arm11) 210(cortex-A8) ARM核:arm9(arm-v4) arm11(arm-v6) cortex-A8(arm-v7) 指令架构:arm-v4 arm-v6 arm-v7 在一个芯片中最重要的是ARM核 ARM核演变 ARM经典: ARM7.ARM9.ARM11 Cortex系列: 1.Cortex-M:应用于工控 2.Cortex-R:应用于实时 3.Cortex-A:应用于多媒体 ARM芯片对比 芯片 2440 6410 4

[国嵌笔记][027][ARM协处理器访问指令]

协处理器作用 协处理器用于执行特定的处理任务,如数学协处理器可以执行控制数字处理,以减轻处理器的负担.ARM处理器最多可以支持16个协处理器,其中CP15是最重要的一个协处理器 CP15的作用 CP15是系统控制协处理器,通过额外的寄存器可以控制cache,MMU,系统时钟等功能 访问协处理器 1.CP15有16组寄存器,通过mcr和mrc指令来访问协处理器里的寄存器,从而达到访问协处理器的目的 2.通过datasheet中的CP15 register map summary可以查找到相关的寄存

[国嵌笔记][029][ARM处理器启动流程分析v2]

2440启动流程 启动方式:nor flash启动.nand flash启动 地址布局: 选择nor flash启动时,SROM(nor flash)地址为0x00000000 选择nand flash启动时,SRAM(SteppingStone)地址为0x00000000 SDRAM(内存)地址为0x30000000 启动流程: 1.第一阶段 首先,处理器复制nand flash的BL1(前4KB)到Steppingstone中,执行BL1(bootloader第一部分).然后,复制BL2(b

[国嵌笔记][023][ARM寻址方式]

寻找方式 1.处理器根据指令中给出的信息来找到指令所需操作数的方式 2.立即数寻址 操作数本身在指令中给出,立即数前加”#”表示立即数寻址,操作数在指令中 3.寄存器寻址 利用寄存器中的数值作为操作数,操作数在寄存器中 4.寄存器间接寻址 利用存放在寄存器中的内存地址中的数值作为操作数,在寄存器加上[],操作数存放在内存中 5.基址变址寻址 利用寄存器中保存的基地址和立即数中保存的偏移,找到内存地址中的数值作为操作数,操作数保存在内存中 6.相对寻址 利用PC指针的当前值做为基地址和指令中地址标

GNU风格ARM汇编编程实战之一 &lt;C与汇编混合编程&gt;

一.参考资料 1. <ARM GCC内联汇编手册>:http://www.ethernut.de/en/documents/arm-inline-asm.html 2. <__asm__ __volatile__内嵌汇编用法简述>:http://www.embedu.org/Column/Column28.htm 3. <A?R?M?内?嵌?汇?编?示?例>:http://wenku.baidu.com/view/72c12e4133687e21af45a990.htm

嵌入式Linux ARM汇编(六)——GNU ARM汇编编程

嵌入式Linux ARM汇编(六)--GNU ARM汇编编程 不同的汇编器对汇编语言的语法要求不一样.目前常用的ARM汇编环境有以下两种: A.ARM ASM:ARM公司的汇编器,适合在Windows平台下使用 B.GNU ARM ASM:GNU交叉编译工具链中的汇编器,适合于Linux开发平台. GNU汇编器是GNU工具集的一部分,用于将汇编语言文件转化为二进制obj文件.GNU汇编器针对的是多种处理器架构,这意味着GNU汇编器的语法不同于ARM工具链的汇编器. 一.GUN ARM汇编指令格式

[国嵌笔记][008-009][远程登录Linux]

[国嵌笔记][008][远程登录Linux] 1.windows与Linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/iptables stop 3.通过ssh(字符界面)协议远程登录 4.通过VNC(图形界面)协议远程登录 1.安装tigervnc.rpm 2.启动vnc服务:vncserver & [国嵌笔记][009][Windows与Linux文件互享] 1.windows与linux能够相互ping通 2.关闭Linux防火墙 /etc/init.d/ipt

ARM汇编编程基础之一 —— 寄存器

ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通用寄存器和程序计数器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB