没有合适的资源?快使用搜索试试~ 我知道了~
首页STM32MP157 Linux开发教程:全面实战与最新进展
STM32MP157 Linux开发教程:全面实战与最新进展
需积分: 13 15 下载量 130 浏览量
更新于2024-06-30
收藏 36.03MB PDF 举报
本教程是关于正点原子STM32MP157的嵌入式Linux C应用开发指南,由广州市星翼电子科技有限公司(正点原子)出品。教程以STM32MP157开发板为基础,旨在帮助开发者掌握这款高性能单片机在Linux环境下的软件开发技能。
作者原子哥通过其在线教学平台www.yuanzige.com和开源电子网论坛http://www.openedv.com/forum.php为学习者提供丰富的资源和支持。教程内容包括但不限于GPIO应用、输入设备控制、FrameBuffer编程、LED点亮控制、tslib库的使用、LCD上显示各种格式图像(JPEG、PNG)、LCD屏幕方向切换、字符显示、PWM应用、V4L2摄像头操作、串口通信、看门狗功能,以及在后续版本中新增的音频应用、网络基础知识和socket编程等高级主题。
每个章节都经过精心设计和不断迭代,从V1.0的初始版本到V1.2,不断修正了文档中的错误,并增加了新的功能和示例,以适应不断变化的技术需求。通过学习这个教程,开发者可以了解到STM32MP157在Linux环境下的完整应用开发流程,无论是初学者还是经验丰富的工程师都能从中受益。
此外,教程还提供了正点原子官方的淘宝店铺、官方网站以及B站视频等多种学习渠道,方便用户随时随地获取最新的教程更新和资料。原子哥APP也提供了免费的视频学习资源,确保学习体验的便捷性。若想了解最新更新,用户可以通过关注正点原子的公众号获取通知。
这是一份全面且实用的STM32MP157嵌入式Linux开发教程,适合希望通过实践学习和提升嵌入式系统开发能力的读者。
原子哥在线教学:www.yuanzige.com 论坛:http://www.openedv.com/forum.php
16
STM32MP157 嵌入式 Linux C 应用编程指南
29.1 网络通信概述 .................................................................................................................................... 888
29.2 网络互连模型:OSI 七层模型 ......................................................................................................... 888
TCP/IP 四层/五层模型 ................................................................................................................ 891
数据的封装与拆封 ..................................................................................................................... 892
29.3 IP 地址 ................................................................................................................................................. 893
IP 地址的编址方式 ...................................................................................................................... 893
IP 地址的分类 .............................................................................................................................. 893
特殊的 IP 地址 ............................................................................................................................ 895
如何判断 2 个 IP 地址是否在同一个网段内 ............................................................................ 896
29.4 TCP/IP 协议 ........................................................................................................................................ 896
29.5 TCP 协议 ............................................................................................................................................. 897
TCP 协议的特性 .......................................................................................................................... 897
TCP 报文格式 .............................................................................................................................. 898
建立 TCP 连接:三次握手 ........................................................................................................ 900
关闭 TCP 连接:四次挥手 ........................................................................................................ 902
TCP 状态说明 .............................................................................................................................. 904
UDP 协议 ..................................................................................................................................... 904
29.6 端口号的概念 .................................................................................................................................... 905
socket 编程基础 ............................................................................................................................ 906
30.1 socket 简介 .......................................................................................................................................... 907
30.2 socket 编程接口介绍 .......................................................................................................................... 907
socket()函数 ................................................................................................................................. 907
bind()函数..................................................................................................................................... 909
listen()函数 ................................................................................................................................... 910
accept()函数 ................................................................................................................................. 910
connect()函数 ............................................................................................................................... 911
发送和接收函数 ......................................................................................................................... 911
close()关闭套接字........................................................................................................................ 912
30.3 IP 地址格式转换函数 ......................................................................................................................... 912
inet_aton、inet_addr、inet_ntoa 函数 ......................................................................................... 913
inet_ntop、inet_pton 函数 ........................................................................................................... 913
30.4 socket 编程实战 .................................................................................................................................. 915
编写服务器程序 ......................................................................................................................... 915
编写客户端程序 ......................................................................................................................... 918
编译测试 ..................................................................................................................................... 920
CAN 应用编程基础 .................................................................................................................. 922
31.1 CAN 基础知识 .................................................................................................................................... 923
什么是 CAN? ............................................................................................................................ 923
CAN 的特点 ................................................................................................................................. 924
CAN 的电气属性 ......................................................................................................................... 924
CAN 网络拓扑 ............................................................................................................................. 925
CAN 总线通信模型 ..................................................................................................................... 926
原子哥在线教学:www.yuanzige.com 论坛:http://www.openedv.com/forum.php
17
STM32MP157 嵌入式 Linux C 应用编程指南
CAN 帧的种类 ............................................................................................................................. 927
31.2 SocketCan 应用编程 ........................................................................................................................... 928
创建 socket 套接字 ..................................................................................................................... 928
将套接字与 CAN 设备进行绑定 ............................................................................................... 928
设置过滤规则 ............................................................................................................................. 929
数据发送/接收 ............................................................................................................................ 929
回环功能设置 ............................................................................................................................. 931
31.3 CAN 应用编程实战 ............................................................................................................................ 931
CAN 数据发送实例 ..................................................................................................................... 935
CAN 数据接收实例 ..................................................................................................................... 938
第三篇 进阶篇 ............................................................................................................................................... 942
CMake 入门与进阶 ................................................................................................................... 943
32.1 cmake 简介 .......................................................................................................................................... 944
32.2 cmake 和 Makefile .............................................................................................................................. 944
32.3 cmake 的使用方法 .............................................................................................................................. 944
示例一:单个源文件 ................................................................................................................. 945
示例二:多个源文件 ................................................................................................................. 948
示例三:生成库文件 ................................................................................................................. 949
示例四:将源文件组织到不同的目录 ...................................................................................... 951
示例五:将生成的可执行文件和库文件放置到单独的目录下 .............................................. 952
32.4 CMakeLists.txt 语法规则 .................................................................................................................... 953
简单地语法介绍 ......................................................................................................................... 953
部分常用命令 ............................................................................................................................. 954
部分常用变量 ............................................................................................................................. 968
双引号的作用 ............................................................................................................................. 978
条件判断 ..................................................................................................................................... 979
循环语句 ..................................................................................................................................... 989
数学运算 math ............................................................................................................................ 994
32.5 cmake 进阶 .......................................................................................................................................... 995
定义函数 ..................................................................................................................................... 995
宏定义 ......................................................................................................................................... 999
文件操作 ................................................................................................................................... 1002
设置交叉编译 ........................................................................................................................... 1008
变量的作用域 ........................................................................................................................... 1015
属性 ........................................................................................................................................... 1021
32.6 总结 .................................................................................................................................................. 1028
实战小项目之 MQTT 物联网 ................................................................................................ 1029
33.1 MQTT 简介 ....................................................................................................................................... 1030
MQTT 的主要特性 .................................................................................................................... 1030
MQTT 历史 ................................................................................................................................ 1030
MQTT 版本 ................................................................................................................................ 1032
33.2 MQTT 协议(上) ........................................................................................................................... 1032
原子哥在线教学:www.yuanzige.com 论坛:http://www.openedv.com/forum.php
18
STM32MP157 嵌入式 Linux C 应用编程指南
MQTT 通信基本原理 ................................................................................................................ 1032
连接 MQTT 服务端 .................................................................................................................. 1035
断开连接 ................................................................................................................................... 1039
发布消息、订阅主题与取消订阅主题 .................................................................................... 1039
主题的进阶知识 ....................................................................................................................... 1042
33.3 MQTT 初体验 ................................................................................................................................... 1045
下载、安装 MQTT.fx 客户端软件 .......................................................................................... 1045
MQTT 服务端 ............................................................................................................................ 1047
动手测试 ................................................................................................................................... 1049
使用手机作为客户端 ............................................................................................................... 1054
33.4 MQTT 协议(下) ........................................................................................................................... 1059
QoS 是什么? ............................................................................................................................ 1059
保留消息 ................................................................................................................................... 1064
MQTT 的心跳机制 .................................................................................................................... 1066
MQTT 的遗嘱机制 .................................................................................................................... 1067
MQTT 用户密码认证 ................................................................................................................ 1069
33.5 移植 MQTT 客户端库 ..................................................................................................................... 1075
33.6 MQTT 客户端库 API 介绍 ............................................................................................................... 1084
MQTTClient_message 结构体 ................................................................................................... 1084
创建一个客户端对象 ............................................................................................................... 1085
连接服务端 ............................................................................................................................... 1086
设置回调函数 ........................................................................................................................... 1087
发布消息 ................................................................................................................................... 1089
订阅主题和取消订阅主题 ....................................................................................................... 1090
断开服务端连接 ....................................................................................................................... 1091
33.7 编写客户端程序 .............................................................................................................................. 1091
33.8 演示 .................................................................................................................................................. 1098
实战小项目之视频监控 ......................................................................................................... 1104
34.1 视频监控简介 .................................................................................................................................. 1105
34.2 Nginx 移植 ........................................................................................................................................ 1105
下载 Nginx 源码 ....................................................................................................................... 1105
下载 nginx-rtmp-module 模块 .................................................................................................. 1106
交叉编译 Nginx ........................................................................................................................ 1106
34.3 测试 nginx ........................................................................................................................................ 1114
34.4 配置 nginx ........................................................................................................................................ 1115
34.5 使用 FFmpeg 推流 ........................................................................................................................... 1116
原子哥在线教学:www.yuanzige.com 论坛:http://www.openedv.com/forum.php
19
STM32MP157 嵌入式 Linux C 应用编程指南
前言
首先欢迎大家阅读本篇文档,本文档为正点原子 Linux 团队所编写的《Linux C 应用编程指南》,基于
Linux 系统的 C 语言应用编程学习指南,其主要内容包括 Linux 基础应用编程知识、嵌入式系统硬件设备应
用编程以及实战小项目。本编程指南定义为基础入门文档,其中并不会对所讲解之内容进行深入剖析,适用
于 Linux 应用编程初学者,如果您已有多年的 Linux 应用编程经验,熟悉各种应用场合的 Linux 应用开发,
那本文档并不适合您阅读。对于 Linux 应用编程小白,如果您对 Linux 应用编程感兴趣亦或是想着将来从事
一份与之相关的工作,那么本文档是一个不错的选择!
虽然本文档定义为基础入门文档,但是对读者还有一定的要求,当然要求并不过分,只需要大家有一定
的 C 语言编程以及 Linux 操作系统功底,那么就满足本文档的学习要求了;学习应用开发并不要求大家先
学会驱动开发,应用开发与驱动开发本就是两个不同的方向,将来在工作当中也会负责不同的任务、解决不
同的问题,应用程序负责处理应用层用户需求、逻辑,而驱动程序负责内核层硬件底层操作,Linux 操作系
统向应用层提供了封装好的 API 函数(也称为系统调用),应用层通过系统调用可以完成对系统硬件设备
的操作、控制;所以学习应用开发并不要求大家得学会驱动开发,不过话又说回来,如果大家学过驱动开发,
那么必然对你学习应用开发是有一定帮助的,当然学习 Linux 应用开发并不针对于嵌入式行业,也可从事
PC 端应用程序开发工作以及其它相关工作。
Linux 应用开发学习与具体硬件平台无关,可以在 PC 端 Linux 操作系统下进行编程开发学习,譬如
Ubuntu、CentOS、Debian 等,亦可使用嵌入式 Linux 系统开发平台进行编程实战测试,譬如正点原子推出
的 ALPHA/Mini I.MX6U Linux 开发板、MP157 开发板以及领航者/启明星 ZYNQ 开发板。
如何帮助初学者顺利的转入 Linux 应用开发,为此笔者将本文档内容规划如下,内容总共分为三大块:
第一篇、入门篇
该部分内容基本涵盖了应用编程中的各种应用场合,学习应用编程必须要学习的内容,本部分内容包
括:文件 IO 操作、文件高级 IO、文件属性、系统信息、进程、线程、进程间通信、信号以及线程同步等内
容。为学习后面两篇的内容打下坚实的基础!
第二篇、提高篇
在调篇内容中,本书将会向大家介绍如何编写应用程序控制硬件外设,本书以正点原子 ALPHA/Mini
I.MX6U 开发板为例,向大家介绍如何编写应用程序控制板子上的各种硬件外设。譬如 LED、GPIO、PWM、
串口、摄像头、LCD、看门狗、音频、网络编程等。
尤其网络编程最为重要,同样也是最难的。Linux 系统是依靠互联网平台迅速发展起来的,所以它具有
强大的网络功能支持,也是 Linux 系统的一大特点,Linux 系统向应用层提供了丰富的 API 函数,譬如 socket
接口及其相关函数。本部分内容会向大家介绍网络基础知识,譬如网络编程架构、网卡、路由器、交换机、
TCP/IP 协议等等,最后向大家介绍如何使用 socket 接口进行网络编程开发;本文档定义为基础入门教程,
其中并不会过深地给大家讲解网络编程相关内容,旨在以引导大家入门为主;其一在于 Linux 网络编程本就
是一门非常难、非常深奥的技能,市面上有很多关于 Linux/UNIX 网络编程类书籍,这些书籍专门介绍了网
络编程相关知识内容,而且书本非常厚,可将其内容之多、难点之多;其二在于笔者对网络编程了解知之甚
少,掌握的知识、技能太少,无法向大家传授更加深入的知识、内容,如果大家以后会从事 Linux 网络编程
相关工作,可以购买此类书籍深入学习、研究。
第三篇、进阶篇
在本书的第三篇内容中,将会规划一些实战小项目来跟大家一起完成,譬如 MQTT 实战小项目,具体
的小项目目前还在规划当中,大家可以期待!学习第三篇的内容可以帮助提升大家的编程能力、开发能力、
以及遇到问题时的解决能力,当然前提条件是需要掌握好第一篇以及第二篇的内容。
原子哥在线教学:www.yuanzige.com 论坛:http://www.openedv.com/forum.php
20
STM32MP157 嵌入式 Linux C 应用编程指南
关于本文档内容规划就给大家介绍到这里,对于 Linux 应用编程,其实市面上有很多相关书籍,其中不
乏有很多笔者认为非常好的书籍,大家也可以购买这些书籍,用于在学习过程中参考、查阅,这里笔者给大
家推荐三本书籍,分别为《UNIX 环境高级编程》、《Linux/UNIX 系统编程手册》(分为上册和下册)、
《UNIX 网络编程》,这些书籍可以在淘宝网上购买得到,当然也有 PDF 电子版的可供大家选择;这三本
书籍都是非常不错的,内容涵盖广、知识点讲解到位、深入剖析,不管是初学者还是拥有多年编程经验的工
程师,这三本书籍都是不错的选择!当然除此之外,还有其它很多不错的书籍,笔者阅读此类书籍甚少,就
不便给大家推荐其它的了,如果大家还有其它更好的书籍推荐,欢迎大家在评论区留言!
最后感谢大家阅读本书,您对我们的支持和信任,是我们永往直前的信心和勇气,如果大家在学习过程
遇到了什么问题,正点原子为大家提供了一个技术交流平台 http://www.openedv.com/开源电子网,有什么问
题可以通过该平台与众多 Linux 开发者一起交流、讨论、一起学习、一起进步、一起成长,同时,由于笔者
知识水平有限,文中错漏与不足之处在所难免,恳请各位读者不吝赐教(笔者 QQ:773904075)。
剩余1121页未读,继续阅读
2150 浏览量
2491 浏览量
911 浏览量
2024-06-24 上传
3749 浏览量
2024-06-24 上传
2024-06-24 上传
niugao100
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功