深入剖析ARM Cortex-A8
2019-10-10 09:34:16 1 举报
AI智能生成
深入剖析ARM Cortex-A8
作者其他创作
大纲/内容
7 存储器管理
7.1 存储器概述
7.1.1 存储器组织结构
7.1.2 随机存储器和只读存储器
7.2 S5PV210的存储系统
7.2.1 S5PV210的虚拟内存映射
7.2.2 S5PV210微处理器的启动过程
7.3 S5PV210的内存控制器
7.3.1 DRAM控制器
7.3.2 SROM控制器
7.3.3 OneNAND控制器
7.3.4 NANDFLASH控制器
7.4 控制iCache
7.4.1 什么是Cache
7.4.2 程序相关讲解
7.4.3 编译代码和烧写运行
7.4.4 编译代码和烧写运行
7.5 重定位代码到IRAM+0x4000
7.5.1 重定位
7.5.2 程序相关讲解
1.link.lds
2.start.S
7.5.3 编译代码和烧写运行
7.5.4 实验现象
7.6 重定位代码到DRAM
7.6.1 关于DRAM
7.6.2 程序相关讲解
1.BL1/start.S
2.BL1/memory.S
3.BL1/mmc_relocate.c
4.BL2/start.S
7.6.3 编译代码和烧写运行
7.6.4 实验现象
7.7 NANDFlash的读写擦除
7.7.1 关于NANDFlash
7.7.2 程序相关讲解
1.nand.c
2.main.c
7.7.3 编译代码和烧写运行
7.7.4 实验现象
8中断机制
8.1 中断的基本概念
8.1.1 中断的概念
8.1.2 中断源、中断信号和中断向量
1.中断源
2.中断信号
3.中断向量
8.1.3 中断优先级
1.菊花链中断优先级电路
2.中断优先级编码电路
8.1.4 中断操作
8.2 S5PV210的中断系统
8.2.1 向量中断控制器
8.2.2 S5PV210的中断源
8.2.3 中断相关寄存器
8.3 中断编程示例
8.3.1 程序相关讲解
1.start.S
8.3.2 编译代码和烧写运行
8.3.3 实验现象
9 系统时钟和定时器
9.1 系统时钟
9.1.1 时钟域
9.1.2 时钟声明
1.来自时钟引脚的时钟
2.来自CMU的时钟
9.1.3 时钟关系
1.各时钟的关系
2.推荐的高性能操作频率值
3.PLL
9.1.4 时钟的产生
9.1.5 时钟配置过程
9.1.6 系统时钟相关寄存器
1.PLL锁定时间寄存器
2.PLL控制寄存器
3.时钟源控制寄存器
4.时钟分频器控制寄存器
9.1.7 系统时钟示例
1.程序相关讲解
2.编译代码和烧写运行
3.实验现象
9.2 PWM定时器
9.2.1 PWM定时器概述
9.2.2 PWM定时器特点
9.2.3 PWM定时器的操作
1.预分频器和分割器
2.基本的定时器操作
3.自动重载和双缓冲
4.初始化定时器
5.脉宽调制(PWM)
6.输出电平控制
7.死区发生器
9.2.4 PWM定时器相关寄存器
9.2.5 PWM定时器编程示例
9.3 看门狗定时器
9.3.1 看门狗定时器简介
9.3.2 看门狗定时器相关寄存器
9.3.3 看门狗定时器编程示例1
9.3.4 看门狗定时器编程示例2
9.4 RTC实时时钟
9.4.1 RTC实时时钟简介
1.闰年发生器
2.读/写寄存器
3.后备电池工作
4.报警功能
5.Tick计时中断
9.4.2 RTC相关寄存器
9.4.3 RTC编程示例
10 串行通信接口
10.1 串行通信概述
10.1.1 通信的概念
10.1.2 通信的分类
1.按传输媒质分类
2.按信道中传输的信号分类
3.按工作频段分类
4.按调制方式分类
5.按通信双方的分工及数据传输方向分类
10.1.3 串行通信和并行通信
10.1.4 同步通信和异步通信
1.同步通信
2.异步通信
10.2 UART接口
10.2.1 基本术语
1.数据速率
2.奇偶校验
3.数据格式
10.2.2 异步串行通信协议
1.RS-232C的物理特性
2.RS-232C的信号特性
3.RS-232C的电气特性
4.使用RS-232C通信时应注意的事项
5.RS-485简介
10.2.3 S5PV210的UART接口
1.UART简介
2.UART的特点
3.UART操作
10.2.4 S5PV210的UART相关寄存器
10.2.5 UART编程示例1
10.2.6 UART编程示例2
1.移植的途径
2.移植步骤
3.程序相关讲解
4.编译代码和烧写运行
5.实验现象
10.3 IIC接口
10.3.1 IIC总线接口简介
10.3.2 S5PV210的I2C接口
1.S5PV210的I2C总线接口主要特点
2.I2C总线接口操作模式
10.3.3 S5PV210的IIC相关寄存器
10.4 SPI接口
10.4.1 SPI接口简介
10.4.2 S5PV210的SPI操作
1.操作模式
2.FIFO访问
3.RxFIFO中的结尾字节
4.数据包数量控制
5.芯片选择控制
6.高速运行从模式
7.反馈时钟选择
8.SPI传输格式
10.4.3 S5PV210的SPI相关寄存器
10.4.4 特殊功能寄存器的设置顺序
11 人机接口技术
11.1 LCD接口
11.1.1 LCD简介
1.LCD显示原理
2.液晶屏的分类
3.液晶屏的选择
11.1.2 S5PV210的LCD控制器
1.显示控制器的主要特点
2.子块简介
3.数据流
4.接口
5.颜色数据概述
6.颜色空间转换CSC(COLOR SPACE CONVERSION)
7.调色板的使用
8.窗口混合
9.图像增强
10.VTIME控制器操作
11.命令设置
12.虚拟显示
13.RGB接口规格
14.LCD INDIRECT I80系统接口
11.1.3 S5PV210的LCD相关寄存器
11.1.4 LCD示例1
11.1.5 LCD示例2
1.程序详细讲解
11.2 IIS多音频接口
11.2.1 概述
1.功能描述
2.音频串行数据格式
3.BLC(PCM Bit Length)、采样频率的RFS分割器及BFS分割器(IISLRCLK)、SERIAL BITCLK(IISSCLK)和Root Clock(RCLK)
4.编程指南
11.2.2 S5PV210的IIS相关寄存器
11.2.3 示例1
11.2.4 示例2
1.程序详解
11.3 ADC和触摸屏接口
11.3.1 概述
1.电阻式触摸屏
2.电容式触摸屏
3.红外线触摸屏
11.3.2 S5PV210的ADC和触摸屏接口
1.ADC框图和触摸屏接口
2.功能描述
3.ADC和触摸屏接口输入时钟框图
11.3.3 S5PV210的ADC相关寄存器
11.3.4 示例
1.原理图
2.程序相关讲解
3.编译代码和烧写运行
4.实验现象
11.4 键盘接口
11.4.1 概述
1.去抖滤波器
2.滤波器时钟
3.唤醒源
4.键盘扫描步骤
11.4.2 S5PV210的键盘相关寄存器
12嵌入式系统开发流程与设计方法
12.1 常用开发模型
12.1.1 边开发边修改模型
12.1.2 瀑布模型
12.1.3 快速原型模型
12.1.4 增量模型
12.1.5 螺旋模型
12.1.6 演化模型
12.2 需求分析阶段
12.2.1 系统分析
12.2.2 用户需求
1.分析用户对产品的需求
2.确认用户的需求
3.罗列客户的需求
4.需求的内部一致性
12.2.3 系统需求
1.结构化系统分析
2.使用PDL的系统分析
3.接口系统分析
12.2.4 概要设计
1.系统结构模型建立方式
2.系统结构模型建立流程
12.3 详细设计阶段
12.3.1 体系结构设计
12.3.2 硬件设计
12.3.3 软件设计
12.3.4 设计检查
12.4 科研开发阶段
12.4.1 建模工具
1.Rational Rose
2.Rhapsody
3.IAR VisualState
12.4.2 开发平台
1.硬件平台
2.软件开发平台
12.4.3 软件开发过程
12.5 测试阶段
12.5.1 测试计划目标
12.5.2 测试类型
深入剖析ARM Cortex-A8
前 言
1 绪论
1.1 嵌入式系统概述
1.1.1 什么是嵌入式系统
1.1.2 嵌入式系统的组成
1.硬件层
2.中间层
3.系统软件层
4.应用软件层
1.1.3 嵌入式系统的发展
1.嵌入式系统的发展阶段
2.嵌入式系统的发展趋势
1.1.4 嵌入式系统的应用
1.嵌入式系统应用复杂度
2.嵌入式系统应用领域
1.2 嵌入式处理器
1.2.1 嵌入式微处理器
1.2.2 嵌入式微控制器
1.2.3 嵌入式数字信号处理器
1.2.4 嵌入式片上系统
1.3 嵌入式操作系统
1.3.1 嵌入式操作系统简介
1.3.2 嵌入式操作系统的特点
1.3.3 嵌入式实时操作系统
1.实时操作系统的特点
2.实时系统与分时系统特征的比较
3.使用实时操作系统的必要性
4.实时操作系统的优缺点
1.3.4 常见的嵌入式操作系统
1.μC/OS-II
2.Linux
3.Windows CE
4.VxWorks
1.4 嵌入式技术知识结构
1.5 嵌入式工程师成长之路
1.从学生成为工程师
2.职业规划
2 ARM体系结构
2.1 ARM简介
2.1.1 ARM公司简介
2.1.2 ARM技术特征
2.2 ARM处理器架构
2.3 ARM处理器内核
2.3.1 Classic处理器
1.ARM7处理器系列
2.ARM9处理器系列
2.3.2 Cortex-M系列
1.Cortex-M0处理器
2.Cortex-M0+处理器
3.Cortex-M1处理器
4.Cortex-M3处理器
5.Cortex-M4处理器
6.Cortex-M7处理器
2.3.3 Cortex-R系列
1.Cortex-R4
2.Cortex-R5
3.Cortex-R7
2.3.4 Cortex-A系列
1.Cortex-A5处理器
2.Cortex-A7处理器
3.Cortex-A8处理器
4.Cortex-A9处理器
5.Cortex-A15处理器
6.Cortex-A50系列处理器
7.Cortex-A72处理器
2.3.5 SecurCore处理器
2.3.6 ARM微处理器的应用选型
2.4 Cortex-A8处理器编程模型
2.4.1 Cortex-A8内核结构
2.4.2 Jazelle扩展体系结构
2.4.3 TrustZone安全扩展体系结构
2.4.4 高级SIMD体系结构
2.4.5 VFPv3体系结构
2.4.6 处理器状态
2.4.7 数据类型
2.4.8 存储器格式
2.4.9 存储器系统地址
2.4.10 处理器工作模式
2.4.11 寄存器组
1.通用寄存器组
2.状态寄存器
2.4.12 异常
1.异常的进入和退出
2.复位异常
3.快速中断异常(FIQ)
4.中断异常IRQ
5.中止异常
6.通过CPSR/SPSR屏蔽不精确数据中止
7.软件中断异常
8.监控异常
9.未定义指令异常
10.断点指令
11.异常向量
12.异常优先级
2.4.13 安全扩展
1.出于安全扩展的软件考虑
2.出于安全扩展的硬件考虑
2.4.14 系统控制协处理器
2.5 Cortex-A8存储管理模型
2.5.1 高速缓冲存储器(Cache)
2.5.2 虚拟内存
1.一级页表L1
2.二级页表L2
3.节或页尺寸的选择
2.5.3 页表缓存TLB
2.5.4 存储属性
1.访问许可
2.存储属性
3.域ID
2.5.5 页表的使用
1.地址空间ID
2.转换表基址寄存器0和1
2.5.6 存储顺序
1.强顺序型和设备型
2.普通型
3.存储隔离
2.6 Cortex-A8处理器时钟系统
1.主要时钟域
2.AXI接口时钟ACLK
3.调试时钟
4.ATB时钟ATCLK
2.7 Cortex-A8处理器复位系统
1.上电复位
2.软复位
3.APB和ATB复位
4.硬件RAM阵列复位
5.存储器阵列复位
2.8 Cortex-A8处理器功耗控制
1.动态功耗管理
2.静态功耗管理或漏电功耗管理
2.9 流水线
2.9.1 流水线的概念和原理
2.9.2 流水线的分类
1.3级流水线ARM组织
2.5级流水线ARM组织
3.13级流水线
2.9.3 影响流水线性能的因素
1.互锁
2.跳转指令
3硬件平台详解
3.1 S5PV210处理器概述
3.2 S5PV210系列芯片的结构框图
3.3 S5PV210系列芯片的特性
3.3.1 微处理器
3.3.2 存储器子系统
3.3.3 多媒体
3.3.4 音频子系统
3.3.5 安全子系统
3.3.6 接口
3.3.7 系统外设
3.3.8 AMBA总线
1.AHB总线
2.APB总线
3.3.9 S5PV210和S3C6410的比较
1.两者架构不同
2.两者接口不同
3.两者使用体验
3.4 S5PV210系列芯片的应用领域
3.5 S5PV210芯片的封装和引脚
3.6 开发板硬件设计说明(核心板)
3.6.1 S5PV210(SYS&Connectivity)/Boot Option
1.UART串口
2.SPI接口
3.USB Host/Device
4.音频接口
5.SDMMC接口
6.I2C通信接口
7.键盘和外部中断
8.PWM Timer
9.时钟
10.复位
11.SYSTEM OPTION
12.JTAG
3.6.2 S5PV210(DDR2&SROM Memory)
1.Memory Port 0
2.Memory Port 1
3.Memory Port 2
3.6.3 S5PV210(Media)
1.LCD控制器接口
2.ADC及触摸屏控制器接口
3.TVOUT DAC
4.CAMERA摄像机接口
5.Modem/CAMIF/CFCON/MHL/MIPI/KEYPAD/SROM(ADDR16_22)
6.HDMI
7.MIPI-DSI/CSI
3.6.4 S5PV210(Gen Power)
3.6.5 DDR2(1 Gbit×4)XM1
3.6.6 系统电源
3.6.7 复位电路
3.6.8 系统时钟电路
3.6.9 JTAG接口电路
3.6.10 NANDFlash 芯片模块
3.6.11 音频输入与输出电路
3.6.12 网络驱动芯片模块
3.7 开发板硬件设计说明(底板)
3.7.1 板对板接口
3.7.2 电源
3.7.3 SDIO-GPIO电路、按键电路
3.7.4 蜂鸣器电路
3.7.5 串口电路
3.7.6 G-Sensor
3.7.7 EEPROM芯片
3.7.8 Ethernet
3.7.9 SD卡
3.7.10 Audio
3.7.11 HDMI接口
3.7.12 USB接口
3.7.13 LCD接口
3.7.14 MIPI-DSI接口
3.7.15 摄像头接口
4ARM处理器的指令系统
4.1 寻址方式
1.寄存器寻址
2.立即寻址
3.寄存器移位寻址
4.寄存器间接寻址
5.变址寻址
6.多寄存器寻址
7.堆栈寻址
8.块拷贝寻址
9.相对寻址
4.2 ARM指令集
4.2.1 指令格式
1.条件码
2.符号说明
4.2.2 跳转指令
1.B指令
2.BL指令
3.BX指令
4.BLX指令
4.2.3 数据处理指令
1.数据传送指令
2.算术逻辑运算指令
3.比较与测试指令
4.乘法指令
4.2.4 程序状态寄存器传输指令
1.MRS指令
2.MSR指令
4.2.5 Load/Store指令
1.单寄存器的Load/Store指令
2.多寄存器Load/Store内存访问指令
3.单寄存器交换指令(Single Refister Swap)
4.2.6 异常中断产生指令
1.SVC指令
2.BKPT指令
3.SMC指令
4.2.7 协处理器指令
1.CDP指令
2.LDC和STC指令
3.MCR指令
4.MRC指令
4.2.8 指令速查表
4.3 Thumb指令集
4.3.1 Thumb指令集
4.3.2 Thumb-2指令集
4.3.3 ThumbEE指令集
4.4 ARM伪指令
1.ADR(小范围的地址读取伪指令)
2.ADRL(中等范围的地址读取伪指令)
3.LDR(大范围的地址读取伪指令)
4.NOP(空操作伪指令)
4.5 ARM伪操作
4.5.1 符号定义伪操作
1.GBLA、GBLL和GBLS伪操作
2.LCLA、LCLL和LCLS伪操作
3.SETA、SETL和SETS伪操作
4.RLIST伪操作
4.5.2 数据定义伪操作
1.LTORG伪操作
2.MAP伪操作
3.FIELD伪操作
4.SPACE伪操作
5.DCB伪操作
6.DCD和DCDU伪操作
7.DCFD和DCFDU伪操作
8.DCFS和DCFSU伪操作
9.DCQ和DCQU伪操作
10.DCW和DCWU伪操作
4.5.3 符号定义伪操作
1.IF、ELSE、ENDIF伪操作
2.WHILE、WEND伪操作
3.MACRO、MEND伪操作
4.MEXIT伪操作
4.5.4 杂项伪操作
1.AREA伪操作
2.ALIGN伪操作
3.CODE16、CODE32伪操作
4.ENTRY伪操作
5.END伪操作
6.EQU伪操作
7.EXPORT或GLOBAL伪操作
8.IMPORT伪操作
9.EXTERN伪操作
10.GET(或INCLUDE)伪操作
11.INCBIN伪操作
12.RN伪操作
13.ROUT伪操作
4.5.5 GNU ARM汇编伪操作
1.汇编程序代码控制伪操作
2.Linux汇编程序中的宏定义与条件编译
3.数据定义伪操作
4.其他伪操作
4.6 汇编程序设计
4.6.1 汇编语言的语句格式
1.在汇编语言程序中常用的符号
2.汇编语言程序中的表达式和运算符
3.汇编语言预定义寄存器和协处理器
4.汇编语言内置变量
4.6.2 汇编语言的程序结构
1.汇编语言的程序结构
2.汇编语言的子程序调用
4.7 C语言与汇编混合编程
4.7.1 ATPCS介绍
1.寄存器的使用规则
2.数据栈的使用规则
3.参数的传递规则
4.7.2 内嵌汇编
1.内嵌汇编语言的语法格式
2.内嵌汇编指令的特点
3.内嵌汇编指令注意事项
4.内嵌汇编程序举例
4.7.3 ARM中的汇编和C语言相互调用
1.从汇编程序中访问C程序变量
2.C程序调用汇编程序
3.汇编程序调用C程序
5开发环境详解
5.1 安装并配置Fedora15
5.2 安装交叉编译器
5.3 使用MiniTools烧写裸机程序
5.3.1 什么是MiniTools
5.3.2 安装MiniTools 工具
1.Windows系统下安装
2.Linux系统下安装
5.3.3 如何使用MiniTools烧写裸机程序
5.4 跟我一起写Makefile
5.4.1 Makefile的组成结构
1.Makefile的组成结构
2.make是如何工作的
3.makefile中使用变量
4.让make自动推导
5.另类风格的makefile
6.清空目标文件的规则
5.4.2 Makefile详解
1.Makefile里有什么
2.Makefile的文件名
3.引用其他的Makefile
4.环境变量MAKEFILES
5.make的工作方式
5.4.3 书写规则
1.规则举例
2.规则的语法
3.在规则中使用通配符
4.文件搜寻
5.伪目标
6.多目标
7.静态模式
8.自动生成依赖性
5.4.4 书写命令
1.显示命令
2.命令执行
3.命令出错
4.嵌套执行make
5.定义命令包
5.4.5 使用变量
1.变量的基础
2.变量中的变量
3.变量高级用法
4.追加变量值
5.override指示符
6.多行变量
7.环境变量
8.目标变量
9.模式变量
5.4.6 使用条件判断
5.4.7 使用函数
1.函数的调用语法
2.字符串处理函数
3.文件名操作函数
4.foreach 函数
5.if函数
6.call函数
7.origin函数
8.shell函数
9.控制make的函数
5.4.8 make的运行
1.make的退出码
2.指定Makefile
3.指定目标
4.检查规则
5.make的参数
5.4.9 隐含规则
1.使用隐含规则
2.隐含规则一览
3.隐含规则使用的变量
4.隐含规则链
5.定义模式规则
6.老式风格的后缀规则
7.隐含规则搜索算法
5.4.10 使用make更新函数库文件
1.函数库文件的成员
2.函数库成员的隐含规则
3.函数库文件的后缀规则
4.注意事项
5.5 系统引导程序综述
5.5.1 系统引导程序含义
5.5.2 系统引导程序的功能
5.5.3 BootLoader的操作模式
5.5.4 BootLoader的启动
1.stage1的功能
2.stage2的功能
5.5.5 几个流行的BootLoader
1.Redboot
2.ARMboot
3.U-Boot
4.Blob
5.vivi
5.5.6 U-Boot 分析
1.获取U-Boot
2.U-Boot工程结构分析
5.5.7 移植U-Boot到开发板
6 GPIO端口
6.1 GPIO原理分析
6.1.1 GPIO类型
6.1.2 GPIO特性
6.1.3 端口功能定义
6.1.4 GPIO寄存器
1.端口控制寄存器(GPxnCON)
2.端口数据寄存器(GPxnDAT)
3.端口上拉/下拉寄存器(GPxnPUD)
6.1.5 I/O操作步骤
6.2 点亮LED
6.2.1 原理图
6.2.2 汇编点亮LED
6.2.3 C语言点亮LED
1.为什么调用C函数要设置栈
6.3 控制蜂鸣器
6.3.1 原理图
6.3.2 程序相关讲解
6.3.3 编译代码和烧写运行
6.3.4 实验现象
6.4 查询方式检测按键
6.4.1 原理图
6.4.2 程序相关讲解
6.4.3 编译代码和烧写运行
6.4.4 实验现象
0 条评论
回复 删除
下一页