自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式Linux开发,NFS文件系统挂载

不添加权限的话挂载可能会出现下面的错误。我已经安装过了,所以是下面的提示。

2023-11-15 19:44:53 284

原创 安装MinGW并在codeblocks下使用

选好以后在菜单栏选择 Installation->Apply changes 就会开始自动安装选中的包,安装好后就会在bin目录下看见安装好的exe可执行文件,也可以把bin文件夹添加到环境变量下。安装完成后会打开一个安装管理工具,在这个工具中我们选中想要安装的软件包然后安装到本地。安装好mingw后就可以在设置下编译器设置中的工具链设置中选择mingw使用。下载下来的知识一个安装器,我们双击安装会帮我们自动下载好相关文件。

2023-11-14 11:35:25 359

原创 python安装显示Requirement already satisfied: protobuf in xxx问题

这种问题一般是在环境变量中已经安装过此安装包,比如在anaconda3目录下。需要解决这个问题我们再用pip安装的时候就要指定绝对路径。

2023-05-22 17:13:03 401

原创 git仓库体积过大,如何减小?git仓库体积压缩,使用git-filter-repo删除历史大文件

如果我们在使用的过程中不小心将较大的二进制文件加入到仓库中,那么随着我们提交次数的增多仓库的体积将会不断的膨胀,例如我在项目中每次都会编译出一些so库文件,但是我并没有忽略这些文件,每次都会提交,随着时间的推移仓库体积不断膨胀,将不能再推送到远程仓库中我使用的是gitee远程仓库,由于仓库体积的不断膨胀,超出了最大限制,推送失败。

2023-03-31 14:17:08 3238 3

原创 linux amixer 设置和获取音量

linux amixer

2022-06-23 15:53:23 2823

原创 交叉编译libxls和xlslib用于excel xls文件的读写

1. 交叉编译libxls(读取xls文件)下载地址:http://sourceforge.net/projects/libxls/交叉编译tar -xvf libxls-1.6.2.tar.gz # 解压库文件sudo apt install autoconf-archive # 安装automake相关工具autoreconf -if # 生成configure文件./configure --host=arm-linux CFLAGS=-fPIC CXXFLAGS=-fPIC CC

2021-12-14 18:05:32 2768 4

原创 iconv 编码转换

**使用iconv 转换utf-8到gb2312的时候出现 iconv Invalid or incomplete multibyte or wide character 错误**将gb2312换成GBK即可参考 :https://blog.csdn.net/zhangxuechao_/article/details/72769873

2021-09-26 12:02:34 592

原创 QT QImage显示图片后缀问题,不能显示图片(Image is a null image)

QImage在加载图片的时候是按图片后缀识别图片类型的,加入我们有一张png的图片,但是图片后缀却是jpg,这时候按jpg加载就会出错,所以我们加载图片的时候可以给QImage指定后缀列表QImage image(imgPath, "bmp,jpeg,png,jpg");if (!image.isNull()) { ...}...

2021-09-15 13:45:41 2472

原创 在linux系统中保存配置文件后重启系统内容不生效

前言我的设备是一个arm linux设备,在ui界面上写入ini配置文件后立即断电重启设备,发现被修改的内容并没有写入到配置文件中,还是原来的内容。1. 分析我的配置文件使用fopen()的方式打开,虽然在关闭之前调用了fflush()才fclose关闭文件,但是内容并没有被立即写入到真正的磁盘文件中, fflush()是一个c库的实现,并非系统调用,我们man 一下fflush, 在man手册中可以看到这样一句话:man 3 fflushfflush() 仅仅刷新用户空间的由 C 库提供的缓

2021-09-11 11:58:14 870

原创 QT设置无边框窗口和透明窗口

前言有时候我们想做出比较好看的界面,这时候就要去掉qt原来的窗口标题栏。1. 去除边框和使窗口透明//去边框 同时保留窗口原有的属性setWindowFlags(Qt::FramelessWindowHint | windowFlags() );//把窗口背景设为透明setAttribute(Qt::WA_TranslucentBackground);2. 窗口置顶功能setWindowFlags(Qt::WindowStaysOnTopHint);...

2021-09-11 10:01:35 5539

原创 用 iperf 测试网卡吞吐率

1.下载iperfhttps://iperf.fr/iperf-download.php#windows下载好iperf后在windows下直接解压,然后在命令行启动iperf即可2.测试我们保证测试设备和pc在同一个局域网内,然后在windows上启动iperf,就可以开始测试pc端iperf -s // 启动iperf服务端设备iperf -c 192.168.5.21 -i 1 -t 60 -w 1M -p 5201-c 客户端-i 1 发包间隔1秒-t

2021-09-07 10:08:16 621

原创 vim 编辑文本会在最后添加一个空行问题解决

1. 前言今天在使用vim编辑文本的时候发现会在最后添加一个空行,这个空行用vim和great打开都是看不到的,用vscode或者其他编辑器打开就会发现后面多了一个空行,如果是普通的文本多个空行也就不用关心了,但是现在要用这个文本做一个进程的启动脚本用,多了一个空行让他的状态出现了错误。2. 解决方法vim -b xxxxset noeol或者写到.vimrc里set binaryset noendofline如果不是必须要用vim,可以使用vscode...

2021-07-08 15:58:40 1028

原创 QT UI线程错误(Backtrace stopped: previous frame identical to this frame (corrupt stack?))

1. 简述在qt程序中出现了Backtrace stopped: previous frame identical to this frame (corrupt stack?)错误,导致程序崩溃,gdb查看如下图:2. 原因分析自己是在一个QT线程中接收别的线程的消息,接收到消息后刷新主界面,所以刷新主界面的动作并不是在主线程做的,这有可能会导致Qt程序发生错误,后面做出了修改,界面的操作放在了主界面类的信号槽函数中,消息线程接收到消息后发送信号来通知主界面,由此解决了此问题,关于这个问题的具体原因

2021-06-02 19:39:41 3732

原创 嵌入式linux gdb调试(段错误调试)

1. 下载gdbftp://ftp.gnu.org/gnu/gdb 2. 交叉编译tar -xvv gdb-7.12.1.tar.gz./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=`pwd`/_installmakemake install编译完成后我们把gdb可执行文件拷贝到目标板上3. ulimit 打开core文件ulimit -c unlimited打开core

2021-06-02 19:28:47 389

原创 关闭内核printk打印

关闭内核printk打印有时候我们在应用层调试程序的时候想暂时屏蔽掉内核的无用打印,可以用以下方法暂时关闭echo 0 > /proc/sys/kernel/printk

2021-04-21 10:31:04 2024

原创 1126/1109嵌入式linux-ar下配置移远 EC200S 4G 模块

1. 简介要在嵌入式linux上支持EC200S模块我们需要按照移远的文档先配置usb的驱动,关于USB串口的配置我们不在此赘述,移远的文档写的很详细,我们重点在这里说下 ECM和RNDIS的配置。RNDIS即虚拟网卡,是分为主机和丛机的,如果使用从机的话我们的板卡可以虚拟成一个网卡使用,从机的配置如下:2. 板卡的RNDIS配置我们要是用EC200S模块那我们的板卡是作为RNDIS的主机(host)来使用的,那我们就需要开启RNDIS的支持,看官方的文档配置路径在下图:但是在上面的路径下我们

2021-04-19 21:11:16 1483 1

原创 gcc 的编译选项 -O 使用注意事项

1. 序言我们知道gcc 的 -O 选项是用来在编译时帮我们做优化的,但是这种优化是存在一定风险的,可能会导致代码并没有按照你的意图执行比如下面这段代码:#include <iostream>#include <pthread.h>#include <unistd.h>using namespace std;static int flag = 0;void test(){ int a = 10; int b = 20; c

2021-01-18 22:53:03 1087

原创 cmake交叉编译paho-mqtt-c并添加编译选项 -fPIC

1. 在交叉编译paho-mqtt-c时用的是cmake的方式编译的,如果我们想要添加一些额外的编译选项就需要我们修改CMakeLists.txtSET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -shared")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic -shared")2. 交叉编译$ git clone https://github.com/eclipse/paho.mqtt.c.git #下载源码

2021-01-04 12:01:17 1255

原创 linux下编译动态库时提示:`Curl_cmalloc‘ can not be used when making a shared object; recompile with -fPIC

1. 序言我在linux下编译动态库,其中使用到了curl的静态库,但是编译时报出错误:“`Curl_cmalloc’ can not be used when making a shared object; recompile with -fPIC”我们知道编译动态库的时候编译 .o 文件的时候需要加 -fPIC 这个连接,而我连接的culr库是没有...

2021-01-04 11:48:58 482

原创 Linux shell脚本中用expect实现自动输入密码

1. 安装 expectsudo apt-get install tcl tk expect2. 使用示例下面是一个scp的使用例子#! /usr/bin/expect # 表示使用expect的shell的交互模式set timeout 100 # 设置超时100秒,如果要执行的shell的命令很长可以设置超时时间长一些,expect超过超时时间没有检测到要找的字符串,则不执行,默认超时时间为10秒set password "root" # set对password赋值spawn s

2020-12-28 10:48:36 716

原创 OpenSSH移植

1. 简介OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。2. 下载移植的的时候需要用到openssh、openssl、zlib这三个库(openssh依赖于

2020-12-11 18:50:25 1444

原创 linux内核配置make menuconfig: 报错 Unable to find the ncurses libraries or the

linux内核 meke menuconfig 进行配置时出现如下错误 Unable to find the ncurses libraries or the这个错误是因为这是缺少 ncurses 库导致的问题解决,安装ncuress库sudo apt-get install libncurses5-dev

2020-12-06 23:05:45 300

原创 Windows下搭建QT开发环境

1. 下载 qt 的集成环境下载地址:http://download.qt.io/new_archive/qt/这里我们选择 5.11.1 这个版本下载下载exe文件即可2. 安装集成环境

2020-12-03 11:04:14 448

原创 在 linux 上安装 GitHub Desktop

1. ubuntu 安装 github desktop官方并没有提供github desktop,好在是开源的,所以有第三方的我们可以安装仓库地址安装方法$ wget -qO - https://packagecloud.io/shiftkey/desktop/gpgkey | sudo tee /etc/apt/trusted.gpg.d/shiftkey-desktop.asc > /dev/null$ sudo sh -c 'echo "deb [arch=amd64] https:/

2020-11-27 16:15:19 1159

原创 fatal error: sqlite3.h: 没有那个文件或目录

fatal error: sqlite3.h: 没有那个文件或目录这是因为没有安装sqllite3的相关库,安装以下库即可sudo apt-get install libsqlite3-dev

2020-11-27 14:17:15 1269

原创 ubuntu下NFS配置(用于嵌入式开发)

1. NFS简介NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。(引自百度百科)2. 配置ubuntu虚拟机如果开发使用的是虚拟机的话这块需要配置虚拟机的网络适配器为桥接模式,这样虚拟机才能跟主机在一个网段,跟你的目标板也才能在同一个网段3. 服务端安装3.1 使用命令安装直接使用apt inst

2020-11-26 17:06:57 228

原创 linux localtime_r()获取的时间比实际时间差八个小时

在linux下用localtime_r()获取的时间比实际时间差八个小时,这个一般是因为时区设置导致的,我们可以在 /etc/profile 中设置时区设置为CST时区,然后source /etc/profile export TZ='CST-8'关于时区的详解可以参考:https://www.douban.com/note/147740972/...

2020-11-19 18:20:41 2617

原创 linux下ntpdate网络对时引发的血案

序言事情是这样的,Mqtt里面用的时间超时是用系统时间戳来计算的,然后在测试的过程中偶然发现Mqtt 在进入yield 的过程中会出不来,就是一直在里面等待,然后我一路往下看代码也没发现有可能阻塞的地方,然后反过来看超时的地方用的是系统时间戳,这块引起了我的注意,果不其然,我用date查看系统时间是2036年,难道穿越了,这时间怎么不对,现在才2020年啊,难道是ntpdate对时的时候出问题了,这也不应该啊,我反复测试ntpdate也没出现问题,然后我发现这个问题只有在系统重启的时候才有可能出现看来是

2020-11-19 18:05:42 341

原创 Mqtt 客户端工具安装使用

1. 安装eclipse paho 工具下载地址:https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/选择版本:下载完解压就可以使用了,但是需要提前安装jdk环境,没有下载的可以到以下链接下载下载链接下载完根据提示直接安装即可2. eclipse paho 工具的使用打开工具,在文件下拉菜单下新建连接,在选项里可以配置详细参数

2020-11-16 18:06:48 249

原创 c++ 编译错误 vtable for xxx 未定义的引用

1. 问题描述在c++编译的时候出现了 vtable for xxx 斜体样式*未定义的引用 的错误,应该是虚函数导致的,代码如下:(ProcessBtData继承了虚类)class DeviceProcessData{public: virtual int processData(unsigned char *data, int len) = 0; /** * @brief Destructor */ virtual ~DeviceProcessData();};class

2020-11-11 09:33:34 4341 2

原创 QT之界面布局

1. Qt界面布局Qt的界面布局大致分为三类:水平布局、垂直布局、栅格布局(以下示例图出自一位灵魂画师)水平布局垂直布局栅格布局2. 我们为什么需要界面布局1. 美观美观是显而易见的,我们通过一个简单地示例来演示一下,下面这张图是没有布局的布局后的界面,布局后界面的控件都对齐了,所以整个界面显得更加的好看2. 防止在不同的屏幕上界面显示错乱(显示不全,越出边界)下面是在有布局的情况下我们随意拖动,放大,缩小窗口,改变分辨率,界面依然能完整的显示出来但是没有布局的情况下,

2020-11-08 14:59:22 1828

原创 QT程序打包成windows软件

1. 添加发布程序的图标我们在pro文件下添加程序的图标,图标的格式必须为ico格式在pro文件中添加如下语句, serial.ico是我提前准备好的图标文件,放在工程目录下RC_ICONS = serial.ico2. 修改编译模式为release模式选择release模式后,我们点击编译,会在工程目录下生成release目录,如下图在这个目录下找到release目录,里面有生成的.exe文件,exe文件的图标就是我刚刚添加的图标文件3. 利用windeployqt工具打包程序我

2020-11-07 22:16:40 183

原创 解决pyqt5使用designer.exe时报错 This application failed to start because it could not find or load th

1. 我们安装完PyQt5-tools后使用designer.exe时出现了以下错误PyQt5:This application failed to start because it could not find or load the Qt platform plugin这是因为运行时缺少相应的dll库所导致的2. 解决办法我们把 QT/plugins/platforms/ 下的dll复制出来,替换掉QT/bin/platforms/ 的dll文件即可,主要是缺少一个 qwindows.dll

2020-10-09 15:26:48 700

原创 stm32f091rc 使用 rt-thread时UART串口的阻塞问题

1. 问题描述在项目中用到了两个串口uart4和uart6,在使用uart6发送数据的时候会阻塞,猜想应该是驱动的问题,所以接下来进行分析2. 分析过程先分析串口驱动,关于串口驱动这部分的架构不再赘述,我们看下源文件,在发送的地方看到了一处while循环读取串口发送完成寄存器的代码while (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLAG_TC) == RESET);在整个发送数据的过程中也只有这处可能阻塞,这块阻塞的话肯定是在别处

2020-09-03 14:43:43 1785 3

原创 Stm32f091RCTX在 rt-thread下添加串口驱动遇到的问题

1. 问题描述在 rt-thread添加uart驱动 - stm32f091RCTx,这篇博客中我们描述了如何添加rt-thread的串口驱动,但是在添加完uart3的驱动后发现用DMA方式接收不到串口数据,经过一番测试后猜测应该是 DMA通道的问题,于是查看参考手册发现了问题所在,在C1S这个寄存器的值为零时,DMA的通道使用情况如下:我们使用STM32CubMX配置出来的初始画函数中,uart3使用的是 DMA1_Channel1 通道,但是在图中我们看出来USART3_RX 和 USART4_R

2020-08-26 18:46:13 304

原创 如何下载STM32的各种参考资料和手册

1. 通过官网下载官网链接:https://www.st.com/content/st_com/zh.html我们可以直接在官网搜索芯片型号即可,例如:点击具体的芯片型号,跳转进去,进来以后点击资源,各种文件就在下面了,可以直接下载查看2. 通过STM32CubMX 下载相关资料STM32CubMX可真的是一个神器啊,我们可以在上面找到各种资料...

2020-08-26 17:37:34 2742 1

原创 rt-thread添加uart驱动 - stm32f091RCTx

1. 在menuconfig中添加菜单选项串口驱动的Kconfig文件在bord目录中,打开Kconfig文件,添加我们的串口选项,我们添加的是uart3的驱动依次在UART2下面添加即可,如下图:保存后在env工具中执行menuconfig命令,在menuconfig的相应菜单下就看见了我们的UART3的选项,保存后重新生成mdk5工程,在rtconfig.h文件中就可以看见已经有BSP_USING_UART3 和 BSP_UART3_RX_USING_DMA的选项了3. 驱动实现我们使用的

2020-08-24 18:25:40 801

原创 rt-thread移植到 stm32f091RC并修改uart1位console串口

1. 生成初始化工程我们使用rt-thread的已有bsp来生成我们需要的mdk5的工程,使用如下图的bsp基础工程使用env工具来生成工程,在当前bsp目录下执行scons –dist ,然后在dist目录下就会生成相对应的工程以下是生成后的目录结构2. 工程配置打开mdk5的工程,配置芯片和debug选项3. 下载调试工程默认用的console串口是uart2,我想在工程中用uart1作为console和DEBUG用的串口,所以直接在配置文件中做了修改,如下:但是配置之后发现

2020-08-24 15:26:05 749

原创 git忽略指定文件或文件夹上传配置文件

1. 通用的配置文件 .gitignore## Ignore Visual Studio temporary files, build results, and## files generated by popular Visual Studio add-ons.# User-specific files*.o*.suo*.user*.userosscache*.sln.docstates# User-specific files (MonoDevelop/Xamarin Studio

2020-08-17 09:28:32 670

原创 使用libcurl出现的段错误问题解决

1. 问题定位在使用libcurl时出现了段错误,经过调试发现出现的时机是在断网的情况下,为了保持网络的自动恢复我会在程序中重启网络节点 ifconfig eth0 down,如果这时正在用 libcurl 做 GET 请求或者 POST 请求等就会出现段错误2. 分析出现原因libcurl在configure默认配置编译的情况下,它是使用alarm+siglongjmp实现域名解析超时。如果这个时候执行了 ifconfig eth0 downDNS解析会失败,然后 libcrl 会发出信号来打断等

2020-08-13 17:16:03 1795

Quectel_EC200S_Linux_USB_Driver_User_Guide_V1.0.pdf

移远EC200S linux USB 驱动配置

2021-04-19

DP83848C 数据手册

DP83848C芯片 数据手册

2019-04-15

空空如也

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

TA关注的人

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