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,熄灭 ...
随机推荐
- 为UniDBEdit添加拖拽属性
不知是作者Fashard的疏忽还是有意,UniDBEdit的拖拽属性居然没有发布出来(其他组件都已发布).加上其实也很简单. 打开source目录下的uniDBEdit.pas单元,在TUniDBEd ...
- 算法(Algorithms)第4版 练习 1.5.5
对于quick-find,对每个输入数据对,其最少的循环次数为N(sites) 故对于109 sites和106 input pairs,其总的指令次数为:sum = 10^9 * 10^6 * 10 ...
- 使用MapReduce将mysql数据导入HDFS
package com.zhen.mysqlToHDFS; import java.io.DataInput; import java.io.DataOutput; import java.io.IO ...
- 使用POI将doc文件转换为html
需要的jar包有:有一些是依赖包,可以使用maven下载 doc文件转换为html文件 package com.gsww.sxzz.controller.service; import org.apa ...
- cocos2d-x 3.9 android studio项目命令行打包
进入创建的项目的 proj.android-studio目录 cocos run/compile -p android --android-studio 这样就可以打包了
- 日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)
/** * */ package com.dsj.gdbd.utils.web; import org.apache.commons.lang3.time.DateFormatUtils; impor ...
- 单机版 RedisPoolUtil({基本操作封装工具类})【一】
<!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...
- Python — pandas
Pandas有两种数据结构:Series和DataFrame. 1.Series Series类似于一维数组,和numpy的array接近,由一组数据和数据标签组成.数据标签有索引的作用.数据标签是p ...
- 问题杂烩(scrollTop/背景透明度动画)
今天给同学找我帮忙写js,是公司里的活..我是不是应该跟他要钱哈哈,不过一顿饭肯定是免不了的了. 言归正传,今天写了三个小东西,因为兼容性的问题,用jq写的(很是别扭的说,但是没办法啊,一边看api一 ...
- rabbitmq-交换机
四种交换机: direct fanout topic headers http://www.jianshu.com/p/469f4608ce5d