嵌入式
小熊@XiaoXiong
这个作者很懒,什么都没留下…
展开
-
curl支持ssl错误:curl: (60) SSL certificate problem: certificate is not yet valid
在测试curl命令的时候发现curl: (60) SSL certificate problem: certificate is not yet valid出现这个错误,已经设置了ssl证书路径,最终发现是板子上时间不对,设置时间后可以正常使用。原创 2024-10-21 14:39:41 · 267 阅读 · 0 评论 -
curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate
在使用curl时返回CURLE_OUT_OF_MEMORY,猜想可能是ssl的问题,用curl命令做实验发现访问http没问题,访问https会有问题,根据打印log判断是缺少证书,需要下载证书并声明证书路径。原创 2024-10-21 09:11:10 · 408 阅读 · 0 评论 -
win10 提示pl2303hxa已停产,请联系供货商解决方案
需要下载老版的驱动,下载地址:https://www.pcsoft.com.cn/soft/211569.html。原创 2024-10-09 14:52:44 · 203 阅读 · 0 评论 -
VSCode用ssh连接ubuntu虚拟机实现远程访问文件夹
参考链接:https://blog.csdn.net/m0_48418397/article/details/136920175。连接后就可以打开我们想要访问的文件夹,连接的时候会提醒输入明码,我们按提示输入即可。保存配置文件并刷新,注意观察右下角会有连接进度。原创 2024-07-09 16:33:05 · 551 阅读 · 0 评论 -
嵌入式Linux开发,NFS文件系统挂载
不添加权限的话挂载可能会出现下面的错误。我已经安装过了,所以是下面的提示。原创 2023-11-15 19:44:53 · 376 阅读 · 0 评论 -
git仓库体积过大,如何减小?git仓库体积压缩,使用git-filter-repo删除历史大文件
如果我们在使用的过程中不小心将较大的二进制文件加入到仓库中,那么随着我们提交次数的增多仓库的体积将会不断的膨胀,例如我在项目中每次都会编译出一些so库文件,但是我并没有忽略这些文件,每次都会提交,随着时间的推移仓库体积不断膨胀,将不能再推送到远程仓库中我使用的是gitee远程仓库,由于仓库体积的不断膨胀,超出了最大限制,推送失败。原创 2023-03-31 14:17:08 · 3991 阅读 · 3 评论 -
交叉编译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 · 3141 阅读 · 4 评论 -
在linux系统中保存配置文件后重启系统内容不生效
前言我的设备是一个arm linux设备,在ui界面上写入ini配置文件后立即断电重启设备,发现被修改的内容并没有写入到配置文件中,还是原来的内容。1. 分析我的配置文件使用fopen()的方式打开,虽然在关闭之前调用了fflush()才fclose关闭文件,但是内容并没有被立即写入到真正的磁盘文件中, fflush()是一个c库的实现,并非系统调用,我们man 一下fflush, 在man手册中可以看到这样一句话:man 3 fflushfflush() 仅仅刷新用户空间的由 C 库提供的缓原创 2021-09-11 11:58:14 · 1012 阅读 · 0 评论 -
用 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 · 737 阅读 · 0 评论 -
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 · 4371 阅读 · 0 评论 -
嵌入式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 · 459 阅读 · 0 评论 -
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 · 558 阅读 · 0 评论 -
OpenSSH移植
1. 简介OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。2. 下载移植的的时候需要用到openssh、openssl、zlib这三个库(openssh依赖于原创 2020-12-11 18:50:25 · 1601 阅读 · 0 评论 -
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 · 272 阅读 · 0 评论 -
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 · 2806 阅读 · 0 评论 -
linux下ntpdate网络对时引发的血案
序言事情是这样的,Mqtt里面用的时间超时是用系统时间戳来计算的,然后在测试的过程中偶然发现Mqtt 在进入yield 的过程中会出不来,就是一直在里面等待,然后我一路往下看代码也没发现有可能阻塞的地方,然后反过来看超时的地方用的是系统时间戳,这块引起了我的注意,果不其然,我用date查看系统时间是2036年,难道穿越了,这时间怎么不对,现在才2020年啊,难道是ntpdate对时的时候出问题了,这也不应该啊,我反复测试ntpdate也没出现问题,然后我发现这个问题只有在系统重启的时候才有可能出现看来是原创 2020-11-19 18:05:42 · 390 阅读 · 0 评论 -
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 · 4696 阅读 · 2 评论 -
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 · 1976 阅读 · 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 · 359 阅读 · 0 评论 -
如何下载STM32的各种参考资料和手册
1. 通过官网下载官网链接:https://www.st.com/content/st_com/zh.html我们可以直接在官网搜索芯片型号即可,例如:点击具体的芯片型号,跳转进去,进来以后点击资源,各种文件就在下面了,可以直接下载查看2. 通过STM32CubMX 下载相关资料STM32CubMX可真的是一个神器啊,我们可以在上面找到各种资料...原创 2020-08-26 17:37:34 · 3339 阅读 · 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 · 887 阅读 · 0 评论 -
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 · 831 阅读 · 0 评论 -
嵌入式linux时间同步,ntpdate的交叉编译
1.交叉编译ntpdate下载:http://www.ntp.org/downloads.html 或者https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/配置./configure --prefix=$PWD/install --exec-prefix=$PWD/install --host=arm-linux CC=arm-linux-gcc --with-yielding-select=yes配置安装目录和编译器make在make的时候报原创 2020-06-24 13:49:26 · 746 阅读 · 0 评论 -
cmake链接动态库和静态库 - 交叉编译json-c
交叉编译json-c下载json-cgit https://github.com/json-c/json-c.git修改CMakeLists.txt文件// 修改json-c目录下的CMakeLists.txt文件link_directories(/usr/local/arm_linux_4.8/lib)target_link_libraries(${PROJECT_NAME} -lm)原创 2020-06-04 19:18:13 · 1971 阅读 · 0 评论 -
交叉编译libcurl并支持openssl
1. 编译openssl下载openssl openssl地址我使用的版本是 openssl-1.1.0l配置openssl 生成makefile./config no-asm no-async shared --prefix=/opt/openssl-lib --cross-compile-prefix=arm-linux-参数解析:no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的汇编代码是对arm格式不支持的shared: 生成动态连接库no-as原创 2020-05-29 16:30:50 · 918 阅读 · 0 评论 -
stm32栈空间分布分析——让你能更合理的设置栈空间,防止栈溢出
今天我们利用stm32来探究一下程序运行时的栈空间是怎么分布的,为什么栈空间设置不合理时会有栈溢出导致程序崩溃下面是我们要使用的测试代码,先贴出来, 为了更好地分析栈空间我们把栈空间用串口dump出来void hex_dump(unsigned char *p, int len){ uint32_t i, j; //printf("\n===============dump start...原创 2020-04-16 18:39:12 · 2516 阅读 · 0 评论 -
stm32F107VCT6 + CUBMX + DP83848 + lwip 移植
1.硬件配置关于硬件配置这块其实没什么可说的,因为用的是stm32CUBMX,所以基本上都是图形化配置一下就可以了打开 ETH 和 LWIP(我用的是MII模式)关于ETH和lwip的配置基本上都是默认,打开ETH的中断功能即可基本上硬件配置也就是这些,然后接下来生成工程,烧录即可,但是烧录之后发现网口灯不亮,这第一步就失败了,接下来车看原理图,发现默认的ETH里面还有...原创 2019-12-20 11:05:35 · 1505 阅读 · 2 评论 -
decawave1001-DEV简介开发环境搭建
1.decawave1001-DEV简介decvwave1001在1000模块的基础上上面增加了一颗nordic 的 nrf52832 ble芯片,使得decavave1001模块可以用手机通过蓝牙连接实现配置修改,使用decawave提供的配套app还可以在手机端通过蓝牙查看定位地图,可谓是十分的方便2.开发环境搭建首先我们在decawave的官网下载开发板的资料,我们只要下载下图中的...原创 2019-12-20 11:00:42 · 982 阅读 · 1 评论