开发环境

 

1、硬件平台:FS2410(s3c2410)

2、主机:Ubuntu 12.04 LTS


LED原理图


LED的GPIO的配置

    • 配置GPFCON寄存器,设置GPF4-7为输出

    • 配置GPFDAT,设置LED灯亮与灭


主要步骤

    • 通过设置GPFCON将GPF4-7设置为输出

    • 设置GPFDAT,可以将led灯亮或灭,GPFDAT的相应位置1灯灭,置0灯亮


源代码

   NAND flash启动

      1. 关狗

      2. 设置栈

//start.S

.text
.global _start
_start:
#define WATCHDOG 0x53000000
ldr r0, =WATCHDOG //关看门狗
mov r1, #0
str r1, [r0] ldr sp, =1024*4 //设置堆栈
bl main //跳转进入main函数 loop:
b loop

//led.c (s3c2410.h 网上找,其中包含option.h,我找了一段时间,所以上传附件了)

#include "s3c2410.h"
void delay(long long max) //延迟函数
{
int i, j;
for(i = 0; i < max; i++)
for(j = 0; j < max; j ++);
}
int main(void)
{
int i;
GPFCON = GPFCON & (~(0xff << 8)) | (0x55 << 8); //设置GPF4-7为输出
GPFDAT &= ~(0xf << 4); //将4个LED灯开启
while(1)
{
for(i = 0; i < 5; i++)
{
GPFDAT = GPFDAT | (0xf << i); //利用循环设置流水灯
delay(500);
}
GPFDAT &= ~(0xf << 4); //4个LED灯开启
}
return 0;
}

//Makefile

led.bin: start.S led.c
arm-linux-gcc -c start.S -o start.o
arm-linux-gcc -c led.c -o led.o
arm-linux-ld -Ttext 0x30008000 start.o led.o -o led
arm-linux-objcopy -O binary -S led led.bin
6 clean:
rm -f *.o led.bin

 


步骤

   ①首先make

可以看见生成了led.bin文件

   ②下载到开发板

由于我用的bootloader是出厂自带的,而这个bootloader里面没有tftp,所以这里用古老的zmodem协议,但是在下载过程中报告失败,囧……

于是我换到windows下

OK,大功告成,流水灯很顺利


小结

好久没玩arm裸机了,这次只是在linux下测试下环境

可以看见,linux下的编程并没有比windows下多多少东西,也就一个Makefile而已,但是对于过程而言,就清楚多了

【ARM】2410裸机系列-流水灯的更多相关文章

  1. 【ARM】2410裸机系列-按键查询式控制led

    开发环境   硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11    KSCAN1 -> GPG6 ...

  2. 【ARM】2410裸机系列-ADC数模转换

    开发环境   1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置       1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...

  3. 【ARM】2410裸机系列-uart串口通信

    开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置   配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...

  4. 【ARM】2410裸机系列-中断处理

    目的 为了更好地掌握S3C2410中断的原理及中断程序的编写. 内容利用S3C2410的外部中断0和外部中断1实现两个按键功能 原理 本次选择的是外部中断EXTINT0和EXTINT11.中断的产生分 ...

  5. Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]

    在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 ---- - -- -- -- - -- -- 修改: # ${MKBL2} ${SOURCE ...

  6. Tiny4412汇编流水灯代码,Tiny4412裸机LED操作【转】

    本转载自:http://www.techbulo.com/1313.html Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 2014年10月20日 ⁄ 裸机程序 ⁄ 共 4171字 ...

  7. Tiny4412汇编流水灯代码,Tiny4412裸机LED操作[1]

    从今天开始就正式进入到tiny4412的开发学习中了,今天主要看了一下Tiny4412的启动流程及存储器映射及Exynos4412数据手册,用汇编写了一个跑马灯程序(后续会有C语言版本的出来),先说一 ...

  8. 一步步玩pcDuino3--mmc下的裸机流水灯

            第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台.         首先介绍下开发环境: 虚拟机:VMware® Workstati ...

  9. ARM实验1 —— 流水灯实验

    实验内容: 编写GPIO模块程序,实现对FS_4412平台的上的led2,led3,led4 ,led5,的流水灯实现. 实验目的: 熟悉开发环境的使用. 掌握Exynos 4412处理器GPIO功能 ...

随机推荐

  1. 怎样查看SSL证书的有效期?自动续期是否生效?

    前面一篇教程教大家如何能够把网站的 HTTPS 的 SSL 证书自动续期.料神米课的学员动手能力都很强,已经很多都成功把证书续期了.但怎么看证书续期是否成功了呢? 使用火狐 firefox 浏览器就可 ...

  2. 严重: The web application [] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDB

    idea项目启动报如下错误, 网上的方法都试了都没用, 一直没解决, 干掉项目, 重新从svn检出就好了...坑 啊 Root WebApplicationContext: initializatio ...

  3. java2小结(草稿)

    Struts2 Servlet 小的Java程序,运行在服务器端,接收和响应从客户端发送过来的请求 流程分析: Servlet生命周期? Servlet配置自动加载?(理解) 1.服务器在启动的时候, ...

  4. Java概述与开发环境

    1.Java语言既是编译又是解释型的特点 Java没有设计成编译型语言,因为编译型语言效率高, 但可移植性差. Java也没有设计成纯解释型的语言, 因为解释型效率太低. 编译成class文件, 解释 ...

  5. Js里面IF(var)表示什么意思?js中if的写法、含义

    Q:if(一个变量),没有> < !=这些半短逻辑, 什么时候为真 什么时候为假? A:是判断逻辑,javascript是弱变量类型语言,通俗地就是没有数据类型.任意值都有逻辑值(真或假) ...

  6. React(0.13) 利用componentDidMount 方法设置一个定时器

    <html> <head> <title>hello world React.js</title> <script src="build ...

  7. 【Servlet】web.xml中url-pattern的用法

    目录结构: contents structure [+] url-pattern的三种写法 servlet匹配原则 filter匹配原则 语法错误的后果 参考文章 一.url-pattern的三种写法 ...

  8. windows 7 开启无线wifi

    Windows 7 开启无线wifi步骤:1.选择“开始”-“运行”命令,在运行命令栏里输入“CMD”打开管理员: 2.在界面里输入以下命令:netsh wlan set hostednetwork ...

  9. Js实现动态添加删除Table行示例

    <table cellpadding="0" cellspacing="0" border="1" style="margi ...

  10. mysqldump脚本crontab执行失败,但是手动执行成功

    检查备份时发现,cron中定时备份mysql的脚本备份失败,但是手动自行mysql备份脚本却能正常成功 检查cron的环境变量: # cat /etc/crontab ... SHELL=/bin/s ...