【ARM】2410裸机系列-流水灯
ARM 系列 裸机 流水
2023-09-27 14:27:16 时间
开发环境
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启动
-
关狗
-
设置栈
//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协议,但是在下载过程中报告失败,囧……
OK,大功告成,流水灯很顺利
小结
好久没玩arm裸机了,这次只是在linux下测试下环境
可以看见,linux下的编程并没有比windows下多多少东西,也就一个Makefile而已,但是对于过程而言,就清楚多了
相关文章
- 华为鲲鹏云arm centos7.5安装redis
- 来自ARM的大礼全套Keil MDK大合集【有字幕,让你一次性看个够,看个爽】
- linux4.15 arm qemu @ubuntu18.04环境搭建与bootgraph启动优化
- arm-none-eabi-gcc编译报错:exit.c:(.text.exit+0x16): undefined reference to `_exit'
- Ubuntu+Win+Arm远程操纵电脑方案
- 树莓派3b+ 安装windows10 arm版本的方法及使用体验
- ARM发力物联网
- ARM linux 系统调用实现原理
- ARM指令集、Thumb指令集、Thumb-2指令集
- 一文讲解单片机、 ARM、 MCU、 DSP、 FPGA、 嵌入式错综复杂的关系
- ARM CEO:物联网市场爆发的1000亿枚芯片将采ARM设计
- ARM与台积电签订长期战略合作协议
- 你不了解的ARM:由苹果出资联合创建
- 软银豪购ARM,联发科:我很惊讶
- 软银巨资收购ARM:这是场天作之合?