重磅发布!RK3568开发板C应用编程手册

迅为电子重磅发布新教程——《iTOP-RK3568开发板C应用编程手册》

本教程为RK3568开发板的教程系列手册,旨在帮助用户对于应用编程进行入门学习,适用于 Linux 应用编程初学者。

系统编程指的是在Linux操作系统下对应用程序进行的编程,也叫做应用编程,编写好的应用程序运行在Linux操作系统的用户空间,通过直接或间接的调用系统调用 API 完成相应的功能和逻辑。Linux系统的整体结构如下图所示:

重磅发布!RK3568开发板C应用编程手册_第1张图片

 教程亮点

1.内容更全面

470+页文档、15W+字数、100+配套代码 讲解更细致,理解更清晰

2.设置更科学:

前16章为基础知识部分,会对系统编程的知识点进行分类讲解,在讲解之后会有着对应的实验,而17-27章为实际应用部分,对系统编程基础知识和开发板软件部分进行了整合,可以巩固我们学到的知识,为本手册的重点。

 适用人群

本手册的面向对象为C应用编程初学者,但仍旧需要读者有C语言基础并且熟悉Linux基本操作。其中C语言基础在网络上相关的教程已经有很多了,大家可以自行学习,而Linux基本操作大家可以参考迅为在bilibili的视频和对应的手册进行学习。

教程目录

第1章 你好!系统编程

1.1什么是系统编程?

1.2内核空间和用户空间

1.2.1 为什么区分内核空间和用户空间

1.2.2 内核态和用户态

1.3系统调用

1.4 C语言库函数

1.5 main函数形参

第2章 文件IO

2.1文件描述符

2.2 打开文件

2.3 关闭文件

2.4 读文件

2.5 写文件

2.6 lseek

2.7综合练习(一)

第3章 标准IO

3.1 FILE指针

3.2 打开文件

3.3 关闭文件

3.4 读文件

3.5 写文件

3.6 fseek

3.7检查和复位状态

第4章 目录IO和文件属性

4.1 创建目录

4.2 打开和关闭目录

4.3 读取目录内容

4.4 综合练习(二)

4.5 获取文件属性

4.6 检查文件权限

4.7 修改文件权限

4.8 软链接与硬链接

4.8.1 创建硬链接

4.8.2 创建软链接

4.8.3 读取软链接文件

4.9 文件删除

4.9.1 删除文件(系统调用)

4.9.2 删除文件(C库函数)

4.10 文件重命名

第5章 缓冲IO

5.1 内核缓冲

5.2 stdio缓冲

5.2.1设置缓冲区

5.2.2 刷新stdio缓冲区

5.3 刷新内核缓冲区

5.4 绕过内核缓冲

5.5 缓冲IO总结

第6章 字符串操作

6.1 字符串输入/输出

6.1.1字符串输出

6.1.2字符串输入

6.2 获取字符串长度

6.3 字符串拼接

6.4 字符串拷贝

6.5 内存填充

6.6 字符串比较

6.7 字符串查找

6.8 字符串类型转换

6.8.1字符串转整型

6.8.2字符串转浮点型

第7章 格式化IO

7.1 格式化输出

7.2 输出格式控制字符串

7.3 格式化输入

7.4 输入格式控制字符串

第8章 进程基础

8.1 进程和程序

8.2 进程号

8.3 获取进程PID

8.3.1 获取进程PID

8.3.2 获取父进程PID

8.4 进程的环境变量

8.4.1 获取环境变量

8.4.2 添加环境变量

8.4.3 修改环境变量

8.4.4 删除环境变量

8.4.5 清空环境变量

8.5进程内存布局

第9章 信号基础

9.1 什么是信号?

9.2 信号的处理

9.3 信号类型和默认行为

9.4 进程对信号的处理

9.5 向进程发送信号

9.5.1 向指定进程发送信号

9.5.2 向自身发送信号

9.5.3 定时信号

9.5.4 休眠信号

第10章 进程深入

10.1创建进程

10.1.1 创建进程(fork)

10.1.2 创建进程(vfork)

10.2终止进程

10.3监视子进程

10.3.1僵尸进程与孤儿进程

10.3.2子进程资源回收(wait)

10.3.3子进程资源回收(waitpid)

10.3.4 SIGCHLD 信号

10.4执行新程序

10.4.1 execve()函数

10.4.2 exec族函数

10.4.3 system()函数

10.5守护进程

10.5.1什么是守护进程

10.5.2创建守护进程

第11章 进程间通信

11.1 进程间通信简介

11.2 管道

11.2.1 无名管道

11.2.2 有名管道

11.3 消息队列

11.4 信号量

11.5 共享内存

第12章 线程

12.1 什么是线程?

12.2 创建线程

12.3 获取线程ID

12.4 终止线程

12.5 回收线程

12.6 取消线程

12.7 分离线程

第13章 线程同步-互斥锁

13.1 什么是线程同步?

13.2 互斥锁的概念

13.3 互斥锁初始化

13.3.1 动态初始化

13.3.2 静态初始化

13.4 获取互斥锁(1)

13.5 释放互斥锁

13.6 获取互斥锁(2)

13.7 销毁互斥锁

13.8 互斥锁死锁

第14章 存储映射 I/O

14.1 建立映射区

14.2 解除映射关系

14.3 映射区数据同步

14.4 父子进程间通信

14.5 无血缘关系进程间通信

第15章 库和伪文件系统

15.1 静态库

15.1.1什么是静态库?

15.1.2静态库的制作与使用

15.2 动态库

15.2.1什么是动态库?

15.2.2动态库的制作与使用

15.3 procfs文件系统

15.4 sysfs文件系统

第16章 阻塞与IO多路复用

16.1 阻塞与非阻塞

16.1.1阻塞与非阻塞的概念

16.1.2阻塞/非阻塞I/O读文件

16.1.3 fcntl函数

16.1.4非阻塞I/O并发读取

16.2 I/O多路复用

16.2.1 IO多路复用的概念

16.2.2 select函数

16.2.3 poll函数

第17章 环境设置和文件系统说明

17.1 开发板使用文件系统的说明

17.2设 置交叉编译器

17.3 nfs实现共享目录

17.3.1搭建NFS服务器

17.3.2 NFS共享目录使用

第18章 LED应用编程

18.1 应用层操控硬件的两种方式

18.2 LED硬件控制方式

18.3 编写LED应用程序

18.4 开发板测试

第19章 GPIO应用编程

19.1应用层如何操控GPIO

19.2 GPIO输出应用编程

19.2.1编写应用程序

19.2.2开发板测试

19.3 GPIO输入应用编程

19.3.1编写应用程序

19.3.2开发板测试

19.4 GPIO输入中断编程

19.4.1编写应用程序

19.4.2开发板测试

第20章 看门狗应用编程

20.1看门狗介绍

20.2 ioctl函数

20.3看门狗应用编程介绍

20.3.1获取设备功能

20.3.2获取超时时间

20.3.3设置超时时间

20.3.4开启和关闭看门狗

20.3.5喂狗操作

20.4看门狗实验

20.4.1编写应用程序

20.4.2开发板测试

第21章 串口应用编程

21.1串口介绍

21.2串口设备节点介绍

21.3 struct termios结构体

21.3.1输入模式

21.3.2输出模式

21.3.3控制模式

21.3.4本地模式

21.3.5特殊控制字符

21.4 终端的三种工作模式

21.4.1规范模式

21.4.2非规范模式

21.4.3原始模式

21.5 配置参数的获取

21.6 对串口终端进行配置

21.6.1配置串口终端为原始模式

21.6.2接收使能

21.6.3设置串口的波特率

21.6.4设置数据位大小

21.6.5设置奇偶校验位

21.6.6设置停止位

21.6.7设置 MIN 和 TIME

21.6.8缓冲区的处理

21.6.9配置的写入

21.7 串口实验

21.7.1编写应用程序

21.7.2开发板测试

第22章 PWM应用编程

22.1什么是PWM?

22.2应用层操控PWM

22.3 PWM应用编程

22.3.1编写应用程序

22.3.2开发板测试

第23章 输入设备应用编程

23.1输入类设备编程介绍

23.1.1什么是输入设备?

23.1.2 input子系统

23.1.3读取数据的流程

23.1.4数据的解析

23.2键盘按键应用编程

23.2.1编写按键输入应用程序

23.2.2开发板测试

23.2.3编写键盘输入应用程序

23.2.4开发板测试

23.3触摸屏应用编程

23.3.1 触摸设备的讲解

23.3.2 单点触摸和多点触摸

23.3.3 事件上报的顺序

23.3.4触摸屏上报数据分析

23.3.5获取触摸屏的信息

23.3.6单点触摸应用实验

23.3.7多点触摸应用实验

第24章 FrameBuffer应用编程

24.1什么是FrameBuffer?

24.2 LCD基础知识

24.2.1分辨率

24.2.2像素格式

24.2.3 LCD成像步骤

24.2.4 LCD屏幕时序

24.3 LCD应用编程介绍

24.3.1 FrameBuffer操作步骤

24.3.2屏幕参数信息的获取

24.4 LCD应用编程实验

24.4.1 LCD屏幕参数信息获取实验

24.4.2 LCD屏幕画线实验

第25章V4L2摄像头应用编程

25.1 什么是V4L2?

25.2 V4L2视频采集原理

25.3 V4L2 摄像头应用编程介绍

25.3.1 V4L2视频采集步骤

25.3.2 ioctl参数介绍

25.3.3 v4l2设备操作流程

25.4 V4L2摄像头应用编程实验

第26章 网络基础知识学习

26.1协议的概念

26.2 OSI 7层网络模型

26.2.1 OSI的来源

26.2.2 OSI七层模型的划分

26.2.3各层功能定义

26.3 TCP/IP四层模型

26.4数据的封装与解封装

26.4.1数据封装过程

26.4.2数据解封装过程

26.5常用网络术语

26.5.1 IP地址

26.5.2子网掩码

26.5.3网关

26.5.4广播地址

26.5.5路由(route)

26.5.6路由器工作原理

26.5.7路由表(Routing Table)

26.5.8路由条目

26.5.9缺省路由条目

26.5.10路由节点

26.5.11以太网交换机工作原理

26.5.12 hub工作原理

26.5.13半双工/全双工

26.5.14 DNS服务器

26.5.15局域网(LAN)

26.5.16广域网(WAN)

26.5.17端口

26.5.18 MTU

26.6典型协议

26.7 TCP协议

26.7.1 TCP协议简介

26.7.2 TCP协议的特性

26.7.3 TCP报文格式

26.7.4 建立TCP连接:三次握手

26.7.5 关闭TCP连接:四次挥手

26.7.6 TCP状态说明

26.8 UDP协议

第27章 socket 应用编程

27.1什么是socket?

27.2网络字节序

27.3 IP地址转换函数

27.3.1 二进制转换为十进制

27.3.2 十进制转换为二进制

27.4 socket编程接口介绍

27.4.1打开网络端点

27.4.2 IP和端口号的绑定

27.4.3进入监听状态

27.4.4等待连接请求

27.4.5连接服务器

27.4.6数据的发送和接收

27.4.7关闭套接字

27.5 socket编程实验

27.5.1编写服务端程序

27.5.2编写客户端程序

27.5.3测试

你可能感兴趣的:(RK3568,嵌入式,linux,运维,服务器)