【Linux】ARM篇四--简单使用汇编点亮LED灯



一、前言

本篇使用华清远见的FS4412开发板,对开发板的LED进行亮灭操作,知识包含GPIO寄存器介绍、与ubuntulinux操作系统通过进行交叉编译生成开发板可执行代码,通过本次实验来认识ARM开发板GPIO知识


二、准备工作

  • FS4412开发板,我用的是华清远见的FS4412开发板
  • ubuntu下linux操作系统(包含交叉编译工具
  • serial-com8程序烧入执行工具
  • 开发板电路原理图、芯片手册

开发板资料、交叉编译工具、程序烧入工具下载(包含教程)
开发板可选择到华清远见官网进行租赁。


开发板图:
在这里插入图片描述

三、GPIO寄存器介绍

当拿到一个开发板时,可以不用着急关注它有多少个引脚,因为不同的芯片引脚都不同,本篇使用的Exynos 4412 芯片包含304个多功能输入/输出接口引脚和164个内存接口引脚,因此我们在最开始时,只需要关注需要用到的引脚,在根据电路原理图上,用到引脚的编号,去看数据手册。

1、LED电路原理图

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

引用FS4412-DevBoard-V5扩展板电路原理图与FS4412_CoreBoard_V2核心板原理图


2、GPIO寄存器介绍

在这里插入图片描述

引用(4412手册完整版)SEC_Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary,第113页

GPX1PUDGPX1DRV是控制上下拉寄存器与驱动寄存器,我们暂时不用管,重点在GPX1CONGPX1DAT两个寄存器上。


2.1 GPX1PUD寄存器

在这里插入图片描述

引用(4412手册完整版)SEC_Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary,第355页

  • 该寄存器地址是由基地址0x1100 0000偏移0x0C20位得到的,地址是0x11000C20,默认配置是0x0000 0000
  • 该寄存器8位控制一个引脚的功能,0~31分别控制引脚GPX1_0~GPX1_7共8个引脚。
  • 本篇用到输出功能,也就是output,写值为0x0000 0001,其他功能用到的时候在介绍。

2.2 GPX1DAT寄存器

在这里插入图片描述

引用(4412手册完整版)SEC_Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary,第357页

  • 该寄存器地址是由基地址0x1100 0000偏移0x0C24位得到的,地址是0x11000C24,默认配置是0x0000 0000
  • 该寄存器0~7位控制引脚输入输出,其他位只读不能用,0~7位每一位控制一个引脚的功能,分别控制引脚GPX1_0~GPX1_7共8个引脚。
  • 输入模式下位置1为输出高电平位置0输出低电平

四、Makefile编写

ARM_Procedure = ARM_LED
compile = arm-none-linux-gnueabi-
CC = $(compile)gcc
LD = $(compile)ld   
OBJCOPY = $(compile)objcopy

all:
	$(CC) -c $(ARM_Procedure).s -o $(ARM_Procedure).o
	$(LD) $(ARM_Procedure).o -Ttext 0x40008000 -o $(ARM_Procedure).elf
	$(OBJCOPY) -O binary -S $(ARM_Procedure).elf $(ARM_Procedure).bin

clean:
	rm $(ARM_Procedure).o $(ARM_Procedure).elf $(ARM_Procedure).bin

五、汇编代码编写

ARM_LED.s:

.text
_start:

MAIN:
	BL LED_INIT
operation:
	BL LED_ON
	BL DELAY
	BL LED_OFF
	BL DELAY
	B operation
	
LED_INIT:   @ GPIO初始化
	LDR R1, =0x11000C20
	LDR R2, =0x00000001
	STR R2, [R1]
	mov PC, LR

LED_ON:     @ LED亮
	LDR R1, =0x11000C24
	LDR R2, =0x01
	STR R2, [R1]
	mov PC, LR

LED_OFF:    @ LED灭
	LDR R1, =0x11000C24
	LDR R2, =0x00
	STR R2, [R1]
	mov PC, LR

DELAY:      @ 延时
	LDR R1, =100000000
	LDR R2, =1
for:
	SUB R1, R1, R2
	cmp R1, R2
	BNE for
	mov PC, LR

stop:
	B stop
.end

六、程序烧入

1.输入make生成.bin文件,将文件
在这里插入图片描述


2.将.bin文件复制到共享文件夹

在这里插入图片描述

在这里插入图片描述

输入:

cp ARM_LED.bin /mnt/hgfs/cca

将文件复制到cc文件夹


3.打开serial-com8,连接开发板(COM2接口),烧入程序
①查看端口
在这里插入图片描述
②打开serial-com8设置
在这里插入图片描述
在这里插入图片描述
③接通开发板电源,迅速按enter键,使其快速进入裸机模式。
在这里插入图片描述
④烧入程序
在这里插入图片描述
输入:

loadb 40008000
在这里插入图片描述

选择可执行文件烧入
在这里插入图片描述
烧入成功:
在这里插入图片描述


⑤执行程序
输入:

go 40008000


七、实验现象

在这里插入图片描述


到这里就结束啦!
在这里插入图片描述

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
arm-linux-gnueabi和arm-linux-gnueabihf-gcc是用于ARM架构的交叉编译工具。它们的配置和用途略有不同。arm-linux-gnueabi-gcc是Codesourcery公司(现为Mentor公司)基于GCC推出的ARM交叉编译工具,可用于编译ARM系统中的所有代码。而arm-linux-gnueabihf-gcc是基于硬浮点指令集的ARM交叉编译工具。它在编译过程中使用硬件浮点寄存器来执行浮点运算,相比于软件浮点运算,速度更快。因此,当需要使用浮点运算时,推荐使用arm-linux-gnueabihf-gcc来编译代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [arm-2014.05-29-arm-none-linux-gnueabi](https://download.csdn.net/download/lhdzwkk4/78306094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [arm-2014.05-29-arm-none-linux-gnueabi-linux](https://download.csdn.net/download/lhdzwkk4/78309660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [arm-none-linux-gnueabi-gcc-4.8.3](https://download.csdn.net/download/kingvon_liwei/12657440)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修成真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值