rar

嵌入式Linux应用程序开发详解pdf(整本)

  • 1星
  • 日期: 2013-07-11
  • 大小: 10.81MB
  • 所需积分:2分
  • 下载次数:35
  • favicon收藏
  • rep举报
  • free评论
标签: 嵌入式

  嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

Linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

arm

ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。

这是我收集到的比较好的资源,与大家共享。。。

嵌入式Linux应用程序开发详解-目录:

第1章 Linux快速入门 1

1.1 嵌入式Linux基础 1

1.1.1 Linux发展概述 1

1.1.2 Linux作为嵌入式操作系统的优势 2

1.1.3 Linux发行版本 3

1.1.4 如何学习Linux 4

1.2 Linux安装 5

1.2.1 基础概念 5

1.2.2 硬件需求 7

1.2.3 安装准备 7

1.2.4 安装过程 8

1.3 Linux文件及文件系统 11

1.3.1 文件类型及文件属性 11

1.3.2 文件系统类型介绍 13

1.3.3 Linux目录结构 14

1.4 实验内容——安装Linux操作系统 17

本章小结 17

思考与练习 18

第2章 Linux基础命令 19

2.1 Linux常用操作命令 19

2.1.1 用户系统相关命令 20

2.1.2 文件目录相关命令 27

2.1.3 压缩打包相关命令 38

2.1.4 比较合并文件相关命令 40

2.1.5 网络相关命令 45

2.2 Linux启动过程详解 50

2.2.1 概述 51

2.2.2 内核引导阶段 51

2.2.3 init阶段 52

2.3 Linux系统服务 54

2.3.1 独立运行的服务 55

2.3.2 xinetd设定的服务 56

2.3.3 设定服务命令常用方法 56

2.4 实验内容 57

2.4.1 在Linux下解压常见软件 57

2.4.2 定制Linux系统服务 58

本章小结 60

思考与练习 60

第3章 Linux下的C编程基础 61

3.1 Linux下C语言编程概述 61

3.1.1 C语言简单回顾 61

3.1.2 Linux下C语言编程环境概述 62

3.2 进入Vi 63

3.2.1 Vi的模式 63

3.2.2 Vi的基本流程 63

3.2.3 Vi的各模式功能键 65

3.3 初探Emacs 66

3.3.1 Emacs的基本操作 67

3.3.2 Emacs的编译概述 70

3.4 Gcc编译器 71

3.4.1 Gcc编译流程解析 71

3.4.2 Gcc编译选项分析 74

3.5 Gdb调试器 77

3.5.1 Gdb使用流程 78

3.5.2 Gdb基本命令 81

3.6 Make工程管理器 86

3.6.1 Makefile基本结构 86

3.6.2 Makefile变量 87

3.6.3 Makefile规则 90

3.6.4 Make管理器的使用 91

3.7 使用autotools 92

3.7.1 autotools使用流程 92

3.7.2 使用autotools所生成的Makefile 96

3.8 实验内容 98

3.8.1 Vi使用练习 98

3.8.2 用Gdb调试有问题的程序 99

3.8.3 编写包含多文件的Makefile 101

3.8.4 使用autotools生成包含多文件的Makefile 103

本章小结 105

思考与练习 105

第4章 嵌入式系统基础 106

4.1 嵌入式系统概述 106

4.1.1 嵌入式系统简介 106

4.1.2 嵌入式系统发展历史 107

4.1.3 嵌入式系统的特点 108

4.1.4 嵌入式系统的体系结构 108

4.1.5 几种主流嵌入式操作系统分析 109

4.2 ARM处理器硬件开发平台 111

4.2.1 ARM处理器简介 111

4.2.2 ARM体系结构简介 113

4.2.3 ARM9体系结构 113

4.2.4 S3C2410处理器详解 116

4.3 嵌入式软件开发流程 121

4.3.1 嵌入式系统开发概述 121

4.3.2 嵌入式软件开发概述 122

4.4 实验内容——使用JTAG烧写NAND  Flash 128

本章小结 131

思考与练习 132

第5章 嵌入式Linux开发环境的搭建 133

5.1 嵌入式开发环境的搭建 133

5.1.1 嵌入式交叉编译环境的搭建 133

5.1.2 超级终端和Minicom配置及使用 135

5.1.3 下载映像到开发板 142

5.1.4 编译嵌入式Linux内核 145

5.1.5 Linux内核目录结构 149

5.1.6 制作文件系统 149

5.2 U-Boot移植 153

5.2.1 Bootloader介绍 153

5.2.2 U-Boot概述 155

5.2.3 U-Boot源码导读 156

5.2.4 U-Boot移植主要步骤 163

5.2.5 U-Boot常见命令 164

5.3 实验内容——移植Linux内核 164

本章小结 165

思考与练习 165

第6章 文件I/O编程 166

6.1 Linux系统调用及用户编程接口(API) 166

6.1.1 系统调用 166

6.1.2 用户编程接口(API) 167

6.1.3 系统命令 167

6.2 Linux中文件及文件描述符概述 168

6.3 不带缓存的文件I/O操作 168

6.3.1 open和close 168

6.3.2 read、write和lseek 170

6.3.3 fcntl 173

6.3.4 select 178

6.4 嵌入式Linux串口应用开发 183

6.4.1 串口概述 183

6.4.2 串口设置详解 184

6.4.3 串口使用详解 191

6.5 标准I/O开发 194

6.5.1 打开和关闭文件 194

6.5.2 文件读写 197

6.5.3 输入输出 198

6.6 实验内容 201

6.6.1 文件读写及上锁 201

6.6.2 多路复用式串口读写 204

本章小结 207

思考与练习 207

第7章 进程控制开发 208

7.1 Linux下进程概述 208

7.1.1 进程相关基本概念 208

7.1.2 Linux下的进程结构 210

7.1.3 Linux下进程的模式和类型 210

7.1.4 Linux下的进程管理 211

7.2 Linux进程控制编程 212

7.3 Linux守护进程 224

7.3.1 守护进程概述 224

7.3.2 编写守护进程 224

7.3.3 守护进程的出错处理 229

7.4 实验内容 232

7.4.1 编写多进程程序 232

7.4.2 编写守护进程 235

本章小结 238

思考与练习 239

第8章 进程间通信 240

8.1 Linux下进程间通信概述 240

8.2 管道通信 241

8.2.1 管道概述 241

8.2.2 管道创建与关闭 242

8.2.3 管道读写 244

8.2.4 标准流管道 246

8.2.5 FIFO 249

8.3 信号通信 253

8.3.1 信号概述 253

8.3.2 信号发送与捕捉 255

8.3.3 信号的处理 258

8.4 共享内存 264

8.4.1 共享内存概述 264

8.4.2 共享内存实现 265

8.5 消息队列 267

8.5.1 消息队列概述 267

8.5.2 消息队列实现 268

8.6 实验内容 272

8.6.1 管道通信实验 272

8.6.2 共享内存实验 275

本章小结 277

思考与练习 278

第9章 多线程编程 279

9.1 Linux下线程概述 279

9.1.1 线程概述 279

9.1.2 线程分类 280

9.1.3 Linux线程技术的发展 280

9.2 Linux线程实现 281

9.2.1 线程基本操作 281

9.2.2 线程访问控制 288

9.3 实验内容——“生产者消费者”实验 298

本章小结 302

思考与练习 303

第10章 嵌入式Linux网络编程 304

10.1 TCP/IP协议概述 304

10.1.1 OSI参考模型及TCP/IP参考模型 304

10.1.2 TCP/IP协议族 305

10.1.3 TCP和UDP 306

10.2 网络基础编程 308

10.2.1 socket概述 308

10.2.2 地址及顺序处理 309

10.2.3 socket基础编程 314

10.3 网络高级编程 322

10.4 ping源码分析 326

10.4.1 ping简介 326

10.4.2 ping源码分析 327

10.5 实验内容——NTP协议实现 345

本章小结 352

思考与练习 352

第11章 嵌入式Linux设备驱动开发 353

11.1 设备驱动概述 353

11.1.1 设备驱动简介及驱动模块 353

11.1.2 设备文件分类 354

推荐帖子 最新更新时间:2021-06-06 21:10

MOS管发热异常,排查原因来优化设备运行
本帖最后由 Jacktang 于 2019-2-13 19:52 编辑 在电路设计的时候常常会发生MOS管发热的情况,而MOS管发热说明了它正在错误运行。为了避免MOS管发热危害到整体设备的运行,所以在再次运行之前需要先排查出MOS管发热的原因。MOS管发热无非是这几种情况,接下来30年经验的MOS管厂家“飞虹”为大家分享一下。 一、电路设计 让MOS管工作在线性的工作状态,而不是
Jacktang 模拟与混合信号
PCB表面处理工艺如何选择
表面处理的目的 表面处理最基本的目的是保证良好的可焊性或电性能。由于自然界的铜在空气中倾向于以氧化物的形式存在,不大可能长期保持为原铜,因此需要对铜进行其他处理。虽然在后续的组装中,可以采用强助焊剂除去大多数铜的氧化物,但强助焊剂本身不易去除,因此业界一般不采用强助焊剂。 常见的五种表面处理工艺  现在有许多PCB表面处理工艺,常见的是热风整平、有机涂覆、化学镀镍/浸金、浸银和浸锡这五种工艺
ohahaha PCB设计
基于STM32F401RE开发板的X-NUCLEO-IKS01A3传感器测试之七LSM6DSO点击测试
    今天继续进行LSM6DSO的点击测试,按照范例,启动单片机后,按动用户按钮,依次进入单击状态、双击状态和停止状态,在单击状态时,敲击开发板,程序能识别,在双击状态时必须双击开发板程序才能识别,在停止状态时不识别敲击。为了让测试更直观,我添加了一个变量来记录敲击次数,并显示在屏幕的右下角。切换状态时,计数值清零。     下图为测试过程:     这是进入等待用户按键状态
hujj MEMS传感器
KiCad(5.0.2)计算器工具
本帖最后由 qwqwqw2088 于 2021-3-8 08:33 编辑 KiCad5.02的计算器工具想必大家都想知道这么用,分享本文给大家阅读,发表感谢吧 先看软件的计算器工具在哪里   1.稳压器有两种稳压器类型:有专用电压调节引脚的稳压器常用型号:TPS51200,LP5907三端稳压器常用型号:78xx系列,79xx系列,LM317/LM117,111
qwqwqw2088 PCB设计
有些测试,还真不是你够努力就能测出来的
作者 | 黄刚(一博科技高速先生团队队员)   据说人生这三个方式能解决几乎所有生活中遇到的问题:“多喝水”、“重启”和“不行就算了”。放在高速先生前面的话,“喝水”和“重启”自然不在话下;对于“不行就算”?努力的高速先生通常不会,但是面对下面这个测试,高速先生也一度产生了这个想法……   高速先生听说过很多SI的结论,也通过测试能逐一的把它们呈现出来。我们做过了几十款的测试板去验证业
yvonneGan PCB设计
关于蜂鸣器的问题
作为一个单片机小白,为什么蜂鸣器的输出口必须接P2^3,接别的话就没有声音了,我做的是一个蜂鸣器和流水灯的报警装置,换一个输出口为什么就剩流水灯亮了,蜂鸣器没有声音了,求大神解答#include #define ON 0 #define OFF 1 sbit FM=P2^3; void delay(unsigned int xms)   {     unsigned int i,j
圈在指尖 51单片机

评论

登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })
×