ARM裸机开发bootloader汇编语言

发布者:幸福旅程最新更新时间:2016-06-07 来源: eefocus关键字:ARM  裸机开发  bootloader  汇编语言 手机看文章 扫描二维码
随时随地手机看文章
一、汇编语言概述

1、为什么要使用汇编

一般情况下我们不会用到汇编,但有两种情况下,我们要用到汇编。

1、启动代码。编写bootloader和内核时使用,主要是对cpu和内存进行初始化时使用,因为这个时候还没有c语言的环境(堆栈还没有建立),所以不能用c语言。

2、高效率的特殊需求。因为汇编语言的执行效率要高于c语言,所以对某些对效率要求高的程序要用到汇编,可以是汇编与c语言的混合编程。

2、汇编分类

1、ARM标准汇编,适用于windows平台下ARM公司开发的汇编器ADS。

2、GNU汇编,linux平台下GNU交叉编译工具链中的汇编器。它与ARM标准的一点不同是GNU汇编要在段标记符前加点,例如 .text。而ARM标准则不需要这个点。

3、汇编程序框架

 

(.section).text
.global _start
_start:
<汇编代码>

例子start.S
start.S
.text
.global _start
_start:
mov r1 #1
mov r2 #2
mov r3 #3

makefile文件
all:start.o
arm-linux-ld -Ttext 0x50000000 -o start.elf $^
start.o:start.S
arm-linux-gcc -g -c -o $@ $^
clean:
rm *.o *.elf

 

4、eclipse汇编和调试

调试之前要对调试进行设置,调试的对象是elf文件。还要输入初始化脚本,目的是对处理器进行初始化。

终止用Run-Terminate

 

二、汇编指令分类学习

1、算术与逻辑指令mov mvn add sub and bic

2、比较指令cmp tst

3、跳转指令b bl

4、移位指令lsl ror

5、程序状态字访问指令msr mrs

6、存储器访问指令ldr str

http://blog.csdn.net/quyang0602/article/details/7527496

http://yxmyifeng.blog.163.com/blog/static/12978978220100194272529/

 

.text
.global _start
_start:
@存储器访问指令
mov r0, #0xf
mov r1, #0xff
@str r0, [r1]
@ldr r2, [r1]

@ 程序状态字访问指令
mrs r0, cpsr
orr r0, r0, #0b100
msr cpsr, r0

@移位指令
mov r1, #0b110000
mov r1, r1, lsl#2
mov r1, r1, ror#4

@跳转指令
mov r1, #6
mov r2, #5
cmp r1, r2
bgt branch1
b end
branch1:
sub r3, r1, r2
end:
nop
bl func1
mov r1, r2
func1:
mov r1, r2
mov pc, lr

@比较指令
mov r1, #2
cmp r1, #1
mov r1, #1
cmp r1, #2
mov r1, #1
cmp r1, #1

mov r1, #0b1011
tst r1, #0b01
mov r1, #0b1011
tst r1, #0b100

@算术与逻辑指令
mov r1, #8
mov r2, r1
mov r3, #10
mvn r1, #0b11
mvn r2, #5
mvn r3, r1
mov r1, #9
sub r2, r1, #4
sub r3, r1, r2
mov r1, #1
mov r2, #2
add r3, r1, #44
add r3, r1, r2
mov r1, #0b1011
and r2, r1, #0b11
mov r1, #0b1011
bic r2, r1, #0b101

三、伪指令

1、ARM伪指令怎么定义

ARM伪指令没有对应的机器码,只有在编译过程中起作用,或者转化成其他实际执行的指令来进行操作。

任何的CPU执行的都是机器码,也就是二进制映像文件。

2、伪指令的学习方法

对elf文件进行反汇编,查看反汇编文件中伪指令是如何转化为其他指令执行的。

arm-linux-objdump -D -S

ARM的机器码是32位的整数,被分为几个段,每个段都有自己的意义。机器码与每条指令是一一对应的。

3、伪指令定义

.global全局

.data数据

.ascii字符串

.byte字节

.word字

.align对齐

.equ宏

 

.equ DA,0x89
mov r0,#DA
.align 4

4、操作类伪指令

 

nop 空指令,等效于 mov ro, ro  可以用于延时,保证时序要求。

ldr

mov ro, 0x1ff 这样定义就会出错,因为mov的操作数最多只有8位,另外4位是左右移动表示位。

解决方案:

ldr ro, =0x1ff  等效于ldr r0, [pc, #-4]

四、ARM协处理器访问指令

1、什么是协处理器

协处理器顾名思义就是助手的意思,协处理器可以帮助中央处理器处理一些特定的事务,例如数学协处理器,就可以处理一些数学方面的运算。协处理器有自己的寄存器,cpu通过访问协处理器的寄存器实现与协处理器的协同工作。

2、ARM的CP15

ARM最多达16个协处理器,CP15共提供了16组寄存器,下面是一段来自ARM11手册的CP15的原文介绍

The purpose of the system control coprocessor, CP15, is to control and provide status information for the functions implemented in the ARM1176JZF-S processor. The main functions of the system control coprocessor are:

1、overall system control and configuration

2、cache configuration and management 

3、Tightly-Coupled Memory(TCM)紧耦合内存,性能类似cache

4、Memory Management Unit(MMU) configuration and management

5、DMA control

6、system performance monitoring.

3、协处理器的访问指令

mcr和mrc,mcr实现通用寄存器数据向协处理器传送。mrc实现了协寄存器向通用寄存器的传送。

下面是一个例子(参考ARM11手册编写)

 

.text
.global _start
_start:

mrc p15, 0, r0, c0, c0, 0

nop
 
关键字:ARM  裸机开发  bootloader  汇编语言 引用地址:ARM裸机开发bootloader汇编语言

上一篇:ARM裸机开发bootloader交叉工具链
下一篇:ARM裸机开发bootloader内存初始化

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

Intel CEO:ARM有天然优势,Ulrabook将重振PC市场
    在近日举行的瑞士信贷举办的科技大会上,英特尔总裁兼CEO保罗·欧德宁(Paul Otellini)亲自出席并发言,在回应关于外界关于英特尔质疑的同时,表达了其对超极本(Ulrabook)将重振PC市场的信心。                    英特尔CEO保罗·欧德宁 PC市场需求依然旺盛 超极本将为全民普及价 欧德宁首先谈到了PC市场依然存在旺盛的需求,他说:“在中国、巴西和印度,PC依然非常流行,这些地区将是未来PC的主力消费市场。也许目前市面上的PC确实有些过时,但产业内部会及时对产品进行调整,英特尔正在带领产业再次重新定义PC。”                   英特尔CEO保罗·欧
[工业控制]
半导体界的并购案正在发生着变化
本文作者:Semiengineering主编Ed Sperling 英伟达即将斥资400亿美元收购Arm,预计将对芯片界产生重大影响,但要完全理解这笔交易的影响还需要数年时间。 由于以下几个因素,预计未来几年会有更多这样的交易——有新的创新技术初创企业供应,利率较低,买家的市值和股价较高,这使得借钱或股票交易更加容易。此外,还有各种新兴市场刚刚开始升温,如5G、边缘计算、AI/ML,以及汽车领域的持续发展。这些疾病大多在短期内受到冠状病毒大流行的影响,但这种情况不会永远持续下去。收购是充实公司产品和技术的最快方式,也是公司内部人才库快速增长的一种方式。 Nvidia Arm的交易在所有方面都符合要求。它融合了第一大GP
[半导体设计/制造]
Dualcore推出面向实时应用的两个ARM内核MCU
Dualcore半导体公司推出DCIC9907微控制器(MCU),它包括两个ARM 946E内核、两个CAN通道、两个10Mbit/100Mbit以太网网卡,并可为实时协议进行硬件扩展。 该SoC还提供运动控制逻辑功能,适合对时间要求严格产品及其它工业控制产品。它允许用户在实时条件下进行控制,如需要精确预测时间性能。 在DCIC9907内,两个ARM内核中的其中一个可用于复杂的实时控制,另一个用于系统基础结构,如人机接口和所需的通讯接口。为了达到这个目的,通用的实时操作系统EUROS已经移植到DCIC9907。 两个10Mbit/100Mbit以太网MAC端口具有硬件扩展功能,支持以太网上的实时协议。DCIC9907中集成的
[新品]
基于ARM和蓝牙的无线信号采集系统的设计与实现
1 引 言     无线测试技术在工业领域有广泛的应用前景。在连线复杂并需要反复拆装被测设备和测试设备之间连线的场合,使用无线可以降低工作的复杂程度,节约大量的时间,提高测试环节的工作效率,尤其在有时间限制时其优越性更加明显。此外在不适宜连线的场合,如港口、码头、江河湖坝、野外勘测、石油勘探中油井深处环境参数的测量,使用无线测量具有有线测量无法比拟的优越性。   对于近距离的无线传输,蓝牙由于采用快速跳频技术,确保了链路的稳定,同时使干扰可能造成的影响变得很小,适合用于存在大量噪声干扰的工业测试环境中,由于无线传输的是数字量,因此在通常情况下没有传输误差,不会影响到系统的准确度,并且可以单芯片实现,体积功耗都能达到很小的水平。
[网络通信]
大陆手机芯片势力崛起 ARM架构战局恐风云变色
    大陆加快半导体产业自主研发脚步,在移动装置平台芯片领域,包括华为推出海思芯片,小米与联芯携手研发,中兴通讯全面发展迅龙芯大计,紫光旗下展讯急速拉升手机芯片实力。芯片业者表示,随着大陆手机芯片大军崛起,出货量持续增加,恐扩大对芯片大厂高通(Qualcomm)、联发科冲击,ARM架构芯片战局酝酿风云变色。

   大陆在全球移动装置战局不仅大幅扩张手机品牌势力,并力图掌控关键零组件供应,尤其是ARM架构芯片自主研发实力。芯片业者指出,随着ARM架构在移动装置占据优势且扩大授权,力助大陆手机及芯片业者技术提升,包括华为、瑞芯微及全志等自主研发芯片实力大增,华为旗下海思芯片在2015年表现已足以与联发科拚战。小米决定与联芯携手研
[手机便携]
ARM与GPU构建百亿亿次超级计算机畅想
在过去的SC11大会上,我们已经看到多个与ARM服务器相关的产品,例如ARM芯片新贵Calxeda宣布其能耗为5瓦的EnergyCore ARM芯片,以及该公司与x86服务器巨头HP的合作伙伴关系。ARM架构表现已经越来越突出,但其痛苦而缓慢的64位改造进展预计将于2014年完成。 即便是与最为节省能耗的x86芯片相比,ARM处理器所使用的功率还要小得多,因此众多学者专家们一致认为ARM处理器是解决大规模网络服务基础设施问题的最终答案。但是,当谈及企业和高性能计算(HPC)处理琐事时,ARM并没有轻易地来承担。32位版本的系统无法处理足够的内存,所以ARM芯片及其指令集在服务器应用上缺乏与主流x86处理器一较长短的底气。
[单片机]
arm linux 启动流程
本文探讨Linux操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。 这个部分比较有意思。因为在BIOS阶段(相当与嵌入式ARM Linux的 bootloader),计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。 我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉。 第一步、加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。 以我的电脑为例,/boot 目录下面大概是这样一些文件,ARM Linux一
[单片机]
<font color='red'>arm</font> linux 启动流程
uC/OS II在ARM 上的移植体会
移植uC/OS-II的绝大部分工作都集中在os_cpu_a.s文件的移植,这个文件的实现集中体现了所要移植到处理器的体系结构和uC/OS-II的移植原理;在这个文件里,最困难的工作又集中体现在OSIntCtxSw和OSTickISR这两个函数的实现上。这是因为这两个函数的实现是和移植者的移植思路以及相关硬件定时器、中断寄存器的设置有关。在实际的移植工作中,这两个地方也比较容易出错。 OSIntCtxSw最重要的作用就是它完成了在中断ISR中直接进行任务切换,从而提高了实时响应的速度。它发生的时机是在ISR执行到OSIntExit时,如果发现有高优先级的任务因为等待的time tick到来获得了执行的条件,这样就可以马上被调度执
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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