前言.pdf
第1章 嵌入式开发概述
1.1 嵌入式系统介绍
1.1.1 嵌入式系统的概念
1.1.2 嵌入式技术的发展历史
1. SCM(Single Chip Microcomputer)
2. MCU(Micro Controller Unit)
3. SoC(System On a Chip)
1.2 基于ARM处理器的嵌入式Linux系统
1.2.1 ARM处理器介绍
1. ARM的概念:
2. ARM体系架构的版本:
3. ARM处理器系列:
1.2.2 在嵌入式系统中选择Linux的理由
1.3 嵌入式Linux开发板选型
1.3.1 概念纠正
1. 写驱动不涉及CPU,只涉及CPU之外的设备
2. 一理通,百理明:掌握了原理,通吃所有芯片
1.3.2 怎么选择开发板呢?
1. 对于初学者: 我建议用S3C2440入门。
2. 学完S3C2440后再换另一种开发板重写代码
3. 对于已经有工作能力的人,建议考虑国产芯片,比如cubieboard/cubietruck开发板。
1.4本章小结
第2章 嵌入式Linux开发环境搭建
2.1 硬件环境构建
2.1.1 主机与目标板结合的交叉开发模式
2.1.2 硬件要求
1. 主机要求:
2. 目标板要求:
2.2 软件环境构建
2.2.1 主机Linux操作系统的安装
1. 在Windows上安装虚拟机VMware
2. 用VMware打开我们提供的虚拟机映象
2.2.2 主机Linux操作系统上网络服务的配置与启动
2.2.4 光盘的内容结构及安装
1. 光盘的内容结构:
2. 安装光盘:
第3章 相关工具、命令的使用
3.1 Windows环境下的工具介绍
3.1.1 代码阅读、编辑工具Source Insight
1. 创建一个Source Insight工程
2. “同步”源文件
3. Source Insight工程使用示例
3.1.2 文件传输工具cuteftp
3.1.3 远程登录工具SecureCRT
3.1.4 TFTP服务器软件Tftpd32
3.2 Linux环境下的工具、命令介绍
3.2.1 代码阅读、编辑工具KScope
1. 安装KScope
2. 建立KScope工程
3. KScope工程使用示例
3.2.2 远程登录工具C-kermit
3.2.3 编辑命令vi
1. 命令行模式
2. 文本输入模式
3. 末行模式
3.2.4 查找命令grep、find命令
1. grep命令
2. find命令
3.2.5 在线手册查看命令man
3.2.6 其他命令:tar、diff、patch
1. tar命令
2. diff、patch命令
第4章 嵌入式编程基础知识.pdf
4.1 常用的几条汇编指令
4.2 交叉编译工具选项说明
4.1.1 arm-linux-gcc选项
1. 总体选项(Overall Option)
2. 警告选项(Warning Option)
3. 调试选项(Debugging Option)
4. 优化选项(Optimization Option)
5. 连接器选项(Linker Option)
6. 目录选项(Directory Option)
4.1.2 arm-linux-ld选项
1. 直接指定代码段、数据段、bss段的起始地址
2. 使用连接脚本设置地址
4.1.3 arm-linux-objcopy选项
1. input-file、outfile
2. -I bfdname 或--input-target=bfdname
4. -O bfdname 或--output-target= bfdname
4. -F bfdname或--target= bfdname
5. -R sectionname或--remove-section= sectionname
6. -S或--strip-all(strip,剥去、剥)
7. -g或--strip-debug
4.1.4 arm-linux-objdump选项
1. -b bfdname 或--target=bfdname
2. --disassemble 或-d
3 --disassemble-all或-D
4 -EB或-EL或--endian={big|little}
5. --file-headers或-f
6. --section-headers、--headers或-h
7. --info或-i
8 --section=name或-j name
9 --architecture=machine或-m machine
4.1.5 汇编代码、机器码和存储器的关系以及数据的表示
4.2 Makefile介绍
4.2.1 Makefile规则
4.2.2 Makefile文件里的赋值方法
4.2.3 Makefile常用函数
1. 字符串替换和分析函数
2. 文件名函数
3. 其他函数
4.3 常用ARM汇编指令及ATPCS规则
4.4.1 本书使用的所有汇编指令
1. 相对跳转指令:b、bl
2. 数据传送指令mov,地址读取伪指令ldr
3. 内存访问指令:ldr、str、ldm、stm
4. 加减指令:add、sub
5. 程序状态寄存器的访问指令:msr、mrs
6. 其他伪指令
7. 汇编指令的执行条件
4.4.2 ARM-THUMB子程序调用规则ATPCS
1. 寄存器使用规则
2. 数据栈使用规则
3. 参数传递规则
第5章 GPIO接口
5.1 GPIO硬件介绍
5.1.1 Exynos 4412的GPIO寄存器
2. GPXXDAT寄存器
3. GPXXPUD寄存器
5.1.2 怎样使用软件来访问硬件
1. 访问单个引脚
2. 以某种协议的接口访问硬件
3. 以内存接口访问硬件
5.2 GPIO操作实例:LED和按键
5.2.1 硬件设计
5.2.2 程序设计及代码详解
1. 实例1:使用汇编代码点亮一个LED
2. 实例2:使用C语言代码点亮一个LED
3. 实例5:使用按键来控制LED
5.3 Exynos 4412的启动过程
5.3.1 Exynos 4412启动过程
5.3.2 裸板烧写过程
5.3.3 连接脚本分析
第6章 时钟管理单元
6.1 时钟体系
6.1.1 Exynos 4412的时钟体系
6.1.2 Exynos 4412中设置PLL的方法
6.1.3 PLL寄存器
6.2 APLL操作实例
6.2.1 程序设计
6.2.2 代码详解
1. 05.system_clock_disable_apll:
2. 06.system_clock_apll:设置APLL输出1.4GHz时钟
3. 07.system_clock_plls:参考u-boot代码,设置了APLL、MPLL、EPLL、VPLL,及其他MUX、DIV
第7章 通用异步收发器UART
7.1 UART原理及UART部件使用方法
7.1.1 UART原理说明
7.1.2 Exynos4412 UART的特性
7.1.3 Exynos4412 UART的使用
1. 将所涉及的UART通道管脚设为UART功能
2. 选择UART的时钟源
3. 设置波特率:UBRDIVn寄存器(UART BAUD RATE DIVISOR)、UFRACVALn寄存器
4. 设置传输格式:ULCONn寄存器(UART LINE CONTROL)
5. 设置UART工作模式:UCONn寄存器(UART CONTROL)
6. UFCONn寄存器(UART FIFO CONTROL)、UFSTATn寄存器(UART FIFO STATUS)
7. UMCONn寄存器(UART MODEM CONTROL)、UMSTATn寄存器(UART MODEM STATUS)
8. UTRSTATn寄存器(UART TX/RX STATUS)
9. UERSTATn寄存器(UART ERROR STATUS)
10. UTXHn寄存器(UART TRANSMIT BUFFER REGISTER)
11. URXHn寄存器(UART RECEIVE BUFFER REGISTER)
7.2 UART操作实例
7.2.1 代码详解
1. UART时钟源
2. UART的初始化
3. UART的使用
7.2.2 实例测试
1. PC上的串口工具推荐
2. 测试方法