博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ARM】2410裸机系列-流水灯
阅读量:5162 次
发布时间:2019-06-13

本文共 2594 字,大约阅读时间需要 8 分钟。

开发环境

 

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而已,但是对于过程而言,就清楚多了

 

转载于:https://www.cnblogs.com/lcw/p/3159380.html

你可能感兴趣的文章
nodeJs是什么
查看>>
Oracle数据库sys和system用户的默认密码及如何修改密码
查看>>
网络I/O模型--06异步I/O
查看>>
Individual Project - Word frequency program - Multi Thread And Optimization
查看>>
hdu 4960 数列合并
查看>>
IP通信基础 4月17日
查看>>
python学习之字符串常用方法
查看>>
jquery1.7.2的源码分析(二)
查看>>
JavaScript自学代码--(三)
查看>>
[NOIP2000]单词接龙
查看>>
设计模式之外观模式
查看>>
Nginx反向代理的基本配置
查看>>
SpringMvc文件资源防止被外链链接
查看>>
WCF、WebAPI、WCFREST、WebService之间的区别
查看>>
设计模式 -- 单例模式
查看>>
Linux下安装 php imagick扩展
查看>>
git出现: not a git repository
查看>>
appium 问题
查看>>
go条件语句
查看>>
css使用的三种方式
查看>>