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

2019-07-12 18:17发布

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

版权声明 本手册版权归属本人所有并保留一切权力。非经本人同意(书面形式),任何单位及个人不得擅自摘录本手册部分或全部,违者我们将追究其法律责任。   更新说明: ​日期 说明 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位真彩 {MOD}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上成功测试运行过。