iTop4412 裸机开发 LED
平台:iTop4412 SCP 2G
开发板有两个可控制的LED灯:分别接到引脚:KP_COL0和VDD50_EN

KP_COL0就是GPL2_0 
VDD50_EN就是GPK1_1 
配置GPX_CON对应位为输出功能,设置GPX_DAT相应管脚输出为1,就可以点亮LED灯了。
实现代码如下:
源码1:start.S
.global _start
#include "s3c4412_gpio.h"
.word 0x2000
.word 0x0
.word 0x0
.word 0x0
_start:
ldr r0, =0x1002330C
ldr r1, [r0]
orr r1, r1, #0x300
str r1, [r0] ldr r0, =0x11000C08
ldr r1, =0x0
str r1, [r0] ldr r0, =GPL2CON
mov r1, #(0x01 << )
str r1, [r0] ldr r0, =GPK1CON
mov r1, #(0x01 << )
str r1, [r0] :
ldr r0, =GPK1DAT
mov r1, #0x2
str r1, [r0] ldr r0, =GPL2DAT
mov r1, #0x0
str r1, [r0] b 1b halt:
b halt
源码2: s3c4412_gpio.h
#ifndef S3C4412_GPIO_H
#define S3C4412_GPIO_H #define GPX1CON (0x11000000 + 0x0C20)
#define GPX1DAT (0x11000000 + 0x0C24)
#define GPX1PUD (0x11000000 + 0x0C28)
#define GPX1DRV (0x11000000 + 0x0C2C) #define GPK1CON (0x11000000 + 0x0060)
#define GPK1DAT (0x11000000 + 0x0064)
#define GPK1PUD (0x11000000 + 0x0068)
#define GPK1DRV (0x11000000 + 0x006C) #define GPL2CON (0x11000000 + 0x0100)
#define GPL2DAT (0x11000000 + 0x0104)
#define GPL2PUD (0x11000000 + 0x0108)
#define GPL2DRV (0x11000000 + 0x010C) #endif
源码3: link.lds
SECTIONS
{
. = 0x0;
.text : {
* (.text)
}
.rodata ALIGN() : {
* (.rodata*)
}
.data ALIGN() : {
* (.data*)
}
.bss ALIGN() : {
* (.bss)
* (COMMON)
}
}
源码4:
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
%.o : %.S
$(CROSS_COMPILE)gcc -o $@ $< -c
%.o : %.c
$(CROSS_COMPILE)gcc -o $@ $< -c led.bin : start.o
$(CROSS_COMPILE)ld -T link.lds -o led.elf $^
$(CROSS_COMPILE)objcopy -O binary led.elf led.bin
$(CROSS_COMPILE)objdump -D led.elf > led.dis .PHONY : clean
clean :
rm -rf *.o *.elf *.bin *.dis
工程压缩包链接: https://download.csdn.net/download/c54255787/11234582
完成或修改了源代码需每次重复操作以下三个步骤:
步骤1: 编译生成目标文件,执行 make led.bin
步骤2:因为这个裸机是s3c4412 datasheet 中所描述的 bl1, 所以编译出的led.bin头16个字节需要处理下,才能正常运行。 执行 ./mk4412 led.bin
步骤3:烧写处理好的led.bin到sd卡里头,执行
sudo mkfs.vfat -F 32 -I /dev/sdb
sudo dd if=/dev/zero of=/dev/sdb bs=512 seek=1 iflag=dsync oflag=dsync count=2048
sudo dd if=./led.bin of=/dev/sdb bs=512 seek=1 iflag=dsync oflag=dsync
请注意加粗标红得"sdb", 也可能是sdc,没插U盘执行df -l,再插入U盘执行df -l,观察多出来得就是sdx就是你的U盘。
最后就能看到开发板上led2灭,led3被点亮了。
如果需要LED2也点亮,则start.S中修改:
ldr r0, =GPL2DAT
mov r1, #0x1
str r1, [r0]
参考链接:https://blog.csdn.net/suz_cheney/article/details/45974139
iTop4412 裸机开发 LED的更多相关文章
- S3C2440—3.用点亮LED来熟悉裸机开发的详细流程
文章目录 一.硬件知识 1.LED原理图 2.芯片手册 Ⅰ.找LED原理图 Ⅱ.找对应引脚 Ⅲ.在芯片手册中查找引脚信息 Ⅳ.查看寄存器说明 Ⅴ.配置寄存器 二.S3C2440框架与启动过程 三.要用 ...
- Cubieboard2裸机开发之(四)定时器操作
前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合.定时器可以精确延时的一个重要原因是它的计时时钟(或者说频 ...
- ok6410[000] 搭建裸机开发环境
1.安装交叉工具链arm-linux-gcc-4.3.2 先把这个工具复制到rhat系统中[rhel-server-6.3-i386-dvd.iso] 解压arm-linux-gcc-4.3.2到一个 ...
- 【转载】s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)
用于arm裸机程序开发的IDE基本有 以下3个:MDK,IAR,还有ADS.具体它们的具体情况在这里我就不多说了,百度一下就明白了.由于之前开发c51,stm32时候都使用了MDK开发环境,而且MDK ...
- S3C2416裸机开发系列十六_sd卡驱动实现
S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子 1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...
- S3C2416裸机开发系列19_Fatfs播放录像wav音频文件
S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩 1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...
- ARM裸机开发中内存管理库RT_HEAP的使用
在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动 ...
- S3C2440—2.裸机开发步骤及工具使用
文章目录 一.裸机开发步骤简介 1.在X86架构的Windows系统中 2.在X86架构的Ubuntu系统中 3.ARM裸机开发 二.soucre insight使用 1.sourec insight ...
- Cubieboard2裸机开发之(二)板载LED交替闪烁
前言 电路原理在文章http://www.cnblogs.com/lknlfy/p/3583806.html中已经说明,两个LED的原理图是一样的.要使两个LED交替闪烁,只需要在点亮蓝色LED,熄灭 ...
随机推荐
- 算法(Algorithms)第4版 练习 1.5.1
id数组的变化情况: 0 1 2 3 4 5 6 7 8 9 10 components 9 0 0 1 2 3 4 5 6 7 8 0 9 components 3 4 0 1 2 4 5 6 7 ...
- 3.微信小程序-B站:wxml和wxss文件
WXML WXML(WeiXin Markup Language)是微信的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. (小安娜:好像很厉害的样子,那基础组件.事件系统是什么?感觉更厉 ...
- 什么是 Sass 其与SCSS区别是什么?
Sass 官网上是这样描述 Sass 的: Sass 是一门高于 CSS 的元语言,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法, ...
- stutas2配置action
解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...
- MFC实现COM组件
一般而言,ATL实现了对COM组件最好的支持,所以不用MFC实现COM组件.但是MFC实际上也是可以实现COM组件的. 一.MFC DLL优点: MFC com组件可以将MFC的类型作为参数进行传递, ...
- 【二叉查找树】01不同的二叉查找树的个数【Unique Binary Search Trees】
当数组为1,2,3,4,...,n时,基于以下原则构建的BST树具有唯一性: 以i为根节点的树,其左子树由[1,i-1]构成,其右子树由[i+1, n]构成. 我们假定f(i)为以[1,i]能产生的U ...
- BLOB (binary large object)
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型. BLOB是一个大文件,典型的BL ...
- LiveMediaStreamer
LiveMediaStreamer is an open source multimedia framework that allows the manipulation of multiple au ...
- TYVJ 1094 矩形分割
时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 YHOI Train#4 Problem 1 描述 出于某些方面的需求,我们要把一块N×M的木板切成一个个1× ...
- openfire服务器开发环境搭建
2017-07-26 更新:直接获取最新版源码,就不会报错了,而且可支持的插件多,老版本的openfire几乎没有可用的官方插件. 系统及软件环境: MAC OSX EI Capitan 10.11. ...