搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
嵌入式系统开发
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121085765
  • 作      者:
    陈卓,王田,梁新元等编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2009
收藏
编辑推荐
    兼顾基础,重在提高与技巧;解惑答疑,提升系统开发水平。<br>    本套丛书对编程语言、语法等基础知识讲得很少,重点在对语言的运用能力上。让读者看完书后,有一种“豁然开朗”的感觉,不只是简单地理解一种语言的语法,而是对一种技术的全面认识,并知道如何进行灵活运用。本书的目的主要是提升读者项目编程的知识,展现代码编写中的技巧与经验,让读者能更便捷地获取知识、积累经验,这也是本丛书的重要特色之一。
展开
内容介绍
    《嵌入式系统开发》介绍了嵌入式开发多个方面的内容,涵盖面较为广泛。整《嵌入式系统开发》分为3个部分:第1部分介绍嵌入式系统开发必须具备的软硬件基础。这一部分虽然是相对基础的内容,但在介绍重要内容的时候着重从应用的角度加以描述,在简单说明原理之后,回答了这些基础内容到底是怎么用的问题。由于涉及了不少实际系统,所以第1部分的内容是有一定深度的。第2部分讨论基于μC/OSII的嵌入式系统开发,由于μC/OSII系统的内核相对简单,所以这部分重点是说明μC/OSII的程序设计框架及它的移植应用。在第3部分中,全面讨论了嵌入式Linux开发的各个重要方面,其中包括嵌入式Linux的驱动程序设计,这部分介绍了多种外设的驱动设计实例。另外,《嵌入式系统开发》还讨论了Qt的程序设计和核心机制,以及Linux的网络实现的实例。最后还讨论了对一个嵌入式Linux系统移植所需要做的工作,分别介绍了BootLoader、内核及驱动程序的移植方法。<br>    《嵌入式系统开发》的读者对象包括:刚接触嵌入式开发的人员,以及有一定嵌入式开发基础,希望参考各种开发项目的工程人员。《嵌入式系统开发》在编写的时候尽量做到了按知识需求组织,以方便不同的读者按需阅读。
展开
精彩书摘
    第1部分  嵌入式开发必备基础<br>    第3章  嵌入式操作系统<br>    在比较系统的介绍了开发语言和嵌入式操作系统的软件结构组织后,需要进一步深入的理解嵌入式操作系统。在单片机开发项目中,由于单片机的计算和处理能力,以及存储空间有限,一般很少涉及到使用嵌入式操作系统。但是随着应用的复杂程度不断提高,如:带触摸屏的PDA、智能手机、智能监控终端等复杂应用不断涌现,必须使用嵌入式操作系统来处理多任务、多应用。所以,嵌入式操作系统已经成为比较复杂的嵌入式系统极为重要的组成部分。本章,主要从原理的角度介绍嵌入式操作系统,向读者说明一个嵌入式操作系统的内部运作机制。而与嵌入式操作系统相关的开发实践,如:驱动设计,网络协议,图形界面及系统内核移植等本书将在后面以专门的章节加以详细的介绍。<br>    3.1  嵌入式操作系统概述<br>    3.1.1  嵌入式操作系统的发展<br>    作为嵌入式系统(包括硬、软件系统)极为重要的组成部分,嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、网络协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集,以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化,以及应用的专用性等方面具有较为突出的特点。<br>    嵌入式操作系统伴随着嵌入式系统的发展经历了4个比较明显的阶段。<br>    第一阶段:无操作系统的嵌入算法阶段。以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。应用于一些专业性极强的工业控制系统中,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。
展开
目录
第1部分  嵌入式开发必备基础<br>第1章  软件开发基础 1<br>1.1  嵌入式环境下的C语言使用技巧 1<br>1.1.1  重要的位(bit)操作 1<br>1.1.2  正确使用数据指针 2<br>1.1.3  函数等价于指令的集合 3<br>1.1.4  操作有限的存储空间 4<br>1.1.5  理解栈空间(Stack)和堆空间(Heap) 5<br>1.1.6  关键词const的使用 6<br>1.1.7  关键词volatile 7<br>1.1.8  处理器字长与内存位宽不一致处理 7<br>1.1.9  struct{ }结构体的使用 8<br>1.2  ARM汇编语言 10<br>1.2.1  学习方法介绍 10<br>1.2.2  ARM微处理器的指令的分类与格式 11<br>1.2.3  指令的条件域 12<br>1.2.4  指令的寻址方式 12<br>1.2.5  ARM汇编的指令分类讲解及示例 14<br>1.2.6  GNU ARM汇编的格式 29<br>1.3  ARM汇编和C语言的混合编程的实例 30<br>1.3.1  在C语言程序中内嵌汇编实例 30<br>1.3.2  在汇编中使用C语言程序定义的全局变量实例 31<br>1.3.3  在C语言程序中调用汇编的函数实例 32<br>1.3.4  在汇编中调用C语言的函数实例 33<br>1.4  本章小结 33<br><br>第2章  嵌入式开发的软件结构 35<br>2.1  轮询方式的嵌入式软件结构及实例 35<br>2.2  带中断处理的软件结构及实例 37<br>2.2.1  中断 37<br>2.2.2  中断处理程序及中断向量 38<br>2.2.3  软件结构及实例 40<br>2.3  本章小结 42<br><br>第3章  嵌入式操作系统 43<br>3.1  嵌入式操作系统概述 43<br>3.1.1  嵌入式操作系统的发展 43<br>3.1.2  嵌入式操作系统选型 44<br>3.1.3  几种典型的嵌入式操作系统 45<br>3.2  嵌入式操作系统的重要概念 47<br>3.2.1  代码的临界区 47<br>3.2.2  进程及进程结构体 48<br>3.2.3  进程的状态 51<br>3.2.4  可剥夺的内核 51<br>3.3  进程调度程序实例解析 52<br>3.3.1  基于映射表(Mapping Table)的μC/OSⅡ进程调度程序实例解析 52<br>3.3.2  Linux 2.6.X的0(1)进程调度程序实例解析 54<br>3.4  嵌入式文件系统实例 57<br>3.4.1  yaffs 文件系统数据在NAND 上的存储方式 58<br>3.4.2  SuperBlock结构 59<br>3.4.3  文件在内存中的组织方式 59<br>3.4.4  yaffs2文件系统实例解析 60<br>3.5  板级支持包(BSP) 72<br>3.6  本章小结 74<br><br>第4章  嵌入式开发的硬件基础 75<br>4.1  常用的电子元器件 75<br>4.1.1  电阻 76<br>4.1.2  电容 77<br>4.1.3  二极管 77<br>4.1.4  电感 77<br>4.1.5  三极管 78<br>4.1.6  运算放大器 79<br>4.2  IC与硬件框图分析 80<br>4.2.1  IC及封装方式 80<br>4.2.2  电路框图及分析 81<br>4.3  嵌入式处理器 86<br>4.4  S3C2410/2440处理器介绍 90<br>4.5  ARM嵌入式微处理器的选型 91<br>4.6  本章小结 92<br><br>第2部分  μC/OSII嵌入式开发<br>第5章  μC/OSII开发基础 93<br>5.1  嵌入式实时操作系统 93<br>5.2  μC/OSII开发要点及程序框架 95<br>5.2.1  任务设计结构 95<br>5.2.2  重要的μC/OSII函数 96<br>5.2.3  μC/OSII的多任务机制 98<br>5.3  μC/OSII的启动初始化过程实例解析 99<br>5.4  本章小结 100<br><br>第6章  μC/OSII的移植及应用实例 101<br>6.1  ARM平台的μC/OSII移植实例 101<br>6.1.1  移植需要的文件 101<br>6.1.2  移植文件代码分析 102<br>6.2  基于μC/OSII的网络协议栈Lwip移植实例 109<br>6.2.1  Lwip简介 110<br>6.2.2  Lwip的进程模型(process model) 110<br>6.2.3  移植Lwip到μC/OSII实例 111<br>6.3  μC/OSII的系统优化 118<br>6.3.1  任务切换要保存的数据 119<br>6.3.2  C语言编译器中变量在堆栈中的位置 119<br>6.3.3  μC/OSII对任务栈的处理方法与缺陷 119<br>6.3.4  共用空间的堆栈处理方法 120<br>6.4  本章小结 122<br><br>第3部分  嵌入式Linux开发<br>第7章  嵌入式Linux开发基础 123<br>7.1  使用开发套件提供的编译环境 123<br>7.1.1  Linux的交叉编译器 123<br>7.1.2  使用开发套件提供的交叉编译环境 124<br>7.2  自建交叉编译环境 128<br>7.2.1  设置环境变量,准备源码及相关补丁 128<br>7.2.2  准备源码包 128<br>7.2.3  准备补丁 128<br>7.2.4  编译GNU binutils 129<br>7.2.5  准备内核头文件 129<br>7.2.6  译编glibc头文件 129<br>7.2.7  编译gcc第一阶段 130<br>7.2.8  编译完整的gcc 131<br>7.2.9  GNU交叉工具链的下载 131<br>7.3  GNU交叉工具链的介绍与使用 131<br>7.4  编译和配置BootLoader 132<br>7.4.1  什么是BootLoader 132<br>7.4.2  BootLoader启动方式 132<br>7.4.3  常见的BootLoader 134<br>7.4.4  vivi的编译与配置 134<br>7.4.5  U-Boot的编译与配置 137<br>7.5  Makefile文件及编写实例 139<br>7.5.1  什么是Makefile 139<br>7.5.2  程序的编译及链接 140<br>7.5.3  Makefile编写要点 141<br>7.5.4  Makefile的实例 145<br>7.5.5  Makefile的编写规则 147<br>7.5.6  Makefile中命令的编写实例 153<br>7.5.7  正确在Makefile中使用变量 156<br>7.5.8  使用条件判断 162<br>7.5.9  make命令的执行 165<br>7.6  本章小结 168<br><br>第8章  嵌入式Linux系统的驱动程序开发 169<br>8.1  Linux内核简介 169<br>8.2  Linux重要的内核机制 171<br>8.2.1  Linux的时钟机制 171<br>8.2.2  Linux的软中断机制 177<br>8.3  Linux的内核模块 181<br>8.3.1  什么是内核模块(Kernel Model) 181<br>8.3.2  内核模块编写方法 181<br>8.3.3  内核模块实例 183<br>8.3.4  内核模块常用的资源 184<br>8.4  Linux驱动程序开发概要及基本流程 186<br>8.5  字符设备驱动开发及实例 192<br>8.5.1  LED的驱动程序实例 192<br>8.5.2  键盘驱动程序实例 194<br>8.5.3  串口驱动程序实例 199<br>8.6  音频设备驱动开发及实例 202<br>8.6.1  数字音频介绍 202<br>8.6.2  音频信号的硬件接口 203<br>8.6.3  Linux音频的编程接口 204<br>8.6.4  Linux OSS音频设备驱动实例说明 207<br>8.7  网络设备驱动开发及实例 215<br>8.7.1  Linux核心数据结构sk_buff{ } 215<br>8.7.2  Linux核心数据结构net_device{ } 221<br>8.7.3  Linux网络驱动设计流程及开发实例 228<br>8.8  Nand Flash驱动程序的编写实例 235<br>8.8.1  Nand Flash原理介绍 235<br>8.8.2  Nand Flash的驱动程序编写 237<br>8.9  本章小结 244<br><br>第9章  嵌入式Linux的Qt开发 245<br>9.1  Qt/Embedded和Qtopia简介 245<br>9.2  建立Qt/Embedded的开发环境 246<br>9.2.1  安装与建立Qt 桌面运行环境 246<br>9.2.2  对Qt/Embedded 进行交叉编译 248<br>9.2.3  建立本机Qtopia 虚拟平台 250<br>9.3  Qt程序设计基础及简单实例 251<br>9.3.1  Qt程序的简单例子 251<br>9.3.2  连接信号和响应函数 252<br>9.3.3  排列控件 253<br>9.3.4  建立对话框 254<br>9.3.5  主窗口的创建 257<br>9.4  Qt的信号和槽机制及实例 260<br>9.4.1  信号和槽机制概述 260<br>9.4.2  信号(signals) 260<br>9.4.3  槽(slots) 261<br>9.4.4  连接信号和槽 261<br>9.4.5  元对象工具介绍 263<br>9.4.6  信号和槽实例解析 263<br>9.4.7  使用信号和槽之注意事项 265<br>9.5  Qt的显示机制分析 267<br>9.6  本章小结 272<br><br>第10章  嵌入式Linux系统的网络协议栈 273<br>10.1  TCP/IP协议及Linux协议栈概述 273<br>10.1.1  TCP/IP协议概述 273<br>10.1.2  Linux的网络协议栈 274<br>10.2  ARP协议的实例 276<br>10.3  IP协议及路由机制的实例 283<br>10.3.1  数据结构分类 283<br>10.3.2  邻接表(Neighbor Table) 283<br>10.3.3  对路由缓存的分析 285<br>10.3.4  网络层的重要函数 285<br>10.3.5  IP层的辅助函数讨论 307<br>10.4  Linux网络的QoS的支持 308<br>10.4.1  Linux对QoS支持概述 308<br>10.4.2  QoS重要数据结构 309<br>10.4.3  QoS队列策略FIFO的分析 310<br>10.4.4  复杂的QoS队列策略Token-Bucket Filter的分析 313<br>10.4.5  注册一个QoS_ops 319<br>10.4.6  创建一个Qdisc结构 319<br>10.5  ICMP协议的实例分析 323<br>10.5.1  重要的数据结构 323<br>10.5.2  发送一个ICMP报文 324<br>10.5.3  接收一个ICMP报文 327<br>10.5.4  回应一个ICMP报文 329<br>10.5.5  处理ICMP重定向数据包 330<br>10.5.6  处理ICMP请求回应数据包 330<br>10.5.7  处理ICMP时间请求数据包 331<br>10.5.8  处理ICMP不可达数据包 332<br>10.6  TCP协议的实例分析 335<br>10.6.1  Linux中TCP的初始化 335<br>10.6.2  TCP路径MTU的发现机制 336<br>10.6.3  Linux的重传机制实现 340<br>10.6.4  TCP的滑动窗口协议实现 344<br>10.6.5  接受一个TCP连接 346<br>10.6.6  TCP定时器机制实现 348<br>10.7  本章小结 350<br><br>第11章  嵌入式Linux系统的移植 351<br>11.1  引导系统BootLoader的移植实例 351<br>11.1.1  U-Boot的实现 351<br>11.1.2  移植U-Boot 356<br>11.2  uCLinux的移植实例 360<br>11.2.1  BootLoader及内核解压 360<br>11.2.2  几种内核启动方式介绍 360<br>11.2.3  内核启动地址的确定 360<br>11.2.4  系统入口分析 361<br>11.2.5  内核引导过程分析 362<br>11.3  Linux 2.6内核的移植实例 373<br>11.3.1  准备Linux2.6.X内核 373<br>11.3.2  修改Makefile文件 374<br>11.3.3  设置Flash分区结构 374<br>11.3.4  配置嵌入式Linux2.6内核 377<br>11.4  Linux中网络驱动程序的移植实例 382<br>11.4.1  移植步骤 382<br>11.4.2  移植过程中的问题及解决方法 385<br>11.5  本章小结 388
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证