自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 IAR自动生成带CRC-32/MPEG-2校验的bin文件

下面的选项使用CRC-32/MPEG-2为例生成对应代码区域的校验码: 在IAR Embedded Workbench工程选项(Options)里面Linker选项里面生成Checksum。

2023-09-08 14:46:36 745

原创 keil 生成bin文件自动在文件末尾加入crc32校验

新建一个txt文件,复制如下内容,保存并更改文件名后缀为.bat。还可以知道该CRC校验使用的是哪一个参数模型~将如上代码命名为tool.bat放到如图目录。下载add_crc32.exe也放到该目录。点击编译即可自动完成命名和加入crc检验。将keil中user配置成上图红框。Options ->User配置。不放心的话可以去验证一波~

2023-09-06 19:51:51 2085 6

原创 keil如何生成bin文件

keil如何生成bin文件

2023-09-06 19:43:12 291

转载 C语言运算符优先级列表(超详细)

算术运算符 > 关系运算符 > && > || > 赋值运算符。同一优先级的运算符,运算次序由结合方向所决定。

2022-08-08 16:28:10 593 1

原创 Linux下如何设置程序的开机自启动功能

crond 是 linux 下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与 windows 下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动 crond 进程,crond 进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Systemd 服务是一种以 .service 结尾的单元(unit)配置文件,用于控制由 Systemd 控制或监视的进程。但是这个方法,我怎么都试不成功,如果有人知道怎么设置或知道问题出在哪的话,欢迎指点。...

2022-08-03 13:47:29 9913 3

原创 进程间的六种通信方式之socket

对于UDP来说,不需要要维护连接,那么也就没有所谓的发送方和接收方,甚至都不存在客户端和服务端的概念,只要有一个socket多台机器就可以任意通信,因此每一个UDP的socket都需要bind。UDP是没有连接的,所以不需要三次握手,也就不需要像TCP调用listen和connect,但是UDP的交互仍然需要IP地址和端口号,因此也需要bind。所以,监听的socket和真正用来传送数据的socket,是「这里需要注意的是,服务端调用。...

2022-07-31 16:14:52 7215 1

原创 Linux 4G模块pppd拨号上网脚本解析

在编写脚本之前,要先安装好ppp相关驱动,pppd已知pppd位于/usr/sbin,chat位于/usr/sbin,options位于/etc/ppp。要编写脚本,就要切换目录到/etc/ppp/peers,若没有peers目录则自行创建。因为是在/etc目录之下,需要使用sudo或者进入root模式才能创建或者编辑。安装ppp时,pppd就已经被固定到系统路径/etc/ppp找options,到/etc/ppp/peers找脚本文件。namename。...

2022-07-31 10:15:10 5671

原创 进程间的六种通信方式——管道 命名管道 详解

本篇紧接上篇信号——管道信号(Signal)socket信号量(Semaphore)共享内存(SharedMemory)消息队列(MessageQueue)

2022-07-28 21:33:06 1549

原创 gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

-Wall:开启所有警告(可以理解为warinig all),使用它能够使GCC产生尽可能多的警告信息。(非常推荐使用该选项)GCC给出的警告信息虽然从严格意义上说不能算作错误,但却很可能**成为错误的栖身之所**。一个优秀的Linux程序员应该尽量避免产生警告信息,使自己的代码始终保持标准、健壮的特性使用它能够使GCC产生尽可能多的警告信息。。所以将警告信息当成编码错误来对待,是一种值得赞扬的行为!...

2022-07-28 17:06:20 6619

原创 进程间的通信——信号篇

而常用的进程间通信(IPC,Inter-Process Communication)的方法有如下六种:信号(Signal )管道(Pipe)- socket信号量(Semaphore)共享内存(Shared Memory)消息队列(Message Queue)这里先什么是信号?信号是一种软件中断,提供了一种处理异步事件的方法,也是进程间通信的唯一一个异步的通信方式。Unix中定义了很多信号,有很多条件可以产生信号,对于这些信号有不同的处理方式。进程间信号是如何通信的?.........

2022-07-28 00:05:45 1927

翻译 chat(8)程序 man手册

chat程序定义了计算机和调制解调器之间的对话交换。它的主要目的是在点对点协议守护进程(pppd)和远程的pppd进程之间建立连接。

2022-07-27 16:10:49 4683

原创 popen()函数详解 具体问题具体分析 popen函数获取不到标准I/O流

先简单的解释一下popen函数吧~popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。type 参数只能是读或者写中的......

2022-07-26 15:38:14 5691 1

翻译 pppd程序的参数——man手册翻译

Point-to-Point Protocol Daemon——点对点协议守护进程pppd [ options ]PPP是用于在拨号调制解调器、DSL连接和许多其他类型上建立互联网连接的协议点对点的链接。pppd守护进程与内核PPP驱动程序一起建立和维护PPP与另一个系统(称为对等体)连接,并协商互联网协议(IP)地址的每一端链接。Pppd还可以对对等体进行认证和/或向对等体提供认证信息。PPP可以使用与IP以外的其他网络协议,但这种使用正变得越来越少。noauth //不需要身份验证我们通常把这

2022-07-21 16:09:07 3200

原创 TCP数据包发送的过程及实际问题解决 判断socket是否断开 解决socket数据传输数据丢失的问题

​先来简单描述一下场景,就是客户端向服务器端每隔一段时间上报数据,就比如说蔬菜大棚上报温湿度等信息给服务器,但是凡事总有意外发生,如果服务器发生故障或网络断开,二者之间建立的连接也随之断开了,那么数据将何去何从,当然是保存到数据库中了,如果write失败就保存到数据库中,待重连成功后再继续发送。这是篇文章是在看了今日头条后,回想起来自己曾今遇到过的一个关于socket套接字发送数据的问题,当时解决后并没有记录下来,现在正好看到了与之息息相关的知识,于是打算简单的谈一下~...

2022-07-17 11:03:40 1695

原创 C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块

Linux下串口编程的流程串口编程可以简单概括为如下几个步骤:​ 1.打开串口​ 2.串口初始化​ 3.读串口或写串口​ 4.关闭串口

2022-07-15 11:41:39 2861

原创 daemon函数理解及参数使用——daemon后进程退出的原因

最近在使用daemon函数的时候,遇到了一个不算问题的问题,一开始没有发现也是由于我对这个函数的参数没有深入了解过。下面来稍微深入了解一下这个函数:linux提供了daemon函数⽤于创建守护进程,使进程脱离控制台,在后台运行。函数原型:头文件#include <unistd.h>int daemon(int nochdir, int noclose);当nochdir为0时,daemon将更改进程的根⽬录为root(“/”)。(我就是在这里犯的错误)当noclose为0时,

2022-05-03 19:53:35 2427

原创 E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)

Ubuntu安装make的时候报错:翻译过来就是:无法获取lock/var/lib/dpkg/lock frontend-打开(11:资源暂时不可用)无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有另一个进程在使用它?看了别人的博客的解决方法是:sudo rm /var/lib/dpkg/lock-frontend //这里直接删除锁文件 sudo rm /var/lib/dpkg/lock这里我只删了第一个就已经可以正常下载make

2022-04-20 20:48:58 10314 2

原创 select、poll和epoll编写简单高并发服务器

1. select()函数select是一个计算机函数,位于头文件#include <sys/select.h> 。该函数用于监视文件描述符的变化情况——读写或是异常。头文件#include <sys/select.h>//使用select可能会用到的头文件#include <sys/time.h>#include <sys/types.h>#include <unistd.h>函数原型int select (int ma

2022-04-16 19:59:31 900

原创 socket多进程网络编程逐步解析

1.fork()函数创建子进程头文件#include<unistd.h>#include<sys/types.h>函数原型pid_t fork( void);(pid_t 是一个宏定义,其实质是int,被定义在#includesys/types.h>中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1函数说明一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。fork函数被调用一次但

2022-04-08 17:05:39 1940

原创 socket多线程

头文件#include <pthread.h>Compile and link with -pthread.gcc编译的时候一定要加**-lpthread**选项告诉链接器在链接的时候要连接pthread库。1. 关于线程的常用函数及简单说明int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict attr,

2022-04-06 20:25:38 1260

原创 __FUNCTION__、__FILE__等调试宏

C语言提供了很多宏,今天学习的过程中见到了__FUNCTION__这个宏,顺便百度了一下其它常见的宏。下面找了几个简单的例子。__FUNCTION__:当前函数的名称__FILE__:当前文件的名称__DATE__:代码运行时的日期 __TIME__:代码运行时的时间 __LINE__:所在行数参考代码:#include <stdio.h>void test(){ printf("Another function is: %s\n", __FUNCTION_

2022-03-29 17:29:19 2248

原创 域名解析——gethostbyname()函数及socket客户端域名解析

###gethostbyname()函数说明gethostbyname()——用域名或主机名获取IP地址头文件:#include <netdb.h>#include <sys/socket.h>函数原型:struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名。返回值是一个hostent的结构体。如果函数调用失败,返回NULL。结构如下:struct hostent{ cha

2022-03-26 22:16:52 4322

原创 accept函数的第三个参数的初始化问题

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-03-17 22:55:42 232

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除