- 博客(56)
- 收藏
- 关注
原创 使用Supervisor 管理你的进程
在/etc/supervisor 查看 supervisord.conf配置信息。在同级目录下有个conf.d文件夹,这里面存放着每个运行程序的配置信息。配置好后 执行 sudo supervisorctl update。下载安装这一步就不说了网上有一堆,今天主要记录下我的实际项目配置。
2024-08-28 09:26:31
180
原创 树莓派更新的时候遇到 The following signatures couldn‘t be verified because the public key is not available
【代码】树莓派更新的时候遇到 The following signatures couldn‘t be verified because the public key is not available。
2024-04-17 20:22:29
231
原创 itop4412编译内核时garbage following instruction -- `dmb ish‘ 解决方案
结果发现报错,error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]2.你以为更新完就可以?为了我把.bashrc 中编译器路径也改了,为了防止他们冲突。1.更新编译器 sudo apt-get install gcc-arm-linux-gnueabi。再次编译—— 嗯通过了 (时间过去了四小时。王德法 没人指导的学习路上磕磕绊绊太耗费时间了。接下来 再编译 这里我执行的是。
2024-04-13 22:05:27
241
原创 itop4412内核编译_编译自定义函数到内核
在日常工作过程中,编写内核程序可能机会不多,但是将厂商提供的内核源码编译到固件中,这个技能还是必须掌握的。我的itop4412开发板是半路捡的,所以没办法加他们的售后群,遇到的问题只好一点点记录吧。itop4412的资料中有两个内核源码文件夹,咱们一个一个来认识下。
2024-04-13 18:29:14
231
原创 迅为开发板itop4412内核编译出现Error: selected processor does not support ARM mode ‘smc 0解决方案
网上查了半天都是让我修改文件啥的还改不好,我就纳闷了,按理说这个环境都是他们配置好的我直接调用就可以了,怎么会出现这个问题呢,折腾了几个小时 vocal!1.如果你修改了 .bashrc的环境配置,在 source .bashrc 后一定要重启虚拟机否则 你怎么编译都会出现上面的报错,可给我整无语了。无语到死 内核编译的时候出现了。
2024-04-06 22:07:10
193
原创 itop4412移植lrzsz工具踩坑笔记
4412开发板在传输文件一直用的都是tftp文件传输,但这样效率有点慢,平常在linux上习惯用lrzsz工具来传输文件,特此记录下,因为不熟悉linux编译 踩坑了很多地方。最后将编出的文件lsz lrz(在src文件夹下)拷贝到开发板/usr/sbin/目录下,然后敲lsz 或lrz就可以。在操作前 我们的虚拟机要线安装好编译环境。3.回到 文件目录 执行 make。
2023-11-25 16:47:47
608
原创 使用python将word转pdf
平常想将word转pdf,只能使用办公工具,但是这些工具还收费,真实太犊子了,净想着平民手里的三瓜俩枣了。今天发现用python 可以将word转pdf,很好用特别记录下、可以直接调用。
2023-11-07 09:52:26
1391
原创 SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!如何解决
SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!如何解决。
2023-10-31 16:41:08
64
原创 Windows下Mosquitto服务配置监听任何IP,搭配使用MQTTX
【代码】Windows下Mosquitto服务配置监听任何IP,搭配使用MQTTX。
2023-10-10 11:32:33
1130
原创 LUCI笔记
LUCI里面,也可以说是Lua里,对于字符的操作比较少,我是PHP出身,PHP里常用的一些函数LUCI里面都没有,都要自己去定义,在这里共享一下我找到的字符串截取和去除字符串空格的函数。最后调用HTTP处理类中的重定向函数redirect()来进行跳转,而为了URL格式规范,所以这里使用了基础类中的build_url()函数来生成规范的URL路径。LUCI作为openwrt的内嵌CGI处理框架,它有自己的方法去的直接执行Linux的一些命令,以达到一些直接操控的目的。– 字符串为lua: v1.122。
2023-09-25 19:11:46
261
原创 pycharm 出现Could not find a version that satisfies the requirement pyinstaller(from versions: )
今天试了各种方法都不行,后来终于发现问题的关键原因就是源的不同会导致这个问题的产生,比如使用豆瓣 和 阿里的地址 就不行 后来我换清华的就可以终端里运行pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn...
2022-07-13 14:34:45
1317
原创 Trot服务器易错点
真坑爹啊,没想到这个东西搞了半天TFTP是简单文件传输协议,是一个基于UDP协议实现的用在客户及和服务器之间进行简单文件传输的协议,适用于开销不大,不复杂的应用场景。TFTP协议专门为小文件传输而设计,只能从服务器获取文件,或者客户端往服务器写入文件,但是不能进行认证也不能列出目录。首先,搭建TFTP服务器:1.安装xinetd,sudo install apt-get install xinetd2.安装tftp和tftpd,sudo apt-get install tftp tftpd3.配置
2022-07-13 14:31:58
97
原创 linux串口读取 GPS模块程序
最近找到一个GPS模块,在接上了CH340串口工具后,我想试试自己编写一个程序在Linux环境下读取GPS数值。串口编程的流程串口也是一种字符设备,串口编程的流程包括:打开串口:open函数初始化串口:自定义个函数,需要设置波特率、数据位、校验位等发送和接收数据:write和read函数关闭串口:close函数一般Linux系统中,在/dev目录下都会有tty*的设备节点,启动开发板,超级中输入命令查看如下,列出了多种形式的设备节点,这里GPS的节点是ttyUSB0.1.2 初始化串口
2022-02-15 16:25:44
1267
原创 Linux minicom使用
在使用minicom 遇到无法输入问题,网上查了好几种方法都不行,最终找到了原因。一下是操作步骤输入 minicom 进入界面按下 ctrl+a 然后按下 z 按键进入设置界面按下 O 进入端口设置 这里 设置波特率 + 端口 硬件流改为NO 保存退出 选择 save setup as dfl 然后选择EXIT下面这一步最重要 !!!!ctrl+a 后 按下z 重新进入配置菜单这一次选择E local Echo on/off..E 配置完成就可以输入了退出
2022-02-08 13:23:08
1167
原创 linux下makefile 程序编写 含泪
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-01-03 21:54:18
484
原创 socket 网络通讯
服务端``#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#include <netinet/in.h>int main(){ int num=5; int serv_sock=socket(AF_INET,SO
2021-12-16 21:46:45
78
原创 Linux查看设备端口号
在网络通讯中经常需要查看 端口占用情况 ,在此总结下 netstatnetstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。netstat -tunlp | grep 端口号-t (tcp) 仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化为数字-l 仅列出在Listen(监听)的服务状态-p 显示建立相关链接的程序名例如查看 端口号1234这里 3673/ser 分别是PID和程序名称知道这些我们就可以ki
2021-12-15 22:31:45
2633
原创 树莓派CM4六路串口设置及使用
最近在做公司项目的时候使用了CM4核心板,与底板相对应的是野芯科技的5G底板。有一个需求是调用串口接收GPS模块信息,在配置串口时候绕了好大一圈,现在准备总结下。树莓派包含两个串口1.硬件串口(/dev/ttyAMA0),硬件串口由硬件实现,有单独的波特率时钟源,性能高,可靠。一般优先选择这个使用。2.mini串口(/dev/ttyS0),mini串口时钟源是由CPU内核时钟提供,波特率受到内核时钟的影响,不稳定。3.将树莓派的硬件串口与mini串口默认映射对换输入命令修改sudo vim
2021-11-17 17:15:12
2390
原创 Linux如何在别的目录下执行我的脚本
作为一个新手小白每次执行程序的时候 我都要 cd cd cd cd 搞得我都崩溃了今天试了一个方法还挺好用的,但是又一个问题大家帮我看下首先我的执行程序在/home/pi/mk_demo/文件下 ,这里我创建了两个可执行文件并且chmod 777 ,普通脚本文件fun2.sh 和C语言编译后的文件function我操作的是1.sudo vim .bashrc在这个文件中添加 export PATH=$PATH:/home/pi/mk_demo/然后 source 开始生效然后程序就可以在
2021-11-02 22:59:19
1722
原创 2021-11-01
最近得到一个4412开发板在操作的时候想进行板子和主机的通讯,方便文件传输。我所采用的方式很简单 tftp之后在 根目录下我建立了一个文件 夹 /var/tftpboot 在这个文件夹里建立了一个文件。然后接上网线使用以下的命令就可以获取服务器的文件了tftp -p -r testA.txt -l testB.txt 192.168.2.155这条命令的意思是从服务器上下载一个文件名testA.txt的文件 并且改名成testB.txt 服务器的IP地址192.168.2.155tftp -p
2021-11-01 17:31:06
51
原创 linux rz和sz文件传输命令
今天看到公司的工程师在树莓派上使用sz 和rz 传输文件,感觉挺好用的,记录下首先需要安装 irzsz 这个库 没安装的话 直接输入会报错我使用的是SecureCRT 这个软件,可以在设置中选择上传文件的目录。安装好 lrzsz 便可以使用了rz 从pc机上传到树莓派输入 rz 后会跳出文件夹选择要上传的文件sz :树莓派传输到PC客户端sz 文件名 即可上传成功...
2021-08-23 17:07:56
267
原创 树莓派+VLC 实时显示摄像
自学的大半年终于入职了一家公司做嵌入式工程师,底薪一万,但因为我的基础比较薄弱,公司现在安排的是一些和技术相关的工作,比较简单。说实话,我已经很满足了,想想以前公司都是做维修的,根本接触不到研发,现在进入了研发部门,近距离的接触产品,感觉每天都是干劲十足,哈哈哈。以后就记录每天学到新知识的内容吧(技术太渣,希望各位大神勿喷)。在做产品的时候有一款监控是在VLC软件上实时显示监控内容的,现在我用树莓派进行环境搭建测试。1. 更新系统的安装程序sudo apt-get update &&
2021-05-07 18:35:40
2047
1
原创 socket 实现树梅派和电脑通信
端口号 我采用了自己设置的方式废话不多说直接上代码服务端#include"stdio.h"#include"string.h"#include"unistd.h"#include"stdlib.h"#include"sys/socket.h"#include"ctype.h"#include <arpa/inet.h>#define Port 6666#define IP "192.168.0.xxx" //这里填自己电脑的IP 使用ifconfig 看下自己的IP是
2021-03-12 19:33:12
241
原创 Linux 设置结构体对齐
#include"stdio.h"__attribute__(aligned(1)) //#pragma pack(1)typedef struct ST{ int a; char b;}P;__attribute__((packed)) //#pragma pack()
2021-03-10 22:48:43
328
原创 linux 进程之间 的通讯
**在linux进程中有时需要进程之间相互的通信mmap 内存映射就是其中一种 ,通过创建文件映射到磁盘,然后返回一个指针,这样就可以对磁盘进行读取mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,
2021-03-10 17:11:04
64
原创 Linux makefile 的编写
target=appsrc=$(wildcard ./*.c)obj=$(patsubst ./%.c, ./%.o, $(src))CC=gccCPPFLAGS = -I$(target):$(obj) $(CC) $(obj) -o $(target)%.o:%.c gcc -c $< -o $@.PHONY:cleanclean: rm $(obj) $(target) -f可以直接复制使用 make使用make clean 会删除在此之前
2021-03-09 21:27:45
56
原创 keil5调试常见的问题
**唉 真无语 我们总想着跑快点却忘了 自己走路还不是很稳在学STM32时候 总是会出现各种问题,这么多代码 你不可能 心算就能算出来哪里出了问题所以 会调试就显得特别的重要,但是我一开没去研究调试 导致遇到问题时 只能干瞪眼 一点点对比 猜测 这样做实在是浪费时间所以这次写一篇文章 记录下自己的学习之路**左边是软件仿真 右边是硬件在调试之前除了选择 晶振 还要在Dbug页面选择这些参数(注意信号要一样) 否者你会卡在 void SystemInit (void) 这个函数一直出不来
2021-03-04 22:09:47
1585
2
原创 STM32 DMA的使用
在我的理解呢,DMA就是一个外设,这个外设可以帮助CPU减轻负担,达到一种 多线程的状态。使用起来也就是配置寄存器(我是菜鸟)确定传输方向 外设到内存 还是内存到内存外设地址和内存的地址传输数据的长度 比如一个数组外设数据的大小 1,2字节内存数据的大小 几个字节确定 数据指针的增长模式是否开启内存到内存方向传输优先级使能DMAvoid DMA_Config(void){ DMA_InitTypeDef DMA_InitStruct; RCC_AHBPeriphClock
2021-03-02 14:28:59
315
原创 linux压缩命令
tar 压缩命令的使用tar ------------不使用 z / j的命令时,那么只是对文件或者目录打包c ------------创建x --------------释放f ------------指定压缩文件的名字v -------------显示提示信息 可以省略z ---------------使用gzip 的方式压缩文件----------- .gzj -------------使用 bizp2 方式压缩文件 ------- .bz2例子:压缩tar
2021-02-27 14:40:53
101
原创 linux创建多线程
```c创建多线程 void sys_err(char * str){ printf(" %s fail\n",str); exit(-1);}void * fun1(void *str){ int i = (int)str; sleep(i); printf("%dth fun1 id = %lu\n",i,pthread_s
2021-02-23 22:32:00
62
原创 C 语言学生管理链表
学C语言第一个做像样点的项目,链表一定是其中一个。哈哈 唉 谁让咱的战斗力只有5 呢。链表的中心思想就创建一个个节点,这些节点在内存中并不像数组是连续分配的,从逻辑上说 链表是分散的,就像是分散的点,但每个点里保存了下一个点的地址。看代码 : 无表头的链表/mnt/hgfs#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct ST{ char name[20]; int age; struct
2021-02-23 22:13:06
99
原创 linux 清屏函数
在操作学生管理系统时,想实现一个效果就是 清屏,试了好几种都不满意,终于让我找到一个合适的printf("\033c");这个可以 效果杠杠的
2021-02-20 22:39:18
772
原创 Linux GDB 调试
GDB调试第一步 生成调试信息的文件 gcc -g demo.c - o test使用 gdb test 进行 调试GDB 调试常用命令l (list) : 使用 l 显示源码,一次可以显示10行, 也可以使用 进行定点显示。比如 l 3,8 .显示第三行到第八行内容。p (printf) : 打印变量值, 如 p x打印 变量x的值whatis :查看变量的类型b (break) : b [行号] 在指定的行 设置断点 b [函数名]
2021-02-17 21:45:54
51
原创 二维数组
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};a 是数组首行(0 行)首地址,和首元素的地址虽然一样但是是有区别的。a+1 是指向第二行的首地址*(a +0) 是 第 0 行首元素的地址 //*(a+i)**(a+0) 是是首元素*(a+0)+1 是首行的第二个元素地址**((a+0)+1) 首行第二个元素值*(a+x)+y ----->>&a[x][y]**((a+x)+j) --->>a[x][
2021-02-17 16:47:14
80
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人