当前位置:首页 > 工业技术
嵌入式网络系统设计:基于ATMEL ARM7系列
嵌入式网络系统设计:基于ATMEL ARM7系列

嵌入式网络系统设计:基于ATMEL ARM7系列PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:焦海波,刘健康编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2008
  • ISBN:7811242621
  • 页数:480 页
图书介绍:本书将引领读者从零开始,一步一步地设计完成一个具备实际应用价值的嵌入式网络系统。章节安排如下:第一章详细阐述硬件平台的设计;第二章指导读者搭建一个完整的开发、调试环境;第三章引领读者构建一个最基本的嵌入式系统;第四章讲解μC/OS-II的移植和使用;第五章从理论层面详解嵌入式TCP/IP协议栈LwIP的实现细节;第六、七、八三章讲解如何把LwIP移植到我们在第一章完成的硬件平台上;第九、十两章讲解如何根据客户需求重构软件系统。
《嵌入式网络系统设计:基于ATMEL ARM7系列》目录

第1章 搭建自己的硬件平台 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章 建立开发环境 17

2.1 安装ADS1.2 17

2.2 安装设置仿真器 18

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

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 132

4.1 RTOS简介 132

4.2 μC/OS-Ⅱ——一个开源的RTOS简介 136

4.3 移植μC/OS-Ⅱ到AT91SAM7x256 137

4.3.1 下载μC/OS-Ⅱ及移植范例 137

4.3.2 移植方法 142

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

4.3.4 OS_CPU.H 147

4.3.5 OS_CPU_C.C的移植 159

4.3.6 OS_CPU_A.S 179

4.3.7 编写测试代码 197

4.3.8 编译器移植与μC/OS-Ⅱ配置文件 200

4.3.9 使用AXD验证μC/OS-Ⅱ 207

4.4 μC/OS-Ⅱ的通信及同步机制 223

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

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

4.4.3 实现第三个要求 231

4.5 总结 247

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

5.1 协议层 248

5.2 LwIP概览 249

5.3 进程模型 249

5.4 操作系统模拟层 250

5.5 缓冲与内存管理 251

5.5.1 包缓冲区(Packet buffers)——pbufs 251

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 分配socket 276

5.13.3 连接设置 277

5.13.4 发送和接收数据 279

5.14 LwIP应用实例 283

5.14.1 使用LwIP API 283

5.14.2 使用协议栈直接接口 285

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

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

6.7.5 sys_arch_mbox_fetch()函数 312

6.8 实现sys_thread_new()函数 313

6.9 实现sys_arch_timeouts()函数 316

6.10 实现临界保护函数 318

6.11 扫尾——结束操作系统模拟层的编写 319

第7章 以太网MAC(EMAC)编程手册 323

7.1 概览 323

7.2 结构框图 323

7.3 功能描述 324

7.3.1 接收缓冲区 325

7.3.2 发送缓冲区 328

7.3.3 EMAC发送模块 330

7.3.4 暂停帧(Pause Frame)支持 331

7.3.5 EMAC接收模块 331

7.3.6 EMAC地址检查模块 332

7.3.7 广播地址 333

7.3.8 哈希寻址 333

7.3.9 复制所有帧(或混杂模式) 334

7.3.10 类型ID检查 334

7.3.11 VLAN支持 334

7.3.12 PHY管理 335

7.3.13 MII与RMII接口 335

7.4 操作说明 336

7.4.1 初始化配置 336

7.4.2 初始化接收缓冲区数组 336

7.4.3 初始化发送缓冲区数组 337

7.4.4 地址匹配 337

7.4.5 中断 338

7.4.6 发送帧 338

7.4.7 接收帧 338

7.5 用户接口——寄存器说明 339

7.5.1 网络控制寄存器 340

7.5.2 网络配置寄存器 342

7.5.3 网络状态寄存器 343

7.5.4 发送状态寄存器 344

7.5.5 接收缓冲区队列指针寄存器 344

7.5.6 发送缓冲区队列指针寄存器 345

7.5.7 接收状态寄存器 346

7.5.8 中断状态寄存器 346

7.5.9 中断使能寄存器 348

7.5.10 中断禁止寄存器 348

7.5.11 中断掩码寄存器 349

7.5.12 PHY管理寄存器 350

7.5.13 暂停时间寄存器 351

7.5.14 低位哈希寄存器 351

7.5.15 高位哈希寄存器 351

7.5.16 低位特殊地址寄存器1~4 352

7.5.17 高位特殊地址寄存器1~4 352

7.5.18 类型ID寄存器 353

7.5.19 用户输入/输出寄存器 353

7.5.20 统计寄存器 354

第8章 LwIP应用之旅——初始化、网络驱动及使用8.1 rawapi.txt——LwIP初始化说明 355

8.2 准备工作——建立LwIP入口文件 357

8.3 _ilvInitLwIP()函数 358

8.4 _ilvSetLwIP()函数 359

8.5 ethernetif_init()——初始化底层网络接口函数 364

8.5.1 ethernetif_init()——底层网络接口的入口函数 365

8.5.2 low_level_output()——链路层发送函数 366

8.5.3 low_level_init()——网卡初始化函数 368

8.5.4 EMACInit()——网卡初始化工作的实际完成者 370

8.5.5 ethernetif_input()——实现接收线程 397

8.5.6 low_level_input()——读取完整的一帧数据 399

8.5.7 GetInputPacketLen()函数——获得帧长 401

8.5.8 EMACReadPacket()——搬运,从接收缓冲区到pbuf 405

8.5.9 EMACSendPacket()函数——发送一帧数据 411

8.5.10 编译ethernetif.c及lib_emac.c文件 415

8.6 ping——结束LwIP的移植 418

8.6.1 编译、链接整个工程 418

8.6.2 遗漏的工作——把LwIP整合到系统中 421

8.6.3 测试LwIP——ping及简单的WEB服务器 425

第9章 重构——继续改进系统 428

9.1 改善软件系统的可维护性 428

9.1.1 提高源码的可读性 428

9.1.2 添加必要的注释语句 430

9.1.3 重新调整程序文件及代码的组织结构 431

9.2 改善软件系统的可扩展性、可重用性 432

9.2.1 重新架构网络系统 432

9.2.2 编码实现新的系统架构 435

9.2.3 小结 443

9.3 SWI系统调用 444

9.3.1 工作机制 444

9.3.2 编码实现SWI系统调用 447

第10章 实现动态网页服务 451

10.1 设计思路 451

10.2 源码剖析 454

10.3 实现DNS解析 460

附录A 开发板原理图 471

附录B ARM指令集编码 472

附录C 程序状态寄存器位域说明 474

附录D AT91SAM7x256内嵌外设用户接口列表 475

附录E PIO控制器复用引脚说明 479

参考文献 481

相关图书
作者其它书籍
返回顶部