02-JZ2440裸机学习之GPIO实验【转】
本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/54910717
版权声明:本文为博主原创文章,转载请注明http://blog.csdn.net/fengyuwuzu0519。
一:汇编点亮一个LED
1看原理图
2设置寄存器,配置引脚
3代码现
- @******************************************************************************
- @ File:led_on.S
- @ 功能:LED点灯程序,点亮LED1
- @******************************************************************************
- .text
- .global _start
- _start:
- LDR R0,=0x56000050 @ R0设为GPFCON寄存器。此寄存器
- @ 用于选择端口B各引脚的功能:
- @ 是输出、是输入、还是其他
- MOV R1,#0x00000100
- STR R1,[R0] @ 设置GPF4为输出口, 位[8:7]=0b01
- LDR R0,=0x56000054 @ R0设为GPBDAT寄存器。此寄存器
- @ 用于读/写端口B各引脚的数据
- MOV R1,#0x00000000 @ 此值改为0x00000010,
- @ 可让LED1熄灭
- STR R1,[R0] @ GPF4输出0,LED1点亮
- MAIN_LOOP:
- B MAIN_LOOP
4 编写Makefile
- led_on.bin : led_on.S
- arm-linux-gcc -g -c -o led_on.o led_on.S
- arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
- arm-linux-objcopy -O binary -S led_on_elf led_on.bin
- clean:
- rm -f led_on.bin led_on_elf *.o
-o 输出
-c汇编不链接
-Ttext 0x0000000:代码段地址0.
5将代码上传至服务器
make编译生成 .bin文件
6下载至开发板
cd H:\ARM学习\code\gpio
oflash 选择相关选项 下载代码到开发板,上电观察现象。第一个灯亮
二:C点亮LED
1.启动文件
库(启动文件,之前是系统做好的)+自己的程序(led.c)
现在都自己来写
启动文件 crt0.S:要做什么呢?软件初始化+硬件初始化
(设置栈 就是栈指针SP指向某个内存,如果是SDRAM就要执行初始化操作)
crt0.S:
- @******************************************************************************
- @ File:crt0.S
- @ 功能:通过它转入C程序
- @******************************************************************************
- .text
- .global _start
- _start:
- ldr r0, =0x53000000 @ WATCHDOG寄存器地址
- mov r1, #0x0
- str r1, [r0] @ 写入0,禁止WATCHDOG,否则CPU会不断重启(硬件初始化完毕)
- ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
- @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
- bl main @ 调用C程序中的main函数(BL指令会记录返回地址YF)
- halt_loop:
- b halt_loop
2、C函数编写
- #define GPFCON (*(volatile unsigned long *)0x56000050)
- #define GPFDAT (*(volatile unsigned long *)0x56000054)
- int main()
- {
- GPFCON = 0x00000100; // 设置GPF4为输出口, 位[9:8]=0b01
- GPFDAT = 0x00000000; // GPF4输出0,LED1点亮
- return 0;
- }
-Ttext 0x0000000:代码段位于0地址。
写法解释:
总结:
裸机程序,主要包括两部分
(1)启动文件(汇编指令):负责初始化,为C准备环境
(2)C程序:实现硬件功能
02-JZ2440裸机学习之GPIO实验【转】的更多相关文章
- Cortex-M3学习日志(一)-- GPIO实验
因为项目所需,所以不得不开始研究M3,我用的是NXP公司的LPC1768这个芯片,它是具有三级流水线的哈佛结构,带独立的本地指令和数据总线以及用于外设的稍微低性能的第三条总线,还包含一个支持随机跳转的 ...
- S02_CH10_ User GPIO实验
S02_CH10_ User GPIO实验 在之前的第四章课程中,我们详细的讲解了如何在VIVADO软件下封装一个简单的流水灯程序.在ZYNQ开发过程中,有时候我们可能会需要与ARM硬核进行通信,在这 ...
- 第六周学习总结&java实验报告四
第六周学习总结&java实验报告四 学习总结: 上一周因为接近国庆假期,所以老师没有讲太多的新知识点,只要是带我们一起做了一个动物模拟变声器的实验,进一步了解和学习到继承的 有关知识点和应用: ...
- JZ2440裸机点亮LED【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 一.我们首先来做第一个实验,用汇编语言点亮板子上的LED. 1.1 LED的原理图 从下面的原理图可知LED1是 ...
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)
目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...
- JZ2440 裸机驱动 第5章 GPIO接口
本章目标: 掌握嵌入式开发的步骤:编程.编译.烧写程序.运行 通过GPIO的操作了解软件如何控制硬件 5.1 GPIO硬件介绍 S3C2440A有130个多功能输入/输出口引脚 ...
- Beaglebone Back学习四(GPIO实验)
GPIO Beaglebone Back开发板引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Refere ...
- nrf52裸机学习——GPIO操作
/** * @brief Function for writing a value to a GPIO pin. * * Note that the pin must be configured as ...
随机推荐
- java_线程类的基本功能
Thread类是实现了Runnable接口 其方法有: start()开始:开始线程 run()跑:线程内容 currentThread()现在的线程:返回当前线程 getName():获取线程名 s ...
- SpringMVC-Mybatis整合和注解开发
SpringMVC-Mybatis整合和注解开发SpringMVC-Mybatis整合整合的思路在mybatis和spring整合的基础上 添加springmvc.spring要管理springmvc ...
- TWaver 3D应用于大型数据中心(续)
在2014年11月份,我们当时发了一篇有关TWaver HTML5 3D应用于大型数据中心的文章,该blog比较详细的描述一些常用的功能的实现方法,比如:动态添加机柜,告警,温度,湿度等相关的功能的具 ...
- 攻破javascript面试的完美指南【译】
攻破javascript面试的完美指南(开发者视角) 0. 前言 本文适合有一定js基础的前端开发人员阅读.原文是我google时无意发现的, 被一些知识点清晰的解析所打动, 决定翻译并记录下来.这个 ...
- 小程序接口越过域名和https限制方法
都知道小程序上线接口需要域名,还需要https,就算是体验版的都是需要的,这样就筛选掉一大批开发者,像我这样只有学生轻量级服务器的学生要开发自己的小程序就很为难,但今天确惊奇的在小程序社区里面找到了用 ...
- ubuntu解压zip文件出现乱码情况解决方法
使用 unzip datastructure.zip 出现下面的情况: extracting: └╧╗╞/╗·╞ў╤з╧░╝п╜ї/╩¤╛▌╜с╣╣╙ы╦у╖и/╩¤╛▌╜с╣╣╙ы╦у╖иги2гй ...
- 初识 MyBatis
框架技术 使用框架构建项目,当确定使用哪个技术框架后,就已经有了一个 “半成品”,然后在这个半成品上填上内容,完成任务需求. 框架技术的优点: (1)不用再考虑公共问题,框架已经帮我们做好了. (2) ...
- db2层级查询
CREATE VIEW v_orgtype99 asSELECT t1.SYS_ORG_TYPE_NAME top_name1, t2.SYS_ORG_TYPE_NAME top_name2, --若 ...
- 统计nginx日志里每五分钟的访问量
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Random_lee import time import os import re cla ...
- axios在实际项目中的使用介绍
1.axios本身就封装了各种数据请求的方法 执行 GET 请求 // 为给定 ID 的 user 创建请求 axios.get('/user?ID=12345') .then(function (r ...