ARM裸机程序之LED灯

发布者:CreativeDreamer最新更新时间:2018-10-21 来源: eefocus关键字:ARM  裸机程序  LED灯 手机看文章 扫描二维码
随时随地手机看文章

从3月份开始看arm的裸机程序,到现在一个半月了,做到后来,发现自己越做到综合的程序,越吃力,还是得回头看看,为了最终写一个bootloader打下点基础吧,所以以这篇文章为开始,总结一下之前做过的裸机程序,希望会有所收获,我用的开发板是友善之臂的mini2440。


首先声明一点我都是在linux环境下写裸机程序的,因为这样能知道更多底层的东西,不过在这里面写就是有点不方便的是调试的时候,所以你程序要是调试不出来,你得把程序移植到一些编译器里调试(请注意移植的时候格式有点不同),所以偶尔在keil或ADS里面调试程序。在linux里面写程序最后编译,要配置交叉编译环境,怎么配置交叉编译环境我这里就不介绍了。



下面开始介绍第一个裸机程序,LED灯:


源文件1:led1.s


.text

.global _start

_start:

bl disable_watch_dog        @关闭看门狗

ldr r0, =0x56000010         @设置GPBCON寄存器

mov r1, #0x15400            @设置GPB5,GPB6,GPB7,GPB8为输出引脚

str r1, [r0]

 

ldr r0, =0x56000018        @设置上拉电阻

mov r1, #0x0

str r1, [r0]

 

ldr r0, =0x56000014        @配置GPBDAT寄存器

MAIN_LOOP:                         @进入一个死循环,间隔一段时间点亮4个LED

mov r1, #0x0               @点亮LED

str r1, [r0]

mov r2, #0x50000

bl delay                   @调用下面的延时函数

 

mov r1, #0x1e0             @相应的位设置成高电平,关闭LED

str r1, [r0]

mov r2, #0x50000

bl delay

b MAIN_LOOP

 

disable_watch_dog:

ldr r0, =0x53000000

mov r1, #0x0

str r1, [r0]

mov pc, r14                @把链接寄存器里的值给PC,可以实现函数的返回

delay:

sub r2, r2, #0x1

cmp r2, #0x0

bne delay

mov pc, lr


Makefile:

ledpp1.bin : led1.s

arm-linux-gcc -g -c -o led1.o led1.s

arm-linux-ld -Ttext 0x00000000 -g led1.o -o ledpp1_elf

arm-linux-objcopy -O binary -S ledpp1_elf ledpp1.bin

arm-linux-objdump -D -m arm ledpp1_elf > ledpp1.dis

clean:

rm -rf ledpp1.bin ledpp1_elf ledpp1.dis *.o


第一个程序就是这两个文件,程序实现的功能是开发板上4个LED灯 间隔2S左右的时间闪烁,因为这个程序我没有用定时器,所以那个2S是我估算的。

首先分析这个程序的Makefile:第一句表示生成一个ledpp1.bin的可执行文件(这个文件是最后下载到开发板上的),冒号的右边的led1.s文件是这个ledpp1.bin文件锁依赖的文件,也就是说ledpp1.bin依赖于led1.s,还有一点是你可以把这条语句理解成一个条件判断语句,如果led1.s的时间比ledpp1.bin时间新的话,就执行下面4条语句,一下四条分别是汇编生成led1.o文件,链接生成ledpp1_elf文件,arm-linux-objcopy生成.bin文件,最后一步生成反汇编代码。最后clean:里面的就是每次在make的时候删除除了led1.s 和Makefile的其他文件了。




下面分析led1.s的代码,首先关闭看门狗,为了不使程序反复地重启。这里涉及到三个寄存器:1.GPBCON寄存器,可以查看s3c2440A的芯片手册284页,这个寄存器的作用,配置开发板上各个引脚时输入引脚,还是输出引脚,还有中断引脚等等,这里是把LED配置成输出引脚。至于为什么配置成输出引脚,涉及一点硬件的知识,自行百度即可。


2.GPBUP寄存器:设置引脚是否上拉。


3.GPBDAT寄存器:这里写对应上面GPBCON寄存器,例如GPBDAT寄存器的第5位设置为1,表示输出高电平,设置为0表示设置低电平,LED的各个引脚时低电平使能的。


说到这里讲解完毕,几条汇编指令bl指令,ldr指令都挺有意思的,想更深入理解这些指令,可以看看最后生成的反汇编文件ledpp1.dis文件,看懂反汇编,以后去破解破解正版软件好像挺不错的样子

关键字:ARM  裸机程序  LED灯 引用地址:ARM裸机程序之LED灯

上一篇:ARM裸机程序之存储管理器控制SDRAM
下一篇:STM32——关于printf重定向到串口的问题

推荐阅读最新更新时间:2024-03-16 16:17

【技术视点】LED灯罩如何选择?
led 灯罩的选择相信是很多厂家都比较看重质量,但是如何才能选择好的LED灯罩和好的生产厂家或理加工厂呢?其实我们可以看一个企业的知名度和口碑,再结合产品,相信LED灯罩的质量肯定是没有问题,在这里推荐东莞适质塑料有限公司。   LED灯罩的更新换代比较快,而且灯具大部分都是设计师精心设计,对于灯来说,不用将灯整个都换掉,只需要把灯具的外部灯罩进行替换。因此想换换环境去更换LED灯罩是个不错的选择。   首先,先了解一下LED灯罩的不同材质带来的装饰效果有哪些,布面的LED灯罩给人简洁典雅的印象,纸面的灯罩可以营造出朦胧又梦幻的氛围,金属材质的灯罩有种冷调的气质和现代感,而鼓形的灯罩则带给人怀旧的情怀。   其次,根据灯座的形状
[电源管理]
ARM、DSP、FPGA的区别
    ARM:ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软 件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前ARM在手持设备 市场占有90以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。 DSP:DSP(digital singnal processor)是一种独特的微处理器,有自己的
[嵌入式]
Arm架构之Arm内核解析
 Arm 架构已经主导了当今嵌入式处理和计算市场,但在过去的几十年里,Arm 架构却走过了漫长的道路。从20世纪80年代开始,它起初是作为家用电脑处理器,然后在20世纪90年代成为手机芯片的基础。如今,在几乎所有技术细分市场,Arm都是一个强有力的竞争者。许多人认为,Arm 架构已成为 32 位或 64 位处理器的首选。由于这种广泛应用,现在已经有成千上万种基于Arm架构的变体。了解这些内核彼此之间的不同是做出选择决策的重要一环。   早在 2004 年,最初的 Cortex 家族就使 Arm架构分化为三个内核产品组,每个产品组都针对不同类型的应用。最早集成到芯片的是Cortex-M,它已成为基于Arm微控制器(MCU)生态系
[单片机]
<font color='red'>Arm</font>架构之<font color='red'>Arm</font>内核解析
新一代RISC微处理器ARM11的特点及关键技术
ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。   该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。   本文将对全新的ARMv6架构进行介绍,并深入分析ARM11处理器的先进特点和关键技术。 ARMv6结构体系   实现新一代微处理器的第一步就是订立一个新的结构体系。这里所说的结构体系只是对处理器行为进行描述,并不包括具体地指定处理器是如何被建造的。结构体系的定义提供了处理器和外界(操作系统,应用程序和调试支持)的接口,从细节上说,处理器结构体系定义了指令集、编程模式和最近的存储器之间的接
[其他]
新一代RISC微处理器<font color='red'>ARM</font>11的特点及关键技术
英特尔与ARM化敌为友:未来将制造ARM芯片
在美国旧金山昨日召开的英特尔全球开发者论坛(IDF)中,英特尔正式宣布已与竞争对手ARM达成新的授权协议,英特尔将从ARM处获取技术授权。这意味着,英特尔将向第三方开放自己的芯片工厂,包括10纳米工艺的生产线,用于生产ARM技术的芯片。 这是半导体领域的大事件。多年来坚持自研自产英特尔终于按耐不住敞开大门,加入代工厂领域竞争。在CEO科再齐的带领下,英特尔正游说扩大其代工业务范围。获得ARM的技术授权,将能生产ARM架构的处理器产品,才能真正迎合移动市场的主流需求,是为接下来争取苹果、高通等代工订单所迈出的一大步。凭借优异的制造技艺,英特尔或将改写半导体代工厂领域格局。 英特尔即刻宣布,韩国第二大手机制造商L
[半导体设计/制造]
ARM裸机篇---启动代码分析
先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码。 下面的代码先暂且这样吧,没啥注释的,时间关系,我还是先搞些应用再说^_^ ;========================================= ; NAME: 2410INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables ; HISTORY: ; 2002.02.25:kwtark: ver 0.0 ; 2002.03.20:purnnamu: Add
[单片机]
基于ARM9和GSM/GPRS的无线可移动红外监测报警系统
传统的图像监测系统往往布线复杂,通过远距离有线传输而费用高昂,并且灵活机动性小,由于GPRS(通用分组无线业务)通信技术在中低速率无线数据传输方面的突出优势,基于GPRS网络的图像监测系统打破了电缆和光纤传输的限制,在图像监控系统市场中占有很大优势。但是使用GPRS网络进行实时监控的网路费用较大,而在某些场合,比如运送重要物品的货车、无人值守的贵重设备等并不需要实时监控,仅当有入侵障碍物时才需要采集和传输现场图像并发送报警信号,以达到监测和防盗的目的。 针对这个问题,本文设计了一种基于ARM9和GSM/GPRS网络的无线可移动红外监测报警系统,使用红外监测模块对被监测点进行监测,当探测到入侵障碍物时调用图像采集设备对现场状
[单片机]
基于<font color='red'>ARM</font>9和GSM/GPRS的无线可移动红外监测报警系统
ARM体系的嵌入式系统BSP的程序设计
  arm公司在32位RISC的CPU开发领域不断取得突破,其结构已经从V3发展到V6。   BSP(Board Support Package)板级支持包介于主板硬件和操作系统之间,其功能与PC机上的BIOS相类似,主要完成硬件初始化并切换到相应的操作系统。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说,尽管实现的功能一样,可是写法和接口定义是完全不同的。另外,仔细研究所用的芯片资料也十分重要,例如尽管arm在内核上兼容,但每家芯片都有自己的特色。所以这就要求BSP程序员对硬件、软件和操作系统都要有一定的了解。   本文介绍基于a
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved