**部分 Linux系统及基本操作 第1章 Linux概述与系统管理 3 微课视频:135分钟 1.1 嵌入式系统概述 3 1.1.1 嵌入式系统的发展趋势 3 1.1.2 嵌入式系统的特点 4 1.1.3 嵌入式系统的组成 4 1.1.4 典型嵌入式操作系统 5 1.2 嵌入式Linux基础 6 1.2.1 Linux发行版本 7 1.2.2 Linux定制安装 8 1.3 Linux常用命令 13 1.3.1 系统管理相关命令 14 1.3.2 文件管理相关命令 15 1.3.3 备份压缩相关命令 24 1.3.4 网络通信相关命令 26 1.3.5 其他常用命令 30 1.4 系统升级与配置 34 1.5 习题 35 第2章 Linux编程工具及网络配置 36 微课视频:157分钟 2.1 编辑器 36 2.1.1 vi编辑器介绍 36 2.1.2 vi编辑器的各模式功能键 37 2.2 程序编译与调试 41 2.2.1 gcc编译流程 41 2.2.2 gcc编译选项分析 42 2.2.3 gdb程序调试 46 2.3 Makefile 54 2.3.1 Makefile的书写规则 54 2.3.2 Makefile中变量的使用 54 2.4 服务器配置 55 2.4.1 samba服务器 55 2.4.2 NFS服务器 59 2.4.3 TFTP服务器 61 2.5 习题 64 第3章 Linux脚本编程 65 微课视频:59分钟 3.1 常用shell命令 65 3.2 脚本编写基础 66 3.2.1 特殊字符 66 3.2.2 变量和参数 68 3.2.3 退出和退出状态 70 3.3 流程控制 71 3.3.1 条件测试 71 3.3.2 操作符相关主题 73 3.3.3 循环控制 74 3.3.4 测试与分支 77 3.4 习题 80 第二部分 Linux系统**编程 第4章 C语言进阶 83 微课视频:344分钟 4.1 C语言的基础知识 83 4.2 数据类型 84 4.2.1 数据类型的分类 84 4.2.2 常量和变量 86 4.2.3 进制 87 4.2.4 字符 88 4.2.5 转义字符与字符集 88 4.2.6 类型转换 88 4.2.7 输入/输出 92 4.2.8 运算符 95 4.3 控制语句 98 4.3.1 分支语句 98 4.3.2 循环语句 101 4.4 数组与字符串 109 4.4.1 数组的定义 109 4.4.2 数组本质探讨 110 4.4.3 一维数组和二维数组 111 4.4.4 字符串 113 4.5 函数 115 4.5.1 函数的定义 115 4.5.2 函数的深度剖析 116 4.5.3 函数的作用剖析 116 4.6 指针 120 4.6.1 指针本质概述 120 4.6.2 连续空间的内存地址 121 4.6.3 指针变量 121 4.6.4 指针数组和指针的指针 123 4.6.5 函数和指针 125 4.7 预处理指令 130 4.7.1 宏定义 130 4.7.2 #include 131 4.7.3 条件编译 132 4.8 习题 133 第5章 文件I/O编程 135 微课视频:74分钟 5.1 文件和目录 135 5.2 目录操作 137 5.3 文件操作 143 5.3.1 基本概念 143 5.3.2 检查文件及确定文件的权限 145 5.3.3 创建文件 146 5.3.4 打开文件 147 5.3.5 关闭文件 149 5.3.6 删除文件 150 5.3.7 文件指针移动 153 5.3.8 其他常用函数 156 5.4 设备控制 159 5.5 Linux时间编程 168 5.5.1 取得目前的时间 168 5.5.2 取得目前时间和日期 168 5.5.3 取得当地目前时间和日期 170 5.5.4 将时间结构数据转换成经过的秒数 170 5.5.5 设置目前时间 171 5.5.6 取得当前时间 171 5.5.7 将时间和日期以ASCII码格式表示 173 5.5.8 将时间和日期以字符串格式表示 173 5.6 习题 177 第6章 进程控制 179 微课视频:53分钟 6.1 进程控制概述 179 6.1.1 进程的定义 179 6.1.2 进程控制模块 180 6.1.3 分配进程描述符 181 6.1.4 进程的创建 181 6.1.5 进程状态 182 6.1.6 进程调度 184 6.1.7 虚拟内存 185 6.1.8 文件锁 186 6.2 进程控制编程 186 6.2.1 启动进程 186 6.2.2 等待进程 193 6.2.3 终止进程 195 6.2.4 守护进程 201 6.3 习题 203 第7章 进程间通信 204 微课视频:77分钟 7.1 进程间通信概述 204 7.2 管道通信 206 7.2.1 无名管道 206 7.2.2 命名管道 209 7.3 消息队列 212 7.3.1 键值 212 7.3.2 创建消息队列 213 7.3.3 发送消息队列 214 7.3.4 接收消息队列 214 7.3.5 控制消息队列 214 7.4 信号 217 7.4.1 信号处理的方式 218 7.4.2 信号操作指令 218 7.5 信号量 226 7.5.1 信号量创建 226 7.5.2 信号量操作 227 7.6 共享内存 233 7.6.1 共享内存创建 233 7.6.2 共享内存的操作 235 7.6.3 共享内存段连接到本进程空间 235 7.6.4 共享内存解除 236 7.7 习题 240 第8章 多线程技术 241 微课视频:30分钟 8.1 Linux多线程概念 241 8.2 Linux线程实现 242 8.2.1 线程创建 242 8.2.2 线程退出 244 8.2.3 线程等待 247 8.2.4 线程标识获取 249 8.2.5 线程清除 250 8.3 线程函数传递及修改线程的属性 254 8.3.1 线程函数传递 254 8.3.2 绑定属性 256 8.3.3 分离属性 257 8.3.4 优先级属性 258 8.3.5 线程栈属性 260 8.3.6 线程的互斥 263 8.3.7 线程的同步 266 8.3.8 信号量 269 8.4 习题 272 第9章 网络编程 273 微课视频:102分钟 9.1 基本概念 273 9.1.1 协议与体系结构 273 9.1.2 数据传输流程 274 9.1.3 常用的命令 275 9.1.4 网络地址 279 9.1.5 IP设置项 280 9.1.6 端口 281 9.2 TCP/IP 281 9.2.1 整体构架概述 281 9.2.2 IP 283 9.2.3 ICMP 285 9.2.4 UDP 285 9.2.5 TCP 286 9.2.6 TCP连接的建立 288 9.3 Socket编程接口介绍 288 9.3.1 建立一个Socket通信 288 9.3.2 对Socket绑定 289 9.3.3 等待连接 290 9.3.4 建立Socket连线 291 9.3.5 发送和接收函数 292 9.3.6 关闭套接字 293 9.4 服务器和客户端的信息函数 294 9.4.1 字节转换函数 294 9.4.2 IP和域名的转换 295 9.4.3 IP地址转换函数 297 9.4.4 服务信息函数 299 9.5 用户数据报发送 299 9.5.1 recvfrom 299 9.5.2 sendto 300 9.6 **套接字函数 303 9.6.1 recvmsg 303 9.6.2 sendmsg 304 9.7 套接字选项 304 9.7.1 getsockopt() 305 9.7.2 setsockopt() 305 9.7.3 ioctl 306 9.8 服务器模型 306 9.8.1 循环服务器:UDP服务器 306 9.8.2 循环服务器:TCP服务器 307 9.8.3 并发服务器:TCP服务器 311 9.8.4 并发服务器:多路复用I/O 312 9.8.5 并发服务器:UDP服务器 313 9.9 Socket编程应用 316 9.9.1 编写服务器程序 316 9.9.2 编写客户端程序 318 9.9.3 编译测试 319 9.10 习题 320 第三部分 嵌入式系统驱动开发 第10章 内核开发基础 323 10.1 嵌入式开发环境的搭建 323 10.1.1 交叉编译工具链 324 10.1.2 **终端软件 326 10.2 Linux内核简介 327 10.2.1 Linux内核 328 10.2.2 Linux内核源代码 330 10.2.3 Linux内核配置及裁剪 332 10.2.4 设备树介绍 335 10.2.5 内核启动简单流程分析 344 10.3 文件系统 347 10.3.1 文件系统分类 347 10.3.2 文件系统主要目录 347 10.3.3 文件启动流程 348 10.4 习题 357 第11章 BootLoader 358 11.1 BootLoader介绍 358 11.1.1 BootLoader的安装和启动 359 11.1.2 BootLoader的操作模式 359 11.1.3 BootLoader与主机之间的通信方式 359 11.1.4 常用BootLoader介绍 360 11.2 u-boot介绍 360 11.2.1 目录结构 361 11.2.2 u-boot的主要功能 365 11.2.3 u-boot的工具 365 11.3 u-boot工作流程 366 11.3.1 _start()函数 366 11.3.2 _main()函数 369 11.3.3 board_init_f()函数 370 11.3.4 relocate_code()函数 370 11.3.5 board_init_r()函数 372 11.4 u-boot编译 376 11.5 习题 377 第12章 Linux驱动开发基础与调试 378 12.1 设备驱动简介 378 12.1.1 设备类型分类 378 12.1.2 内核空间和用户空间 379 12.1.3 驱动程序层次结构 380 12.1.4 驱动程序与外界接口 380 12.2 打印调试 381 12.3 综合案例——驱动程序加载 383 12.3.1 静态加载 383 12.3.2 动态加载 389 12.4 习题 392 第13章 字符设备驱动 393 13.1 字符设备驱动基础 393 13.1.1 关键数据结构 393 13.1.2 设备驱动开发的基本函数 395 13.1.3 设备文件和设备号 400 13.1.4 加载和卸载驱动程序 401 13.2 LED设备驱动程序 402 13.2.1 硬件电路 402 13.2.2 驱动程序分析 403 13.2.3 测试验证 409 13.3 按键设备驱动程序 410 13.3.1 按键模块硬件电路 410 13.3.2 Linux input子系统 411 13.3.3 驱动程序分析 413 13.3.4 测试验证 422 13.4 习题 423 第四部分 硬 件 平 台 第14章 硬件平台介绍 427 14.1 硬件参数 427 14.2 软件参数 428 14.3 可完成实验 428 参考文献 430 视频目录 视 频 名 称 时长/分 视频二维码位置 第1集 VMware安装步骤 4 1.2.2节节首 第2集 Ubuntu操作系统安装 9 1.2.2节节尾 第3集 Linux指令操作1 52 1.3.1节节首 第4集 Linux指令操作2 70 1.3.3节节首 第5集 vi和gcc讲解 71 2.2.1节节首 第6集 gdb调试 22 2.2.3节节首 第7集 samba配置 34 2.4.1节节首 第8集 nfs服务器 14 2.4.2节节首 第9集 TFTP服务器 6 2.4.3节节首 第10集 samba多机实验操作扩展 5 2.5节习题5 第11集 nfs多机实验操作扩展 5 2.5节习题6 第12集 脚本开篇介绍 6 3.1节节首 第13集 脚本编程1 25 3.1节节末 第14集 脚本编程2 28 3.3节节首 第15集 数据类型 54 4.2.1节节首 第16集 输入输出函数 32 4.2.7节节首 第17集 控制语句 54 4.3.1节节首 第18集 数组与字符串 33 4.4.1节节首 第19集 函数 24 4.5.1节节首 第20集 指针概述 35 4.6.1节节首 第21集 指针数组 44 4.6.4节节首 第22集 函数指针 43 4.6.5节节首 第23集 目录操作 16 5.2.1节节首 第24集 文件操作 20 5.3.1节节首 第25集 设备控制 15 5.4.1节节首 第26集 Linux时间编程 23 5.5.1节节首 第27集 进程控制概述 20 6.1.1节节首 第28集 进程控制编程 33 6.2.1节节首 第29集 管道通信 25 7.2.1节节首 第30集 消息队列 10 7.3.1节节首