<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhm1949的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhm1949</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhm1949]]></copyright><item><title><![CDATA[Linux多进程间通信——消息传递实现]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/125449689</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/125449689</guid><author>zhm1949</author><pubDate>Fri, 24 Jun 2022 17:32:16 +0800</pubDate><description><![CDATA[之前已经分享了共享内存、管道、套接字来实现多进程的通信，下面再介绍一下消息队列，后面我还会再介绍最后一个多进程的通信方式，通过信号来实现，这样多进程通信的就全部讲完了。]]></description><category></category></item><item><title><![CDATA[Linux多进程间通信——管道通信实现]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/125449666</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/125449666</guid><author>zhm1949</author><pubDate>Fri, 24 Jun 2022 17:30:35 +0800</pubDate><description><![CDATA[之前分享了linux多进程间通信的两种方法，套接字和共享内存通信。今天来分享一下另外一种多进程通信方法——管道。]]></description><category></category></item><item><title><![CDATA[嵌入式开发板RS485多节点串口编程——关节力矩传感器数据读取]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/125245334</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/125245334</guid><author>zhm1949</author><pubDate>Sun, 12 Jun 2022 14:41:07 +0800</pubDate><description><![CDATA[最近学业繁忙，主要是准备找工作，有一段时间没分享了，今天给大家分享一下我最近利用TI AM4376开发板RS485串口读取两个关节力矩传感器的数据，我们这个关节力矩传感器用在外骨骼机器人上。后面我也会将我最近找工作的经历分享给大家，主要包括笔试、面试的准备，希望能给正在准备找工作的应届生一些帮助。...]]></description><category></category></item><item><title><![CDATA[Linux多进程间通信——套接字实现]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124909618</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124909618</guid><author>zhm1949</author><pubDate>Sun, 22 May 2022 13:25:56 +0800</pubDate><description><![CDATA[Linux多进程间通信——套接字实现
前面我们分享了进程间通信的一种方式——共享内存，现在我们来讲实现不同主机之间的进程间通信方式，其实这个问题我之前就讲过，这里再给大家总结一下。
下面就是UDP/TCP网络编程中常用的API接口函数：
int Socket_fd = socket(AF_INET, SOCK_DGRAM, 0);//指定协议族AF_INET/PF_INET,SOCK_DGRAM/SOCK_STREAM使用数据包传输还是字节流传输
struct sockaddr_in address;//I]]></description><category></category></item><item><title><![CDATA[Linux多进程间通信——共享内存实现聊天室程序]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124909566</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124909566</guid><author>zhm1949</author><pubDate>Sun, 22 May 2022 13:22:10 +0800</pubDate><description><![CDATA[Linux多进程间通信——共享内存实现聊天室程序
上一讲我们用共享内存实现了进程间的简单通信，一个进程写，一个进程读，我们这次增加一点难度，创建两块共享内存，来实现一个简单的聊天室程序。
先自己动手做一下，再来看源码。
下面给出源码，一共有四个进程，两两实现通信，互相收发消息
shmmutexRW_Server.c代码如下：
#include &lt;semaphore.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt]]></description><category></category></item><item><title><![CDATA[Linux多进程间通信——共享内存实现]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124909541</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124909541</guid><author>zhm1949</author><pubDate>Sun, 22 May 2022 13:20:40 +0800</pubDate><description><![CDATA[Linux多进程间通信——共享内存实现
又到了每周分享时刻，这周我要分享的是关于Linux中进程间通信问题，这对于底层程序的实现至关重要，进程间通信方式主要包括管程、共享内存、消息传递、套接字这几种方式，这个专题我主要介绍两种进程间通信方式，共享内存和套接字通信。为什么介绍这两种呢，因为共享内存是实现进程间通信最有效的方式，效率高，创建一块虚拟共享内存之后，所有的进程只要映射到这块内存之后就可以完成通信，但是需要做好进程间的同步与互斥。而socket套接字通信又是实现不同主机进程通信的方式，掌握了这两种通信]]></description><category></category></item><item><title><![CDATA[嵌入式字符设备驱动——ULN2003步进电机驱动程序实现]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124784600</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124784600</guid><author>zhm1949</author><pubDate>Sun, 15 May 2022 17:10:17 +0800</pubDate><description><![CDATA[嵌入式字符设备驱动——ULN2003步进电机驱动程序实现
之前分享了字符设备驱动程序的实现——hello驱动，是不涉及硬件操作的，我说过要给大家分享一篇涉及硬件操作的字符设备驱动程序的实现，今天周末休息，就把我之前挖的坑给大家填上，本来我打算先给大家分享一个最简单的涉及硬件操作的设备驱动程序的实现——按键/LED驱动的，把这个步进电机的驱动程序留给你们后面先自己做一下，想了想其实都是最基本的，就直接上步进电机吧，下面我们开始学习步进电机驱动程序的实现吧！！
字符设备驱动程序实现的步骤
这个我之前讲过了，再温]]></description><category></category></item><item><title><![CDATA[一文彻底搞懂嵌入式中UART、RS232、RS485、CAN协议]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124773283</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124773283</guid><author>zhm1949</author><pubDate>Sat, 14 May 2022 20:16:44 +0800</pubDate><description><![CDATA[一文彻底搞懂嵌入式中UART、RS232、RS485、CAN协议
之前分享过一些使用UART、RS232、RS485、CAN协议进行传感器数据读取、伺服电机控制的文章，但这些协议之间到底有什么不同，工作原理又到底是什么，还是非常有必要好好总结一下的。
UART
UART又称通用异步接收/发送装置，简称“串口”，是一个要完成一个特定功能的硬件，它本身并不是协议。一般可用于调试（打印调试信息）和外接各种模块，串口结构简单、稳定可靠。有三条线，发送线（TXD）、接收线（RXD）、地线（GND）。在与硬件连接时，连]]></description><category></category></item><item><title><![CDATA[嵌入式开发板CAN通信编程——伺服电机驱动]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124647989</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124647989</guid><author>zhm1949</author><pubDate>Sun, 08 May 2022 14:44:11 +0800</pubDate><description><![CDATA[嵌入式开发板CAN通信编程——伺服电机驱动
在实际的嵌入式项目开发过程中，若不涉及上位机与开发板的通信传输数据，那最关键的无非就是两个内容，读取传感器的数据并处理，驱动硬件设备工作。传感器数据的读取内容在前面我已经讲过了，主要就是TTL、RS232、RS485协议的串口编程，我分别给了实例，读取光敏电阻传感器的状态和倾角传感器的实时角度测量信息。那就还有一个下发指令驱动硬件工作的内容，硬件设备的驱动程序一般都由设备厂家完成，集成在设备的驱动器上（关于字符设备驱动程序我之前讲了不涉及硬件操作驱动的程序实现，后]]></description><category></category></item><item><title><![CDATA[嵌入式开发板RS485协议串口编程——角度传感器数据读取]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124640979</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124640979</guid><author>zhm1949</author><pubDate>Sat, 07 May 2022 23:22:30 +0800</pubDate><description><![CDATA[嵌入式开发板RS485协议串口编程——倾角传感器数据读取
之前分享过一篇嵌入式操作系统开发板中的串口编程——光敏电阻数据读取，是基于TTL协议的串口编程，本节主要讲述基于RS485协议的串口编程，掌握了这两种嵌入式开发板的串口编程方法，就基本掌握了嵌入式开发板中对于大多数传感器的数据读取。
RS485通信协议
RS485通信协议是一种串行通信协议，相比于RS232通信协议通信距离短、速率低的缺点，RS485传输距离更长，传输速率最高可达10Mbit/s。RS485通信协议采用的是半双工工作方式，只能有一点处]]></description><category></category></item><item><title><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（四）]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124553243</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124553243</guid><author>zhm1949</author><pubDate>Tue, 03 May 2022 12:06:01 +0800</pubDate><description><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（四）
进入到五一假期的第四天，通过前三天的分享，相信你应该已经掌握了QT的基本使用、UDP网络编程、v4l2视频处理模块、多线程编程等基本的知识点。其实昨天我们就已经完成了视频监控的功能，只不过功能不够完善，上位机软件界面不够美观和实用，今天呢，我想把这个嵌入式实战项目的最后一点工作留给你们来做，软件界面设计的主动权交给你们。下面我只对这个项目所涉及的知识点做最后梳理。
包含的知识点：
开发板：开发板的内核，设备节点，服务器网络通信程序，多线程编程，Linux操]]></description><category></category></item><item><title><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（三）]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124552598</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124552598</guid><author>zhm1949</author><pubDate>Tue, 03 May 2022 11:25:06 +0800</pubDate><description><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（三）
进入到五一假期第三天，继续我们的项目。本来五一假期还是想好好休息一下的，因为最近学习的状态不太好，刷题都没有思路了，但是身边的同学太卷了，不过我还是想放松一下，所以上午睡觉，下午复盘一下这个项目分享出来。等假期结束之后，再好好冲刺一波。
前两天分别介绍了QT的基本使用以及UDP网络编程，实现了用QT编写一个上位机与开发板进行数据传输。这些工作完成之后我们就可以开始关注在上位机中显示视频画面了，这里面涉及到开发板内核的视频画面获取与处理，然后通过UDP网络通]]></description><category></category></item><item><title><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（二）]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124531221</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124531221</guid><author>zhm1949</author><pubDate>Sun, 01 May 2022 19:32:34 +0800</pubDate><description><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（二）
昨天我分享了关于QT的基本使用方法，掌握了这些基本的方法就可以设计一个简单的视频监控界面。下面我们开始分享完成这个嵌入式项目同样重要的知识点——UDP网络编程，网络编程是实现上位机与开发板通信的重要手段，在TCP/IP协议族中TCP/UDP是传输层实现数据传输的两种方式，TCP传输层协议在传输数据时需要先建立TCP连接，连接建立需要三次握手，关闭连接又需要四次挥手，TCP协议是基于字节流的传输协议，是一种稳定可靠的传输方式，但是它不适合于视频传输，视频传输]]></description><category></category></item><item><title><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（一）]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124519686</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124519686</guid><author>zhm1949</author><pubDate>Sat, 30 Apr 2022 22:01:28 +0800</pubDate><description><![CDATA[嵌入式项目实战——基于QT的视频监控系统设计（一）
这个五一因为疫情，只能待在家里，想了想不如将我之前做的一个小的嵌入式的练习项目分享出来，供入门嵌入式的同学们学习。基于QT的视频监控系统设计虽然是个小项目，但是涉及的嵌入式的知识点还是比较多的，比如多线程编程，网络编程，QT界面设计，LCD显示，如果有时间我也会介绍一下触摸屏的使用，v4l2视频解码以及嵌入式开发板的基本操作。下面就开始我们五一假期的学习吧！！
第一天：QT的基本使用和UDP网络编程
一、QT的基本使用——完成一个简易的随机选餐软件设计
Q]]></description><category></category></item><item><title><![CDATA[嵌入式操作系统开发板中的串口编程——光敏电阻数据读取]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124412316</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124412316</guid><author>zhm1949</author><pubDate>Mon, 25 Apr 2022 19:30:01 +0800</pubDate><description><![CDATA[嵌入式操作系统开发板中的串口编程——光敏电阻数据读取
在嵌入式操作系统开发板中一般都会拥有几个串口UART驱动，我们只需要应用程序中打开UART设备节点，初始化设置UART，比如设置停止位、数据位、奇偶校验位、波特率等，这些Linux操作系统给我们提供了现成的结构体，我们只需要调用结构体，设置相应的标志位即可。
下面的程序首先对串口进行初始化设置。
#include &lt;stdio.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt]]></description><category></category></item><item><title><![CDATA[Typora+PicGo+Github图床实现自动上传图片]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124384197</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124384197</guid><author>zhm1949</author><pubDate>Sun, 24 Apr 2022 15:34:19 +0800</pubDate><description><![CDATA[Typora+PicGo+Github图床实现自动上传图片
1.首先安装Typora
网上资源很多，你们自己去找吧，实在找不到可以留言，我分享给你。
2.设置Typora
首先设置Typora的偏好设置，依照下图中的设置即可。上传服务选择PicGo(app)，然后点击下载，下载正式版本的，比较稳定一些。安装PicGo之后，将app的路径添加到Typora，如图中所示。

3.配置Github
注册一个Github账号，新建一个文件夹用于保存你的图片。

文件夹设置如下，一定要是public

之后就是生成你]]></description><category></category></item><item><title><![CDATA[嵌入式字符设备驱动程序]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124365131</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124365131</guid><author>zhm1949</author><pubDate>Sat, 23 Apr 2022 16:09:26 +0800</pubDate><description><![CDATA[嵌入式字符设备驱动程序hello驱动程序的测试程序
前面分享了不涉及硬件操作的hello字符驱动程序的设计过程，这次分享一下相应的测试程序。
后面我会结合STM32MP157开发板，给大家分享涉及硬件操作的字符设备的驱动程序该如何实现。并给大家演示在开发板上的操作。
五一假期我也会在公众号（河边小乌龟爬）带着大家用五天的时间完成一个嵌入式相关的小项目：基于QT的视频监控系统。
通过这个项目大家能够掌握QT界面设计及编程的基本知识，与开发板实现UDP通信，多线程编程，v4l2视频处理模块，及开发板设备驱动节点]]></description><category></category></item><item><title><![CDATA[嵌入式字符设备驱动程序]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124353378</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124353378</guid><author>zhm1949</author><pubDate>Fri, 22 Apr 2022 19:38:12 +0800</pubDate><description><![CDATA[嵌入式字符设备驱动程序
字符设备驱动程序是将硬件设备封装的方法，对操作系统和应用程序隐藏硬件细节，仅向上提供API，即应用程序接口，read/oped/write/close等API函数接口。
嵌入式分为应用层，操作系统Linux层，驱动层，硬件层。以应用程序打开一个文件为例：
应用层：fd = open("/dev/myled", O_RDWR);
linux操作系统层会有一个sys_open()与之对应
驱动层struct file_operations结构体中定义.open = drv_myled_o]]></description><category></category></item><item><title><![CDATA[Linux 常用命令]]></title><link>https://blog.youkuaiyun.com/zhm1949/article/details/124353213</link><guid>https://blog.youkuaiyun.com/zhm1949/article/details/124353213</guid><author>zhm1949</author><pubDate>Fri, 22 Apr 2022 19:27:32 +0800</pubDate><description><![CDATA[Linux 常用命令
change：改变	directory：目录	list：列出	print：打印	make：创建
remove：删除	copy：复制	move：移动	clear：清除
-r：recursive，递归地，即所有文件
-f：force，强制删除
很多命令都是从这些单词中简化而来的
1.创建文件和文件夹命令
mkdir -p(路径)  -m(权限)  目录名
touch 文件名
rmdir 目录名（为空）
rm -r 目录名
rm 文件名
2.改变工作路径
cd
3.显示当前目录的绝对路径
p]]></description><category></category></item></channel></rss>