嵌入式Linux学习入门:控制LED灯

记录自己linux学习过程,让自己能够一直坚持下去

1、原理图分析:

nLED_1, nLED_2, nLED_4, 给低电平则对应LED灯亮,高电平则对应LED灯灭,

S3C2440芯片GPF4-GPF6对应nLED_1, nLED_2, nLED_4,

所以代码里面操作GPF4-GPF6就可以控制LED灯亮灭。

2、写代码前了解事项

第一步:将GPF0-GPF4配置为输出功能

第二步:控制GPF0-GPF4输出低电平

3、编写代码

 1 .text
 2 .global _start
 3 _start:
 4             ldr     r0, =0x53000000     @ WATCHDOG寄存器地址
 5             mov     r1, #0x0
 6             str       r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启
 7
 8             ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
 9                                         @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
10             bl      main                @ 调用C程序中的main函数
11 halt_loop:
12             b       halt_loop

参考韦东山视频模仿写的汇编部分,主要是为调用C语言程序,准备条件

 1 #define    GPFCON        (*(volatile unsigned long *)0x56000050)
 2 #define    GPFDAT        (*(volatile unsigned long *)0x56000054)
 3
 4
 5 int main(void)
 6 {
 7     unsigned long i = 0;
 8
 9     GPFCON = 0x00001500;    //将GPF4 GPF5 GPF6设置为输出
10
11     while(1)
12     {
13
14         GPFDAT = 0x00000060;      //控制GPF4输出低电平,LED1亮
15         for(i=0; i<30000; i++);   //延时
16
17         GPFDAT = 0x00000050;      //控制GPF5输出低电平,LED2亮
18         for(i=0; i<30000; i++);
19
20         GPFDAT = 0x00000030;      //控制GPF6输出低电平,LED4亮
21         for(i=0; i<30000; i++);
22     }
23
24     return 0;
25 }

4、编译代码,烧录执行

在linux环境下使用GCC编译,同样跟着视频学习写了Makefile

led_test:main.c start.S
  arm-linux-gcc -c start.S -o start.o
  arm-linux-gcc -c main.c -o main.o
  arm-linux-ld -Ttext 0x0000000 start.o main.o -o LED_TEST_ELF
  arm-linux-objcopy -O binary -S LED_TEST_ELF led_test.bin
  arm-linux-objdump -D -m arm LED_TEST_ELF > LED_TEST.dis
clean:
  rm -f *.o led_test.bin LED_TEST_ELF LED_TEST.dis

将生成的led_test.bin烧录到板子中,观察现象,按照预期流水灯走起来了!

时间: 2024-10-24 07:29:10

嵌入式Linux学习入门:控制LED灯的相关文章

嵌入式Linux学习笔记之LED驱动

最近在学习嵌入式Linux驱动开发,大致了解了驱动的基本开发流程,本文主要针对字符设备驱动开发做一个简要介绍,也当作是对这几天工作的一个小小总结. 计算机系统是由软硬件相互协调共同完成工作的,作为专用计算机系统的嵌入式系统也不例外,既要有CPU.SDRAM.FLASH.IO等硬件,同时也少不了操作系统和应用软件等软件的支持,而作为应用程序与硬件的桥梁--驱动程序,是整个嵌入式系统开发过程中的关键环节.驱动开发涉及底层,而了解底层作用机制对于整个系统的开发意义重大. Linux内核中有60%以上是

arduino入门学习实现语音控制LED灯

需要的准备的硬件arduino+PC+麦克风实现语音命令控制LED灯的亮灭. 首先需要将写好的arduino程序烧录到arduino uno主板中,下面是代码如下: int val;//定义变量val int ledpin=10;//定义数字接口13 void setup() { Serial.begin(9600);//设置波特率为9600,这里要跟软件设置相一致.当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致. pinMode(ledpin,OUTPUT);//设置数字10

嵌入式Linux学习笔记(基于S5PV210 TQ210)

基于S5PV210.TQ210平台. 本文更多的是教会大家如何学习! 包括如下内容: 1.前言 2.开发环境搭建 3.制作交叉编译器 4.裸机编程 4.1.汇编学习 4.2.S5PV210启动流程 4.3.点亮一个LED 4.4.串口 4.5.实现printf 4.6.时钟配置 4.7.重定位 4.8.DDR 4.9.NAND读写 4.11.LCD操作 5.移植u-boot(基于u-boot-2014.4版本) 5.1.概述 5.2.u-boot配置过程分析 5.3.u-boot编译过程分析 5

新手嵌入式linux学习必备书籍

很多的嵌入式Linux新手,对自己的学习过程十分迷茫,不知道从何学习?学习过程中需要看哪些相关书籍?之前的写的一篇关于嵌入式开发如何入门,如何深入?的文章希望对你有所帮助,接下来就为嵌入式Linux新手们推荐一些关于嵌入式Linux学习的核心书籍. Linux基础 1.<Linux与Unix Shell 编程指南> C语言基础 1.<C Primer Plus,5th Edition>[美]Stephen Prata著 2.<The C Programming Languag

Linux学习入门:工欲善其事,必先利其器

linux学习入门 1 .1Linux简介 Linux的创始人是 Linus Torvalds.他在从1990年底到1991年的几个月中,利用Minix操作系统作为开发平台,为他自己的操作系统课程和后来的上网用途而陆续编写了若干程序.并在1991.10.5在Internet上公布了自己的程序程序,从而宣告Linux的诞生. 1993年,Linux 1.0问世. 1999年,Linux Kernel 2.2问世. 2001年,Linux Kernel 2.4问世. 2003年,Linux Kern

[51单片机学习笔记ONE]-----LED灯的多种使用方法

一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include <reg51.h> 7 8 void delay(unsigned char a); 9 10 void m

enc28J60 网页控制LED灯

软件IDE:Arduino 1.6.3 1.库的安装: 从https://github.com/jcw/ethercard 下载源码包,解压,复制ethercard-master文件夹到Arduino的安装目录所在的库文件夹下:D:\Program Files (x86)\Arduino\libraries,并且重命名为EtherCard 2.打开Arduino 复制相关代码,保存,编译,上传. 3.设置电脑ip为192.168.2.2 4.浏览器登录192.168.2.1 参考: lucade

BLE 安卓APP控制LED灯的实现(转)

源:BLE 安卓APP控制LED灯的实现 //注:参考AmoMcu源代码修改. 打开APP,检查蓝牙是否打开 BluetoothAdapter mBluetoothAdapter; final BluetoothManager bluetoothManager =(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); mBluetoothAdapter = bluetoothManager.getAdapter(); //

arduino 红外遥控器控制LED灯

/* 日期:2016.9.1 功能:红外遥控器控制LED灯 开,关,闪烁 元件: 跳线公公头 * 5 led, 220欧电阻 红外接收管,红外遥控 接线: 红外灯面向自己从左到右分别接 IO3, GND, 5V LED 负极接GND 正极串联电阻接 IO5 红外1-9口编码: FF30CF 1 FF18E7 2 FF7A85 3 FF10EF 4 FF38C7 5 FF5AA5 6 FF42BD 7 FF4AB5 8 FF52AD 9 参考:http://www.arduino.cn/threa