软件工程及软件方法学
-
UML基础及Visio建模刘晓华等编用UML建模已深入人心,但很多读者苦于没有好的UML建模工具一直裹足不前。本书是作者多年使用Visio的经验总结,相信对初学者有很大的参考价值。Visio不仅仅是一个功能强大、简单易用的绘图工具,它还是一个绝佳的UML建模工具。本书结合Visio最新的2002版本,介绍如下内容:UML相关理论简介,重点是UML 模型图;Visio绘图的基本方法和技巧;用Visio绘制用例图、静态结构图、包图、活动图、状态图、序列图、协作图、组件图和部署图。介绍每种模型图的时,本书会详细介绍其概念、创建步骤和创建示例;最后介绍如何将Visio、UML和.NET结合,开发企业级应用,包括如何把VisualStudio.NET项目实施反向工程以生成UML静态模型结构,如何用Visio把UML模型映射为代码框架。本书避免重复大量枯燥的理论,而是尽可能用图形、示例来说明问题,剖析疑难。本书适合学习Visio建模的初学者阅读,同时也可作为大专院校或社会培训班的学习教材。
-
形式方法应用的杠杆作用Tiziana Maragria,Bernhard Steffen 著This book constitutes the thoroughly refereed post-proceedings of the First International Symposium on Leveraging Applications of Formal Methods, ISoLA 2004, held in Paphos, Cyprus in October/November 2004.The 12 revised full papers presented were carefully selected from more than 70 submissions. The papers discuss issues related to the adoption and use of rigorous tools and methods for the specification, analysis, verification, certification, construction, test, and maintenance of systems. In particular, by discussing common problems, requirements, algorithms, methodologies, and practices, ISoLA aims at supporting researchers in their quest to improve the utility, reliability, flexibility, and efficiency of tools for building systems, and users in their search for adequate solutions to their problems.
-
中国冰川信息系统吴立宗等编本书主要介绍了中国冰川分布和数据,按国际档案,为每一条冰川建立档案,包括冰川位置、类型等多项指标。
-
软件制造工程李超 罗积玉 等著暂缺简介...
-
供应链管理与高级规划(美)Hartmut Stadtler,(美)Christoph Kilger著;王晓东[等]译;王晓东译本书从理论探讨开始,提出供应链管理的建模方法,并结合当前常见的软件去解决“供应链规划”这一难题。书中附以大量案例,详细介绍了供应链管理和商级规划系统的理论、实践和建模。本书可作为教学用书,也可作为参考书指导业界实践。
-
嵌入式系统设计与开发实例详解胥静主编内容简介目录本书是一本讲述如何基于ARM7内核处理器进行嵌入式系统设计和开发的实用书籍。本书提供的实例全面涉及各种底层硬件驱动(如Flash ROM、SDRAM、Nandflash存储器、通用I/O、UART、定时器、LCD、I2C接口、A/D转换器、触摸屏及USB等)、μC/OSⅡ嵌入式操作系统、图形用户界面系统、文件系统和TCP/IP协议栈等嵌入式系统体系结构中的组成部件。书中通过28个实例对相关知识进行了有针对性的深入分析和详细解说,并为读者提供了可遵循的实践步骤,使读者能够在实际应用中深入掌握和实现这些技术和技巧。本书内容丰富,深入浅出,实用性强,不仅适合作为高等学校嵌入式系统相关专业的实验、培训教材或教师参考用书,也适合从事嵌入式系统设计和开发工作的专业技术人士使用。随着计算机技术逐渐渗透到各类电子产品当中,一种实用、高效的计算机系统:嵌入式系统不断展现出它独特的魅力。与桌面计算机不同,嵌入式计算机系统专门服务于特定需求,一般要求低成本、低耗费、轻型、高性能、高可靠性及可配置性。嵌入式系统日益广泛的应用也让人们看到了这项技术所蕴涵的巨大的市场潜力。市场的需求带动了对技术人才的需求,今天,大批的技术人员和学者的目光都被吸引到嵌入式系统的设计与开发这门技术上。但是,嵌入式系统的设计与开发作为一项实践性很强的专业技术,光有理论知识是无法真正深刻理解和掌握的。而今,市场上一些有关嵌入式系统的书籍,多是理论的堆积和外文资料的翻译,这对于希望获得快速而有效的知识技能的嵌入式系统技术人员来说,无法通过对这些书籍的阅读,获得更有效的资讯,从而难以尽快地进入角色、建立起设计思路。本书则试图打破这种状况,为读者提供直观、易懂且深入浅出的形式和内容。书中采用了列举实例的方式,深入浅出地揭示嵌入式系统技术在一些具体项目中的应用。这些实例都是可供实践和快速掌握的。每个实例相当于一个小型项目。"实例内容和目标"类似于实际应用开发中的"功能需求"或"技术指标",它首先为实例明确了一个具体的实现目标;之后,依据应用开发中的步骤,面对设计要求进行"实例分析":采用什么样的设计思路,主要的知识有哪些,要进行哪几项工作等等;最后在"实现方法和步骤"中,则进行具体的工作:电路设计和编程。本书是由在嵌入式系统领域中工作多年的工程师依据自身经验编写而成,因此,在跟随本书实践的过程中,读者将感到有如亲身参与了实际的设计与开发。书中不仅详细说明了如何验证各个实例,附带光盘中还包含了完整的可运行的实例源代码。通过对实例的运行,读者可以清楚地看到运行的现象或结果,从而留下直观和深刻的印象。书中的实例以业界表现出色的ARM处理器(采用ARM7TDMI内核的、三星公司推出的S3C44B0X)及其外围电路为硬件基础,以简明内核式的μC/OSⅡ作为嵌入式操作系统进行介绍,同时对嵌入式系统开发中常用的GUI系统、文件系统、TCP/IP协议栈等都进行了全面的揭示,尽可能完整地讲述嵌入式系统设计与开发中运用到的知识和技术。(1) 书中提供了哪些实例本书提供了28个实例,这些实例涉及面较广,遵循着先总体、后具体,先硬件、后软件,先模块、后系统的思路编写。这样,方便了初学者从前往后顺序阅读,依次对每个实例进行学习和实践,循序渐进地掌握嵌入式系统开发技术。同时,本书的每一个实例又是相对独立的,建议具备一定专业技术和经验的读者,可以首先通过阅读实例2了解目标系统的构架,然后挑选自己感兴趣的实例进行研读。实例1是一个概括性的实例,提出在进行一个典型嵌入式系统产品的开发中所涉及的基本组成元素和应采用的设计思路,建议读者首先阅读该实例,从而对嵌入式系统的设计与开发形成一个总体和直观的认识。实例2对常用开发工具及书中实例所依托的目标系统进行了详细的介绍。通过阅读该实例,读者能够了解到如何开始进行与ARM处理器相关的嵌入式系统的开发,如何构建或运用目标系统平台。由于每个实例都是在一定的目标系统上运行的,因此建议读者仔细阅读本实例的相关部分,了解目标系统的基本硬件配置。该例还通过Hello World程序实例,引导初学者开始嵌入式系统探索的第一步。从实例3开始,以三星公司的S3C44B0X处理器为例,介绍处理器内部功能部件的应用、基本外围电路设计与应用以及常用通讯接口的设计和应用。由于嵌入式系统产品都是紧密依托于硬件系统的,因此,对硬件系统有一个深刻的了解十分有助于产品的设计和开发。从实例13开始,详细分析了扩展触摸屏、USB接口和以太网接口等外围部件及其接口的设计方法,其中以太网接口是作为后面TCP/IP协议栈应用实践的基础,触摸屏的驱动知识也与后面的GUI系统相关。实例16到19深入探讨了μC/OSⅡ在ARM处理器系统中的应用,主要围绕3个内容进行应用举例:操作系统移植、多任务管理和通讯以及中断处理程序设计。实例20到24围绕GUI(图形用户界面)进行应用举例,内容包括移植、图形文字显示、汉字显示、视窗控件和动画显示等。实例25讲述如何将文件系统加入到系统中,并运用文件系统API函数对数据进行文件管理操作。实例26到28,以以太网接口作为硬件基础,依次是TCP/IP协议栈中的ARP地址解析应用实例、IP和ICMP网络诊断应用实例及UDP数据传输应用实例。(2) 如何调试和运行这些实例本书中的28个实例都经过了严格验证,它们是在一款ARM7处理器开发平台:"ARMSys"上通过测试的[关于ARMSys开发平台的详细信息,可以从杭州立宇泰(原名立泰)电子有限公司的网站www.HZLitai.com.cn上获得]。经过适当的修改,这些实例也能够在其他典型的ARM7开发板上运行(以S3C44B0X为处理器)。建议读者拥有一个自己的开发平台,这样就可以对书中的实例进行实践了。本书的实例2中详细介绍了ARMSys的体系结构,在对实例电路的讲述中也会采用ARMSys的电路结构。为了更好地学习本书的内容,建议读者通过这套开发平台,或通过自行设计和制作开发板来验证实例,作者在本书的附带光盘中提供了S3C44B0X开发板的原理图实例(光盘目录\\SCH\\)。除了目标板,还需要一套ARM处理器专用的开发软件,例如ARM公司提供的ARM Software Development Toolkit 2.5(简称SDT2.5),就是一个集成开发环境。每一个实例的源代码都放在本书附带光盘中的Source\\目录下,包括可以在SDT2.5下打开的工程文件和可进行程序固化的*.bin文件。在SDT2.5下,利用一个简易的并口转JTAG口电路模块就可以实现代码的下载与调试,这种方式的速度较慢,但是简易而且价格低。同样可以在光盘的SCH\\目录下找到JTAG板的电路原理图。关于具体的开发环境的组建和开发步骤,在本书的实例2中将有详细的指导说明。(3) 光盘资料介绍Tools\\目录下包括ARM处理器开发工具软件包,内容有:IDE Trial\\集成开发环境软件试用版JTAG\\JTAG协议转换程序USB\\USB程序下载器安装程序Programmer\\烧录工具Source\\目录下包括28个实例的工程文件、源程序文件、库文件和工程模板:ADCtestS3C44B0X内置A/D转换器应用实例ARPscanARP地址解析应用实例ColorLCDtest彩色LCD驱动实例EINTtestS3C44B0X外部中断实例Ethernet以太网底层函数编写实例FAT16testFAT16文件系统应用实例FlashtestFlash ROM读写实例guiHelloworld GUI软件包Hello World应用实例guiHZKGUI与汉字库的应用实例guiMemDevGUI动画显示应用实例guiScaleGUI绘制图形应用实例guiWMGUI窗口控件应用实例HelloworldHello World程序IICtestI2C接口应用实例IOtestI/O应用实例:矩阵式键盘扫描Nandflashtest非线性Flash ROM读写应用实例PDAtest模拟PDA应用实例PingtestPING诊断工具应用实例RTCtestS3C44B0X内置RTC应用实例SDRAMtestSDRAM接口应用实例Timertest 定时器应用实例Touchtest触摸屏应用实例UARTtestUART串行口应用实例ucos_ex1μC/OSⅡ应用之一:多任务ucos_ex2 μC/OSⅡ应用之二:任务间通讯ucos_ex3μC/OSⅡ应用之三:中断服务程序UDPtestUDP数据传输应用实例USBN9603demoUSBN9603控制器的固件程序编写范例USBtestUSB接口固件编程实例template.apjSDT工程模板PCSoftware\\目录下包括上述实例中使用到的PC机软件或驱动程序:GUI Trial\\GUI库文件和字体转换工具TCPLean\\运行在主机上的TCP/IP服务程序可执行文件(配合实例26~28)USB\\运行在主机上的USB文本文件下载器(配合实例15)SCH\\目录下包括S3C44B0X处理器系统参考电路图(PDF格式)。(4) 适合什么样的读者本书的主要目的是向社会推广与嵌入式系统有关的知识和技术,内容编排是由浅入深的,适合不同程度的读者。入门的读者可以很快地掌握一些常用的技术并积累开发经验,专业读者则可从对某个专题实例的阅读和练习中,掌握相应的开发技术和技巧。对本书有任何意见和建议,欢迎来信与作者联系:xujinggg120@263.net。(5) 感谢参加本书编写和审阅的还有周德兴、饶大立、路邀、丁立伟、郭炳予等,在此对他们的热情支持表示衷心感谢!对杭州立宇泰电子有限公司提供的优秀硬件平台支持表示感谢!编著者2004年8月 实例1嵌入式系统开发实例:模拟PDA的实现1.1 概述11.2 实例内容和目标11.3 实例分析21.3.1 系统构成的元素21.3.2 硬件部分31.3.3 软件部分51.4 实现方法与步骤101.4.1 连接硬件电路111.4.2 程序目录和内容说明111.4.3 下载并运行程序12实例2ARMSys平台开发环境及工具详解2.1 概述132.2 实例内容和目标132.3 实例分析142.3.1 ARMSys的组成结构142.3.2 ARMSys的启动程序和地址空间分配162.3.3 ARMSys提供的开发环境182.3.4 应用开发步骤192.3.5 SDT2.5的介绍192.4 实现方法与步骤202.4.1 编写或修改源程序代码212.4.2 使用APM对工程进行编译222.4.3 使用ADW进行仿真调试302.4.4 在Windows 2000/ XP下使用JTAG.exe372.4.5USB口下载工具392.4.6代码固化40实例3Flash ROM器件应用3.1 概述423.2 实例内容和目标423.3 实例分析433.3.1 读操作443.3.2 字写入操作453.3.3 扇区/ 块/ 整片擦除操作473.3.4 内部操作状态检测493.4 实现方法与步骤493.4.1 接口电路493.4.2 硬件上的设置503.4.3 寄存器的说明513.4.4 SST39VF160的擦除533.4.5 SST39VF160的写入533.5 运行结果54实例4SDRAM器件应用4.1 概述554.2 实例内容和目标554.3 实例分析554.3.1 SRAM器件的结构特点554.3.2 DRAM器件的结构特点564.3.3 SDRAM器件的构成原理和应用特点574.3.4 SDRAM器件IS42S16400简介574.4 实现方法与步骤594.4.1 地址分配594.4.2 电路连接614.4.3 寄存器设置614.4.4 对IS42S16400的编程654.5 运行结果65实例5Nandflash存储器器件应用5.1 概述665.2 实例内容和目标665.3 实例分析665.3.1 Nandflash存储器的应用特点665.3.2 Nandflash存储器器件K9F5608U0B简介675.4 实现方法与步骤785.4.1 K9F5608U0B与S3C44B0X的接口设计785.4.2 写入指令、地址和读/ 写数据的条件795.4.3 读器件的ID码子程序805.4.4 块擦除子程序805.4.5 页写入子程序815.4.6 页读出子程序825.5 运行结果83实例6通用I/O口的应用:矩阵式键盘6.1 概述846.2 实例内容和目标846.3 实例分析846.3.1 S3C44B0X的多功能I/ O口846.3.2 端口选择886.3.3 端口控制寄存器886.3.4 键盘的循环扫描检测法906.4 实现方法与步骤906.4.1 寄存器设置916.4.2 编写键盘扫描程序916.5 运行结果93实例7外部中断处理程序设计7.1 概述947.2 实例内容和目标947.3 实例分析947.3.1 概述947.3.2 中断控制器947.3.3 中断源957.3.4 中断优先级产生模块967.3.5 中断优先级977.3.6 中断矢量地址表977.3.7 控制中断的寄存器987.4 实现方法与步骤1067.4.1 I/ O口设置1067.4.2 外部中断触发模式设置1077.4.3 中断寄存器设置1077.4.4 主程序编写1077.4.5 中断处理程序编写1097.5 运行结果109实例8UART异步串行接口应用8.1 概述1108.2 实例内容和目标1108.3 实例分析1108.3.1 UART操作1118.3.2 UART寄存器1148.4 实现方法与步骤1208.4.1 电路接口和I/ O口设置1208.4.2 UART初始化1218.4.3 myUart_Send函数主体1218.4.4 字符发送程序myUart_SendByte1228.5 运行结果123实例9定时器应用9.1 概述1249.2 实例内容和目标1249.3 实例分析1249.3.1 PWM定时器操作1249.3.2 PWM定时器寄存器1309.4 实现方法与步骤1339.4.1 I/ O口设置1339.4.2 定时器时钟源频率设置1339.4.3 设置输出波形频率1339.4.4 设置占空比1339.4.5 设置定时器控制寄存器并启动定时器1339.4.6 定时器中断主程序1349.4.7 定时中断服务程序1349.5 运行结果134实例10实时日历时钟(RTC)应用10.1 概述13610.2 实例内容和目标13610.3 实例分析13610.3.1 实时时钟特性13610.3.2 实时时钟寄存器13710.4 实现方法与步骤13910.4.1 实时时钟初始化13910.4.2 显示当前时间14010.5 运行结果140实例11LCD接口应用11.1 概述14211.2 实例内容和目标14211.3 实例分析14211.3.1 STN型彩色LCD模块介绍14211.3.2 S3C44B0X的内部LCD控制器介绍14411.4 实现方法与步骤15011.4.1 I/ O口LCD功能设置15011.4.2 LCD初始化程序15111.4.3 图像数据15311.4.4 全屏显示参考程序15311.4.5 正方形的绘制15411.5 运行结果154实例12I2C接口应用12.1 概述15612.2 实例内容和目标15612.3 实例分析15612.3.1 I2C总线的基本知识15612.3.2 I2C总线通用传输格式15612.3.3 I2C串行EEPROM的相关知识15812.3.4 S3C44B0X的I2C接口16012.4 实现方法与步骤16512.4.1 I/ O端口I2C功能设置16512.4.2 I2C中断使能16512.4.3 初始化I2C接口16512.4.4 向24LC04B中写入数据子程序165124.5从24LC04B中读出数据子程序166124.6I2C中断处理子程序166125运行结果168实例13A/D转换器应用13.1 概述16913.2 实例内容和目标16913.3 实例分析16913.3.1 关于A/ D转换的基础知识16913.3.2 S3C44B0X具备的ADC16913.4 实现方法与步骤17213.4.1 模拟信号的产生17213.4.2 ADC控制寄存器的初始化17213.4.3 读取A/ D转换数值子程序17313.5 运行结果173实例14触摸屏应用14.1 概述17414.2 实例内容和目标17414.3 实例分析17414.3.1 触摸屏的基本原理17414.3.2 触摸屏的控制实现17514.3.3 ADS7843引脚配置17514.3.4 ADS7843的典型电路17614.3.5 ADS7843的控制字17714.3.6 ADS7843的工作过程17814.4 实现方法与步骤17914.4.1 接口电路的连接和I/ O口设置17914.4.2 读取触摸点坐标程序设计17914.5 运行结果180实例15USB设备接口应用15.1 概述18215.2 实例内容和目标18215.3 实例分析18315.3.1 USB接口工作原理概述18315.3.2 USB设备开发过程18415.3.3 USB接口控制器USBN960318415.3.4 USB接口电路18515.3.5 固件程序的开发18515.4 实现方法与步骤18715.4.1 安装USB驱动程序及进行文件下载18715.4.2 修改固件程序18715.5 运行结果189实例16以太网控制器接口应用16.1 概述19116.2 实例内容和目标19116.3 实例分析19116.3.1 以太网基础知识19116.3.2 关于以太网控制器RTL801919416.4 实现方法与步骤19916.4.1 连接以太网模块与处理器的接口19916.4.2 寄存器地址映射19916.4.3 热复位函数20016.4.4 初始化函数20116.4.5 接收/ 发送函数20216.5 运行结果205实例17μC/OSⅡ的移植与应用17.1 概述20617.2 实例内容和目标20717.3 实例分析20717.3.1 μC/OSⅡ操作系统的移植条件20717.3.2 移植工作的内容20817.4 实现方法与步骤21417.4.1 实验准备21417.4.2 多任务应用程序的编写21417.5 运行结果217实例18μC/OSⅡ的多任务管理和任务间通讯18.1 概述21818.2 实例内容和目标21818.3 实例分析21918.3.1 任务管理函数21918.3.2 任务间的通讯与同步22418.4 实现方法与步骤23018.4.1 连接电路23018.4.2 主任务处理程序23018.4.3 键盘检测任务处理程序23218.4.4 电压检测任务处理程序23318.5 运行结果233实例19μC/OSⅡ中断处理程序设计19.1 概述23519.2 实例内容和目标23619.3 实例分析23619.3.1 中断服务子程序23619.3.2 中断延迟23719.3.3 中断响应23719.3.4 中断恢复时间23719.3.5 中断延迟、响应和恢复23819.4 实现方法与步骤23819.4.1 中断处理汇编程序的编写23819.4.2 中断处理C程序的编写24019.4.3 中断处理任务程序的编写24019.5 运行结果241实例20GUI系统的移植与应用20.1 概述24220.2 实例内容和目标24220.3 实例分析24320.3.1 emWin的介绍24320.3.2 emWin对目标系统的要求24420.3.3 屏幕和坐标24420.3.4 应用emWin的步骤24520.3.5 emWin的移植24520.4 实现方法与步骤24720.4.1 实例准备24720.4.2 定义宏24720.4.3 编写Hello World程序24720.5 运行结果248实例21图形文字显示的基本应用21.1 概述24921.2 实例内容和目标24921.3 实例分析24921.3.1 文字显示24921.3.2 图形显示25321.4 实现方法与步骤25621.4.1 实例准备25621.4.2 绘制表盘的示例代码25621.5 运行结果257实例22汉字显示的应用22.1 概述25822.2 实例内容和目标25822.3 实例分析25822.3.1 emWin字体库的应用25822.3.2 字体库API25922.3.3 emWin已经提供的字符集26022.3.4 字体转换器26122.3.5 字体库文件结构26222.4 实现方法与步骤26422.4.1 得到符合emWin要求的汉字库26422.4.2 实例准备26822.4.3 显示汉字的示例代码26822.5 运行结果268实例23GUI视窗和控件的应用23.1 概述26923.2 实例内容和目标26923.3 实例分析26923.3.1 视窗管理器(WM)26923.3.2 视窗控件(Widgets)27523.3.3 对话框(Dialog)28723.4 实现方法与步骤29423.4.1 实例准备29423.4.2 编写主程序29423.5 运行结果294实例24GUI中的动画显示应用24.1 概述29624.2 实例内容和目标29624.3 实例分析29624.3.1 使用存储器设备驱动的说明29624.3.2 存储器设备驱动的绘图步骤29724.3.3 起用存储器设备驱动29724.3.4 与存储器设备驱动相关的API函数29824.4 实现方法与步骤30424.4.1 回调函数的参数30524.4.2 回调函数的编写30524.4.3 主程序编写30624.5 运行结果307实例25基于Nandflash的文件系统25.1 概述30825.2 实例内容和目标30825.3 实例分析30925.3.1 FAT16文件系统的结构30925.3.2 关于Nandflash 31425.4 实现方法与步骤31525.4.1 FAT16的移植31525.4.2 格式化文件系统31625.4.3 文件系统初始化31825.4.4 文件系统验证程序31925.5 运行结果320实例26ARP网络寻址26.1 概述32126.2 实例内容和目标32126.3 实例分析32326.3.1 IP地址32326.3.2 IP地址解析32326.3.3 ARP数据包32426.3.4 ARP扫描器32526.4 实现方法与步骤32626.4.1 主程序处理32626.4.2 ARP数据包的检测和创建32926.4.3 连接电路并调试运行33026.5 运行结果330实例27IP与ICMP应用27.1 概述33227.2 实例内容和目标33227.3 实例分析33427.3.1 IP数据报33427.3.2 ICMP消息33627.3.3 PING工具的工作步骤33727.4 实现方法与步骤33827.4.1 主程序处理33827.4.2 报文发送34027.4.3 报文接收34127.4.4 ICMP消息函数34327.4.5 IP数据报函数34427.4.6 连接电路并调试运行34627.5 运行结果346实例28UDP数据报传输应用28.1 概述34828.2 实例内容和目标34828.3 实例分析34928.3.1 UDP数据报34928.3.2 端口和套接字35028.3.3 UDP数据包格式35128.4 实现方法与步骤35128.4.1 主程序处理35228.4.2 接收处理35328.4.3 创建和发送UDP数据报35628.4.4 连接电路并调试运行35728.5 运行结果357附录AS3C44B0X概述A.1简介359A.2特性360A.3内部结构图362A.4芯片引脚定义363附录BARM处理器工作模式B.1处理器工作状态368B.2状态切换368B21进入THUMB状态368B22进入ARM状态368B.3存储空间格式368B.3.1大端格式368B.3.2小端格式369B.4指令长度369B.4.1数据类型369B.4.2操作模式369B.5寄存器369B.5.1ARM状态寄存器集369B.5.2THUMB状态寄存器集370B.5.3ARM状态寄存器与THUMB状态寄存器之间的关系371B.5.4在THUMB状态下操作寄存器高位372B.6程序状态寄存器PSR372B.6.1条件码标志372B.6.2控制位373B.6.3保留位374B.7异常374B.7.1进入异常处理时的行为374B.7.2离开异常处理时的行为375B.7.3异常进入/ 退出概要375B.7.4FIQ(快速中断请求)375B.7.5IRQ(中断请求)376B.7.6Abort(异常中断)376B.7.7SWI(软件中断)376B.7.8未定义指令377B.7.9异常中断向量377B.7.10异常中断优先级377B.7.11复位378附录C44binit.s初始化程序研究C.1定义入口地址379C.2建立异常中断处理向量379C.2.1向量中断模式(只针对IRQ)380C.2.2非向量中断模式382C.3初始化外部存储器385C.4初始化堆栈指针386C.5初始化I/ O设备387C.6初始化中断系统所需要的RAM变量…387C.7初始化C程序所要求的存储空间388C.7.1关于映像文件及区域388C.7.2与区域相关的符号388C.7.3加载时的映像文件389C.7.4执行时的映像文件389C.7.5初始化范例程序390C.8进入C语言程序的运行391参考文献392
-
软件工程(法)雅克·普林茨(Jacques Printz)原著;金维克译从总体上说,信息系统的生产是很复杂的,软件工程就是一门以这样生产为目标的科学。这门“元学科”确定了为保证软件生产过程正常进行所必需条件的规则和界限。因此,它必然要立足于软件开发的实践,并始终要研究它所提出的工具的有效性和合理性。本书全面介绍了软件开发的各项经济数据和技术数据,可以使读者更好地理解软件工程所面临的真正挑战:要让围绕在我们周围的信息系统始终为我们服务。本书适合于对软件开发感受趣的广大读者。
-
DEBUG与软件维修技术孙维连,刘涛主编本书以DEBUG下的汇编语言为工具,通过大量实例给出如何应用DOS的功能调用、DOS中断、BIOS中断、端口技术、硬盘扇区读写技术、DOS内部数据结构去解决实践中所遇到软件维护维修等方面的技术问题。
-
信息系统工程中的符号学Kecheng Liu著符号学(又称为记号学)作为研究各种符号的科学,多年来已被认为是信息通信系统中最重要的基础学科,并广泛应用于计算机及相关应用学科中,如计算机应用系统的设计与开发、需求工程、信息系统工程、电子商务、电子政务、人机交互、协同工作等。本书作为符号学在计算机及企业系统中的应用的一第部专著,自出版以来,给学术及应用领域带来了重要的影响,许多欧洲及美洲的大学院校采用此书作为研究生教材,并有一些院校根据此书开设大学高年级课程。本书从符号学的角度,介绍了信息需求分析、建模、设计及开发的方法,并提供实便演示,适合作为大学高年级或研究生的符号学教材。本书作者刘科成教授现在英国瑞丁大学(The University of Reading)任教,并担任交叉学科的信息科学研究中心主任。自2000年以来,他撰写和编辑了5本符号学专著,他的个人网址为:www,rdg.ac.uk/~sis01kl。
-
嵌入式系统开发与应用田泽编著内容简介目录全面讲述了嵌入式系统开发与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及国内应用广泛的Samsung公司S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软、硬件开发过程。主要内容包括:◆ 嵌入式系统开发基础知识;◆ ARM技术概述;◆ 基于ARM的嵌入式系统应用程序设计;◆ 基于S3C44B0X的嵌入式系统应用开发实例;◆ μC/OSⅡ和μCLinux嵌入式操作系统及应用开发。本书可作为高校计算机和电类专业的本科生、研究生教材,以及相关工程技术人员进行嵌入式系统应用开发的教材,也可供基于ARM核嵌入式系统开发的工程技术人员参考。本书配套多媒体教学课件。嵌入式技术的发展以8位单片机(或微控制器,MCU)为核心的嵌入式系统早已广泛应用于各个领域,这些应用大多数还处于单机使用的嵌入式低层次阶段。其特点是以MCU为核心,与一些简单的传感器及监测、伺服控制、指示和显示等设备配合,实现一定的测量、显示、信息处理及控制等功能。虽然在一些工业控制、汽车电子和智能家居等多机应用中,为了实现多个MCU构成的系统间的信息交流,通常是利用CAN、RS232和RS485等总线将MCU组网。但这种网络的应用空间有限,相关的通信协议也比较单一,并且一般孤立于广泛应用的Internet以外。目前,Internet已成为社会重要的基础信息设施,是信息流通的重要渠道。嵌入式系统必将与Internet完美融合,方便、低廉地将信息传送到世界上任何一个地方。随着嵌入式设备与Internet的广泛结合,手机、PDA、路由器和调制解调器等复杂的高端应用对嵌入式处理器的性能提出了更高的要求。虽然以8位单片机为核心的嵌入式技术不断发展,性能也不断提高,但由于其性能的局限性,已无法满足未来高性能嵌入式技术的发展需求。激烈的市场和技术竞争要求不断提高嵌入式系统的性价比;同时,也要求缩短嵌入式系统的开发周期。自从20世纪70年代初出现嵌入式系统的概念以来,嵌入式系统以其高性能、低功耗等特点高速发展。当时的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用简单的循环控制来对外界的控制请求进行处理。随着嵌入式系统的发展,当应用系统越来越复杂、使用范围越来越广泛时,每增加一项新的应用功能,都可能需要从头开始设计系统软件,没有操作系统已成为其最大缺陷。但目前在8位单片机上运行嵌入式操作系统尚有一定困难,因此,以32位处理器作为高性能嵌入式系统开发的核心已是嵌入式技术发展的必然趋势。20世纪90年代后,嵌入式系统设计从以嵌入式微处理器/DSP为核心的"集成电路"级设计,逐渐转向"集成系统"级设计,提出了片上系统SoC(Sytem on a Chip)的基本概念。目前,嵌入式系统已进入以SoC为核心的设计阶段,并开始逐步实用化和规范化。SoC为高性能嵌入式系统开发提供了功能丰富的硬件平台,也为实时嵌入式操作系统的广泛使用提供了硬件基础。从20世纪80年代开始,陆续出现了一些嵌入式操作系统,比较著名的有VxWorks、Windows CE、Palm、μCLinux、pSOS和μC/OSⅡ等,但真正广泛使用只是近几年的事情。一方面是因为嵌入式系统软件开发复杂度增加的需求;另一方面是大量高性能、面向实际应用、集成多种系统功能的SoC芯片成为高端嵌入式应用的硬件核心,为可靠、高效、低成本地运行嵌入式操作系统提供了硬件平台。大部分嵌入式操作系统价格昂贵,而源代码开放的μC/OSⅡ、μCLinux是大家比较看好的,也比较适用于教学。有关嵌入式操作系统的知识体系相对复杂,一些出版社已经出版了多种相关的书籍,如果在教学、科研中对这方面内容比较感兴趣,请参阅相关资料。嵌入式微处理器具有体积小、重量轻、成本低和可靠性高的优点,是嵌入式系统的核心。目前比较有影响的32位嵌入式处理器有ARM公司的ARM、Compaq公司的Alpha、HP公司的PARISC、IBM公司的PowerPC、MIPS公司的MIPS和Sun公司的Sparc等。而ARM处理器具有高性能、低功耗和低成本等显著优点,已成为高性能、低功耗嵌入式微处理器的代名词,是目前32位、64位嵌入式处理器中应用最为广泛的一个系列。20世纪90年代初,半导体行业产业链形成设计业、制造业和封装测试业三业分离的产业分工。台积电、联电等半导体代工厂崛起,一些fabless、chipless公司如雨后春笋般出现。而英国先进RISC机器公司(Advanced RISC Machines,简称ARM公司)作为fabless、chipless这一生产模式最为成功的典范。ARM公司既不生产芯片,也不销售芯片,而是设计出高效的IP内核,授权给各半导体公司使用;半导体公司在ARM技术的基础上,根据自己公司的产品定位,添加自己的设计并推出芯片产品;最后由OEM客户采用这些芯片来构建基于ARM技术的最终应用系统产品。经过10多年的发展,ARM公司已是业界领先的IP供应商。回顾ARM技术的发展历程,在ARM7体系结构(体系结构版本v3)刚被广泛接受和使用时,嵌入式微处理器的市场仍然大都由8位、16位处理器占领。然而,这些产品却不能满足当时移动电话、调制解调器等高端应用对处理器性能的要求。这些高端产品需要32位RISC处理器的性能和更优于16位CISC处理器的代码密度,这就要求要以更低的成本取得更好的性能和更优的代码密度。为了满足这种发展需求,ARM体系结构增加了T变种,开发了一种新的指令体系,即16位Thumb指令集。Thumb技术是ARM技术的一大特色。ARM发布的ARM7TDMIT体系结构(体系结构版本v4T)的处理器,是第一个支持Thumb指令集的微处理器,其工作模式可以方便地切换到Thumb状态。在该状态下运行的指令集是16位Thumb指令集,这在当时的16位系统与现在需要的32位系统之间搭起了一座桥梁。性能更优而不需要付出额外代价的ARM,为那些在当时使用8位或16位处理器,却一直在寻找更优性能处理器的用户来说,提供了解决方案,也极大地推动了ARM技术的发展。16位处理器一直没有像人们预期的那样发展起来的原因很复杂,由于32位ARM微处理器提供了低于一般16位微处理器的价格而高于一般16位微处理器的性能,使得高端的嵌入式应用可以完全跨越16位而直接进入32位应用领域,这也许是原因之一。ARM微处理器得到了众多半导体厂家和整机厂商的大力支持,全球已有100多家IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括TI、Philips和Intel等公司。优良的性能和准确的市场定位极大地丰富了ARM资源,加速了基于ARM核的面向各种应用系统芯片的开发应用,使得ARM获得了更广泛的应用,确立了ARM技术的市场领先地位。ARM在高性能嵌入式应用领域获得了巨大的成功,已在32位嵌入式应用中稳居世界第一。在2002年,基于ARM核的芯片占据了整个32位、64位嵌入式微处理器市场的79.5%,全世界已使用了20多亿个ARM核。如今,ARM公司已经成为业界的龙头老大,"每个人口袋中都装着ARM"是毫不夸张的,因为几乎所有的手机、移动设备、PDA都是用基于ARM核的系统芯片开发的。为了顺应当今世界技术革新的潮流,了解、学习和掌握高性能嵌入式技术,就必然要学习以32位ARM微处理器为核心的嵌入式开发技术及其应用开发环境和平台。 对IT产业发展规律进行总结可发现:如果说过去20年PC机的广泛应用是集成电路和IT相关技术发展的驱动器并且极大地促进了IT相关技术发展,那么未来几十年除了PC技术要继续高速发展之外,主要驱动器应该是与Internet相结合的、可移动的(Mobile)、便携的(Portable)、实时嵌入式Internet的信息处理设备,即进入了后PC(PostPC)时代。目前嵌入式Internet还仅局限于移动商务、智能家居(家电上网)、工业控制和智能设备的应用等方面。随着相关应用技术的发展,嵌入式技术必将与许多实际应用领域相结合,以难以想像的速度发展。这必然会极大地拓展嵌入式应用的广度和深度,体现嵌入式系统与实际应用密切结合的价值。当代通用计算机工业是Wintel(Microsoft和Intel公司20世纪90年代初建立的联盟)垄断的工业。随着信息技术和网络技术的高速发展,嵌入式技术的广泛应用使得这种垄断在后PC时代不再存在。嵌入式系统正是非PC设备的主体。互联网技术在世界范围的扩展及中国通信事业的高速发展,为我国开发嵌入式产品造就了巨大市场。与实际应用密切结合且技术高度分散的嵌入式技术,为我国IT技术的发展提供了难得的机遇。加快嵌入式技术的开发应用,学习与掌握嵌入式系统开发的核心技术,对于IT技术并不发达的中国是非常重要的。学习32位嵌入式系统应用开发知识的迫切性与传统的以8位51单片机为核心的开发应用相比,ARM微处理器的性能和处理能力遥遥领先,应用也日益广泛,但与之相应的,基于ARM的32位嵌入式系统软/硬件开发的复杂度和难度也急剧加大。现在我国嵌入式应用开发技术人才状况是:掌握低端8位单片机应用技术的人才相对过剩;而真正了解高端32位嵌入式系统开发技术的人才,却凤毛麟角,需求与供给严重失衡。就我国大部分高校目前的嵌入式系统教学而言,整体仍然停留在20世纪80年代初发展起来的以8位51单片机为核心的单片机教学水平上。目前教学内容设置、教学方法、教学手段、教材编写体系与这门课程以实际应用为主的基本特征严重脱节。学生学习了这门课程后,只能进行一般的、基于指令基础上的简单编程,而不能进行基本的应用系统设计。在此基础上要想完成具有较大规模的应用程序设计是有一定难度的,要独立进行一般的开发工作就更加有难度。一般学生进入技术开发岗位后,基本上要进行相当长一段时间的实际培训,才能基本进入开发流程;要独立承担项目,还需要更长一段时间。发展嵌入式技术,人才是关键。培养和培训相关人才,一方面,要在高校中加强嵌入式系统教学,这是人才的源头;另一方面,有一定实际项目开发经验的工程技术人员也需要加强嵌入式系统开发技术的学习。因此,为满足高等院校相关专业嵌入式系统教学要求,迫切需要适合教学特点的高水平教材;从事嵌入式系统开发的一般工程技术人员也迫切需要对嵌入式系统应用开发技术进行全面、系统、深入介绍的参考资料。作者是国内最早翻译ARM bible级的《ARM SoC体系结构》\[1\]一书的译者之一,并从事于ARM技术的相关教学及科研工作多年,积累了大量的嵌入式系统教学和开发经验;作者与ARM公司、基于ARM核的芯片厂商以及对ARM感兴趣的读者建立了广泛的联系,获得了大量的技术信息和建议。因此,为满足高等院校相关专业的师生及嵌入式系统开发工程技术人员的需要,作者在此基础上,编写了4本图书,即本书及另外3本一套的《嵌入式系统开发与应用系列教程》。本书涉及的硬件平台及开发环境Samsung公司S3C系列芯片是国内市场占有率最高的基于ARM核的微处理器之一,其接口模块丰富,适用面广,故本书和《嵌入式系统开发与应用系列教程》都选择Samsung公司S3C44B0X(基于ARM7TDMI)作为硬件平台。在学习基于ARM的嵌入式系统开发时,选择合适的开发工具可以加快开发进度,降低开发成本。目前世界上有几十家公司提供不同类别的ARM开发工具和产品。ARM应用的开发工具主要包括集成开发环境IDE、嵌入式实时操作系统、评估板和JTAG仿真器等。一般来说,一套具备最基本功能的嵌入式集成开发环境IDE是嵌入式系统开发所必不可少的。目前国内外主要使用的IDE环境有ARM 公司的SDT和ADS、美国Green Hills软件公司的Multi 2000、台湾的Hitool for ARM以及英蓓特公司的Embest IDE for ARM等,而国内使用较多的IDE为ARM公司的SDT、ADS以及英蓓特公司的Embest IDE。仿真器有ARM公司的Muti-ICE和英蓓特公司的Embest系列ARM JTAG仿真器。SDT和ADS是ARM公司早期的集成开发环境(IDE),其用户界面不太符合中国人的使用习惯,而且软件本身价格很高,仿真器也是价格不菲。SDT和ADS目前都已经停止升级。英蓓特公司的ARM集成开发环境套件(包括Embest IDE、指令集模拟器、仿真器及Flash编程器等相关开发工具)是国内最早的ARM开发工具之一。作为国内较早成功开发出IDE环境的公司,英蓓特是目前国内唯一的ARM Connected Community Membership(参见http://arm.convergencepromotions.com/catalog/Embest.htm),完全自主开发,本土技术支持实力雄厚,且价格合理,并能为嵌入式系统开发人员提供软硬件开发工具和嵌入式系统完整解决方案及技术信息服务;因此,本书和《嵌入式系统开发与应用系列教程》都选用英蓓特公司的集成开发环境套件作为ARM应用开发的工具。学习32位嵌入式系统开发与应用技术所需的基础知识嵌入式系统开发与应用的内容繁杂,涉及基本的硬件知识(如嵌入式微处理器及其基本接口、扩展人机接口和网络通信接口等知识)、操作系统(应该至少了解一种操作系统的中断、优先级、任务间通信和同步等知识)、程序设计知识(C语言、C++语言和汇编语言程序设计,至少要熟悉C语言);同时,还要具备一定的数字电路知识以及使用示波器、逻辑分析仪等基本技能。因此,在系统地学习本书和《嵌入式系统开发与应用系列教程》之前,必须有学习过微机原理与接口、C语言程序设计等课程的基础,掌握计算机操作系统原理、体系结构和系统结构的基本概念,同时对于网络协议有一定的了解。本书内容组成本书全面、系统地讲述了嵌入式系统开发的基础理论与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及目前应用广泛的Samsung公司的S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软/硬件开发过程。在加强嵌入式系统开发基础、嵌入式系统应用软件设计、嵌入式基本硬件接口、嵌入式操作系统移植及应用内容的基础上,紧密结合嵌入式系统开发过程的实际工程应用,将嵌入式系统外围复杂的实用模块开发例程移植到了本书内容中。本书按技术内容分为8章,共5大部分。各部分具体内容及包含的章节如下:第1部分: 为书的第1章,主要介绍嵌入式系统开发的基础知识。内容包括嵌入式系统的基本概念、组成结构、硬件组成、操作系统、应用软件开发、开发流程和发展趋势。通过本部分的学习,可使读者系统地建立起嵌入式系统开发的整体概念和知识体系。第2部分: 为书的第2章,主要对ARM技术进行全面论述。通过本部分的学习,可使读者全面地了解ARM技术,并建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础的嵌入式SoC芯片设计的技术框架。在学习本部分时,可根据自己的具体情况有所取舍。第3部分: 为书的第3、4和5五章。主要介绍嵌入式系统的应用程序设计。第3章主要介绍ARM指令集。第4章主要介绍Thumb指令集。ARM和Thumb这两种指令集只是基于ARM的嵌入式编程的基础。第5章主要介绍如何运用前面学过的汇编指令并结合C语言来进行嵌入式程序设计。首先介绍伪操作、宏指令和伪指令等嵌入式汇编语言程序设计基础知识;然后讲述ARM汇编语言程序设计,以实际例程中用到的C语言讲述嵌入式C语言程序设计基础,并在此基础上列举一个嵌入式C程序设计实例;对于嵌入式编程技巧和C语言与汇编混合编程也进行了简述;最后通过一个基于Embest IDE for ARM开发环境的嵌入式软件开发与调试实例讲述了嵌入式软件开发流程和开发工具的使用。本章密切结合嵌入式系统开发的实际例程,通过学习能使读者掌握嵌入式程序设计的基本知识、基本方法和基本流程。第4部分: 为书的第6章。主要介绍基于S3C44B0X的嵌入式系统开发。Samsung公司的S3C44B0X片上功能很强大,是国内应用广泛的基于ARM7TDMI内核的SoC。本部分以S3C44B0X为例,对嵌入式系统开发进行全面介绍,涉及片上基本功能模块及这些模块的应用开发;在此基础上还介绍基于S3C44B0X的S3CEV40开发板设计,并对基于S3CEV40的启动程序和基于S3CEV40的USB接口的嵌入式开发进行讲述,其他如网络等功能的完整的应用开发可详见《嵌入式系统开发与应用实验教程》\[2\]一书。通过对这些嵌入式外围主要模块应用功能(部分内容可参见《嵌入式系统开发与应用实验教程》)开发的讲述,可使读者对嵌入式系统开发有一个全面了解。第5部分: 为书的第7、第8章,主要对于嵌入式操作系统μC/OSⅡ和μCLinux的基本知识进行讲述,在此基础上分别对基于S3C44B0X的移植及应用开发进行介绍。本书包含大量软件和硬件设计资源,为系统学习与掌握基于ARM的嵌入式开发技术提供了一种选择方案。通过该书的学习,不仅可使读者系统地掌握嵌入式系统开发的基本知识,而且对复杂实用的外围接口模块的开发、嵌入式操作系统的移植也能有一个全面了解。本书提供的实际嵌入式系统开发例程也可应用到实际开发过程中。本书读者对象本书力求将嵌入式系统开发与应用技术全面介绍给读者,内容全面、详细和系统,非常适于学习嵌入式系统开发的工程技术人员阅读。因其内容较多,不太适宜作为高等院校嵌入式系统课程的短学时教材,但高校研究生或本科生的多学时嵌入式系统课程可选用此书作为教材。此书亦可作为嵌入式系统开发工程技术人员的培训资料。对于选用《嵌入式系统开发与应用系列教程》作为教材的高校师生,亦可将此书作为配套参考资料。为了便于教学和培训,本书还配套了多媒体教学课件。本书与《嵌入式系统开发与应用系列教程》的配套使用作者编写的另外3本一套的《嵌入式系统开发与应用系列教程》是专门针对高校嵌入式系统教学特点而编写的教材,包括:◆ 《嵌入式系统开发与应用教程》(理论课教材,即将出版):配套多媒体教学课件◆ 《嵌入式系统开发与应用实验教程》(实验课教材):配套Embest ARM实验教学系统:配套多媒体教学课件◆ 《嵌入式系统开发与应用学习指导》(即将出版)本套教程中的理论教材:《嵌入式系统开发与应用教程》,是针对高校嵌入式系统教学的特点,在本书基础上将内容重新整合而成的,更适合于短学时的教学和培训。本书可结合《嵌入式系统开发与应用系列教程》中的实验教材:《嵌入式系统开发与应用实验教程》来学习,这样可使读者用最短时间掌握32位嵌入式系统应用开发的基础理论和实践知识,培养高端嵌入式产品的研发和设计能力,达到社会对高素质、开拓型嵌入式人才的要求。作者根据实际教学情况和相关技术的发展,对《嵌入式系统开发与应用实验教程》进行了修订,其第2版即将出版。教学课件及获取方式为了便于教学和实验,作者针对本书以及《嵌入式系统开发与应用系列教程》的理论课和实验课教材3本书,为教师提供相配套的多媒体教学课件。有需要的教师,请与北京航空航天大学出版社联系。联系方式如下:通讯地址:北京市海淀区学院路37号北京航空航天大学出版社市场及客户服务部邮编:100083Email:bhpress@263.netTel:01082317031Fax:01082317031致谢在《嵌入式系统开发与应用系列教程》及本书的编写过程中,得到了北京航空航天大学出版社的大力支持,并得到了ARM中国总裁谭军博士、北京理工大学马忠梅教授的关心和指导,北京大学信息科学技术学院盛世敏教授、于敦山博士和蒋安平博士也给予了大量的支持和帮助。感谢我的博士导师中国科学院微电子研究所的仇玉林研究员、北大盛世敏教授,感谢我的硕士导师西安交通大学邱祖廉教授,感谢他们对我一如既往的关心、理解和帮助。他们将我带入科学研究的殿堂,并给予我各种帮助,是我无穷的精神源泉,在此表示深深感谢!我的硕士研究生万永波、闫效莺、车晓萍、杨峰、陈群英、李攀、王进军、刘涛和余兆安以及本科生谢辉、杨冬峰、张精通、徐德正、宋文博、侯利军、杨艳锋、杨景松、宫志坚、郑晓亮和朱书恬等同学亦参与了这一系列图书编写的部分工作,在此表示感谢! 深圳市英蓓特信息技术有限公司的徐光峰、张国瑞、黄日新、唐晖等工程师也提供了更详细的Embest ARM实验教学系统的技术资料和各种帮助,并提出了大量意见和建议,在此表示感谢!感谢我的爱人王永红给予我的理解和支持,是她在家庭中默默地劳作和操持,使我可以安心于工作。正是由于她给予我最及时、最需要的关心和照顾,使我在单调的工作之余,生活总是绚丽、多彩。感谢我的儿子田祎琨,我很少在生活和学习上给予他照顾,希望他幼小的心灵能够理解我!感谢北京航空航天出版社的编辑们,正是由于他们高效、努力的工作,才使得本书能够及时与大家见面!感谢所有帮助过我的人们,有了他们的理解、帮助和支持,我才能完成写作。由于时间仓促及众多客观条件的制约,书中存在的错误不足之处,敬请读者谅解,并真诚地欢迎读者提出宝贵意见和建议。希望教育界、科研界、产业界携手并进,抓住嵌入式技术为我国IT发展提供的难得机遇,促进我国嵌入式技术快速、稳定、健康地发展。田泽2004年10月 第1章 嵌入式系统开发基础1.1 嵌入式系统的基本概念11.1.1 嵌入式计算机11.1.2 嵌入式系统的概念51.1.3 嵌入式系统的特点61.1.4 嵌入式系统的分类91.1.5 嵌入式系统的应用范围91.1.6 嵌入式技术是中国IT发展的难得机遇91.2 嵌入式系统的组成结构101.2.1 嵌入式系统硬件基本结构介绍111.2.2 嵌入式系统软件的层次结构121.2.3 启动程序BootLoader介绍141.3 嵌入式系统的硬件组成151.3.1 嵌入式处理器151.3.2 典型嵌入式处理器介绍161.3.3 嵌入式SoC211.3.4 可编程片上系统SOPC221.3.5 嵌入式外围接口电路和设备接口241.4 嵌入式操作系统251.4.1 嵌入式操作系统261.4.2 嵌入式实时操作系统261.4.3 典型嵌入式操作系统介绍281.5 嵌入式应用软件开发311.5.1 嵌入式软件开发的特点和技术挑战311.5.2 嵌入式软件开发环境321.5.3 嵌入式应用软件开发的基本流程351.5.4 嵌入式软件开发的可移植性和可重用性391.6 嵌入式系统的开发流程401.6.1 嵌入式开发考虑的要素411.6.2 软硬件协同设计411.6.3 嵌入式系统开发的基本流程421.7 嵌入式系统的发展趋势441.7.1 即将来临的以ARM为核心的32位浪潮441.7.2 嵌入式系统与Internet的融合461.7.3 嵌入式系统的发展趋势47习题48第2章 ARM技术概述2.1 ARM体系结构的发展历史和技术特征502.1.1 ARM技术的发展历程512.1.2 RISC体系结构562.1.3 ARM体系结构的技术特征612.2 ARM体系结构不同版本的发展概述622.2.1 ARM体系结构的基本版本622.2.2 ARM体系结构的演变652.2.3 ARM体系结构的命名规则672.3 Thumb技术介绍672.3.1 Thumb的技术概述682.3.2 Thumb的技术实现682.3.3 Thumb的技术特点702.4 ARM处理器工作状态702.5 ARM处理器工作模式712.6 ARM寄存器组成722.6.1 ARM寄存器组成概述722.6.2 ARM状态下的寄存器组织732.6.3 Thumb状态下的寄存器组织782.7 ARM的异常中断792.7.1 ARM的异常中断响应过程802.7.2 从异常中断处理程序中返回812.7.3 异常中断向量表832.7.4 异常中断的优先级832.8 ARM组织结构简介842.8.1 3级流水线ARM的组织842.8.2 5级流水线ARM的组织872.9 ARM存储器接口及存储器层次892.9.1 ARM存储数据类型和存储格式892.9.2 ARM的存储器层次简介902.9.3 ARM存储系统简介912.10 ARM协处理器942.11 ARM片上总线AMBA952.11.1 总线标准概述962.11.2 AHB简介962.11.3 ASB简介982.11.4 APB简介982.12 基于JTAG的ARM系统调试992.12.1 JTAG边界扫描测试接口简介1002.12.2 ARM的调试结构1032.12.3 ARM的嵌入式跟踪1062.13 ARM核综述1072.13.1 ARM7系列核介绍1072.13.2 ARM9系列核介绍1152.13.3 ARM10系列核1202.13.4 StrongARM和XScale系列核1232.13.5 SecurCore系列核1282.14 基于ARM核的芯片选择1292.14.1 应用角度的ARM芯片选择原则1292.14.2 多内核ARM角度芯片选择原则1312.14.3 国内常用ARM芯片及供应商简介132习题133第3章 ARM指令集3.1 ARM指令集概述1343.1.1 ARM指令集编码1343.1.2 条件执行1353.1.3 指令分类及指令格式1363.2 ARM寻址方式1373.2.1 立即寻址1373.2.2 寄存器寻址1393.2.3 寄存器间接寻址1403.2.4 基址加偏址寻址1413.2.5 堆栈寻址1433.2.6 块拷贝寻址1443.2.7 相对寻址1463.3 ARM指令详细介绍1463.3.1 数据处理指令1463.3.2 Load/Store指令1543.3.3 状态寄存器与通用寄存器之间的传送指令1633.3.4 转移指令1663.3.5 异常中断产生指令1703.3.6 协处理器指令1733.3.7 未使用的指令空间177习题179第4章 Thumb指令集4.1 Thumb指令集概述1824.1.1 Thumb指令集编码1834.1.2 Thumb状态切换1834.1.3 编程模型1844.1.4 Thumb指令集特点1854.2 Thumb指令详细介绍1864.2.1 Thumb数据处理指令1864.2.2 Thumb转移指令1944.2.3 数据存取指令1984.2.4 异常中断指令204习题206第5章 基于ARM的嵌入式程序设计5.1 ARM汇编语言的伪操作、宏指令与伪指令2085.1.1 2种编译模式的集成开发环境IDE介绍2095.1.2 ADS编译环境下的ARM伪操作和宏指令2095.1.3 GNU编译环境下的ARM伪操作与宏指令2365.1.4 ARM汇编语言的伪指令2465.2 ARM汇编语言程序设计2505.2.1 ARM汇编中的文件格式2505.2.2 ARM汇编语言语句格式2505.2.3 ARM汇编语言编程的重点2605.2.4 ARM汇编程序实例2675.3 嵌入式C语言程序设计基础2735.3.1 C语言的"预处理伪指令"在嵌入式程序设计中的应用2735.3.2 嵌入式程序设计中的函数及函数库2925.3.3 嵌入式程序设计中常用的C语言语句3075.3.4 嵌入式程序设计中C语言的变量、数组、结构和联合3125.4 嵌入式C语言程序设计实例3185.4.1 实例实现功能介绍3185.4.2 实例实现程序源代码介绍3215.5 嵌入式C语言程序设计技巧3355.5.1 变量定义3355.5.2 参数传递3375.5.3 循环条件3375.6 C语言与汇编语言混合编程3385.6.1 ATPCS介绍3395.6.2 内嵌汇编3425.6.3 C语言和ARM汇编语言程序间相互调用3495.7 基于Embest IDE for ARM 环境的软件开发实例3515.7.1 开发实例介绍3525.7.2 源文件解释3525.7.3 建立工程3595.7.4 工程配置3605.7.5 在RAM中调试软件3675.7.6 软件的固化3695.7.7 程序在Flash中调试369习题370第6章 基于S3C44B0X的嵌入式系统应用开发实例6.1 S3C44B0X处理器介绍3746.1.1 Samsung S3C44B0X简介3746.1.2 Samsung S3C44B0X特点3746.1.3 S3C44B0X功能结构框图3786.1.4 S3C44B0X引脚信号描述3786.2 S3C44B0X存储控制器功能及应用开发3836.2.1 S3C44B0X存储控制器概述3846.2.2 S3C44B0X存储器空间划分简述3846.2.3 S3C44B0X存储控制器功能描述3856.2.4 S3C44B0X存储控制器的特殊功能寄存器3866.2.5 S3C44B0X存储器应用编程3906.3 S3C44B0X I/O端口功能及应用开发3926.3.1 S3C44B0X I/O功能概述3926.3.2 S3C44B0X端口功能配置3936.3.3 S3C44B0X端口功能控制描述3946.3.4 S3C44B0X I/O端口的特殊功能寄存器3966.3.5 S3C44B0XI/O端口应用编程4016.4 S3C44B0X DMA功能及应用开发4046.4.1 S3C44B0XDMA概述4046.4.2 S3C44B0XZDMA/BDMA操作4046.4.3 S3C44B0X DMA特殊功能寄存器4096.4.4 S3C44B0XDMA应用编程4156.5 S3C44B0X UART接口功能及应用开发4176.5.1 S3C44B0X UART概述4176.5.2 S3C44B0X UART的操作4196.5.3 S3C44B0X UART的特殊功能寄存器4226.5.4 S3C44B0X UART应用编程4276.6 S3C44B0X中断控制器功能及应用开发4316.6.1 S3C44B0X中断概述4316.6.2 S3C44B0X中断控制器的操作4326.6.3 S3C44B0X中断源4326.6.4 S3C44B0X矢量中断模式4356.6.5 S3C44B0X矢量中断模式的程序举例4356.6.6 S3C44B0X中断控制器的特殊功能寄存器4386.6.7 S3C44B0X中断控制器应用编程4436.7 S3C44B0X时钟电源管理器功能及应用开发4456.7.1 S3C44B0X时钟电源管理器概述4456.7.2 S3C44B0X时钟电源管理器功能描述4466.7.3 S3C44B0X时钟发生器与电源管理特殊功能寄存器4516.7.4 S3C44B0X时钟与电源管理器应用编程4536.8 S3C44B0X PWM定时器功能及应用开发4556.8.1 S3C44B0X PWM定时器概述4556.8.2 S3C44B0X PWM定时器工作原理4576.8.3 S3C44B0X PWM 定时器操作4576.8.4 S3C44B0X PWM定时器的特殊功能寄存器4596.8.5 S3C44B0X PWM定时器应用编程4646.9 S3C44B0X LCD控制器功能及应用开发4666.9.1 S3C44B0X LCD控制器概述4666.9.2 S3C44B0X LCD控制器的特性4666.9.3 S3C44B0X LCD外部接口信号4676.9.4 S3C44B0X LCD控制器框图4676.9.5 S3C44B0X LCD 控制操作4686.9.6 S3C44B0X LCD视频操作4696.9.7 S3C44B0X LCD控制器的特殊功能寄存器4726.9.8 S3C44B0X LCD控制器应用编程4776.10 S3C44B0X A/D转换器功能及应用开发4796.10.1 S3C44B0X的A/D转换器概述4806.10.2 S3C44B0X A/D转换器特点4806.10.3 S3C44B0X的A/D转换操作4806.10.4 S3C44B0X A/D转换的特殊功能寄存器4826.10.5 S3C44B0X A/D转换器应用编程4846.11 S3C44B0X RTC功能及应用开发4846.11.1 S3C44B0X RTC概述4856.11.2 S3C44B0X RTC特性4856.11.3 S3C44B0X RTC操作4856.11.4 S3C44B0X RTC特殊功能寄存器4876.11.5 S3C44B0X RTC应用编程4936.12 S3C44B0X看门狗定时器功能及应用开发4956.12.1 S3C44B0X看门狗定时器概述4966.12.2 S3C44B0X看门狗定时器特殊功能寄存器4966.12.3 S3C44B0X看门狗定时器应用编程4986.13 S3C44B0X I2C总线接口功能及应用开发4996.13.1 S3C44B0X I2C总线概述4996.13.2 S3C44B0X I2C总线接口操作4996.13.3 S3C44B0X I2C接口特殊功能寄存器5036.13.4 S3C44B0X I2C总线应用编程5066.14 S3C44B0X IIS总线接口功能及应用开发5076.14.1 S3C44B0X IIS概述5076.14.2 S3C44B0X IIS特性5086.14.3 S3C44B0X IIS功能描述5086.14.4 S3C44B0X IIS接口工作模式5096.14.5 S3C44B0X音频串行接口格式5096.14.6 S3C44B0X IIS接口特殊功能寄存器5116.14.7 S3C44B0X IIS应用编程5146.15 S3C44B0X SIO功能及应用开发5176.15.1 S3C44B0X SIO概述5176.15.2 S3C44B0X SIO特点5176.15.3 S3C44B0X SIO正常操作模式 5176.15.4 S3C44B0X SIO DMA 操作5186.15.5 S3C44B0X SIO 接口特殊功能寄存器5196.16 基于S3C44B0X的S3CEV40开发介绍5216.16.1 S3CEV40基本功能介绍5216.16.2 S3CEV40X外围接口硬件资源简介5226.17 S3C44B0X启动程序设计5266.18 USB接口功能开发实例5336.18.1 USB简介5336.18.2 USB接口电路设计5356.18.3 USB接口控制程序设计536习题543第7章 μC/OSⅡ及应用开发7.1 实时操作系统5447.2 μC/OSⅡ操作系统5457.2.1 μC/OSⅡ简介5457.2.2 μC/OSⅡ的特点5477.2.3 μC/OSⅡ的内核结构5487.3 μC/OSⅡ的内核5547.3.1 任务调度5547.3.2 任务间的通信与同步5557.3.3 任务管理5587.3.4 时间管理5597.3.5 内存管理5607.3.6 μC/OSⅡ的文件体系5617.4 μC/OSⅡ应用程序开发5627.4.1 变量类型5627.4.2 应用程序基本结构5637.4.3 μC/OSⅡAPI介绍5647.4.4 μC/OSⅡ多任务实现机制5657.5 μC/OSⅡ在S3CEV40上的移植5667.5.1 移植条件5667.5.2 移植步骤5677.5.3 移植μC/OSⅡ后的测试572习题573第8章 μCLinux及应用开发8.1 嵌入式Linux概况5748.1.1 Linux简介5748.1.2 嵌入式Linux5798.1.3 嵌入式Linux的版本5808.1.4 嵌入式Linux应用5818.2 开发工具GNU的使用5828.2.1 GNU简介5828.2.2 GCC介绍5838.2.3 makefile介绍5888.2.4 gdb调试工具5908.3 Linux内核分析5918.3.1 Linux内核概述5928.3.2 进程管理5928.3.3 内存管理5948.3.4 文件系统管理5968.3.5 设备管理5978.3.6 网络管理5988.4 μCLinux操作系统5998.4.1 进程管理6008.4.2 内存管理6028.4.3 文件系统6038.5 构造嵌入式Linux系统6058.5.1 构造嵌入式Linux系统的几个关键问题6058.5.2 构造嵌入式Linux系统的关键步骤6088.6 μCLinux应用程序开发6108.6.1 μCLinux程序设计要点6108.6.2 高效的程序开发6118.7 μCLinux在 S3CEV40上的移植6128.7.1 移植前的准备6128.7.2 移植步骤6128.8 基于S3CEV40平台的μCLinux开发实例6168.8.1 μCLinux编译运行6168.8.2 Boot Loader编译运行6178.8.3 μClinux内核调试实验6188.8.4 在文件系统中增加应用程序6188.8.5 多进程应用程序的编写及调试6198.8.6 网络应用程序的编写及调试619习题620参考文献621