Linux平台下4412开发板开发板裸机开发指南 01

时间:2022-07-21 03:29:12

Linux平台下友坚4412开发板裸机开发指南(一)

版权声明

本手册版权归属本人所有并保留一切权力。非经本人同意(书面形式),任何单位及个人不得擅自摘录本手册部分或全部,违者我们将追究其法律责任。

 Linux平台下4412开发板开发板裸机开发指南 01

更新说明:

​日期

说明

2014-12-1

本手册第一次发布,任何问题请在论坛中跟贴反馈。

第一章 简介

第一节 简介

4412的Exynos是一个32位RISC成本效益,低功耗,性能优化的Coretex-A9四核基于微处理器解决方案的智能手机应用程序。提供优化的硬件性能有关智能手机的移动电信服务和一般应用,4412的Exynos采用64位/128位的内部总线架构和许多强大的硬件加速器为不同的任务。这些任务,例如是,运动视频处理,图像信号处理中,显示控制和缩放。集成多格式编解码器(MFC)支持的MPEG-2/4,H.263,H.264和VC1的解码的编码和解码。这种硬件编码器/解码器支持实时视频会议和数字电视了。

内存系统专用DRAM端口和静态存储器端口。专用DRAM端口支持LPDDR2接口的高带宽。静态存储器端口支持NOR闪存和ROM类型外部存储器和组件。

为了降低系统总成本和提高整体功能,的Exynos4412包括许多硬件外设,如TFT24位真彩色LCD控制器,相机接口,MIPI DSI,CSI-2,系统管理器的电源管理,嵌入式GPS和GLONASS ,MIPI称为SLIMbus接口,MIPI HSI,4个UART,24通道DMA,定时器,通用I / O端口,三个I2S,S/ PDIF,8 IIC-BUS接口,3个HS-SPI,USB主机2.0,USB2.0设备运行高速(480Mbps的),两个USB HSIC,只SD主机和高速多媒体卡接口,芯片到芯片接口,以及四个锁相环时钟发生器。

很多嵌入式开发者和爱好者,特别是初学者,如何从底层开始了解和学习Cortex A9,绝非是一件容易的事!为此,在我学习的工程中我将我的学习经验记录下来,可以给你们一个参考

这份裸机指南的内容有些参考《嵌入式Linux系统开发完全手册_基于4412_上册.pdf

第二节 RAM的体系结构

1)cpuregister

(1)cpu的作用是专门用于计算

(2)寄存器来保存数据,寄存器只有地址,没有名字

(3)cpuuser交互使用cpu指令

(4)cpu的运行需要时钟与电源

(5)由于寄存器的数量有限,更多的指令和数据需要存储到内存


2)cpu访问内存过程:

(1)从控制总线发送命令告诉内存要读或写

(2)从地址总线发送地址告诉内存要访问的地址,  地址总线一般是32条,能访问 0 -4G的空间

(3)从数据总线发送或接受数据,数据总线一般是32条,一次能传输4个字节的数据

 

3)ARM核心的构成

ALU :算术逻辑单元

MAC: 乘累加单元

寄存器:保存数据和地址

桶形移位器:用于移位操作


4)ARM寄存器

(1)arm寄存器

(a)cortex-a9核心中的寄存器都是32

(b)寄存器用来保存数据和地址

(c)寄存器一般使用r为前缀(Register)

(d)arm117618个寄存器:包含16个数据寄存器和2个状态寄存器

通用寄存器r0 ---- r15 

特殊功能寄存器

r13:堆栈指针(sp)

r14:链接寄存器(lr,保存用于调用子程序的返回地址

r15:程序计数器 

cpsr:程序状态寄存器

spsr:备份状态寄存器


(2)状态寄存器----cpsr   

(a)cpsr寄存器用于监视和控制程序的运行状态

(b)cpsr分为48位数据区域:标识域、状态域、扩展域和控制域

[31:28]:The condition code flags

N: N=1 表示运算的结果为负数,N=0 表示运算的结果表示为正数或零

Z: Z=1表示运算的结果为零,Z=0表示运算的结果为零

C:可以有4种方法设置C的值:

(a)加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0

(b)减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1

(c)对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

(d)对于其他的非加/减运算指令,C的值通常不改变。

V:可以有2种方法设置V的值:

(a)对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表表示结果溢出。

(b)对于其他的非加/减运算指令,V的值通常不改变。

[27:8]:Reserved(保留位)

[7:6]:The interrupt disable bits

IIRQ中断使能 1:disable 0:enable

FFIQ中断使能  1:disable 0:enable

[5]:The T bit

TARM运行状态 1: THUMB  0:arm

M[4:0]:The mode bits(运行模式位)

0b10000:用户模式

0b10001:FIQ模式

0b10010:IRQ模式

0b10011:管理模式

0b10111:中止模式

0b11011:未定义模式

0b11111:系统模式


5)ARM工作模式

(1)arm工作模式就是系统所处的状态,每种工作模式有不同的权限要求和作用

(2)arm一共有7中工作模式,6种特权模式,5种异常模式

user:普通模式 正常程序执行的模式(特权模式可以切换到普通模式,但不能将普通模式切换到特权模式)

system:跟用户模式一样 用于运行特权级的操作系统任务但可以切换到其他模式(可以通过软件来进行模式进行切换 或者发生各类中断、异常时cpu自动进入相应的模式)

以下为异常模式 

supervisor:管理模式 操作系统管理的模式

abort:数据访问终止模式

Undefined: 未定义指令终止模式

Interrupt:中断模式  

Fast interrupt:快速中断模式 适用于对一个突发事件的快速响应

 

第三节 关于开发环境

 

1) 学习前提:学习过简单的C语言和ARM汇编语言

2) 开发平台:windows 7 + 虚拟机Ubuntu,使用source insight编写代码

3) 交叉编译器:arm-linux-gcc-4.5.1 

:交叉编译器的安装方法可参考<<友坚UT4412BV03开发板用户手册>>。

4) 配套开发板:所有程序均在UT4412BV03上成功测试运行过。