自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【C语言】实现线程池

C语言线程池

2022-08-17 20:35:47 186 1

原创 vimdiff对比文件夹

在日常开发过程中免不了的是使用文件差异对比工具进行文本差异对比。常用的对比工具有meld、vimdiff、TextDiff等。但是meld、TextDiff等工具都是图形界面工具,对与纯粹的终端或者是linux服务器开发使用不是很友好。此时vimdiff这个vim的拓展工具的优势就体现出来了。vimdiff是vim的一个强大的文件对比工具,vim作为一个终端上的文本编辑器,vimdiff同样也继承了这一优点,vimdiff是一个终端的文本对比工具。可以说唯一的缺点就是只能进行两个文件的比较。我们在实际使用的

2022-06-24 22:35:23 2483

原创 qt使用笔记

QT官方交叉编译教程https://wiki.qt.io/Building_Qt_for_Embedded_LinuxQT源码下载地址https://download.qt.io/official_releases/qt/https://download.qt.io/archive/qt/QT4旋转QT4在使用QWS_DISPLAY宏设置旋转的需要在编译的时候开启-qt-gfx-transformed选项。通过QWS_DISPLAY宏定义设置旋转角度export QWS_DISPLAY='Tr

2022-05-11 17:15:37 255

原创 git使用笔记

git生成标准补丁git diff > git apply --reject --whitespace=fix 0001.diffgit打补丁:错误:new blank line at EOF. git apply --reject --whitespace=fix 0001.patch将git的子目录做成子模块参考博客git clone coloshine-server coloshine # 克隆仓库cd coloshinegit branch -r br1 origin/

2022-05-11 16:54:09 469

原创 memdump的C语言实现

#include <stdio.h>#include <string.h>#include <ctype.h>static const char * const hex_digit = "0123456789ABCDEF";static char quickhex (int i){ return hex_digit[i];}static void memdump (void *pv, size_t num){ int i; unsigned c

2022-05-11 16:30:58 356

原创 linux读取mac地址

背景在应用开发中,很多时候会使用到设备的MAC地址。通常在终端我们使用ifconfig获取网卡的mac地址。在程序中使用ifconfig获取mac地址需要使用管道的方式来获取信息。也可以通过iocatl的方式获取mac地址实现#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/ioctl.h>#include

2022-05-11 16:27:30 2890 1

原创 yuv和rgb888的相互转换

YUV转rgb888#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#in

2022-05-09 17:06:40 1292 1

原创 使用epoll检测gpio引脚

背景在应用层操作GPIO除了驱动以外主要是通过读取改变gpio子系统的文件内容来实现gpio的读写,但是当需要监测gpio的状态改变时循环去检测文件改变是会消耗大量cpu资源的事情,此时我们可以使用epoll来检测文件的改变代码实现#include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <unistd.h&gt

2022-05-09 14:30:43 1331

原创 C语言tcp模拟http

背景在单片机等平台常常没有资源使用curl等库去实现http请求,通常做法是使用tcp发请求体模拟发起http请求。本文给出一个简单的请求代码,目前只实现了post请求,其他请求就是请求体有细微差别,可自行拓展。实现http_tcp.h#ifndef __HTTP_TCP_H_#define __HTTP_TCP_H_#include <stdio.h>#include <string.h>#include <time.h>#include "lwi

2022-05-09 12:02:13 962 4

原创 C语言标准输入立即读取(ICANON),特殊字符(0x11, 0x0d, 0x13)的串口接收

背景在很多时候需要测试的场景下,或者类似与控制的场景下,我们希望每次从键盘上输入一个字符可以立即被程序读取到而不是需要换行以后才能被程序读取。此时我们需要设置标准输入的ICANON标志。在linux使用usart和外围硬件进行通信的时候,会有0x11, 0x0d, 0x13等特殊字符不能接收的问题,此时需要设置ICRNL、IXON等标志标准输入测试例test.c#include <stdio.h>#include <stdlib.h>#include <unist

2022-05-09 11:51:46 1723

原创 C语言程序对夏令时的处理

背景在设备应用中,用户需要根据自己的时区设置设备时区。在可交互的系统中或者完整的linux系统中可以通过设置/etc/TZ等时区文件链接的文件来修改设备时区。但是在一些rtos或者不能使用上面设置TZ文件方式的系统中,可以通过设置应用进程的TZ环境变量的方式来设置时区,此时在通过localtime等函数转换的时间就是本地时间了。效果展示$ make test ./timezoneEurope/London ts 1647169200, date 2022-03-13 11:00:

2022-04-27 17:50:39 2042

原创 backtrace

使用backtrace打印函数调用堆栈#include <execinfo.h>#include <stdio.h>#include <stdlib.h>/* Obtain a backtrace and print it to stdout. */void print_trace (void){ void *array[10]; size_t size; size_t i; size = backtrace (array, 10); p

2022-04-15 14:00:47 104

原创 C语言内存溢出调试

背景C语言中没有成对使用malloc和free会导致内存溢出。以下介绍查找内存溢出的方法。方法一:重写malloc和free在标准的glibc中,malloc和free都是弱函数,通过重写mall和free的方式来打印内存的申请和释放。#include <stdio.h>#include <malloc.h>extern void *__libc_malloc(size_t size);extern void *__libc_free(void *ptr);int

2022-04-15 11:35:04 2000

原创 交叉编译amazon-kinesis-video-streams-webrtc-sdk-c

一、平台信息Ubuntu 18.04君正T31mips-linux-gnu-gcc gcc version 4.7.2,使用uclibc二、获取SDKgit clone https://gitee.com/renpf08/amazon-kinesis-video-streams-webrtc-sdk-c.git三、交叉编译脚本#!/bin/bash# T31mkdir -p build_t31cd build_t31export CC="mips-linux-uclibc-gn

2022-04-13 11:05:36 985

原创 gcc编译不链接未使用的函数

编译选项-ffunction-sections // 使每个函数在编译成汇编文件时单独成节-fdata-sections // 使放在全局数据区的变量单独成节在编译C、Ada源文件(C++也可以),在gcc/g++编译选项中增加-ffunction-sections、-fdata-sections,在编译生成的.o目标文件中,会将每个函数或数据段,放在各种单独独立的section中;链接选项-Wl,--gc-sections // 传入链接器参数,只链接使用到的节在链接生成最终

2022-04-13 10:31:01 1525

原创 【笔记】strftime的使用方法

strftimestrftime是C语言标准库中用来格式化输出时间的的函数。下面是strftime的用法各参数意义代码使用示例#include<stdio.h>#include<time.h>#define print(s1, s2,s3) \ printf("%-20s%-30s%s\n",s1, s2,s3);int main(){ time_t rawtime; struct tm* timeinfo; char timE[80]; /

2021-12-29 15:37:28 5163

原创 C语言实现循环队列

使用C语言宏定义实现的一个简单队列使用需要注意:需要合理定义缓存长度,过长会浪费空间,过短会存在取出不及时数据丢失的情况#include <stdio.h>#include <stdlib.h>/* 队列操作,一下宏不能处理字符串,需要处理请重写读写宏 */#define OFFSET_CHECK(p,s) ( (p)>0?( (p) % (s)):( ((p) + ((p)/(s)+1)*(s)) % (s) )) ///< 返回一个合法的读写指针,p读写指

2021-11-11 11:32:26 1160

原创 gcc/g++ -finstrument-functions 追踪函数调用,获取程序的执行流程

本文借鉴https://blog.csdn.net/u014608280/article/details/82669330,在他的基础上进行了完善和介绍在实际工程中的使用方法。在阅读不熟悉大型工程特别是c++工程时,程序的回调,类的继承关系复杂会增加阅读难度。在使用gcc/g++编译工程时使用-finstrument-functions标志会函数进入和退出时调用钩子函数。void __cyg_profile_func_enter (void *this_fn, void *call_site);vo

2021-11-05 16:21:51 844

原创 交叉编译Bluez-5.0(uclibc)

BlueZ是Linux官方蓝牙协议栈。本文记录在Ubuntu18.04上基于uclibc交叉编译bluez-5.0版本。由于uclibc中部分glibc中的接口并没有实现,所以基于uclibc编译时需要寻找替代版本。本文参考了:https://blog.csdn.net/phoenixtree7/article/details/40857985本文编译、验证环境使用Ubuntu18.04 x86_64进行交叉编译目标机为君正T31工具链为:mips-linux-gnu-gcc,uclibc按照

2021-11-02 14:07:16 3324 2

原创 linux下局域网发现可以使用Telnet连接的设备

说明使用ping探查局域网下的所有IP,对可用IP发起Telnet连接#!/bin/bashset +mPORT=localadd=`/sbin/ifconfig |grep inet|grep -v 172|grep -v 127|grep -v inet6|awk '{print $2}'|tr -d "addr:"| tr '\n' ' ' `for ip in $localadddo if [ `echo $ip | awk -F '.' '$1 < 255 &a

2021-09-26 18:04:42 163

原创 C语言文件拷贝,busybox

从busybox中扣出来的文件拷贝和移动的实现源码#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <errno.h>#include <sys/stat.h>#include <sys/sendfile.h>int copy_file( const char *souse, const ch

2021-09-26 17:55:18 190

原创 C/C++程序日志管理

日志输出,通过使用本文件中的宏可以将日志输出到终端或者syslogd中。通过配置宏定义可以控制日志输出级别。使用适当的宏定义输出日志,在Debug阶段可以输出更多更详细的日志。#ifndef __LOG_H_#define __LOG_H_#ifdef __cplusplusextern"C"{#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <std

2021-08-23 17:25:25 519

原创 ubuntu 18.04安装wireshark

sudo apt-get install wireshark

2021-04-22 16:19:41 288

原创 Ubuntu 截图工具

sudo apt-get install flameshot

2021-04-17 14:15:06 175

原创 git打补丁:错误:new blank line at EOF.

git apply --reject --whitespace=fix 0001.patch

2021-04-17 14:11:43 2148

原创 ubuntu YUV数据查看软件

Vooya下载地址https://linux.softpedia.com/get/Multimedia/Video/Vooya-79539.shtml在上面的地址中下载deb文件,使用dpkg进行安装

2021-04-17 14:09:19 969

原创 Qt4和Qt5的屏幕旋转

在arm上进行Qt图形界面开发不可避免的一个问题就是屏幕的默认显示横屏竖屏和我们需要的显示方向不一致的问题。Qt4的解决方案Qt4具有官方的支持,在Qt4中在编译源码的时候添加编译选项-qt-gfx-transformed 然后就可以通过设置环境变量来设置屏幕的旋转方向export QWS_DISPLAY='Transformed:Rot270'其中参数支持0、 90、 180、 270.亲测qt4.8.6可用。Qt5的解决方案在Qt5中官方移除了Qt4的屏幕旋转属性。有两种方法进行显

2021-04-17 14:03:23 2120

原创 使用Makefile管理Qt工程

废话不多说,直接上Makefile# 设置交叉编译后的qt的路径QT_INSTALL_DIR=/usr/local/arm/qt4.8.6# 设置交叉编译链COMPILER_PREFIX = arm-linux-gnueabihf-CC=$(COMPILER_PREFIX)gccCXX=$(COMPILER_PREFIX)g++AR=$(COMPILER_PREFIX)arSTRIP=$(COMPILER_PREFIX)stripMOC=$(QT_INSTALL_DIR)/bin/moc

2021-04-10 15:47:26 2197

原创 Ubuntu18.04安装QT Creator

Ubuntu18.04安装QT Creator 小白 新学qt,尝试安装QT Creator。 根据各大教程尝试过在qt官网下载安装包等一系列教程。由于官方提供的是在线安装教程,故而安装时需要在线下载,安装速度十分的慢。 后来发现ubuntu可以直接通过apt安装sudo apt-get install qtcreator...

2021-04-10 14:24:56 1194 2

原创 关于STM32如何在应用程序中跳转到ISP固件升级

什么是ISPISP是STM32单片机使用串口下载升级程序的下载协议。通过上电检测Boot0和Boot1的电平从不同的位置运行程序。本文实现的功能通过在用户的应用程序中触发更新标志,将程序跳转到System memory中去执行32的ISP固件升级代码上代码/** * Function to perform jump to system memory boot from user app...

2019-04-23 21:14:35 2983 5

qt_test.zip

Makefile管理编译Qt模板。可以脱离qt creator进行开发。脱离qt creator后不适合使用qt的UI设计器,故Makefile中不包括UIC工具的使用 在Ubuntu18.04上验证,包含的库文件也是Ubuntu18.04的库文件,其他平台的库文件请自行编译。

2021-08-23

ISP在线升级

实现STM32在用户代码中跳转到BootLoader中使用ISP的方式进行在线升级。

2019-04-23

空空如也

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

TA关注的人

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