我和ARM的那些事儿3 beep之旅,最详细的ARM裸机工程设置
前言
在博客园里面我搜索了老半天,找相应的mini2440的裸机开发的程序,让我挺失望的就是居然没有人对做arm这块做详细的解答,到底如何去做,到底如何去配置,都不清楚,让我很纠结,那么我花了近一星期的时间,翻书、查资料、逛论坛,终于在自己一点一点地摸索下把整个流程都搞定了!而且谁说ARM硬件平台的同学不搞开源的,作为硬件狗,我们也是很乐意与大家分享我们的项目的!
个人设定目标
使用mini2440上的蜂鸣器进行呼叫。
准备
Mini2440开发板、keil 4 for arm
Keil的配置
OK,首先我们要新建一个project
Project->new uvision project
写完自己的项目名以后,要选择自己的CPU了
OK,我们选择的就是三星的S3C2440A的芯片
问你是否把keil写的加入到项目中,我们选否,自己进行配置
按F2键可以修改工程项目名
当然我们也可以右击后选择Mange Project Items对我们的工程项目进行管理
点击OK
马上我们的工程现在就有个完整的体系
下面就是对keil的target进行设置。
找到按钮
设置ROM起始地址,至于为何是0x30000000,请查看芯片手册
设置RAM
设置产生文件的地方,我们一般都是放在Out目录下
点击select folder for objects
选择你要的路径
在USER中勾选run#1项表示在编译过程中如何连接等
命令如下:
fromelf.exe --bin -o ./out/@l.bin ./out/@l.axf
因keil默认不能产生bin文件,需借助fromelf.exe工具来产生bin文件
头文件引入设置
OK,基本上我们的工程已经设置完成了!
开启Beep之旅
要操作硬件,那么我们必须要知道它的电路图是如何的?
看到了吧,我们要寻找GPB0口对蜂鸣器进行操作。
那么我们要操作这个口,必须找到他的地址,我们去找到MINI2440_CPU芯片文档
OK,我们找到了GPB口的寄存器
看到芯片手册中的GPB0口了吧,OK,呢么我们应该使用的是OUTPUT模式,嗯!基本上我们是有思路了。
OK,这个就是我们设置数据的寄存器,哈哈,可以了!
看我蓝线的部分,英语真心重要啊!当端口被设置为输出端口时,这个GPBDAT寄存器就是被设置为相应的数值。
编码时间
OK,上面我们已经讲得非常清楚如何来配置了。一条清晰的思路已经在我们的脑海里面形成,下面就是我们如何来实现了。
新建好一个空白的文件。
然后编码了:
AREA RESET,CODE,READONLY
ENTRY
LDR R1, =0x56000010
LDR R2, =0x1
STR R2, [R1]
MainLoop
LDR R1, =0x56000014
LDR R2, =0x1
STR R2, [R1] LDR R1, =0xFFFFFF
Delay1
SUB R1, R1, #
CMP R1, #
BNE Delay1 LDR R1, =0x56000014
LDR R2, =0x0
STR R2, [R1] LDR R1, =0xFFFFFF
Delay2
SUB R1, R1, #
CMP R1, #
BNE Delay2 B MainLoop END
保存,将我们的文件保存为demo.s格式
将我们的文件添加到我们的src目录下
Add existing file to ….
编译
看结果:
很明显,这个项目没有错误,OK,使用MINItool下载OUT目录下的bin文件吧!
我和ARM的那些事儿3 beep之旅,最详细的ARM裸机工程设置的更多相关文章
- 详细解读ARM寄存器之CPSR【转】
本文转载自:https://blog.csdn.net/david_luyang/article/details/6276533 详细解读ARM寄存器之CPSR 整理人:卢阳 QQ:820927872 ...
- ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍
要学习一个东西首先要把概念搞清楚,以下仅仅是自己的一些关于汇编的理解. 可运行文件里的01码是机器码,机器码不等于汇编码,尽管机器码能够非常easy翻译成汇编码. 汇编码中包括非常多汇编指令.伪指令和 ...
- 我与ARM的那些事儿2JINLK烧录nor flash
前言 最近在研究mini2440的友善之臂,但是我拿着的是实验室早期买的开发板,在做裸机开发的过程中老是不能很好地使用最新版的minitools进行烧录,因而各种不爽,因为生成了bin文件不能很好地传 ...
- 我与ARM的那些事儿1初识ARM
最近一直在研究ARM,说到ARM,我们首先想到了是三星.高通等公司,这些公司都制造CPU的,其实ARM也是一家公司,只不过它是提供最核心的逻辑电路,而且它的赚钱方式是与其他公司进行双赢的!你卖出多少芯 ...
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- ARM的常数表达式
ARM的常数表达式 如果说Intel指令中的立即数,相信大家都很熟悉.类似的,Arm指令中的“立即数”就是常数表达式.之所以称为常数表达式,而不称为立即数是有原因的. Intel指令属于CISC指 ...
- Azure ARM (13) 从现有VHD文件,创建新的ARM VM
<Windows Azure Platform 系列文章目录> 本文参考了Git Hub的ARM Template: https://github.com/Azure/azure-quic ...
- iOS程序破解——ARM汇编基础
原文在此:http://www.cnblogs.com/mddblog/p/4951650.html 一.Thumb指令与ARM指令 Thumb指令为16位,因此存储代码的密度高,节省存储空间.但是功 ...
- ARM 开发工具 Keil和DS-5的比较。
http://www.eeboard.com/bbs/thread-25219-1-1.html 如今ARM体系架构的处理器在嵌入式市场上呼风唤雨,从低端的MCU应用到高端的多媒体消费电子,移动设备领 ...
随机推荐
- 仿微信聊天面板制作 javascript
先上图吧 , 点击头像更换说话对象,简单说下实现原理,html中创建一个ul用于存放所有说话的内容,对话内容是有javascript 动态生成, 主要难点:先布局好css,当时奥巴马发送时候,让这个l ...
- dynamic的一些使用心得
dynamic关键字才出来的时候,觉得真是没什么用,谁总是和com交互来交互去啊,唯恐避之不及啊. 后来逐渐算是有了一些使用心得,发现这货还真是犀利啊,故在此举几个例子,起抛砖引玉之用. 1.替代XX ...
- Spring-JDBDTamplate 的操作
基本的 增,删,改:(只演示增加 因为他们调用的方法都是update方法): package com.hxzy.spring_jdbc_template; import org.springfr ...
- JAVA构造函数(方法)
一.什么是构造函数 java构造函数,也叫构造方法,是java中一种特殊的函数.函数名与相同,无返回值. 作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法. 在现 ...
- Mysql6.0连接中的几个问题 Mysql6.xx
Mysql6.0连接中的几个问题 在最近做一些Javaweb整合时,因为我在maven官网查找的资源,使用的最新版,6.0.3,发现MySQL连接中的几个问题,总结如下: 1.Loading clas ...
- RN 47 初始化 Bridge 过程
- (instancetype)initWithDelegate:(id<RCTBridgeDelegate>)delegate bundleURL:(NSURL *)bundleURL ...
- P1975 [国家集训队]排队
题目链接 题意分析 我们考虑 交换两个数\([le,ri]\)的贡献 减少的逆序对数\([le,ri]\)中小于\(num[le]\)以及大于\(num[ri]\)的数 增加的\([le,ri]\)中 ...
- POJ 2192
#include <iostream> #include <string> #define MAXN 500 using namespace std; bool dp[MAXN ...
- 关于ajax学习
一.Ajax是XMLHttpRequest对象,javascript,XML,CSS,DOM等多种技术的组合 1.XML :(可扩展的标记语言) 提供了用于描述结构化数据的格式,适用于不同应用间的数据 ...
- 服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSp ...