Ⅰ 嵌入式系统设计师教程的图书目录
第1章嵌入式系统基础知识
1.1嵌入式系统的定义和组成
1.1.1嵌入式系统的定义
1.1.2嵌入式系统发展概述
1.1.3嵌入式系统的组成
1.1.4实时系统
1.2嵌入式微处理器体系结构
1.2.1冯·诺依曼与哈佛结构
1.2.2CISC与RISC
1.2.3流水线技术
1.2.4信息存储的字节顺序
1.3嵌入式系统的硬件基础
1.3.1组合逻辑电路基础
1.3.2时序逻辑电路
1.3.3总线电路及信号驱动
1.3.4电平转换电路
1.3.5可编程逻辑器件基础
1.4嵌入式系统中信息表示与运算基础
1.4.1进位计数制与转换
1.4.2计算机中数的表示
1.4.3非数值数据编码
1.4.4差错控制编码
1.5嵌入式系统的性能评价
1.5.1度量项目
1.5.2评价方法
1.5.3评估嵌入式系统处理器的主要指标
第2章嵌入式微处理器与接口知识
2.1嵌入式微处理器的结构和类型
2.1.1嵌入式微处理器的分类
2.1.2典型8位微处理器的结构和特点
2.1.3典型16位微处理器的结构和特点
2.1.4典型32位微处理器的结构和特点
2.1.5DSP处理器的结构和特点
2.1.6多核处理器的结构和特点
2.2嵌入式系统的存储体系
2.2.1存储器系统概述
2.2.2嵌入式系统存储设备分类
2.2.3ROM的种类与选型
2.2.4Flash:Memory的种类与选型
2.2.5RAM的种类与选型
2.2.6外部存储器的种类与选型
2.3嵌入式系统输入输出设备
2.3.1嵌入式系统常用输入/输出设备概述
2.3.2GPIO原理与结构
2.3.3A/D接口基本原理与结构
2.3.4D/A接口基本原理与结构
2.3.5键盘接口基本原理与结构
2.3.6显示接口基本原理与结构
2.3.7触摸屏接口基本原理与结构
2.3.8音频接口基本原理与结构
2.4嵌入式系统总线接口
2.4.1串行接口基本原理与结构
2.4.2并行接口基本原理与结构
2.4.3PCI接口基本原理与结构
2.4.4USB接口基本原理与结构
2.4.5SPI接口基本原理与结构
2.4.6IIC接口基本原理与结构
2.4.7PCMCIA接口基本原理与结构
2.5嵌入式系统网络接口
2.5.1以太网接口基本原理与结构
2.5.2CAN总线接口的基本原理与结构
2.5.3.XDSL接口基本原理与结构
2.5.4无线以太网基本原理与结构
2.5.5蓝牙接口基本原理与结构
2.5.61394接口基本原理与结构
2.6嵌入式系统电源
2.6.1电源接口技术
2.6.2电源管理技术
2.7电子电路设计基础
2.7.1电路设计
2.7.2PCB电路设计
2.7.3电子设计
2.7.4电子电路测试
第3章嵌入式系统软件及操作系统知识
3.1嵌入式软件基础
3.1.1嵌入式软件概述
3.1.2嵌入式软件分类
3.1.3嵌入式软件的体系结构
3.1.4设备驱动层
3.1.5嵌入式中间件
3.2嵌入式操作系统概述
3.2.1嵌入式操作系统的概念
3.2.2嵌入式操作系统的分类
3.2.3常见的嵌入式操作系统
3.3任务管理
3.3.1多道程序技术
3.3.2进程、线程和任务
3.3.3任务的实现
3.3.4任务的调度
3.3.5实时系统调度
3.3.6任务间的同步与互斥
3.3.7任务间通信
3.4存储管理
3.4.1存储管理概述
3.4.2实模式与保护模式
3.4.3分区存储管理
3.4.4地址映射
3.4.5页式存储管理
3.4.6虚拟存储管理
3.5设备管理
3.5.1设备管理基础
3.5.2I/O控制方式
3.5.3I/O软件
3.6.1嵌入式文件系统概述
3.6.2文件和目录
3.6.3文件系统的实现
第4章嵌入式软件程序设计
4.1嵌入式软件开发概述
4.1.1嵌入式应用开发过程
4.1.2嵌入式软件开发的特点
4.1.3嵌入式软件开发的挑战
4.2嵌入式程序设计语言
4.2.1程序设计语言概述
4.2.2汇编语言
4.2.3面向过程的语言
4.2.4.面向对象的语言
4.2.5汇编、编译与解释程序的基本原理
4.3嵌入式软件开发环境
4.3.1宿主机、目标机
4.3.2嵌入式软件开发工具
4.3.3集成开发环境
4.4嵌入式软件开发
4.4.1嵌入式平台选型
4.4.2软件设计
4.4.3嵌入式程序设计
4.4.4编码
4.4.5测试
4.4.6下载和运行
4.5嵌入式软件移植
4.5.1无操作系统的软件移植
4.5.2有操作系统的软件移植
4.5.3应用软件的移植
第5章嵌入式系统开发与维护知识
5.1系统开发过程及其项目管理
5.1.1系统开发生命周期各阶段的目标和任务的划分方法
5.1.2系统开发项目管理基础知识及其常用管理工具使用方法
5.1.3系统开发工具与环境知识
5.2系统分析基础知识
5.2.1系统分析的目的和任务
5.2.2用户需求
5.2.3系统需求
5.2.4系统规格说明书的编写方法
5.3系统设计知识
5.3.1传统的系统设计方法
5.3.2实时系统分析与设计
5.3.3软硬件协同设计方法
5.4系统实施知识
5.4.1系统架构设计
5.4.2系统详细设计
5.4.3系统测试
5.5系统维护知识
5.5.1系统运行管理
5.5.2系统维护知识
5.5.3系统评价知识
第6章嵌入式系统设计
6.1嵌入式系统设计的特点
6.2嵌入式系统的设计流程
6.2.1产品定义
6.2.2嵌入式系统的软硬件划分
6.2.3嵌入式系统硬件设计
6.2.4嵌入式系统的软件设计
6.2.5系统集成和测试
6.3设计示例:嵌入式数控系统
6.3.1数控系统简介
6.3.2需求分析
6.3.3系统体系结构设计
6.3.4硬件设计
6.3.5软件设计
6.3.6系统集成与测试
Ⅱ 介绍一下 嵌入式系统设计师 参考书目
嵌入式系统设计师考试大纲
一、考试说明
1、考试要求:
(1)掌握科学基础知识;
(2)掌握嵌入式系统的硬件、软件知识;
(3)掌握嵌入式系统分析的方法;
(4)掌握嵌入式系统设计与开发的方法及步骤;
(5)掌握嵌入式系统实施的方法
(6)掌握嵌入式系统运行维护知识;
(7)了解信息化基础知识、信息技术引用的基础知识;
(8)了解信息技术标准、安全,以及有关法律的基本知识;
(9)了解嵌入式技术发展趋势;
(10)正确阅读和理解计算机及嵌入式领域的英文资料。
2、通过本考试的合格人员能根据项目管理和工程技术的实际要求,按照系统总体设计规格进行软、硬件实际,编写系统开发规格说明书等相应的文档;组织和指导嵌入式系统靠法实施人员实施硬件电路、编写和调试程序,并对嵌入式系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。
二、考试范围
考试科目1:嵌入式系统基础知识
1.计算机科学基础
1.1数制及转换
o 二进制、八进制、十进制和十六进制等常用数制及其相互转换
1.2数据的表示
o 数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出)
o 字符、汉字、声音、图像的编码方式
o 校验方法和校验码(奇偶验码、海明校验码、循环校验码)
1.3算术和逻辑运算
o 计算机中的二进制数运算方法
o 逻辑代数的基本运算和逻辑表达式的化简
1.4计算机系统结构和重要部件的基本工作原理
o CPU和存储器的组成、性能、基本工作原理
o 常用I/O设备、通信设备的性能,以及基本工作原理
o I/O接口的功能、类型和特点
o 虚拟存储存储基本工作原理,多级存储体系
1.5安全性、可靠性与系统性能评测基础知识
o 诊断与容错
o 系统可靠性分析评价
o 计算机系统性能评测方法
2.嵌入式系统硬件知识
2.1数字电路和逻辑电路基础
2.1.1组合电路和时序电路
2.1.2总线电路与电平转换电路
2.1.3可编程逻辑器件
2.2嵌入式微处理器基础
2.2.1嵌入式微处理器体系结构
o 冯.诺伊曼结构与哈佛结构
o CISC与RISC
o 流水线技术
o 信息存储的字节顺序(大端存储法和小端存储法)
2.2.2嵌入式系统处理器的结构和类型
o 常用8位处理器的体系结构和类型
o 常用16位处理器的体系结构特点
o 常用32位处理器的体系结构特点
o 常用DSP处理器的体系结构特点
o 多核处理器的体系结构特点
2.2.3异常
o 同步异常(陷阱、故障、终止)
o 异步异常(中断)
o 可屏蔽中断、不可屏蔽中断
o 中断优先级、中断嵌套
2.3 嵌入式系统的存储体系
2.3.1存储器系统
o 存储器系统的层次结构
o 高速缓存(Cache)
o 内存管理单元(MMU)
2.3.2 ROM的种类与选型
o 常见ROM的种类
o PROM、EPROM、E2PROM型ROM的典型特征和不同点
2.3.3 Flash Memory的种类与选型
o Flash Memory的种类
o NOR和NAND型Flash Memory的典型特征和不同点
2.3.4 RAM的种类与选型
o 常见RAM的种类
o SRAM、DRAM、DDRAM、NVRAM的典型特征和不同点
2.3.5 外存
o 常见外存的种类
o 磁盘、光盘、CF、SD等的典型特征和不同点
2.4 嵌入式系统I/O接口
2.4.1 定时器和计数器基本原理与结构
2.4.2 GPIO、PWM接口基本原理与结构
2.4.3 A/D、D/A接口基本原理与结构
2.4.4键盘、显示、触摸屏接口基本与结构
2.4.5嵌入式系统音频接口
2.5嵌入系统通信及网络接口
o PCI、USB、串口、红外、并口、SPI、IIC、PCMCIA的基本原理与结构
o 以太网、CAN、WLAN、蓝牙、1394的基本原理与结构
2.6嵌入式系统电源分类及电源原理
2.7电子电路设计
2.7.1电子电路设计基础知识
o 电子电路设计原理
o 电子电路设计方法及步骤
o 电子电路设计中的可靠知识
2.7.2 PCB设计基础知识
o PCB设计原理
o PCB设计方法及步骤
o 多层PCB设计的注意事项及布线原则
o PCB设计中的可靠性知识
2.7.3电子电路测试基础知识
o 电子电路测试原理与方法
o 硬件抗干扰测试
3. 嵌入式系统软件知识
3.1嵌入式软件基础知识
3.1.1嵌入式软件的分类(系统软件、支撑软件、应用软件)
3.1.2无操作系统支持的嵌入式软件体系结构(轮询、中断、前后台)
3.1.3有操作系统支持的嵌入式软件体系结构
3.1.4板极支持包基础知识(系统初始化、设备驱动程序)
3.1.5嵌入式中间件(GUI、数据库)
3.2 嵌入式操作系统基础知识
3.2.1嵌入式操作系统体系结构
o 单体结构、分层结构和微内核结构
3.2.2任务管理
o 多道程序技术
o 进程、线程、任务的概念
o 任务的实现(任务的层次结构、任务控制块、任务的状态及状态转换、任务队列)
o 任务调度(调度算法的性能指标、可抢占调度、不可抢占调度、先来先服务、短作业优先算法、时间片轮转算法、优先级算法)
o 实时系统及任务调度(RMS、EDF算法)
o 任务间通信(共享内存、消息、管道、信号)
o 同步与互斥(竞争条件、临界区、互斥、信号量、死锁)
3.2.3存储管理
o Flat存储管理方式
o 分区存储管理(固定分区、可变分区)
o 地址重定位(逻辑地址、物理地址、地址映射)
o 页式存储管理
o 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法、工作集模型)
3.2.4设备管理
o 设备无关性、I/O地址、I/O控制、中断处理、缓冲技术、假脱机技术)
3.2.5文件系统基础知识
o 文件和目录
o 文件的结构和组织
o 存取方法、存取控制
o 常见嵌入式文件系统(FAT、JFFS、YAFFS)
3.2.6操作系统移植基础知识
3.3 嵌入式系统程序设计
3.3.1嵌入式软件开发基础知识
3.3.2嵌入式程序设计语言
o 汇编、编译、解释系统的基础知识和基本工作原理
o 汇编语言
o 基于过程的语言(过程/函数、参数传递、全局变量、递归、动态内存分配、数据类型)
o 面向对象的语言(对象、数据抽象、继承、多态、自动内存管理)
o 各类程序设计语言的主要特点和适用情况
3.3.3嵌入式软件开发环境
o 宿主机、目标机
o 编辑器、编译器、链接器、调试器、模拟器
o 常用嵌入式开发工具(编程器、硬件仿真器、逻辑分析仪、示波器)
o 集成开发环境
o 开发辅助工具
3.3.4嵌入式软件开发
o 软件设计(模块结构设计、数据结构设计、内存布局、面向对象的分析与设计)
o 嵌入式引导程序的设计、设备驱动程序设计、内核设计、网络程序设计、应用软件设计)
o 编码(编程规范、代码审查)
o 测试(测试环境、测试用例、测试方法、测试工具)
o 下载和运行
3.3.5嵌入式应用软件移植
4.嵌入式系统的开发与维护知识
4.1系统开发过程及其项目管理
o 系统开发生命周期各阶段的目标和任务的划分方法
o 系统开发项目挂你基础知识及其常用管理工具使用方法
o 主要的系统开发方法
o 系统开发工具与环境知识
4.2 系统分析基础知识
o 系统分析的目的和任务
o 系统分析方法
o 系统规格说明书的编写方法
4.3 系统设计知识
o 传统系统设计方法
o 软硬件协同设计方法
4.4 系统实施知识
o 系统架构设计
o 系统详细设计
o 系统调试技术
o 系统测试
4.5 系统维护知识
o 系统运行管理知识
o 系统维护知识
o 系统评价知识
5.安全性知识
o 安全性基本概念
o 加密与解密机制
6.标准化知识
o 标准化的概念
o 国际标准、国家标准、行业标准、企业标准基本知识
o 代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识
o 标准化机构
o 嵌入式系统相关标准
7.信息化基础知识
o 信息化和信息系统基本概念
o 有关的法律、法规
8.嵌入式技术发展趋势
9.计算机专业英语
o 正确阅读和理解相关领域的英文资料
考试科目2:嵌入式系统设计应用技术
1.嵌入式系统开发过程
1.1系统需求分析方法与步骤
1.2系统设计
o 系统硬件配置
o 系统功能组成分配
o 软硬件功能的分配
o 可行性验证及设计审查
o 系统规格
o 周期,成本及工作量估计
o 开发计划
1.3软硬件协同设计
1.4硬件设计
1.5软件设计
o 软件结构
o 设计评审
o 软件详细设计
1.6系统测试
o 测试环境
o 测试计划(内容、方法、标准、过程、检验)
o 硬件测试
o 软件测试(单元测试、集成测试)
o 软硬件联合测试
o 实施测试
1.7系统评估
1.8 软件维护
2.嵌入式系统硬件设计
2.1嵌入式系统硬件基本结构
2.1.1嵌入式微处理结构与应用
2.1.2 异常及中断处理技术
2.1.3 DMA技术
2.1.4 多处理系统
o 多处理器系统特点
o 多处理器系统构建技术
2.1.5 总线架构
o 应用系统中的总线配置
2.1.6 内存种类及架构
o 存储器系统接口设计
2.1.7数字电路和逻辑电路
o 专用集成电路
o 可编程逻辑控制器件
2.2输入/输出接口设计
2.2.1 输入/输出接口
o 接口信号电平转换
o 接口驱动电路设计
2.2.2输入/输出接口应用技术
o 外围设备
o 串口通信
o 并口通信
o 模拟接口
o 通信接口设备
o 通信标准和协议
o 数据传输方式
2.3外围设备接口应用技术
2.3.1 外围存储设备
o 存储卡,记忆棒,IC卡,MMC卡,SD卡
o DVD 、CD-R 、CD-RW
2.3.2外围输入/输出设备
o 键盘,鼠标,触摸屏
o 液晶板、LED、7段数码管、蜂鸣器
2.3.3电源设计技术
2.4可靠性与安全性设计技术
2.4.1 错误检测与隔离技术
2.4.2 冗余设计
2.4.3 系统恢复设计
2.4.4 诊断技术
2.4.5常用安全标准
2.4.6 抗干扰设计
2.4.7电磁兼容设计
2.4.8系统加密
3.嵌入式系统软件设计
3.1嵌入式系统软件结构设计
3.2嵌入式操作系统应用技术
3.2.1 时间管理
o 系统时间
o 时钟中断
3.2.2内存管理
o 静态内存管理
o 动态内存管理
3.2.3任务管理和任务间的通信
o 任务间的通信机制
o 信号量
o 邮箱
o 消息队列
3.2.4异常处理
o 异常处理方法
o 中断优先级处理方法
o 系统调用
3.2.5嵌入式文件系统应用技术
3.2.6嵌入式系统图形用户接口(GUI)应用技术
3.2.7嵌入式系统数据库应用技术
3.3嵌入式软件设计技术
3.3.1汇编语言设计
o 数据类型
o 汇编语言程序结构
o 汇编语言程序设计及优化
o 子程序调用
3.3.2嵌入式C语言设计
o ANSI-C的数据类型
o C程序结构
o C语言程序设计及优化
o 程序的编译与链接
3.3.3面向对象程序设计与开发
o 面向对象的分析与设计方法UML
o 面向对象的编程语言
o 使用C++进行嵌入式系统开发
o 使用Java进行嵌入式系统开发
3.4 系统级软件设计技术
o 嵌入式系统固件与系统初始化设计
o 设备驱动程序设计
o 硬件抽象层、板级支持包设计
o 嵌入式软件的移植技术
4.嵌入式系统开发技术
4.1系统开发环境
4.1.1开发工具
o 文本编辑器
o 汇编、编译和连接程序
o ICE和ICE监控器
o 配置管理工具
o 逆工程工具
4.1.2平台
o 操作系统
o 分布式开发环境
4.1.3开发环境创建方法及评估
o 开发工作分析
o 开发环境的建立
o 维护、管理、使用开发环境的方法
o 开发环境的评测
4.2实时系统的分析技术
4.2.1实时系统的分析技术
o 结构化分析方法
o 面向对象分析方法
4.2.2实时系统的设计技术
o 结构化分析方法
o 面向对象分析方法
4.3硬件设计环境
4.3.1硬件描述语言
o 硬件开发设计过程
o 硬件描述语言的种类与特点
4.3.2仿真技术
o 逻辑仿真方法
o 逻辑仿真工具
4.3.3大规模集成电路系统的开发方法
o ASIC开发方法
o FPGA设计方法
o IP(intellectual property)
4.4协同设计
o 软硬件任务工和切调
o 设计评审
4.5嵌入式系统低功耗设计技术
o 低功耗系统工作机制
o 低功耗系统模型结构
o 低功耗的硬件设计技术
o 低功耗的软件设计技术
4.6分布式嵌入系统设计
o 分布式系统设计原理
o 分布式系统的通信技术
o 分布式系统设计应用
5.嵌入式系统应用
5.1嵌入式系统在控制领域中的应用
5.2嵌入式系统在手持设备中的应用
5.3嵌入式系统在模式识别中的应用
三、题型举例
1、选择题
若嵌入式系统中采用I/O地址统一编址模式,访问内存单元和I/O设备是通过 (1) 来区分的。
(1) A.数据总线上输出的数据
B.不同的地址代码
C.不同的地址总路线
D.不同的指令
2、问答题
在某个嵌入式操作系统中,任务的状态转换图(不完整)如下,请阅读该图以及下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
〔说明〕
任务总共有五个状态:休眠状态、就绪状态、运行状态、中断服务状态和等待状态,在任何时候,一个任务只会处于其中的某一个状态。
〔问题1〕(3分)
在单个CPU的系统中,处于运行状态的任务最多有多少个?
〔问题2〕(3分)
对于运行状态、就绪状态和等待状态这间的相互转换,图中并没有画出来,请补充。用文字处理的形式来进行描述,格式形如"运行状态→中断服务状态"。
〔问题3〕6分)
从运行状态可以直接变为等待状态吗?如果不能为什么?如果能什么时候会发生这种转换?举例说明。
〔问题4〕(3分)
从就绪状态可以直接变为等待状态吗?如果不能,为什么?如果能,什么时候会发生这种转换?举例说明。
Ⅲ 《arm9嵌入式系统设计基础教程》(第二版)-黄智伟、邓月明、王彦的pdf版
有课件要不
Ⅳ 谁有最新的 嵌入式系统设计师教程 pdf
可以到嵌入式学习网上下载,有嵌入式系统超多的教程
网址是http://www..com/s?bs=%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8+%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8+-+EmbedStudy&f=8&wd=%C7%B6%C8%EB%CA%BD%D1%A7%CF%B0%CD%F8++EmbedStudy
Ⅳ 嵌入式系统设计师教程 魏洪兴 电子书下载
请注意版权。 版权维护,人人有责。
不要骂我,这是对作者的尊重。
Ⅵ 求《嵌入式系统设计师教程》全文免费下载百度网盘资源,谢谢~
《嵌入式系统设计师教程》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1nYcyZL7GANb0Res-E1QtIg
Ⅶ 嵌入式新手入门最佳视频教程
原文链接:网页链接
我是1999年上的大学,物理专业。在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。你当下的经历、当下的学习,在未来的一天肯定会影响到你。毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。
所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。
我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。
程序员的方向,一般可以分为3类:专业领域、业务领域、操作系统领域。你了解它们后,按兴趣选择吧。
对于专业领域,我提供不了建议。
业务,也就是应用程序,它跟操作系统并不是截然分开的:
①开发实体产品时,应用程序写得好的人,有时候需要操作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。
②写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有操作系统领域的知识了,否则,你怎么设计整个系统的方案呢?
③做应用程序的人,需要了解行业的需求,理解业务的逻辑。所以,当领导的人,多是做应用的。一旦钻入了某个行业,很难换行业。
④而操作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。这行很多是技术宅,行业专家。
⑤操作系统和业务之间并没有一个界线。有操作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。有了业务经验,你再了解一下操作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。
它又可以分为下面2类。
1.1.1 学术研究
比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。
在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。
1.1.2 工程实现
也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。可以使用各类开源资料实现某个目标,做出产品。比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。有时候还可以根据具体芯片来优化这些函数。
“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。
换句话说,就是应用程序,这又可以分为下面2类。
1.2.1 界面显示
做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。
现在的热门词是Android APP和IOS APP开发。你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。
希望没有冒犯到你,我有理由。
一个程序需要有GUI界面,但是程序的内在逻辑才是核心。Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。
但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。Android APP的入门基本只要1个月,所以懂的人也越来越多。2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。
会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。
1.2.2 业务逻辑
举个简单例子,做一个打卡软件,你需要考虑这些东西:
①正常流程是上班下班时都要打卡
②有人忘记了怎么办?作为异常记录在案,推送给管理员
③请假时怎么处理?
④加班怎么处理?
对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。
应用开发的职位永远是最多的,入门门槛也低。基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。因为:
①你进公司后,还需要重新培训你:熟悉它们的业务逻辑。
②你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。
说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?
如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。
最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!
UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于操作系统领域我们也只能玩linux了。
在嵌入式领域Linux一家独大!
Android呢?Android跟QT一样,都是一套GUI系统。只是Google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。操作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:
①为产品规划硬件:
按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。
②给单板制作、安装操作系统、编写驱动
③定制维护、升级等系统方案
④还可能要配置、安装Android等GUI系统:
⑤为应用开发人员配置开发环境
⑥从系统角度解决疑难问题
这个领域,通常被称为“底层系统”或是“驱动开发”。
先解决2个常见误区:
①这份工作是写驱动程序吗?
看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。
②我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?
经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。
但是在这个不创新就是找死的年代,可能吗?!原因有二:
①即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序。
②很多时候,需要你深度定制系统。
以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。大家都使用原厂的方案而不加修改时,最后只能拼成本。
举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:
①改进厂家给的SD卡驱动性能,使用DMA。
②换了Flash型号后,系统经常出问题,需要修改驱动BUG。
③触摸屏点击不准,找原因,后来发现是旁路电容导致的。
④裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。
这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?
我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。但是在你的产品上也许优化一下更好。比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。
当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。
在操作系统领域,对知识的要求很多:
①懂硬件知识才能看懂电路图
②英文好会看芯片手册
③有编写、移植驱动程序的能力
④对操作系统本身有一定的理解,才能解决各类疑难问题
⑤理解Android内部机制
⑥懂汇编、C语言、C++、JAVA
它绝对是一个大坑,没有兴趣、没有毅力的人慎选。
①这行的入门,绝对需要半年以上,即使全天学习也要半年。
②它的职位,绝对比APP的职位少
③并且你没有1、2年经验,招你到公司后一开始你做的还是APP。
优点就是:
①学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。
②相比做应用程序的人,不会被经常变动的需求搞得天天加班。
③门槛高,当然薪水相对就高。
操作系统领域,我认为适合于这些人:
①硬件工程师想转软件工程师,从底层软件入门会比较好
②单片机工程师,想升级一下。会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。
③时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。
④想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。
⑤想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。
⑥做Linux APP的人,没错,他们也要学习。
这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了
本文中,就把操作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。
嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。
①电脑一开机,那些界面是谁显示的?
是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。
类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。
②启动windows的目的是什么?
当然运行应用程序以便上网、聊天什么的了。
这些上网程序、聊天程序在哪?
在C盘、D盘上。
所以,windows要先识别出C盘、D盘。在Linux下我们称之为根文件系统。
③windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。
这个能力我们称之为驱动程序。当然不仅仅是操作硬盘,还有网卡、USB等等其他硬件。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。
简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。而应用程序,我们又可以分为:C/C++、Android。
所以,嵌入式Linux+Android系统包含以下6部分内容:
①bootloader
②Linux内核
③驱动程序
④使用C/C++编写的应用程序
⑤Android系统本身
⑥Android应用程序
Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。在大多数智能设备中,运行的是Linux操作系统;它上面要么安装有Android,要么可以跟Android手机互联。现在,Linux+Android已成标配。
本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。
在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改操作系统本身。
①操作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序
②学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对操作系统其他部分的理解
③Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成
但是,要成为该领域的高手,一定要深入理解Linux操作系统本身,要去研读它的源代码。
在忙完工作,闲暇之余,可以看看这些书:
①赵炯的《linux内核完全注释》,这本比较薄,推荐这本。他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。
②毛德操、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。当作字典看即可:想深入理解某方面的知识,就去看某章节。
③其他好书还有很多,我没怎么看,没有更多建议
基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。
假设您是零基础,我们规划了如下入门路线图。前面的知识,是后面知识的基础,建议按顺序学习。每一部分,不一定需要学得很深入透彻,下面分章节描述。
2.2.1 C语言
只要是理工科专业的,似乎都会教C语言。我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。
理论再好,没有实践不能干活的话,公司招你去干嘛?
反过来,实践出真知,学习C语言,必须练练练、写写写!
当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;
当你写过几个C程序后,就可以进入下一阶段的裸机开发了。
①不需要太深入
作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法操作,暂时就够了。
指针操作是重点,多练习;
不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着!
永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。
在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。
C语言是在写代码中精进的。
②可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令,我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。
2.2.2 PC Linux基本操作:
对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。
我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。为了提高工作效率,我们通常使用命令行来操作Ubuntu。
不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:
①cd : Change Directory(改变目录)
cd 目录名 // 进入某个目录cd .. // cd “两个点”:返回上一级目录cd - // cd “短横”:返回上一次所在目录
②pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)
③mkdir : Make Directory(创建目录)
mkdir abc // 创建文件夹abc
mkdir -p a/b/c // 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c
④rm : Remove(删除目录或文件)
rm file // 删除名为file的文件
rm -rf dir // 删除名为dir的目录
⑤ls : List(列出目录内容)
⑥mount : 挂载
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt
mount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改变文件的属主,即拥有者)
chown book:book /work -R //对/work目录及其下所有内容,属主改为book用户,组改为book
⑧chmod : Change mode(改变权限),下面的例子很简单粗暴
chmod 777 /work -R // 对/work目录及其下所有内容,权限改为可读、可写、可执行
⑨vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。
要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。
2.2.3 硬件知识
我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。
对于正统的方法,你应该这样学习:
①学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。
②学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。
③《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。
就我个人经验来说,这些课程是有用的,但是:
①原理有用,实战性不强。
比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。
我是在接触嵌入式编程后,才理解了这些课程。
②每本书都那么厚,内容都很多,学习时间过长,自学有难度。
针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:
学前班第1课第1节___怎么看原理图之GPIO和门电路.wmv
学前班第1课第2.1节_怎么看原理图之协议类接口之UART.wmv
学前班第1课第2.2节_怎么看原理图之协议类接口之I2C.wmv
学前班第1课第2.3节_怎么看原理图之协议类接口之SPI.wmv
学前班第1课第2.4节_怎么看原理图之协议类接口之NAND Flash.wmv
学前班第1课第2.5节_怎么看原理图之协议类接口之LCD.wmv
学前班第1课第3节___怎么看原理图之内存类接口.wmv
学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板.wmv
学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板.wmv
学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板.wmv
即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。
这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。
2.2.4 要不要专门学习Windows下的单片机开发
很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。
问题来了,要不要专门学习Windows下的单片机开发?
①如果这是你们专业的必修课,那就学吧
②如果你的专业跟单片机密切相关,比如机械控制等,那就学吧
③如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!
理由如下:
①Windows下的单片机学习,深度不够
Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。
它们封装了很多技术细节,比如:
你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;
你可以编写中断处理函数,但是却不知道它是怎么被调用的;
你不知道程序怎么从Flash上被读入内存;
也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;
当你想裁剪程序降低对Flash、内存的使用时,你无从下手;
当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;
等等等。
②基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。
在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。
一切从零编写代码、管理代码,可以让我们学习到更多知识:
你需要了解芯片的上电启动过程,知道第1条代码如何运行;
你需要掌握怎么把程序从Flash上读入内存;
需要理解内存怎么规划使用,比如栈在哪,堆在哪;
需要理解代码重定位;
需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;
你会知道,main函数不是我们编写的第1个函数;
你会知道,芯片从上电开始,程序是怎么被搬运执行的;
你会知道,函数调用过程中,参数是如何传递的;
你会知道,中断发生时,每一个寄存器的值都要小心对待;
等等等。
你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。
驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,我们可以从简单的裸机开发入手,先掌握硬件操作,并且还可以:
①掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它
②为学习bootloader打基础:掌握了各种硬件操作后,后面一组合就是一个bootloader
2.2.5 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?
有一个错误的概念:S3C2440过时了、ARM9过时了。
这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。
一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。我们写程序时,并不涉及CPU,只是去操作那些片上设备。
所以:差别在于片上设备,不在于CPU核;差别在于寄存器操作不一样。
因为我们写驱动并不涉及CPU的核心,只是操作CPU之外的设备,只是读写这些设备的寄存器。
之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期视频。
2.2.6 怎么学习ARM+Linux的裸机开发
学习裸机开发的目的有两个:
①掌握裸机程序的结构,为后续的u-boot作准备
②练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来操作硬件
后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。
后续的驱动开发,也涉及硬件操作,你可以在裸机开发中学习硬件知识。
注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。在后面的驱动视频中,我们也会重新讲解所涉及的硬件知识。
推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。
对于裸机开发,我们提供有2部分视频:
①环境搭建
第0课第1节_刚接触开发板之接口接线.wmv
第0课第2节_刚接触开发板之烧写裸板程序.wmv
第0课第3节_刚接触开发板之重烧整个系统.wmv
第0课第4节_刚接触开发板之使用vmwae和预先做好的ubuntu.wmv
第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程.wmv
第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程.wmv
第0课第7节_刚接触开发板之制作根文件系统及初试驱动.wmv
第0课第8节_在TQ2440,MINI2440上搭建视频所用系统.wmv
第0课第9节_win7下不能使用dnw烧写的替代方法.wmv
.................
原文链接:网页链接
Ⅷ 嵌入式系统设计师教程的清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专着为主的鲜明特色,在教育出版领域树立了强势品牌。
Ⅸ 《嵌入式系统设计师教程》pdf下载在线阅读全文,求百度网盘云资源
《嵌入式系统设计师教程》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1nYcyZL7GANb0Res-E1QtIg
Ⅹ 谁有嵌入式学习的资料给我发点吧,给我说说我该怎么学吧
【提要】
这里将以我的经验介绍我的嵌入式学习资料,对我已阅的目前主要的嵌入式参考
书进行简单的和个人的评论,作为我自己的一个学习小结,也给大家一个参考。
【内容】
回想两个月来,
决定了研究生专业方向从嵌入式系统入手后,
热情持高,
我一口气读完了五
六本厚厚的嵌入式书籍,
都是自己买的,
因为图书馆的藏书实在太有限了,
而嵌入式技术的
参考资料在书城却每个星期都有大量的更新。
现在,我对嵌入式系统和
linux
都算有了个清晰的认识,其实,兜转下来,各套资料取长补
短,我觉得我的基础理论还是打得非常扎实的。当然非常希望能尽早自己配置一套开发板,
进行实际的操作。
开发板也作过一番细致考察的了,
现在只等钱到位,
在这之前我觉得还是
需要很系统地读透两本理论书的。
有朋友看我老在
“潜入式”
,
笑话说:
“不用看啦,
没什么的,
直接去实验室做就可以了„„”
,
呵呵,实话说,无论是驱动还是上层软件的开发,都已经存在很多非常成熟的模块和代码,
包括各种不同应用领域的嵌入式系统。
我们在应用中,
实际要作的动作还是非常简单的,
一
般的读现成程序,修改,试验就
OK
了,并不涉及很深入的原理。而我们过早卷入太肤浅的
应用,
也会打消这份学习的热情,甚至可能在不停的项目忙碌中得意起来,
轻视基础。
对于
初学者来说,我觉得这是非常不好的影响。
越是对系统原理和体系深入了解,
我越对嵌入式敬畏,
这是门很新的综合性的应用学科,
也
是门非常深奥的学问,
绝不是简单编译个系统,
移植到某个目标板就是已经学明了、
精通了。
尚未全面在开发板上展开实验前,
我对自己打下的基础还是比较满意的。
还有个目标,
明年
五月顺便去考考嵌入式系统设计师——今年十一月国家才第一次设立的嵌入式技术认证考
试。
我手头上已经看了的,包括两本还在看的书有:
《嵌入式系统——体系结构、编程与设计》
(印度)
Raj Kamal
编着,陈曙辉
等译,清华大
学出版社
这是本国外教材,
是我九月份的时候最早自己买来看的。
还保持很高的热情看完了三分之二。
后来发现其中的思路和内容都很不如意,
就搁下来了。
毕竟是国外的书籍,
外国人似乎喜欢
一种慢悠悠的,
很发散的学习和思考,
我以前读过的几本书都是这样。
实际上还是中国人自
己编的书精简些,逻辑也比较强,所以我的经验:
建议大家不要看国外教材,即使看也应该
在有了比较全面的了解后才拿来作为参考。像
Thinking in C++
这样的书,其实也是不适合作
为入门读物的。
《嵌入式系统设计与应用开发》郑灵翔
等编着,北京航空航天大学出版社
这本书是厦门大学嵌入式系统课程教学讲稿整理编写成的。基于
intel Xscale PXA255
的开发
板,
2.6
内核的嵌入式
linux
,
讲解的内容还是非常全面到位的。
包括
arm
与
xscale
体系结构,
操作系统基础,
linux
操作,
liunx
内核驱动原理及程序开发,以及常见的硬件接口设计及其
驱动程序的设计等。
这是第一本让我真正了解什么是嵌入式的书,
我看得津津有味,
大概一
个星期就看完了,
后来还花了一个星期时间进行总结和笔记,
以及上机实验。
要说这本书的
不足就是它囊括太广内容了,从处理器到操作系统原理,到
linux
操作,几乎什么都涉及,
自然都不深入,
所以,作为入门学习还是可以的,
但若要足够了解以实际应用,还是感觉缺
了条腿。
应该对当中的各个方面都逐步展开更深入的学习,
特别是
arm
和
thumb
指令体系,
linux
编程方面。
《嵌入式系统开发与应用教程》田泽
编着,北京航空航天大学出版社
这是我还在看郑灵翔那本书的时候,
发现同学图书馆借到的而且我发现正是我非常需要补充
知识的书。这本书编写非常条理,而且很集中,不会面面具到,侧重在
arm
体系以及指令
系统方面,作了很深入全面的介绍。这正是在了解嵌入式系统总体概念后应该深入的方面。
于是我借同学的书过来,头热着花四天左右读完了,而且还作了很详细的笔记和疑问记录。
后来去书店,忍不住又自己买了本回来,包括下面这本实验教材。
《嵌入式系统开发与应用实验教程(第
2
版)
》田泽
编着,北京航空航天大学出版社
这本书跟上面介绍的那本是配套的,主要讲解怎样配置开发环境和怎样着手进行程序的编
译。这也正是我非常急切想学的东西。因为已经掌握了系统基本知识,而且还掌握了
arm
体系
CUP
具体指令和编程规范,伪指令、宏指令等知识后,正是非常想实际动手去做做东
西的。
这本实验教材系统介绍了开发嵌入式程序所需要的工具、环境,
和配置方法,还附带
了很系统的实验例程。它是基于一块
s3c44b0
处理器的,我暂时还没板,但还是很老实基本
读完了此书。
《
Red Hat Linux9
编程开发与网络管理》冉林仓
编着,电子工业出版社
因为我主要想做的是基于
arm7
和
arm9
的嵌入式
linux
系统开发,所以对
linux
还是需要一
本专门的书读读。这本书还很不错!图书馆很多关于
linux
使用、配置的书,很多挺肤浅的,
而这本书侧重于命令行操作,以及网络系统的开发编程,很符合嵌入式
linux
开发的需要。
我选读了其中命令操作的部分,
剩下网络管理、
编程的留待接触到自己的开发板后再认真去
看。
《嵌入式系统设计师教程》清华大学出版社
全国计算机技术与软件专业技术资格(水平)
考试指定用书
应该说在两个月不到的时间内看这么多书,
虽然各本各有侧重,
我总算是很全面很具体打了
个基础了。
但所学的东西有嫌零碎。
在得知国家刚设立了嵌入式系统设计师考试后,
我立即
买了这本书,
并着手认认真真看了,
不为了考试,
而是为了好好组织下这段时间学到的知识,
查漏补缺,
并在这个教程的指导下很系统地学习下相关的理论。
我发现有了之前的知识准备
和实践经验,再来看这个考试教程,感觉很轻松,而且很条理,很实在!全没有考试教条的
感觉,
书中每一个章节都是我非常需要系统了解的东西,
非常实用。
这本书也在很高的热情
之下基本读完了,现在还剩下五分之一。
图书馆借的书:
《构建嵌入式
linux
系统》
Karim
Yagbmour
着
O'Reilly
Taiwan
公司译
韩存兵
龚波
改编
中
国电力出版社
据说很好的一本书,我也从图书馆借了,但还没看„„
总得来说,
我读书的选择还是挺合理的,
我觉得无论有没开发板的条件,
都应该好好地这样
打个坚实的基础。其实我们实验室有四块
s3c2410
的板,都有项目在,但我始终坚持不过早
卷入有点相关却不大实质的项目,
像我这样比较迟入门的初学者,
全面和扎实的理论知识显
得非常重要,否则一接触事情,这个不知道,那个也不清楚,就很被动。还有我觉得初学嵌
入式应该很好意识到网络的作用,好好利用网上的资源,包括相关的人的文章、经验谈等。
多写写笔记,多跟人交流