嵌入式学习:裸机开发_L1_汇编LED实验

0. 本节目标

  • 了解时钟控制寄存器
  • 了解复用配置寄存器
  • 了解电气属性寄存器
  • 了解GPIO控制相关寄存器

1. 硬件层电路

1.1 使用正点原子 i.MX6ULL ALPHA V2.2 开发板

查看底板原理图可知:

功能管脚 芯片引脚
LED0 GPIO3

在这里插入图片描述

在这里插入图片描述

1.2 飞凌i.MX6UL-C开发板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 初识 i.MX6ULL 寄存器

2.1 i.MX6ULL 时钟控制寄存器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 i.MX6ULL IO复用寄存器

在这里插入图片描述

在这里插入图片描述

2.3 i.MX6ULL 电气属性寄存器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 i.MX6ULL GPIO控制寄存器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3. ARM 汇编指令集简介

使用指令集:ARMv7-A 汇编指令集,32位,load/store架构。

大多数ARM处理器支持超过一种指令集:
 > ARM —— 一种32位指令集
 > Thumb —— 一种16位指令集,具有更好的代码密度(但是相比ARM代码,性能有所降低)
 
在程序的控制之下,处理器可以在这两种指令集之间来回切换。

所有的 Cortex-A 系列处理器实现了 Thumb-2 技术,它扩展了Thumb指令集。混合使用32位和16位指令,以Thumb指令集的代码密度和接近ARM指令集的性能。自从所有的Cortex-A系列处理器支持这一扩展,针对它们的软件常被编译成Thumb指令集。

3.1 处理器工作模式

在这里插入图片描述

在这里插入图片描述

3.2 汇编语言基本格式

label: instruction @ comment
说明 备注
label 标号 可不写
instruction 指令 必须写
@ comment 注释 可不写

GNU汇编语言,函数定义

函数名:
	函数体
	返回语句

3.3 伪指令指定“段”

预定义段名 含义
.text 代码段
.data 初始化的数据段
.bss 未初始化的数据段
.rodata 只读数据段

3.4 汇编程序入口

3.4.1 默认入口标号 _start

.global _start

_start:
	ldr r0, =0x12 @ r0=0x12

3.4.2 链接脚本 ENTRY

3.5 ARM 9种寻址模式

3.5.1 立即寻址

操作数是立即数,以“#”为前缀,表示 16 进制数值时以“0x”表示。

例:

MOV R0, #0xFF00 @ 0xFF00 ->  R0
SUBS R0, R0, #1 @ R0 – 1 ->  R0

3.5.2 寄存器寻址

操作数的值在寄存器中,指令执行时直接取出寄存器值操作。
例:

MOV R1, R2 @ R2 -> R1
SUB R0, R1, R2 @ R1 - R2 -> R0

3.5.3 寄存器偏移寻址

当第二操作数是寄存器偏移方式时,第二个寄存器操作数在与第一个操作数结合之前,选择进行移位操作。

例:

MOV R0, R2, LSL #3 @ R2 的值左移 3 位,结果放入 R0,即 R0 = R2 * 8
ANDS R1, R1, R2, LSL #3 @ R2 的值
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值