历史上的今天
返回首页

历史上的今天

今天是:2025年01月10日(星期五)

正在发生

2021年01月10日 | arm 裸板编程的总结(上)

2021-01-10 来源:eefocus

一、嵌入式系统概述

1.微处理器相关


1.体系结构

a.冯诺依曼体系

特点:指令和数据公用同一条数据总线

注重:主频、缓存

b.哈佛体系

特点:指令和数据分开存储,使用不同的数据总线进行传输

注重:流水线的层级

缺点:不适用于 跳转(调度)比较频繁的场合

2.RISC与CISC

a.CISC特点:

1.指令多

2.寻址方式多(甚至可以在内存和内存之间进行寻址,而不通过寄存器)

3.2/8法则

b.RISC特点:

1.指令少,好记

2.寻址方式少,一般只支持load/store两类访存指令

3.流水线

2.嵌入式系统的组成


1.软件

操作系统(可选)

应用程序

网络(可选)

2.硬件

a.嵌入式微处理器

分类:

MCU

MPU

DSP

SOC

组成:

内核(arm、mips、ppc)

外设控制器

内部内存(sram,缓存)

b.时钟

c.电源和复位

d.内存

e.至少一个IO通道

f.其他外围设备

3.最小系统


1.处理器

2.时钟

3.内存

4.电源和复位

5.至少一个IO通道


二、ARM内核概述

1.ARM内核特点:


1.采用哈佛体系结构(ARM7TDMI采用冯诺依曼体系,之后统统采用哈佛体系)

2.采用RISC

1.指令长度固定

2.指令较少

3.寻址方式相对单一

3.流水线技术

2.ARM体系结构版本


ARMv4-ARMv7

3.ARM内核系列


ARM7

ARM7TDMI

ARM9

ARM920T

ARM11

StrongARM

Cortex A,M,R

Cortext A8,M3


三、ARM编程模型

1.工作状态


1.ARM状态--执行32bit的ARM指令

2.Thumb状态--执行16bit的Thumb指令

注:使用BLX或者BX指令可以切换工作状态

2.内存格式


1.支持big-endian和little-endian模式


little-endian

高字节在高地址,低字节在低地址

以低字节为字的地址

big-endian

低字节在高地址,高字节在低地址

以高字节为字的地址

3.数据类型


字--32bit

半字--16bit

字节--8bit

4.操作模式


------------------------------------以下为“非特权模式”

USER(usr)

------------------------------------以下为“特权模式”

System(sys)

------------------------------------以下为“异常模式”

SuperVisor(svc)

FIQ(fiq)

IRQ(irq)

Abort(abt)

Undefined(und)

特权模式与非特权模式


1.特权模式可以访问系统中所有的资源,而非特权模式仅可以访问部分系统资源

2.特权模式之间可以任意切换,非特权模式要想切换到特权模式只有一种手段:异常

5.寄存器


37个寄存器 = 31个通用寄存器 + 6个状态寄存器


前提:User模式和Sys模式共享同一组寄存器

1.几个特殊的寄存器


R13--sp(stack pointer)--习惯使用r13来代表当前模式下的栈指针

R14--lr(link return register)--用于存放子程序调用的返回地址

R15--pc(program counter)--pc总是指向下一条应该被取值的指令

PSR

MODE[4:0]--模式bit

T[5]--状态bit 1代表Thumb

F[6]--Fiq disable1代表disable

I[7]--Irq disable1代表disable

.

.

.

V[28]--溢出

C[29]--进位/借位

Z[30]--zero 1代表zero

N[31]--Negative

2.R0-R12


普通数据寄存器,被所有模式共用

fiq有自己的r8-r12寄存器

3.R13

每种模式有自己独立的r13,因为每种模式都有独立的栈空间

4.R14

每种模式有自己独立的r14,因为每种异常模式都需要使用r14保存异常产生之前的模式的返回地址

5.R15

所有模式共享

6.CPSR

所有模式共享

7.SPSR

每种异常模式都有自己的SPSR


6.异常

1.异常的种类(7种)

Reset

SWISVC

FIQFIQ

IRQIRQ

Undefined InstructionUND

Data Abort

Prefetch AbortABT


2.ARM开发板加电之后的第一个运行模式:SVC


3.产生异常,系统自动做的事情

1.保留返回地址

将下一条指令的地址(PC-4)保存到对应异常的r14寄存器中

2.备份状态寄存器

将当前模式下的CPSR,保存到对应异常的SPSR

3.切换到对应的异常模式

强制修改CPSR的模式bit,为对应的异常模式

4.到异常向量处,取下一条指令

强制将PC的值修改为对应的异常向量


5.对于有些异常,还会禁用中断标志,以阻止不可预期的异常嵌套

6.如果在产生异常之前处于Thumb状态,产生异常之后,会切换到ARM状态


4.从异常中返回,应该做的事情

1.返回继续执行

将异常模式的lr寄存器的值(进行修正)赋给pc

2.恢复cpsr

将异常模式的spsr赋给cpsr

3.如果设置了中断禁用标志,需要清除


5.异常向量

Reset0x0SVC

Undefined Instruction0x4UND

Software Interrupt0x8SVC

Abort(Prefetch)0xCABT

Abort(Data)0x10ABT

IRQ0x18IRQ

FIQ0x1CFIQ

注意:


1.开发板加电之后,执行的第一条指令的地址为0x0

2.开发板加电之后,第一个运行模式是SVC

3.每个异常向量只有4个字节(FIQ除外),只能放一条跳转指令

4.FIQ放在异常向量的最后,可以节省一条跳转指令

6.异常的优先级

Reset

Data Abort

FIQ

IRQ

Prefetch Abort

UND、SWI


==============================================================

day02 ARM指令和寻址方式

==============================================================

1.ARM指令的特点:


1.RISC

2.长度固定,4个字节

3.所有指令可以条件执行

beq

4.采用load/store体系

只有load、store两类指令可以访问内存

5.三级流水线

PC = 当前正在执行的指令的地址 + 8

2.ARM指令格式


MOV{条件}{s} Rd Rn ...

对于立即数包含在指令内部的汇编指令,立即数的范围一定是有限制的,不可能包括0-4G所有数据

条件码:


EQ

NE

GT

GE

LT

LE

AL always1110

3.常用ARM指令


1.mov指令

movr0,r1; r0 = r1

mov r0,#1;r0 = 1;

mov r1,#0x10;r1 = 0x10

2.add、sub

add r0,r0,r1; r0 = r0 + r1

add r0,r1,r2; r0 = r1 + r2

add r0,r1,#0x3; r0 = r1 + 0x3

3.b,bl

mov r0,#1

bl label

mov r0,#2

loop

b loop

label

mov r0,#3

mov pc,lr


4.cmp指令

cmp r0,r1

cmp r0,#0x10


5.ldr指令

ldr r0,[r1];; r0 = *(unsigned int *)r1;

str r0,[r1];; *(unsigned int *)r1 = r0;

6.orr | and


stmfd sp!,{r0-r12,lr}


ldmfd sp!,{r0-r12,pc}^


==============================================================


推荐阅读

史海拾趣

Dynex公司的发展小趣事

以下是关于Dynex公司在电子行业中的五个发展起来的相关故事,每个故事都基于事实进行描述,避免主观褒贬:

  1. 早期发展与产品专业化

Dynex公司成立于1956年,最初专注于设计和生产双极功率半导体器件。在成立初期,公司凭借其创新技术和高品质的产品,迅速在大功率半导体领域获得了良好的声誉。随着市场需求的不断增长,Dynex不断扩展产品线,包括IGBT(绝缘栅双极型晶体管)、功率组件和专用硅蓝宝石集成电路等。这些产品在输配电、传动、航空、工业自动化和控制等领域得到广泛应用,奠定了Dynex在电子行业中的基础地位。

  1. 技术突破与市场竞争

在电子行业竞争激烈的背景下,Dynex持续进行技术研发和创新。公司通过引入先进的生产技术和设备,提升产品性能和质量。同时,Dynex还注重与高校和研究机构的合作,共同开展科研项目,推动半导体技术的突破。这些努力使Dynex在市场中保持领先地位,并赢得了客户的信任和认可。

  1. 国际化战略与市场拓展

随着全球化的发展,Dynex公司意识到必须走向国际市场以获取更广阔的发展空间。因此,公司开始实施国际化战略,积极开拓海外市场。Dynex通过参加国际展会、建立海外销售网络等方式,与全球客户建立联系。同时,公司还根据不同地区的市场需求,调整产品策略和服务模式,以满足客户的多样化需求。这些努力使Dynex在国际市场上取得了显著的成绩。

  1. 收购与整合

在发展过程中,Dynex通过收购和整合其他公司来扩大业务规模和市场份额。例如,在2009年,Dynex收购了某知名半导体公司,将其纳入旗下。这次收购不仅使Dynex获得了更多的技术和产品资源,还增强了公司的竞争实力。此外,Dynex还通过与其他公司的合作和联合开发,共同推动半导体技术的进步和应用。

  1. 智能城市与区块链技术的融合

近年来,随着智能城市的快速发展和区块链技术的兴起,Dynex开始探索将半导体技术与这些领域进行融合。公司利用自身在半导体技术方面的优势,为智能城市的建设提供高效、可靠的半导体解决方案。同时,Dynex还积极研究区块链技术在医疗保健、供应链管理等领域的应用,为客户提供更加安全、便捷的服务。这些努力使Dynex在电子行业中保持了领先地位,并为公司的未来发展注入了新的动力。

Bliley Technologies Inc公司的发展小趣事

随着战争的结束,军事通信市场的需求逐渐减少,Bliley开始寻求新的发展机遇。公司开始将目光投向更广泛的商业应用领域,并逐步拓展其产品线。在20世纪80年代初,Bliley开始生产SC切割晶体,这一创新使其在晶体制造领域取得了新的突破。进入21世纪,Bliley继续加大研发力度,不断推出新的产品和服务。2001年,公司更名为Bliley Technologies Inc.,以更好地反映其日益多样化的产品和服务范围。如今,Bliley已经发展成为一家提供多种频率控制产品的全球领导者。

Exar公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Exar公司始终坚持以创新为核心竞争力。公司不断投入研发资金,加强技术创新和产品研发力度,推出了一系列具有自主知识产权的新产品。同时,Exar还积极关注行业发展趋势和市场动态,不断调整和优化产品线,以适应市场的变化和发展。在未来,Exar将继续坚持创新驱动的发展战略,努力成为电子行业的领军企业。

请注意,以上故事框架仅供参考,具体的故事内容需要根据实际情况进行补充和完善。

Elekon Industries公司的发展小趣事

Elekon Industries公司,简称Elekon,于XXXX年在某科技园区正式成立。公司由一群富有远见和热情的电子工程师创立,他们共同看到了电子行业的巨大潜力和广阔市场。初创阶段,Elekon主要致力于研发和生产高品质的电子元器件,为电子设备制造商提供可靠的产品。通过不断努力,Elekon凭借优秀的产品质量和卓越的创新能力,逐渐在电子行业中崭露头角。

Hendon Semiconductors公司的发展小趣事

Hendon Semiconductors以其强大的定制化集成电路设计能力而闻名。公司拥有一支经验丰富的设计团队,能够为客户提供从概念到量产的一站式解决方案。这种定制化服务不仅满足了客户对特殊功能和高性能的需求,也帮助Hendon Semiconductors在竞争激烈的市场中脱颖而出。通过不断积累成功案例和技术经验,Hendon Semiconductors逐渐在定制化集成电路设计领域建立了良好的口碑。

Andon Electronics公司的发展小趣事

Hendon Semiconductors的起源可以追溯到上世纪90年代,当时它是Philips半导体在澳大利亚的一个分支机构。1997年,随着业务重组和战略调整,该分支机构转变为独立运营的公司,并更名为Integrated Electronic Solutions Pty. Ltd。这一转变标志着Hendon Semiconductors在电子设计与制造领域迈出了重要一步。通过继承Philips半导体的技术遗产和市场资源,Hendon Semiconductors迅速在行业内站稳脚跟,并开始了其自主发展的道路。

问答坊 | AI 解惑

直流电机PWM调速,C51、Proteus环境

分享一个利用AT89C51产生PWM信号控制直流电机调速的模拟模型。 软件环境:Keil C51,Proteus 已有文件:Keil C51工程文件,C51源文件,Proteus模型。已经产生的hex文件…

查看全部问答>

传感器产业发展的新动向

传感器技术是现代科技的前沿技术,传感器产业也是国内外公认的具有发展前途的高技术产业,它以其技术含量高、经济效益好、渗透能力强、市场前景广等特点为世人瞩目。     我国自动化方面的专家呼吁:目前复杂系统越来越复杂,自动化已经 ...…

查看全部问答>

【Labview】labview学习网站有哪些

大家学习labview都在哪些网站和论坛上混啊?     本人常去的有两个,www.ni.com这是NI的网站,学习labview怎么能不上呢!     其次是www.gsdzone.net 这是我常去的Labview论坛,里面有资深NI工程师潜伏哦!…

查看全部问答>

WHY???

在下面代码中发现产生INTSRC_CAM中断后若BIT_SUB_CAM_P和BIT_SUB_CAM_C都没触发 那就执行 “//有疑问的代码”标记的代码 即屏蔽掉了Camera所有中断并返回了SYSINTR_NOP 这样相应的IST得不到执行也就不会调用InterruptDone来打开屏蔽的中断那以后 ...…

查看全部问答>

PB定制wince系统黑屏

本人初学wince编程,想用Platform Builder搭建一个平台,于是照着一篇文章的介绍一步一步的做下来,到最后仿真器终端出现了,可是却没有图形界面,窗口上方有Emulator和Help的菜单,下来就是一片黑屏了。请高手指教一下问题可能出现再哪? …

查看全部问答>

请教版主,stm32的抗静电等级与潮敏是多少?

您好,版主! 我想请教下stm32的抗静电等级与潮敏各是多少呢? 静电等级:J8000 J5000 J2000 J1000 J500 J200 是那个级别的 是j2000吗? 潮敏:C1 C2 C3 C4 C5是那个级别的呢?…

查看全部问答>

霍尔传感器模块

先给个实物图(只一次发不知道怎么把图放在帖子中所以就放在附件中了) 这是网上找的一个程序,按道理说应该可以控制: 但是我用电压表测出来的输出信号只有几十毫安,并且在磁铁周期运动时变化之久几毫安?请问谁能解决这个问题? /*********** ...…

查看全部问答>

2013年电子设计大赛是不是9月7号晚上结束后就不能在做了

本帖最后由 paulhyde 于 2014-9-15 03:13 编辑 同题目    …

查看全部问答>

这里有----Multisim电子电路仿真教程

想学习模电的同学,也可以试试仿真软件哦,,这里有Multisim电子电路仿真教程,但动手还是主要的,,,,, 通过对该软件的学习和使用,读者可以轻松地拥有一个元件设备非常完善的虚拟电子实验室,进而可以完成电子电路的各种实验和设计。全书共9章 ...…

查看全部问答>

RIoTboard相关资料下载分享

以下是RIoTboard开发板相关的资料下载,分享一下,希望对大家有帮助。 ·        RIoTboard用户手册_中文:dl.vmall.com/c09taytfdw·        RIoTboard 原理图:dl.vmall.com/c0mvw ...…

查看全部问答>