q2113435929的个人空间 https://www.eechina.com/space-uid-126185.html [收藏] [复制] [RSS]

博客

Linux平台下UT4412BV03裸机开发指南(一)

已有 1576 次阅读2015-10-16 14:16 | 4412, 开发板, Linux, 裸机开发

Linux平台下UT4412BV03裸机开发指南(一)

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

    为了降低系统总成本和提高整体功能,的Exynos4412包括许多硬件外设,如TFT24位真彩色LCD控制器,相机接口,MIPI DSICSI-2,系统管理器的电源管理,嵌入式GPSGLONASS MIPI称为SLIMbus接口,MIPI HSI4UART24通道DMA,定时器,通用I / O端口,三个I2SS/ PDIF8 IIC-BUS接口,3HS-SPIUSB主机2.0USB2.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:程序状态寄存器
(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上成功测试运行过。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部