linux开发板led怎么亮,韦东山嵌入式Linux学习笔记04--点亮开发板的一个LED灯

搜索开发板原理图LED的走线

20191115091901041808.png          

20191115091901228339.png

LED8是网线接口的指示灯.

在这里我们尝试用汇编代码控制D10, 也就是LED1,它连接到EINT4/GPF4,读取芯片手册

20191115091901395337.png

20191115091901544757.png

20191115091901702966.png

有原理图可知,如果需要点亮LED1,需要控制s3c2440的GPF4引脚输出低电平.

GPFCON = 0x56000050

GPFDAT = 0x56000054

GPFUP = 0x56000058

=========================

直接set 0x56000050 = 0x100  设置GPF4为引脚为输出模式

set 0x56000054 0x00 设置GPF4输出电平为0

set 0x56000058 0x10 不使能GPF4内部拉高

这样就可以控制改灯常亮,汇编应该怎么写?

首先需要配置交叉工具链才能够编译代码,请参照链接: https://jingyan.baidu.com/article/647f01151899607f2148a8f2.htm

20191115091901830901.png

20191115091901959812.png

source /etc/profile 使生效

20191115091902091653.png

表示已经生效.

如果仍然提示找不到命令,就像下图一样

20191115091902160015.png   

20191115091902281113.png

运行 arm-linux-gcc -v的时候也提示 bash: /usr/local/arm/2.3.6/bin/arm-linux-gcc: No such file or directory

这时候应当注意,因为未安装32位库,执行sudo apt-get install lib32ncurses5 lib32z1

执行完再查看命令,如果能查看版本号,说明环境ok了.

代码:

.text

.global _start

_start:

LDR R0,=0x56000050 @ 这是个内存操作命令, 先将寄存器的地址装入R0中

@

@

MOV R1,#0x00000100 @ 将0x00赋值给R1

STR R1,[R0] @ 内存的反向操作, 将R1的值存到R0地址处. 括号代表类似于取指针

LDR R0,=0x56000054 @ 同样操作

@

MOV R1,#0x00000000 @

@

STR R1,[R0] @

MAIN_LOOP: @ 死循环

B MAIN_LOOP

Makefile

led_on.bin : led_on.S # 编译的顺序 -- 预处理, 编译, 汇编, 链接

arm-linux-gcc -g -c -o led_on.o led_on.S # 汇编

arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf #链接并指定运行地址

arm-linux-objcopy -O binary -S led_on_elf led_on.bin #将ELF格式的可执行文件转换成二进制文件

clean:

rm -f led_on.bin led_on_elf *.o

原文:https://www.cnblogs.com/cheyihaosky/p/11863764.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值