《嵌入式Linux系统编程》是2014年电子工业出版社出版的图书,作者是秦立春、周中孝。
基本介绍
- 书名:嵌入式Linux系统编程
- 出版社:电子工业出版社
- 页数:286页
- 开本:16
- 品牌:电子工业出版社
- 作者:秦立春 周中孝
- 出版日期:2014年8月1日
- 语种:简体中文
- ISBN:7121230259
内容简介
本书涉及嵌入式Linux系统设备驱动开发的各个环节。全书共21章,内容包括:Linux系统基本操作,嵌入式Linux开发环境的搭建,Linux设备驱动的概念,Linux核心模组编程,字元设备驱动(含LED驱动)的开发及完善,核心同步机制,中断驱动,核心工作伫列,核心定时器,平台设备、LCD设备、Linux触控萤幕和温度感测器的驱动,以及Linux核心各子系统(clock子系统、输入子系统、I IC子系统、SPI子系统和MTD子系统)的介绍。本书由深圳信盈达嵌入式学院的嵌入式开发工程师编写,并配备了相关的实验和完整的驱动程式代码及测试应用程式代码。
编辑推荐
本书是配合Linux系统程式设计的指导教材,独立于任何Linux系统编程的教科书。主要内容有:Linux基础知识,包括基本命令、vi编辑器的用法、Shell编程;Linux环境下程式的编译与调试,包括gcc/g++的用法、Makefile的编写、gdb调试器的基本用法等;Linux档案目录操作;Linux多进程的控制;Linux环境下信号的处理;系统各进程间通信方式;Linux多执行绪,包括执行绪的同步与互斥;网路Socket编程。本书涵盖了Linux下套用层编程的全面知识,并且讲解清晰易懂。通过详细的示例,从零开始,由浅入深、循序渐进地指导初学者掌握Linux系统编程,培养读者实际分析问题和编程的能力,提高读者和学生的综合素质。
作者简介
深圳信盈达电子有限公司、是一家专注于单片机、ARM、嵌入式产品开发和技术培训的高新技术服务企业,公司下设开发部和技术培训部。公司开发部为国内外众多客户开发多款基于嵌入式单片机、ARM等技术的整套方案和高性能产品,技术培训部提供优秀的单片机、ARM、嵌入式产品开发工程师培训。同时为众多工程师,各大师专院校提供实验器材及技术培训课程!
图书目录
第1章Linux基础知识
1.1Linux的历史
1.2Linux目录结构
1.3Linux常用命令
1.3.1su(用户切换)
1.3.2useradd(添加用户)
1.3.3passwd(修改密码)
1.3.4进程相关(系统管理)命令
1.3.5磁碟相关命令(fdisk)
1.3.6pwd(显示工作目录)
1.3.7cd(改变工作目录)
1.3.8ls(查看档案/目录)
1.3.9mkdir(创建目录)
1.3.10cp(档案/目录複製)
1.3.11mv(档案/目录改名、移动)
1.3.12rm(档案/目录删除)
1.3.13cat(查看档案内容)
1.3.14more(分页显示档案内容)
1.3.15less(分页显示档案内容)
1.3.16管道与命令替换
1.3.17umask(档案/目录创建掩码)
1.3.18chgrp(改变档案/目录所属的组)
1.3.19chown(更改某个档案/目录的所有者和属组)
1.3.20chmod(修改档案许可权)
1.3.21find(档案查找)
1.3.22locate(快速档案查找)
1.3.23ln(建立符号连结)
1.3.24whereis和which(查找命令所在目录)
1.3.25grep(搜寻档案内容)
1.3.26tar(压缩解压)
1.3.27gzip/gunzip和bzip2/bunzip2(档案压缩/解压缩)
1.3.28unzip(winzip档案解压缩)
1.3.29ifconfig及网路相关命令
1.3.30Linux下编程环境
1.4vi编辑器
1.5Linux常用技巧
1.5.1使用“Tab”键
1.5.2RetHatLinux启动到字元界面(不启动XWindow)
1.5.3挂接USB快闪记忆体
1.5.4不用samba或ftp,利用VM自身实现本机与虚拟机的档案共享
1.5.5其他常用命令
1.5.6vi换行自动缩进对齐以及在vim中设定多个视窗
1.5.7Shell编程
第2章Linux环境下的编译与调试
2.1gcc/g++编译器
2.1.1gcc/g++编译过程
2.1.2静态库和动态库
2.1.3gcc警告和最佳化选项
2.2make工程管理器和Makefile
2.2.1Makefile中特殊处理与伪目标
2.2.2变数、规则与函式
2.3gdb调试器
2.3.1gdb的常用命令
2.3.2gdb套用举例
第3章Linux档案目录操作
3.1基于档案指针的档案操作(缓冲)
3.1.1档案的创建、打开与关闭
3.1.2读写档案
3.1.3档案定位
3.1.4标準输入/输出流
3.1.5目录操作
3.2基于档案描述符的档案操作(非缓冲)
3.2.1档案描述符
3.2.2打开、创建和关闭档案
3.2.3读写档案
3.2.4改变档案大小
3.2.5档案定位
3.2.6原子操作
3.2.7进一步理解档案描述符
3.2.8档案描述符的複製
3.2.9档案的锁定
3.2.10获取档案信息
3.2.11access函式
3.2.12标準输入/输出档案描述符
3.2.13时间和日期相关函式
3.2.14处理的模型(补充)
3.2.15串口编程
3.2.16日誌
第4章Linux多进程
4.1Linux进程概述
4.1.1进程标识
4.1.2进程的用户ID与组ID(进程的运行身份)
4.1.3进程的状态
4.1.4Linux下的进程结构及管理
4.2Linux进程的创建与控制
4.2.1fork函式
4.2.2进程的终止
4.2.3wait和waitpid函式
4.2.4exec函式族
4.2.5system函式
4.2.6popen函式
4.3守护进程
第5章Linux信号处理
5.1信号概念
5.2signal信号处理机制
5.3sigaction信号处理机制
5.3.1信号处理情况分析
5.3.2sigaction信号处理注册
5.3.3sigprocmask信号阻塞
5.4用程式传送信号
5.4.1kill和raise信号传送函式
5.4.2sigqueue信号传送函式
5.5计时器与信号
5.5.1睡眠函式
5.5.2时钟处理
第6章进程间通信
6.1进程间通信(IPC)简介
6.2标準管道流
6.3无名管道(PIPE)
6.4命名管道(FIFO)
6.4.1创建、删除FIFO档案
6.4.2打开、关闭FIFO档案
6.4.3读写FIFO
6.5记忆体映射
6.6SystemV共享记忆体机制
6.7讯息伫列
6.8信号量
6.8.1SystemVIPC机制:信号量
6.8.2Posix有名信号量
第7章Linux多执行绪
7.1Linux多执行绪概述
7.1.1多执行绪概述
7.1.2执行绪分类
7.1.3执行绪创建的Linux实现
7.2执行绪的创建和退出
7.3执行绪的等待退出
7.3.1等待执行绪退出
7.3.2执行绪的取消
7.3.3执行绪终止清理函式
7.4执行绪的互斥
7.5执行绪的同步
7.5.1条件变数
7.5.2信号灯
7.6生产者消费者问题
7.7执行绪的属性
第8章Linux网路编程
8.1Linux网路编程介绍
8.1.1TCP/IP概述
8.1.2OSI参考模型及TCP/IP参考模型
8.1.3TCP
8.1.4UDP
8.1.5协定的选择
8.2网路相关概念
8.2.1Socket概念
8.2.2Socket类型
8.2.3Socket的信息数据结构
8.2.4数据存储优先顺序的转换
8.2.5地址格式转化
8.2.6名字地址转化
8.3Socket编程
8.3.1使用TCP的流程图
8.3.2使用UDP的流程图
8.3.3设定套接口的选项setsockopt的用法
第9章系统编程的例子
附录AC语言档案操作详解
附录B记忆体映射和普通档案访问的区别
附录Cping命令解析
附录D大端小端
1.1Linux的历史
1.2Linux目录结构
1.3Linux常用命令
1.3.1su(用户切换)
1.3.2useradd(添加用户)
1.3.3passwd(修改密码)
1.3.4进程相关(系统管理)命令
1.3.5磁碟相关命令(fdisk)
1.3.6pwd(显示工作目录)
1.3.7cd(改变工作目录)
1.3.8ls(查看档案/目录)
1.3.9mkdir(创建目录)
1.3.10cp(档案/目录複製)
1.3.11mv(档案/目录改名、移动)
1.3.12rm(档案/目录删除)
1.3.13cat(查看档案内容)
1.3.14more(分页显示档案内容)
1.3.15less(分页显示档案内容)
1.3.16管道与命令替换
1.3.17umask(档案/目录创建掩码)
1.3.18chgrp(改变档案/目录所属的组)
1.3.19chown(更改某个档案/目录的所有者和属组)
1.3.20chmod(修改档案许可权)
1.3.21find(档案查找)
1.3.22locate(快速档案查找)
1.3.23ln(建立符号连结)
1.3.24whereis和which(查找命令所在目录)
1.3.25grep(搜寻档案内容)
1.3.26tar(压缩解压)
1.3.27gzip/gunzip和bzip2/bunzip2(档案压缩/解压缩)
1.3.28unzip(winzip档案解压缩)
1.3.29ifconfig及网路相关命令
1.3.30Linux下编程环境
1.4vi编辑器
1.5Linux常用技巧
1.5.1使用“Tab”键
1.5.2RetHatLinux启动到字元界面(不启动XWindow)
1.5.3挂接USB快闪记忆体
1.5.4不用samba或ftp,利用VM自身实现本机与虚拟机的档案共享
1.5.5其他常用命令
1.5.6vi换行自动缩进对齐以及在vim中设定多个视窗
1.5.7Shell编程
第2章Linux环境下的编译与调试
2.1gcc/g++编译器
2.1.1gcc/g++编译过程
2.1.2静态库和动态库
2.1.3gcc警告和最佳化选项
2.2make工程管理器和Makefile
2.2.1Makefile中特殊处理与伪目标
2.2.2变数、规则与函式
2.3gdb调试器
2.3.1gdb的常用命令
2.3.2gdb套用举例
第3章Linux档案目录操作
3.1基于档案指针的档案操作(缓冲)
3.1.1档案的创建、打开与关闭
3.1.2读写档案
3.1.3档案定位
3.1.4标準输入/输出流
3.1.5目录操作
3.2基于档案描述符的档案操作(非缓冲)
3.2.1档案描述符
3.2.2打开、创建和关闭档案
3.2.3读写档案
3.2.4改变档案大小
3.2.5档案定位
3.2.6原子操作
3.2.7进一步理解档案描述符
3.2.8档案描述符的複製
3.2.9档案的锁定
3.2.10获取档案信息
3.2.11access函式
3.2.12标準输入/输出档案描述符
3.2.13时间和日期相关函式
3.2.14处理的模型(补充)
3.2.15串口编程
3.2.16日誌
第4章Linux多进程
4.1Linux进程概述
4.1.1进程标识
4.1.2进程的用户ID与组ID(进程的运行身份)
4.1.3进程的状态
4.1.4Linux下的进程结构及管理
4.2Linux进程的创建与控制
4.2.1fork函式
4.2.2进程的终止
4.2.3wait和waitpid函式
4.2.4exec函式族
4.2.5system函式
4.2.6popen函式
4.3守护进程
第5章Linux信号处理
5.1信号概念
5.2signal信号处理机制
5.3sigaction信号处理机制
5.3.1信号处理情况分析
5.3.2sigaction信号处理注册
5.3.3sigprocmask信号阻塞
5.4用程式传送信号
5.4.1kill和raise信号传送函式
5.4.2sigqueue信号传送函式
5.5计时器与信号
5.5.1睡眠函式
5.5.2时钟处理
第6章进程间通信
6.1进程间通信(IPC)简介
6.2标準管道流
6.3无名管道(PIPE)
6.4命名管道(FIFO)
6.4.1创建、删除FIFO档案
6.4.2打开、关闭FIFO档案
6.4.3读写FIFO
6.5记忆体映射
6.6SystemV共享记忆体机制
6.7讯息伫列
6.8信号量
6.8.1SystemVIPC机制:信号量
6.8.2Posix有名信号量
第7章Linux多执行绪
7.1Linux多执行绪概述
7.1.1多执行绪概述
7.1.2执行绪分类
7.1.3执行绪创建的Linux实现
7.2执行绪的创建和退出
7.3执行绪的等待退出
7.3.1等待执行绪退出
7.3.2执行绪的取消
7.3.3执行绪终止清理函式
7.4执行绪的互斥
7.5执行绪的同步
7.5.1条件变数
7.5.2信号灯
7.6生产者消费者问题
7.7执行绪的属性
第8章Linux网路编程
8.1Linux网路编程介绍
8.1.1TCP/IP概述
8.1.2OSI参考模型及TCP/IP参考模型
8.1.3TCP
8.1.4UDP
8.1.5协定的选择
8.2网路相关概念
8.2.1Socket概念
8.2.2Socket类型
8.2.3Socket的信息数据结构
8.2.4数据存储优先顺序的转换
8.2.5地址格式转化
8.2.6名字地址转化
8.3Socket编程
8.3.1使用TCP的流程图
8.3.2使用UDP的流程图
8.3.3设定套接口的选项setsockopt的用法
第9章系统编程的例子
附录AC语言档案操作详解
附录B记忆体映射和普通档案访问的区别
附录Cping命令解析
附录D大端小端
序言
近年来,Linux作业系统使用越来越广泛。而Linux作业系统的使用相比于Windows要困难一些,又由于Linux下没有很好的集成开发环境(IDE),在Linux下进行C语言编程开发比Windows下更不容易。而且在Linux下编程需要用到很多Linux系统API函式,这些函式虽然有完整的帮助文档可以查阅,但由于是英文,讲解太详细太全面,所以内容太多,我们通常没有时间对它们进行详尽的阅读,而且这些帮助文档以参考性的内容为主,这无疑增加了开发人员学习的难度。所以我们确实需要一本通俗易懂的介绍Linux系统下编程的书。本书是一本较为全面系统地介绍Linux下应用程式编程知识的书籍,涵盖了Linux系统下编程绝大多数的API函式及使用示例,足够广大开发人员参考使用。
国内关于讲解Linux系统编程知识的书籍比较少,国外相关着作虽然全面系统,但讲解风格却是依照西方的思维方式,过于专业和深奥,这与中国人的思维方式有些不同,所以我们在阅读那些书时难免会感到不习惯,影响学习。因此,我们需要一本按照国人容易接受的方式去讲解编程知识的参考书。本书讲解清晰易懂,内容科学合理,有助于初学者迅速掌握知识体系和精髓,在学习时间相同的情况下,学习效果也更好。
本书适合广大範围的计算机编程人员学习,只要读者具备一定的C语言编程基础即可。即使没用过Linux系统的人,阅读本书第1章Linux基本命令讲解后,也能对Linux系统有相当的了解和熟悉。然后讲述了Linux下程式编译和调试的基本知识,如gcc、gdb的用法,Makefile的编写规则,这两章算是基础入门知识,接下来后面的章节都是介绍Linux下的API函式及其示例用法,程式都是精心设计的,一针见血地表达出了重点。API函式部分包括Linux档案目录操作、基于档案指针和基于档案描述符的档案操作函式、多进程的控制、Linux下信号处理、各种进程间通信方式的讲解、多执行绪编程、执行绪同步与互斥,以及网路Socket编程这些内容。
本书内容涵盖面广,知识点全面,语言简练而清晰,能让读者迅速掌握精髓,也很适合自学。初学者和专业开发人员都能从中受益匪浅。
本书的出版,离不开深圳信盈达电子有限公司所有同事们的支持和帮助,尤其是陈志发等工程师, 在此向他们表示衷心的感谢。另外,感谢电子工业出版社,是他们认真专业的审核,让本书由粗糙的初稿变成了精美的图书。
由于时间仓促,编者水平有限,书中难免有不恰当的地方,希望广大读者批评指正,联繫信箱:niusdw@163com,欢迎来信交流。
编者
2014年2月27
国内关于讲解Linux系统编程知识的书籍比较少,国外相关着作虽然全面系统,但讲解风格却是依照西方的思维方式,过于专业和深奥,这与中国人的思维方式有些不同,所以我们在阅读那些书时难免会感到不习惯,影响学习。因此,我们需要一本按照国人容易接受的方式去讲解编程知识的参考书。本书讲解清晰易懂,内容科学合理,有助于初学者迅速掌握知识体系和精髓,在学习时间相同的情况下,学习效果也更好。
本书适合广大範围的计算机编程人员学习,只要读者具备一定的C语言编程基础即可。即使没用过Linux系统的人,阅读本书第1章Linux基本命令讲解后,也能对Linux系统有相当的了解和熟悉。然后讲述了Linux下程式编译和调试的基本知识,如gcc、gdb的用法,Makefile的编写规则,这两章算是基础入门知识,接下来后面的章节都是介绍Linux下的API函式及其示例用法,程式都是精心设计的,一针见血地表达出了重点。API函式部分包括Linux档案目录操作、基于档案指针和基于档案描述符的档案操作函式、多进程的控制、Linux下信号处理、各种进程间通信方式的讲解、多执行绪编程、执行绪同步与互斥,以及网路Socket编程这些内容。
本书内容涵盖面广,知识点全面,语言简练而清晰,能让读者迅速掌握精髓,也很适合自学。初学者和专业开发人员都能从中受益匪浅。
本书的出版,离不开深圳信盈达电子有限公司所有同事们的支持和帮助,尤其是陈志发等工程师, 在此向他们表示衷心的感谢。另外,感谢电子工业出版社,是他们认真专业的审核,让本书由粗糙的初稿变成了精美的图书。
由于时间仓促,编者水平有限,书中难免有不恰当的地方,希望广大读者批评指正,联繫信箱:niusdw@163com,欢迎来信交流。
编者
2014年2月27