打印
[Atmel]

图书介绍---嵌入式网络系统设计——基于Atmel ARM7系列

[复制链接]
910|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
[tr][/tr]
定    价:
¥49.00
关 注 度:
4246
库存状态:
未知
图书状态:
编辑推荐
作    者:
焦海波 刘健康
出版时间:
2008-04
版    次:
1
印    次:
1
字    数:
694千字
开    本:
787×1092 1/16
纸    张:
ISBN:
978-7-8112-4262-1
正如书名所描述的那样,本书将引导读者从零开始,一步一步地设计完成一个具备实际应用价值的嵌入式网络系统。章节安排如下:第1章详细阐述硬件平台的设计;第2章指导读者搭建一个完整的开发、调试环境;第3章引领读者构建一个最基本的嵌入式系统;第4章讲解μC/OSII的移植和使用;第5章从理论层面讲解嵌入式TCP/IP协议栈LwIP的实现细节;第6~8章讲解如何把LwIP移植到本书在第1章完成的硬件平台上;最后两章讲解如何根据客户需求重构软件系统。

    本书注重个人实际开发经验的总结,尽力避免纯理论性描述带给读者的枯燥乏味感。书中涉及的知识点凡是能够运用实例进行描述的,笔者均会提供一个设计实例,讲述将围绕实例进行;而且
随书光盘
还提供了大量、完整的设计实例和实现代码,具备较高的可操作性。

    本书不会想当然地认为读者已经具备了某项知识,尽力做到对技术细节的描述没有遗漏,即使确实因篇幅和选题所限无法展开讲述的,也要告诉读者在哪里能够找到相关资料。

    本书围绕一个实际的目标系统进行讲述,针对性很强,对工程技术人员具备较高的参考价值。

    本书可作为嵌入式系统开发初学者的入门书籍,也可作为AT91SAM系列开发人员的工程参考书。
图书目录
第1章        搭建自己的硬件平台

1.1目标系统简介1

1.2芯片选型1

1.3主芯片功能特性介绍2

1.3.1 Atmel AT91SAM7x256芯片2

1.3.2 Realtek RTL8201BL物理层(PHY)芯片6

1.4电路设计8

1.4.1电源及时钟电路8

1.4.2接口电路9

1.4.3以太网电路11

1.5自己制作Wiggler仿真器12

1.5.1 Wiggler仿真器简介12

1.5.2 Wiggler仿真器电路13

1.5.3 Wiggler仿真器驱动软件14

第2章  建立开发环境

2.1安装ADS1.217

2.2安装设置仿真器 18

第3章  构建一个最基本的嵌入式系统

3.1 Hello, embedded world!19

3.2第一个驱动程序25

3.2.1点亮开发板25

3.2.2脱离仿真环境32

3.2.3代码剖析——驱动程序的基本构造41


3.2.4 RO与程序执行时的地址空间48

3.3使用高速时钟PLLCK——让LED飞起来53

3.3.1 Atmel的头文件及时钟选择代码53

3.3.2时钟发生器与电源管理控制器58

3.3.3时钟设置代码剖析62

3.4精确控制LED的闪烁频率——使用定时器66

3.4.1编写第五个程序67

3.4.2映像文件、入口点与Startup段71

3.4.3中断处理76

3.4.4处理器模式88

3.4.5异常92

3.4.6代码剖析96

3.5中断嵌套与快速中断112

3.5.1普通中断的嵌套112

3.5.2快速中断与嵌套125

3.6自己编写下载工具128

第4章  系统的改进——使用RTOS

4.1 RTOS简介132

4.2 μC/OSII——一个开源的RTOS简介136

4.3移植μC/OSII到AT91SAM7x256137

4.3.1下载μC/OSII及移植范例137

4.3.2移植方法142

4.3.3准备工作——建立基本的ADS工程144

4.3.4 OS_CPU.H147

4.3.5 OS_CPU_C.C的移植159

4.3.6 OS_CPU_A.S179

4.3.7编写测试代码197

4.3.8编译器移植与μC/OSII配置文件200

4.3.9使用AXD验证μC/OSII207


4.4 μC/OSII的通信及同步机制223

4.4.1实现第一个要求——使用信号量223

4.4.2实现第二个要求——使用互斥型信号量228

4.4.3实现第三个要求231

4.5总结247

第5章  进阶——嵌入式TCP/IP协议栈LwIP

5.1协议层248

5.2 LwIP概览249

5.3进程模型249

5.4操作系统模拟层250

5.5缓冲与内存管理251

5.5.1包缓冲区(Packet buffers)——pbufs251


5.5.2内存管理252

5.6网络接口253

5.7 IP处理254

5.7.1接收数据包254

5.7.2发送数据包254

5.7.3转发数据包255

5.7.4 ICMP处理255

5.8 UDP处理256

5.9 TCP处理257

5.9.1概览257

5.9.2数据结构258

5.9.3序号计算261

5.9.4排队与发送数据261

5.9.5接收报文段262

5.9.6接受新的连接263

5.9.7快速重发263

5.9.8定时器263

5.9.9 RTT估算264

5.9.10阻塞控制264

5.10协议栈接口264

5.11应用程序接口265

5.11.1基本概念265

5.11.2 API实现266

5.12 API参考手册267

5.12.1数据类型267

5.12.2缓冲区函数267

5.12.3网络连接函数270

5.13实现BSD Socket库276

5.13.1 socket表示方法276

5.13.2分配socket276

5.13.3连接设置277

5.13.4发送和接收数据279

5.14 LwIP应用实例283

5.14.1使用LwIP API283

5.14.2使用协议栈直接接口285

第6章  移植LwIP——实现操作系统模拟层

6.1获得LwIP源码288

6.2建立一个最基本的工程288

6.3把LwIP加入工程288

6.4官方文档——操作系统模拟层移植说明290

6.5准备工作——建立文件、定义数据类型及其他293

6.6信号量操作函数297

6.6.1 sys_new_sem()函数297

6.6.2 sys_sem_signal()函数297

6.6.3 sys_sem_free()函数298

6.6.4 sys_arch_sem_wait()函数298

6.6.5编译301

6.7邮箱操作函数304

6.7.1准备工作——设计思路及数据类型定义304

6.7.2 sys_mbox_new()函数309

6.7.3 sys_mbox_free()函数311

6.7.4 sys_mbox_post()函数311


图书前言
    记不清是受哪一部儿童科幻作品的影响,从很小的时候,就对能够控制机器的软件产生了浓厚的兴趣,一直梦想着自己也能够编写出这种神奇的东西。大学毕业后,虽然为了谋生,我一直从事数据库软件的开发,但这个梦想却一直未曾放弃。

    大约是在2003年11月,笔者有幸参与了一款基于ARM7处理器的消费类电子产品的研发项目,从那时开始迈出了实现梦想的第一步。由于在这之前一直从事数据库软件的开发,没有任何嵌入式软件的开发经验,因此从书中获取相关的知识成为了最佳选择。对于还没有入门的嵌入式软件开发人员来说,太需要一个经典的、类似“Hello,World!”那样的程序引领我们进入嵌入式开发的殿堂了。但很不幸的是——我并没有找到这样的书。在所能找到的关于ARM7的书中,要么是罗列很多种不同厂家的芯片,然后逐一进行介绍;要么是针对某一个厂家的ARM7系列产品进行介绍;另外一些直接介绍ARM7的核,而其内容却来自官方发布的数据手册。必须承认,也有少量的讲解开发实例的书,但是这样的实例对于一个门外汉来说显得太高深莫测。回想笔者当时所处的困境,可以借用这样一段话来描述:“你是否有过这样的经历,有一天你兴致勃勃地买来一堆菜谱想学厨艺,翻开之后却发现自己根本没见过那些材料的名字,也不知道什么叫文火什么叫武火,什么叫上浆什么叫勾芡。而菜谱里根本没告诉你!你扔掉菜谱,垂头丧气,从此对厨艺失去兴趣。”(这段话来自于渊编写的《自己动手写操作系统》的自序,它曾经引起我强烈的共鸣。)

    笔者当时的心情就是这样,类似异常、内核模式、中断、向量表、控制总线等诸如此类的名词、概念对我来说显得太抽象,太难以理解,我甚至怀疑自己是不是很不够聪明。为了证明自己,我疯狂地翻阅书本,强迫自己长时间地埋头于阅读之中,可结果还是不知道从哪里开始!最终,我放弃了这些一上来就把自己打懵的教科书,开始静下心来调整自己的学习思路。我决定从最简单的程序开始,仔细研读并尝试修改别人的例子代码,从实践中理解、掌握枯燥的理论知识。

    我的第一个程序仍然是那个经典的“Hello, World!”,这个程序让我熟悉了嵌入式软件开发工具ADS。记得当第一声问候成功地出现在AXD(ADS提供的调试工具)的控制台时,我很激动,我知道——起跑线已经被甩在了身后。虽然只迈出了一小步,但我已经找对了方向。接下来,继续根据别人提供的例子代码,用最简短的几句话实现了开发板上的流水灯程序,这个程序让我明白了最基本的底层驱动的开发方法。当看到板子上的LED指示灯亮起来时,我备受鼓舞,看来技术的基本原理是相通的,只要有信心,有扎实的编程功底,上层应用软件开发与底层软件开发没有什么不同。如果能够充分利用自身的知识储备,结合现有的芯片资料,编写底层驱动没有什么大不了的。就这样,我步步为营、积少成多,逐渐掌握了嵌入式软件开发的完整流程。到了这个时候,当我重新拿起那些教科书时,我发现能够看进去了,而且它们能够为我提供帮助了。

    回顾我的学习历程,真正浪费大部分时间的正是很多ARM开发类的图书没有提及或只是粗略提及的内容。纵览各大ARM开**坛,网友提出的大部分问题也大都集中于此,像ARM如何启动、如何处理中断、如何重映射、如何调试、如何下载、μC/OSII如何移植等,内容虽然个别书籍有所涉及,但是讲得并不详细,看了之后仍然给人一种云里雾里的感觉,不知如何着手。

    大约是在2006年4月,我的业余时间逐渐多了起来,突然间有了写书的想法。我想通过一本书完整地再现自己的学习历程,并系统地总结已经掌握的知识,为其他想要从事ARM开发的朋友提供一些帮助。创作的过程是艰辛的,当我试图用浅显易懂的语言向读者阐明某一个知识点时,才发现理解与表达之间的距离是那么地遥远。为了避免泛泛的理论阐述给读者带来的疲劳感,每一个知识点我都提供了完整的例子代码和图示。这些例子代码都经过了我自己的验证,能够在目标板上稳定、可靠地运行,读者可放心使用。

    本书围绕一个实际的目标系统进行。硬件平台以Atmel的AT91SAM7x256(也简称7x256)为基础进行搭建。AT91SAM7x256是一个集成度很高的ARM7芯片,2006年4月左右开始上市销售。这个芯片集成了很多时下流行的外设及外围接口,非常适合做工业级的产品研发。本书之所以选择这款芯片作为目标硬件平台,也正是充分考虑了它拥有的广阔应用前景。

    本书的章节内容安排如下:


    第1章指导读者设计完成硬件开发平台。这个平台包括两部分:一部分是基于AT91SAM7x256芯片的网络系统开发板,后面章节提供的所有例子程序都将在这个板子上执行;另一部分是仿真器,它提供程序的仿真、调试功能。对硬件设计不感兴趣的朋友可直接从第2章开始。

    第2章指导读者建立开发环境,





相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6956

帖子

67

粉丝