ARM—简单操作GPIO入门
来源:互联网 发布:怎么在淘宝上买发票 编辑:程序博客网 时间:2024/06/08 12:27
初入领悟:
1、 程序编译
2、 GPIO操作
3、 Volatile使用与意义
Test1 ----- 裸板操作代码
首先代码有汇编部分与C部分;
汇编部分:1、堆栈首地址设置
2、watchdog屏蔽
3、跳转至main()函数
4、停机处理
C部分:实现控制4盏led的点亮操作
首先说明汇编的必要性:程序运行平台为裸板,既无操作系统情况下;先考虑一下,代码编译过程分为:1、预处理2、编译3、汇编4、链接
(此图出自:http://www.chineselinuxuniversity.net/articles/50450.shtml)
在进行编译时编译器会自动在执行程序下加入一些称为启动文件的代码:ctrl.o、ctri.o、crtend.o、crtn.o这些文件均为标准库文件,脱离操作系统后将无法执行,其主要功能为堆栈设置于调用main()函数;
因此我们必须自己完成堆栈与main()函数调用的操作在脱离系统的情况下;
======================================================================
Frist:ctr1.s
/**************************
*完成堆栈设置
*watchdog屏蔽
*main()调用
**************************/
.text
.global _start
_start:
ldr r0,=0x53000000 @将r0设置为watchdog寄存器
mov r1,#0x0 @使用r1保存watchdog寄存器预配值
str r0,[r1] @屏蔽watchdog
ldr sp,=1024*4 @设置堆栈地址
blmain @调用main()函数
loop_tst:
b loop_tst
======================================================================
Second:led_on.c
#define GPBCON (*(volatile long *)0x56000010)#define GPBDAT (*(volatile long *)0x56000014) #define GPB4_out (1<<(4*2))#define GPB3_out (1<<(3*2))#define GPB2_out (1<<(2*2))#define GPB1_out (1<<(1*2)) int main(void){ GPBCON= (GPB1_out) | (GPB2_out) | (GPB3_out) | (GPB4_out); GPBDAT= 0x00000000; return 0; }
==================================================================
Third:Makefile
led_on.bin:ctr1.0 led_on.o
arm-linux-gcc-g -c -o ctr1.o ctr1.s
arm-linux-gcc-g -c -o led_on.o led_on.c
arm-linux-ld-Ttext 0x00000000 -g ctr1.o led_on.o -o led_on_elf
arm-linux-objcopy-O binary -s led_on_elf led_on.bin
arm-linux-objdump-D -m arm led_on_elf > led_on.dis
clean:
rm-f *.o led_on_elf led_on.dis led_on.bin
==================================================================
至此点亮开发板上的led的裸板程序就完成了,make之后即可下载了。- ARM—简单操作GPIO入门
- ARM GPIO口位操作
- 【嵌入式Linux+ARM】GPIO操作
- 【嵌入式Linux+ARM】GPIO操作
- ARM处理器学习之--GPIO操作篇
- 02.ARM-mini2440-GPIO操作-led_on_c
- STM32 GPIO 简单操作函数
- 自己学驱动11——简单GPIO操作
- ARM-GPIO
- 基于ARM的Linux嵌入式系统如何操作GPIO口
- 【ARM】gpio·arm体系结构之gpio
- tiny4412-arm嵌入式开发裸板驱动 (二):arm基础GPIO操作
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)简单易操作
- gpio操作
- GPIO操作
- GPIO操作
- ARM GPIO实验
- ARM GPIO的解析
- My wish list
- ASP和PHP开源CMS系统,可作为二次开发
- C++ 全局变量 静态变量 全局函数 静态函数
- javaweb相关网址记录
- 有关于时间的单位的换算
- ARM—简单操作GPIO入门
- CentOS PPTP VPN服务器快速安装教程
- [电源、屏保、闹钟、日程、墙纸] UILocalNotification实现本地的闹钟提醒的方法。
- 自己动手写操作系统 之 连接器
- http://bbs.cstong.net/read-htm-tid-553476-fpage-2.html
- DP:Palindrome
- org.hibernate.NonUniqueObjectException: a different object with the same ide
- Linux禁用端口
- 国外接活网站报告 - 4大国外自由职业者接活网站