arm-linux 学习(1)点亮第一个led程序

目录

摘要:

本文主要记录自己学习 arm-linux的过程,
1. 硬件平台:采用的开发板是韦东山的JZ2440V3版本。
2. 软件平台:ubuntu14.04,windows7
3. 软件工具:FileZilla作为windows 和ubuntu的资料共享软件,MobaXterm直接进行代码编译(这里也可以进行ubuntu直接编译);sourceInsight3.5和Notepad++编辑源代码
4. 学习过程:首先看视频,然后自己模仿写代码。

1.学习Gpio原理图

  1. led与开发板的接线图,
    led引脚连接
    芯片引脚连接
    总结:
    nled1—–>GPF4
    nled2—–>GPF5
    nled4—–>GPF6
    GPF
    2. 寄存器
    这里用到两个寄存器,一个是端口控制寄存器:GPACON-GPJCON,还有一个寄存器是端口数据寄存器GPADAT-GPJDAT
    寄存器
    这里可以看出端口控制寄存器的地址是:0x56000000
    端口数据寄存器的地址是:0x56000004
    所以我们只需要配置这两个寄存器对应的LED位就可以实现控制led的亮或者灭。
    第一步:首先配置LED引脚为输出模式
    输出模式

直接依次配置好:0001 0101 0000 0000==0x1500

第二步:对应位置输出低电平
这里写图片描述
需要设置:1000 1111==0x8f

@**************************************************************************************
@ File:led_on.S
@ 功能:LED点亮程序
@ 备注:GPF4,5,6为输出引脚,低电平亮
@ 第1个指令:ldr R0,[R1] //假设R1的值是x,读取地址x上的数据(4字节)保存到RO中
@ 第2个指令:str R0,[R1] //假设R1的值是x,把RO上的值写到地址x去
@ 第3个指令:b //跳转
@ 第4个指令:MOV MOV R0,R1 //移动指令,把R1的值赋给R0
@ 第5个指令:MOV MOV R0,=0x12345678 //伪指令
@*************************************************************************************

.test
.global _start
_start:
/****************************************
*配置GPF4,5,6为输出引脚,图片只是配置GPF4
*同时把0x100写到地址0x56000050上
*****************************************/
ldr r0,=0x56000050
ldr r1,=0x1500
str r1 ,[r0]
/****************************************
*配置GPF4,5,6为输出低,图片只是配置GPF4
*同时把0x8f写到地址0x56000050上
*****************************************/
ldr r1,=0x56000054
ldr r0,=0x8f
str r0 ,[r1]
halt:
b halt
可以在source Insight中观看代码
soucre insight

3.编写makeflie文件

all:
arm-linux-gcc -c -o led.o led.S
arm-linux-ld -Ttext 0 led.o -o led.elf
arm-linux-objcopy -O binary -S led.elf led.bin
clean:
rm .bin .o *.elf
在notepad++中看代码:
makefile

4.编译代码

使用命令:make
清除二进制代码:make clean

猜你喜欢

转载自blog.csdn.net/lixiaoweimashixiao/article/details/78992501