使用软件来访问硬件,有两种基本方式,一是通过访问单个引脚,二是访问总线来访问硬件。

下面就介绍简单的通过访问单个引脚来访问硬件(我个人觉得这对学习指针操作很有帮助)。编码环境:PC下的linux系统,通过u_boot来引导裸板出现的运行。

首先查看硬件原理图,判断是高电平点亮还是低电平点亮,有下图一可知,是低电平点亮LED灯。下图一还可以得出是通过gpk4~7来控制LED,接下来就要通过三星手册(建议看英文版的,因为其他的芯片一般都是英文版的)来查阅它们寄存器的地址。

图一

三星手册上关于gpk的资料如下图二,还提供可看门狗的寄存器地址,后面会用的看门狗。

·

图 二

其中GPRCON是用来配置(Configure)----选择引脚的功能,因为GPK4~7都进行了引脚功能的复用,这里选择输出(Output)也就是读操作。GPKDAT用于数据的读/写操作,这里写此寄存器可控制电平的高低。

这里我们是使用C语言来进行操作的,直接写应用程序下载到裸板上是没用的。C语言的操作要有C语言的环境---设置堆栈,这里就涉及到一个启动文件,该启动文件使用汇编编写,功能包括关看门狗、设置堆栈,调用C程序的main()函数。代码如下:

.text
.global _start
_start:
ldr r0, =0x7E004000            @看门狗寄存器的地址
mov r1, #0x0
str r1, [r0] @关看门狗

ldr sp, =1024*4   @设置堆栈

bl main
halt_loop:
b halt_loop

应用程序:

#define rGPKCON (*(volatile unsigned long *)0x7F008800)
#define rGPKDAT (*(volatile unsigned long *)0x7F008808)
#define GPK5_OUT  (1<<(10*2))
int main()
{
rGPKCON = GPK5_OUT;
rGPKDAT &= ~(1<<5);

return 0;
}

makefile文件:

led2.bin : crt.s led1.c
arm-linux-gcc -g -c -o crt.o crt.s
arm-linux-gcc -g -c -o led1.o led1.c
arm-linux-ld -Ttext 0x00000000 -g crt.o led1.o -o led1_elf
arm-linux-objcopy -O binary -S led1_elf led1.bin
arm-linux-objdump -D -m arm led1_elf > led1.dis
clean : 
rm -f led1.bin led1.dis led1_elf *.o

make命令之后会生成一个.bin文件,将给文件下载到开发板,按下复位键,就可以实现。

s3c6410的GPIO操作相关推荐

  1. Linux下给arm的引脚电平,ARM-Linux GPIO操作事宜

    原标题:ARM-Linux GPIO操作事宜 1.在 Linux 表示为"S3C2410_GPx(n)",其中x的取值为"A,B,C,D,E,F,G,H.....&quo ...

  2. RT-Thread对GPIO操作两种方式的区别:1)通过设备操作接口2)直接通过通用GPIO设备驱动

    在学习RT-Thread设备驱动框架时,看到潘多拉开发板的RT-Thread例程资料中的文档<AN0002-RT-Thread-通用 GPIO 设备应用笔记>有如下描述,因此产生使用文档中 ...

  3. esp32的GPIO操作

    对于任何一款芯片,GPIO接口是其最基本的组成部分,也是一款芯片入门的最基本操作,下面论述下 关于esp32开发版的GPIO操作,本文中重点讲解下 关于如何创建eclipse工程,并通过eclipse ...

  4. linux 标准 GPIO 操作

    Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现. #include    int gpio_request(unsigned ...

  5. 驱动GPIO操作归纳

    IO内存操作可以使用ioremap映射再使用指针操作对应的寄存器,但是比较少使用,一般使用内核提供GPIO操作函数. 一.内核提供的通用GPIO操作的API接口,其文件是gpio.h (include ...

  6. linux蜂鸣器控制实验,【Linux公开课】蜂鸣器使用、LCD背光控制、触摸屏校准、GPIO操作...

    摘要为方便使用蜂鸣器,系统为蜂鸣器提供类似LED的操作接口,对应的操作文件是/sys/class/leds/beep/brightness.写入1使蜂鸣器鸣叫,写入0停止鸣叫- 8.12 蜂鸣器使用 ...

  7. W806 基于Arduino开发的GPIO操作示例,勇于尝新

    W806 基于Arduino的点灯实验的 一.写在前面 1. W806芯片参数: 2. MCU 特性: 3. 供电: 二.环境准备,添加支持包 三.打开永恒的LED测试 四.总结 一.写在前面 w80 ...

  8. HI3516DV300 GPIO操作

    前言 本次实验根据ProYuan28博主写的博客GPIO文档进行适配调试,特此记录GPIO操作. 正文 GPIO分为三个步骤: 1 设置gpio端口复用寄存器: 2 设置GPIO口的方向寄存器(GPI ...

  9. S5PV210 GPIO 操作

    kernel\arch\arm\mach-s5pv210\include\mach\目录下:/* linux/arch/arm/mach-s5pv210/include/mach/gpio.h * * ...

最新文章

  1. jupyter notebook出现cannot import name 'create_prompt_application'问题(Died Kernel)
  2. Windows上部署Ngnix
  3. c++中的new、operator new、placement new
  4. python 写入excel_一行一行整理EXCEL表太麻烦,试试python脚本,1秒写入数据
  5. FATE HDU - 2159(二维完全背包)
  6. Linux学习笔记15—RPM包的安装OR源码包的安装
  7. eventlog analyzer 8.0
  8. boolean类型默认值_【Java基础】还在问String属于什么数据类型
  9. 基于 Flink、ClickHouse 的舆情分析系统:系统架构设计说明书
  10. linux基础学习思维导图及文档(17万字)
  11. 切换阿里巴巴开源镜像站镜像——Kali镜像
  12. 二极管和极性电容的正负测量
  13. hwd分别是长宽高_DS-2CD7A87HWD-XZS 海康威视800万AI人脸抓拍比对筒型网络摄像机
  14. 小偷和抢劫是被怎么遏制的?
  15. office卸载重新安装,并安装mathtype7数学编辑公式
  16. C语言程序设计——结构体
  17. 处理echarts地图省份坐标重叠的方法
  18. Fan996餐饮外卖平台小程序 V1.0.1正式版
  19. 学生上课睡觉班主任怎么处理_学生上课睡觉,你能正确处理吗?
  20. 这是我所收集的一些工具网站

热门文章

  1. 微信小程序加载并且编译显示富文本编辑器内容
  2. 第7章第40节:多图排版:经典的九宫格布局法 [PowerPoint精美幻灯片实战教程]
  3. Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?(转)
  4. ipa文件反编译_iOS class-dump 反编译ipa包
  5. 福建中医药大学数字化校园应用及数据容灾系统181万
  6. Golang线程池gpool
  7. ES1J-ASEMI超快恢复二极管ES1J
  8. 【javaWeb微服务架构项目——乐优商城day15】——会调用订单系统接口,实现订单结算功能,实现微信支付功能
  9. Java Service Wrapper 发布Java程序为Windows服务
  10. 移动端适配多种方案详细分析