《基于PowerPC的嵌入式Linux》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:漆昭铃编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2004
  • ISBN:7810773828
  • 页数:313 页
图书介绍:本书详细介绍了PowerPC芯片的基本结构、配置引导及开发方法,并结合PowerPC芯片详细介绍了如何打造一个完整的嵌入式Linux。主要内容包括PowerPC介绍、Bootloder定制、Linux内核定制、Linux Rootfs定制、Linux设备驱动编程及实时扩展等。

目 录 1

第1章 目标产品和开发简介 1

1.1二层交换机简介 1

1.2硬件系统简介 2

1.3软件系统简介 2

1.4嵌入式Linux系统开发简介 3

1.4.1主开发机/开发目标和交叉编译 3

1.4.2用户交互 4

1.4.3 Linux Image结构布局 5

1.5开发流程 6

第2章Linux系统简介 8

2.1 Linux系统的特点 8

2.2什么是嵌入式系统 10

2.3 Linux嵌入式系统简介和可行性分析 11

2.3.2 Linux内核 12

2.3.1引导内核的Bootloader 12

2.4实时Linux系统 14

2.4.1 MontaVista Linux和TimeSys Linux 16

2.4.2 RTLinux 16

2.4.3 RTAI 17

第3章PowerPC处理器 18

3.1 Motorola公司的PowerQUICC通信处理器 18

3.1.1 MPC8xx 19

3.1.2 MPC8260 21

3.2 MPC850芯片简介 24

3.2.1 概述 24

3.2.2 MPC850功能列表 24

3.2.3主要模块简介 27

3.3 MPC850配置和复位 34

3.3.1系统接口模块SIU 34

3.3.2系统配置和保护 34

3.3.3 SIU编程 35

3.3.4 复位 39

3.4存储控制器 44

3.4.1 基本结构 44

3.4.2 GPCM和UPM片选编程机制相同之处 46

3.4.3基地址寄存器BRx 48

3.4.4 配置寄存器ORx 50

3.4.5 存储器状态寄存器MSTAT 52

3.4.6控制器A/B模式寄存器MxMR 53

3.4.7存储器命令寄存器MCR 54

3.4.8存储器数据寄存器MDR 55

3.4.9存储器地址寄存器MAR 56

3.4.10存储器周期时钟预分频寄存器MPTPR 56

3.5外部中断异常 57

3.5.1 中断机制 58

3.5.2中断优先级 58

3.5.3中断处理流程 59

3.5.5 SIU中断掩膜寄存器SIMASK 60

3.5.4 SIU中断登记寄存器SIPEND 60

3.5.6 SIU中断触发形式寄存器SIEL 61

3.5.7 SIU中断向量寄存器SIVEC 62

3.6 MPC850通信处理器CPM 62

3.6.1 功 能 63

3.6.2通信处理器CP 64

3.7 GE850EH开发板 79

3.7.1GE850EH开发板功能简介 79

3.7.2硬复位配置字 80

3.7.3 内部寄存器起始地址 81

3.7.4 GE850EH的时钟 81

3.7.5 Flash ROM 82

3.7.6 SDRAM 83

3.7.7 BM8024二层交换芯片 84

3.7.8 以太网口 84

3.7.9 UART串行口 85

4.1 ELDK简介 86

第4章嵌入式Linux开发工具ELDK 86

4.2安装ELDK 88

4.3删除ELDK 89

4.4 配置使用ELDK 89

4.5从零开始编译ELDK 90

4.6其他交叉编译环境 90

4.7 GNU系列编译工具简介 91

4.7.1 CCC 91

4.7.2 ld 93

4.7.3 Idd 93

4.7.4 nm 93

4.7.5 ar 93

第5章移植PPCBoot到GE850EH板 94

5.1 PPCBoot简介 94

5.3解开源代码 95

5.4 PPCBoot源代码简介 95

5.2获得源代码 95

5.5配置编译PPCBoot 98

5.6移植PPCBoot到GE850EH开发板中去 98

5.6.1 了解GE850EH开发板 99

5.6.2建立自己的移植目录和文件 100

5.6.3修改Makefile文件 101

5.6.4修改ppcboot/include/configs/ge850eh.h文件 101

5.6.5修改ppcboot/board/GE850EH/config.mk文件 110

5.6.6修改ppcboot/board/GE850EH/ge850eh.c文件 111

5.6.7修改ppcboot/board/GE850EH/flash.c文件 115

5.6.8修改ppcboot/include/commproc.h文件 116

5.7编译PPCBoot 117

5.8安装、运行PPCBoot到GE850EH开发板上去 117

5.8.1使用BMD/JTAG调试工具安装PPCBoot 117

5.8.2使用已有的安装Bootloader的程序安装PPCBoot 119

5.8.3使用已在GE850EH板上运行的PPCBoot安装PPCBoot 120

6.2.1 Linux引导 121

6.2 Linux内核简介 121

第6章在GE850EH开发板上运行Linux 121

6.1获得Linux内核源代码 121

6.2.2 RAMDISK和Initrd 122

6.2.3 MTD 122

6.2.4 JFFS2文件系统 123

6.3 配置编译Linux内核 123

6.4将Linux内核移植到GE850EH开发板中去 124

6.4.1确认linux/Makefile文件 124

6.4.2 修改/linux/arch/ppc/configs/ge850en_defconfig文件 125

6.4.3 修改/linux/arch/ppc/config.in文件 133

6.4.4增加/linux/include/asm-ppc/ge850eh.h文件 133

6.4.5修改/linux/include/asm-ppc/processor.h文件 134

6.4.6修改/linux/include/asm-ppc/mpc8xx.h文件 134

6.4.7修改/linux/arch/ppc/8xx_io/commproc.h文件 134

6.4.8增加/linux/drivers/mtd/maps/ge850eh.c文件 135

6.4.11 修改/linux/drivers/char/flash_config.c文件 136

6.4.9修改/linux/drivers/mtd/maps/Makefile文件 136

6.4.10修改/linux/drivers/mtd/maps/Config.in文件 136

6.5编译Linux kernel for GE850EH 137

6.6从GE850EH开发板上引导Linux内核 137

6.6.1基本的环境变量 137

6.6.2从Flash引导Linux内核 137

6.6.3环境变量和Linux内核引导参数 141

6.6.4网络bootp引导Linux内核 142

6.6.5 bootp命令 143

6.6.6 bootargs引导变量 144

6.6.7 bootm命令 144

6.6.8引导一个完整的Linux系统 145

6.6.9 Flash中的Rootfs 146

6.6.10网络NFS的Rootfs 146

7.1.1一个C库 150

7.1千变万化的RAMDISK 150

第7章Rootfs和RAMDISK 150

7.1.2一个用户交互的Shell 151

7.1.3一个工具集 151

7.1.4一个Telnet服务器 151

7.1.5一个FTP服务器 151

7.2创建不使用Busybox的RAMDISK 152

7.2.1建立RAMDISK Image文件 152

7.2.2 给RAMDISK建立文件系统 152

7.2.3建立必需的Linux目录 153

7.2.4/dev目录 153

7.2.5/lib目录 156

7.2.6 NSS 157

7.2.7/etc目录 158

7.2.8/bin和/sbin目录 160

7.3 基于g1ibc的Busybox 161

7.2.10减小体积 161

7.2.9生成最后的RAMDISK Image文件 161

7.3.1获得Busybox的源代码 162

7.3.2配置Busybox 162

7.3.3编译Busybox 165

7.4创建使用Busybox和glibc的RAMDISK 166

7.5测试制作的RAMDISK 167

第8章inetd和telnetd、ftpd、httpd网络进程 171

8.1 inetd网络守护进程 171

8.1.1获得inetd的源代码 172

8.1.2给inetd源代码打patch 173

8.1.3编译inetd 173

8.2 login守护进程 173

8.3 telnetd守护进程 174

8.4 ftpd守护进程 175

8.5 boa webserver 175

8.6 insmod rmmod 176

8.7安装inetd、login、insmodtelnetd、ftpd、boa webserver进程 177

第9章Linux字符设备驱动——LED驱动实例 180

9.1 Linux设备驱动概述 180

9.2 Linux Module 183

9.2.1一个Linux Module例子(Intel版本) 183

9.2.2 PowerPC版本的Module例子 185

9.2.3 Linux Module的机制 185

9.2.4 Module和Application的区别 186

9.3主设备号和次设备号 190

9.4 file_operations数据结构 191

9.5 GE850EH开发板LED字符设备驱动(PowerPC版本) 193

9.5.1 GE850EH LED硬件配置 193

9.5.2源代码分析 194

9.5.3编译LED设备驱动 195

9.5.4测试LED设备驱动 196

9.5.5 GE850EH开发板LED设备驱动程序源代码 197

9.5.6 LED模块Makefile文件 205

9.6 I/O端口 205

9.6.1 申请/释放I/O区域 206

9.6.2避免编译器优化I/O访问 206

9.6.3 I/O端口大小 207

9.7优化问题 207

第10章 二层交换芯片BM8024设备驱动 208

10.1 BM8024简介 208

10.2功能列表 208

10.3 BM8024交换机制和设备驱动 209

10.4 Linux网络设备驱动编程 210

10.4.1 Linux网络设备驱动的结构 211

10.4.2初始化 212

10.4.3发送和接收 213

10.4.4网络接口数据结构structnet_device 213

10.5BM8024接收/发送以太网包和MPC850 218

10.5.2发送以太网包 219

10.5.1接收以太网包 219

10.6 BM8024 I/O存储器 220

10.6.1 ioremap() 220

10.6.2配置BRx/ORx 222

10.7 BM8024中断 223

10.7.1 interrupt操作 223

10.7.2BM8024中断操作 224

10.7.3 BM8024中断处理函数和tasklet 224

10.8延时 225

10.9 BM8024内存操作 226

10.10 BM8024网络设备驱动源代码分析 226

10.10.1 Module_init()函数 226

10.10.2 bm8024_init()函数 227

10.10.3 bm8024_open()函数 228

10.10.4 bm8024_interrupt()中断处理函数 229

10.10.5 bm8024_do_tasklet()函数 229

10.10.6 bm8024_rx()函数 230

10.10.7 bm8024_tx()函数 231

10.10.8 bm8024_hw_tx()函数 231

10.10.9 BM8024网络设备驱动源代码 231

第11章嵌入式Linux编程 232

11.1 task queues和kernel timer版本的LED驱动程序 232

11.1.1 task queue 232

11.1.2使用tq_scheduler的LED Module 234

11.1.3 kernel timer 239

11.1.4使用kernel timer的LEDModule 239

11.2 semaphore 243

11.3 Application直接访问BM8024寄存器 244

11.3.1 HAL BM8024存储器模块 246

11.3.2 HAL BM8024存储器模块源代码 247

11.3.3 HAL BM8024寄存器API源代码 255

12.1.2 rt ai_sched模块 259

12.1.1 rtai模块 259

12.1 RTAI模块 259

第12章 实时Linux扩展——RTAI 259

12.1.3 rt ai_shm模块 260

12.1.4 rt ai_fifos模块 260

12.1.5 LXRT模块 260

12.2 在GE850EHH开发板上安装RTAI 260

12.2.1 获取Linux内核源代码 260

12.2.2 获取24.1.8版本的RTAI源代码 261

12.2.3 给Linux内核源代码加上RTAI的patch 261

12.2.4定制此Linux内核 261

12.2.5 定制及编译RTAI模块 261

12.2.6安装及测试RTAI 262

12.3 RTAI版本的LED例子 264

12.4 常用RTAI API函数 266

附录A RTAI常用.API函数 267

A.1 task函数(rtai_sched.o模块) 267

A.2 timer函数(rtai_sched.o模块) 274

A.3 semaphore函数(rtai_sched.o模块) 276

A.4 task间通信函数(rtai_sched.o模块) 280

A.5 远程函数调用(RPC)函数(rt ai_sched.o模块) 282

A.6 mailbox函数(rtai_sched.o模块) 283

A.7 rtai.o模块提供的API函数 285

A.8 rt ai_shm.o提供的API函数 289

A.9 rtai_fifo.o提供的API函数 290

附录B CVS使用简介 294

B.1 简介 294

B.2安装CVS服务器 294

B.3使用CVS客户端 298

B.4一些小技巧 304

附录C GNU通用公共许可证(GPL) 311

附录D附带光盘的使用方法 311

D.1 内容简介 311

D.2使用方法 312