RK3568开发板C应用编程手册目录

news/2024/4/25 15:19:54/文章来源:https://blog.csdn.net/mucheni/article/details/129685000

迅为电子重磅发布新教程——《iTOP-RK3568开发板C应用编程手册》本教程为RK3568开发板的教程系列手册,旨在帮助用户对于应用编程进行入门学习,适用于 Linux 应用编程初学者。系统编程指的是在Linux操作系统下对应用程序进行的编程,也叫做应用编程,编写好的应用程序运行在Linux操作系统的用户空间,通过直接或间接的调用系统调用 API 完成相应的功能和逻辑。Linux系统的整体结构如下图所示:

正在上传…重新上传取消

手册将根据上述结构对Linux系统编程的各个部分进行详细的讲解。、教程亮点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测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_273980.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由浅入深之字符串的算法题(vs: chatGPT做算法)

背景俗话说,温故而知新。chatGPT效果太惊艳了!简直就是碾压的效果。但是还要有希望,先拾取,再创新。先了解,再超越吧。ps: 再刷最后一遍算法题思路。顺便基于chatGPT3.5感受一下大模型的魔力。字符串基础C/C每个字符串…

编程题]组队竞赛(Java实现)

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

十七、队列

文章目录1、基本概念(队列实际上就是一个结构体,可以理解为就是一个数组)2、使用场景:任务间或任务与中断间传递数据3、使用队列的好处(1)休眠唤醒(2)提高CPU利用率4、队列的核心5、…

WebService简单入门

1. JAX-WS发布WebService 创建web工程 创建simple包,和server、client两个子包。正常情况下server和client应该是两个项目,这里我们只是演示效果,所以简化写到一个项目中: 1.1 创建服务类Server package simple.server;import ja…

JavaScript正则表达式知识拓展总结

JavaScript的正则表达式是前端中比较重要的部分,正则表达式主要用于字符串处理,表单验证等场合,实用高效。JavaScript中的正则表达式比起C#中的正则表达式要弱很多,但基本够用了。在js中定义正则表达式很简单,有两种方…

搭建SFTP服务安全共享文件,实现在外远程访问「内网穿透」

文章目录1.前言2.本地SFTP服务器搭建2.1.SFTP软件的下载和安装2.2.配置SFTP站点2.3.Cpolar下载和安装3.SFTP服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言 现在的网络发达,个人电脑容量快速上升,想要保存的数据资料也越…

DRBG_InstantiateSeeded调试-1

public 参数解析: standardEKPolicy: 837197674484b3f81a90cc8d46a5d724fd52d76e06520b64f2a1da1b331469aa(32bytes) rawCmdBuf 命令数据: 800200000063000001314000000100000009400000090000010000000400000000003a0001000b000300720020837197674484b3f81a90cc8d46a5d724fd5…

Baumer工业相机堡盟相机如何使用PixelTransformation像素转换功能(像素转换功能的使用和优点以及行业应用)(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…

银河麒麟v10系统硬盘挂载并配置yum软件源

一、查看磁盘 近期由于centos系统停止更新用户服务器要更换银河麒麟v10,拿到服务器后使用lsblk -f或fdisk -l命令查看磁盘名称 可以看到sdb200G就是要挂载的硬盘,还没有uuid需要初始化才可以挂载。 二、分区 分区命令: fdisk /dev/【你的…

QML- QML视觉元素类型

QML视觉元素类型一、概述一、图像类型三、共享视觉属性1. 不透明度和可见性2. 转换(转置)一、概述 对于最基本的视觉效果,Qt Quick提供了一个 Rectangle 类型来绘制矩形。这些矩形可以用颜色或垂直渐变来着色。 Rectangle 还可以在矩形上绘制…

QuestDb 基础使用

一、安装 Download QuestDB | QuestDB 可去官网直接下载对应版本,我这里是Windows版本 二、运行 找到Bin目录运行 管理员Cmd,输入 questDb.exe,即可运行,默认webConsole端口 9000,可在bin下 server.config去修改。 效果如下 …

Mac安装Nacos

参考链接: https://nacos.io/zh-cn/docs/quick-start.html 文章目录Nacos安装下载和解压启动和关闭Nacos什么是nacos?Nacos架构基本架构及概念逻辑架构及其组件介绍领域模型数据模型服务领域模型配置领域模型类视图Nacos安装 下载和解压 从链接中下载最新的版本 …

Vue基础25之路由第四节

Vue基础25路由编程式路由导航Home.vue(去掉两个router-line的replace)HomeMessage.vueBanner.vue总结缓存路由组件Home.vueHomeNews.vueHomeMessage.vue总结两个新的生命周期钩子HomeNews.vueHomeMessage.vueHome.vue总结全局路由守卫路由前置守卫src/router/index.js路由后置守…

Qt QShortCut快捷键原理、实现和应用

应用 QShortCut方式的快捷键有好几种使用方式: 1.通过绑定QAction或QMenu的方式。QAction和QMenu都提供了setShortcut()接口; 2.实例化一个对象:然后绑定信号槽activated()信号: auto shortcut new QShortcut(QKeySequence(tr(…

Postgresql源码(102)子事务控制语句分析

1 子事务控制语句分析 1.1 执行savepoint 执行函数: 【立即执行】→DefineSavepoint→PushTransaction(从utility框架进入)【延迟执行】→StartSubTransaction(从顶层事务框架CommitTransactionCommand进入) 准入条…

差分毫伏输出传感器信号隔离转换模块放大器0-10mV/0-20mV/0-±10mV/0-±20mV

概述:DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入…

代码随想录-57-106. 从中序与后序遍历序列构造二叉树

目录前言题目1.递归(区间,左闭右开)变量2. 本题思路分析:3. 算法实现4. 算法复杂度5. 算法坑点前言 在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想…

Java注解怎么用

什么是注解 Java的注解(Annotation)是一种元数据,它可以提供程序的额外信息,帮助程序员更好地管理程序。注解通常被用作代码的标记或者指定某些行为的方式。在Java中,注解以符号开头,放在代码的各个位置&a…

【数据结构】千字深入浅出讲解队列(附原码 | 超详解)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…

linux驱动学习加强版-2(文件驱动的书写)

文章目录一、驱动的外设二、驱动操作文件原理三、编写一个驱动程序3.1 编写驱动程序的步骤3.1.2 确定主设备号以及注册驱动3.1.3 实现对应的函数四、一些错误现象一、驱动的外设 我们的设备硬件都需要驱动才能工作,没有驱动的硬件可以称之为废铁,没有硬…