自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【无标题】

前言​ eventfd可以用于线程或者父子进程间通信,内核通过eventfd也可以向用户空间进程发消息。其核心实现是在内核空间维护一个计数器,向用户空间暴露一个与之关联的匿名fd。不同线程通过读写该fd通知或等待对方,内核通过写该fd通知用户程序。eventfd的基本用法​ eventfd机制接口简单,核心只有4个,分别是创建eventfd(eventfd),写eventfd(write),读eventfd(read),监听eventfd(poll/select)/* 创建一个event

2022-05-10 10:41:26 175

原创 嵌入式中利用ubuntu-base构建根文件系统

嵌入式中利用ubuntu-base构建根文件系统

2022-04-01 15:46:41 4277 3

原创 linux中UDP编程

本文主要描述了linux中UDP编程中的相关细节,涉及到点对点通信,组播,广播等

2022-03-14 15:46:42 7129

原创 linux网络编程---IP地址

socket编程中的地址使用的弯弯绕绕

2022-03-04 11:25:25 2905

原创 Boost库的编译

vsomeip开发之boost库的交叉编译

2022-01-26 21:22:17 3007

转载 使用VMware+Ubuntu,无法切换大小写的异常处理

问题:在虚拟机VMware下,使用Ubuntu系统时,可能会出现当切换到大写字母后,无法在切换成小写。解决方案: 这是VMware的bug,解决方法是如下: 1、关闭虚拟机; 2、打开该虚拟机的目录; 3、用记事本打开虚拟机名.vmx文件,添加一行代码: mks.win32.useInjectedMagic=FALSE 4、保存后重新启动虚拟机,恢复正常...

2021-03-17 14:15:44 1921 1

转载 Linux下C程序执行shell命令并获取返回结果的方法

Linux下的C编程有以下几种方法可以执行shell命令 system()函数exec函数簇popen()函数如果还需要获取返回结果,有两种较简单方便的方法 popen()函数匿名管道1.system()函数 所需头文件:#include<stdlib.h> 函数原型:int system(const char *cmdstring);   &nbs...

2021-03-15 10:59:38 1484

转载 SecureCRT使用之自动记录日志功能

很多人使用SecrueCRT时都有记录输出信息的习惯,以便进行问题分析。以前老版本的SecrueCRT仅支持手动记录日志问题,现在软件的易用性更好了,也同时支持了自动记录日志的功能。这里将简单介绍SecrueCRT自动记录日志的常用配置,请仔细阅读下文。首先让我们来回忆一下历史久远的手动记录日志功能:“文件”——“会话日志”,选择日志文件的存放位置并拟定文件名,点击保存。自动记录日志功能:1. 选择“选项”——“全局选项”,打开全局选项,在常规设置中找到“默认会话”设置项,点击右...

2021-03-15 10:42:26 5850

原创 tp-link 路由器iD登陆时,经常的发送请求失败,解决办法如下

tp-link 路由器iD登陆时,经常的发送请求失败,不知道这是啥BUG,解决办法如下:1、进入精品应用2、右边看到“重试”,3、然后再登陆tp-link 路由器iD就成功了

2021-01-05 10:23:24 5446

转载 各版本arm-gcc区别

arm-linux-gcc、arm-none-eabi-gcc、arm-eabi-gcc、arm-none-linux-gnueabi-gcc区别arm-none-eabi-gcc==(ARM architecture,no vendor,not target an operating system,complies with the ARM EABI)==Arm官方用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,==不适用编译 Linux应用==),一般

2020-12-10 11:00:57 2125

转载 详解三大编译器:gcc、llvm 和 clang

编译器一般构成传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得到的中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。GCCGCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。GCC 原名为 GNU C 语言编译器,因为它原本只能处

2020-11-18 22:36:51 3842 1

转载 (七)Git--自定义Git

忽略特殊文件有些时候,你必须把某些文件放到Git工作目录中,但是又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定别扭.好在Git考虑到了大家的感受,这个问题解决起来也简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名或者文件夹填进去,Git就会自动忽略这些文件.不需要从头写.gitignore文件,GitHUb已经为我们准备了各种配置文件,只需要组合一下就可以

2020-11-16 10:51:18 101

转载 (六) Git--标签管理

在发布版本时,我们通常先在版本库打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来,所以标签也是版本库的一个快照.Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的.Git有了commit,为什么还要引入tag呢?因为commit号是3b5819e...一串乱七八糟的数字不好找.而tag可以根据需要任意命名,让人非常

2020-11-16 10:50:31 380

转载 (五)Git--分支管理

1. 创建与合并分支在Git里每次提交会被串成一条时间线,这条时间线就是一个分支.而HEAD是指向当前分支,当前分支在指向最新一次提交;例如:一开始的时候,master分支是一条线,Git用master指向最新提交,在用HEAD指向master分支,就能确定当前分支,以及当前分支的提交点;当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master当前相同的提交,再把HEAD指向dev,就表示当前分支在dev上;这时,我们可以发现.Git创建一个分支很快,因为除了.

2020-11-16 10:49:31 333

转载 (四)Git--远程仓库

Git是分布式的版本控制系统,也就意味着同一个Git仓库可以分布到不同的机器上,那么怎么分布呢,开始肯定只有一台机器有一个原始的版本库,Git提供“克隆”这个操作,别的机器都可以来克隆这个初始的版本库,每台机器上的版本库并无差别,也无主次之分。实际操作中,我们往往找一台电脑充当服务器,处于24小时开机状态,其他每个人都从这个服务器仓库克隆一份到自己的电脑上,并且之后各自修改也都提交到服务器仓库里,也从服务器仓库中拉取别人的提交.接下来,介绍如何使用GitHub这个神奇的网站,这是一个提供Git仓.

2020-11-16 10:48:25 103

转载 (三)Git--文件删除

在Git中删除也是一个修改操作,我们实际操作如下:$ git add .$ git commit -m "add test.txt"[master c291807] add test.txt 1 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 test.txt一般情况下,我们直接在文件管理系统中把没用的文件删除了,或者使用rm命令删除文件:$ rm test.txt这个时候,Git检测到你删除.

2020-11-16 10:45:57 205

转载 (二)Git--工作区和暂存区、管理修改与撤销

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念工作区就是在你电脑里能看到的目录.使用git init初始化的那个目录版本库工作区有一个隐藏目录.git,这个不算工作区而是Git的版本库Git的版本库中存了很多东西,其中非常重要的就是名为stage(或者叫index)的暂存区,还有一个Git为我们自动创建的默认master分支,以及一个指向master的指针叫HEAD在我们把文件往Git版本库中添加的时候,先执行的git add操作是把文件加入到暂存区,然后执行.

2020-11-16 10:45:00 233

转载 (一)Git--版本回退

状态管理1. 掌握工作区的状态修改过文件后,运行git status命令查看当前仓库状态如果git显示文件被修改了,使用git diff这个命令查看修改2. 版本回退当觉得文件修改到一定程度时,就可以“保存一个快照”,也就是commit,如果文件改坏或者误删时,可以从最近的一个commit恢复.可以使用git log命令查看历史提交版本$ git logcommit 94bf0887c81ae052b59a34196d696d98cf357587Author: alan7.

2020-11-16 10:42:36 107

转载 嵌入式软件开发中文件格式

1.BinBin文件是最纯粹的二进制机器代码, 或者说是"顺序格式"。按照assembly code顺序翻译成binary machine code,内部没有地址标记。Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可。可以直接在裸机上运行。2.HexIntelhex文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都..

2020-11-09 18:03:26 541

原创 Windows 10推送的锁屏壁纸保存方法

每次看到win10锁屏界面,几番摸索,总结如下:1、打开文件夹:(该路径一般是隐藏的,直接替换下面的用户名即可)C:\Users\你自己的用户名\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets2、新建一个目录tmp3、复制第一步中目录下的所有文件到tmp目录下4、新建一个bat文件,内容如下:ren %cd%\tmp\* *.jpg

2020-11-09 16:45:37 679

原创 释放被占用的COM口

最近在实用串口工具时,经常接入不同的HUB口中,导致com口一直变化,切原来的并不会释放,有点烦,当然需要想办法解决之: 1、在“运行”对话框(或者win+R打开运行)输入“regedit”进入注册表; 2、进入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter这时我们可以找到该数值项:ComDB, 3、删除之即可,如有必要,重启下电脑。PS: ComDB的值代...

2020-11-09 15:43:52 4084

原创 win10电脑任务栏软件图标变成白色解决办法

在软件使用过程中,有时会发现任务栏的软件图标消失,变成了一个白色,方法一: 将以下代码复制到记事本另存为:清理图标缓存.bat 文件,然后双击运行此批处理文件即可(实际测试ok,推荐方法)。reg delete "HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /va /ftaskkill /f /im...

2020-11-09 15:14:17 16732 20

转载 【Qt】arm-none-eabi-gdb-py.exe由于找不到python27.dll 无法继续执行代码

环境系统:win10-x64Qt版本:5.9.932bit问题安装Qt 5.9.9 32bit版本。安装成功后运行Qt Creator 4.11.0,出现如下错误对话框。解决方法1、下载python27.dll。这里有32bit和64bit版本的区别,我下载的是32bit版本。地址:https://cn.dll-files.com/2、复制到系统syswow64目录。3、注册。regsvr32 python27.dll -s...

2020-10-29 15:23:00 2496

原创 ubuntu server 版本安装第二块网卡,并设置为静态IP

在使用虚拟机做嵌入式开发时,个人习惯,往往喜欢配置两个网卡,一个设置为NAT,专门用与访问外网,一个设置为host only模式,设置为静态IP的方式virtualBox中 1、ubuntu server版本 安装第二快网卡, 目的:设置静态IP,专门供宿主机远程访问 (第一块网卡提供NAT 供虚拟机上网使用)a、在virtualBox设置中,为虚拟机添加一个网卡,具体如下:b、启动虚拟机,默认情况下,使用config命令,该网卡是没有显示出来的,因为没有有效的IP信...

2020-10-28 10:29:41 1070

原创 十六进制调试显示数据

在嵌入式开发中,不管是驱动调试还是应用协议开发,经常需要十六进制打印数据,供调试使用。以下是C实现的一个十六进制输出的函数,供参考#define BIN2CHAR(ch) (((ch) > ' ' && (ch) <= '~') ? (ch) : '.')void dumphex(unsigned char *buf, int len){ char membuf[1024] = {0}; unsigned char *ptr = (unsigned c

2020-10-22 19:41:15 846

转载 最近做过的一道有趣的解密题

idea又又又又双叒叕激活失效了,去大神公众号瞅瞅,放个大神的地址:https://zhile.io/2018/08/25/jetbrains-license-server-crack.html Question有半径为2m的半球形盛满水水池,若将水从上方全抽出所做功为Q,则Q/2时抽去水之百分比(精确到2位小数)优剃爱肤杠吧爱慕帝贰亿次的值是?翻译成人话...

2020-10-21 19:55:03 1378 1

转载 Linux下C语言判断文件是否存在

代码如下,#include <unistd.h>#include <stdio.h>int main(void){ if (access("AA.txt", F_OK) == 0) { printf("AA.txt exists.\n"); } else { printf("AA.txt not exists.\n"); } return 0;}简要分析使用un

2020-10-21 19:34:05 1502

转载 Linux stat函数和stat命令

stat函数和stat命令linux文件里的【inode = index node】解释:要理解inode必须了解磁盘和【目录项】,inode实际是连接【目录项】和磁盘的中间物质。 图里的大圈代表硬件的磁盘,里面的小圈代表某个文件存储在磁盘上了。 【inode = index node】的node(承载node信息的结构体是:stat,stat的定义在后面 )里面有: 文件大小 文件的最后修改时间 文件的所属用户 文件的权限 硬链接计数(ls -l 显示出来的数字)

2020-10-21 19:31:41 715

转载 黑盒测试和白盒测试区别

一、黑盒测试和白盒测试黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查。1. 第一认识: 黑盒测试测试特点:测试功能;测试依据:需求规格说明书方法举例:等价类划分、边界值测试优点:能站在用户的立场上进行测试缺点:不能测试程序内部特定部位,如程序有误,则无法发现。白盒测试测试特点:测试程序接口与结构测试依据:软件程序...

2020-10-19 16:24:16 4289

原创 Vmware Linux虚拟机安装Open-vm-tools替代VMware tools

Open VM Tools (open-vm-tools) 是适用于 Linux 客户机操作系统的 VMware Tools 的开源实现。VMware 提供了操作系统特定软件包 (OSP) 充当 VMware Tools 的打包和分发机制。官方都认可了相关的工具。以后就可以安装该Open VM Tools 在实际使用过程中,相比于VMware Tools,Open VM Tools感觉是更加的流畅,比较好用,安装该工具也比较简单:1、#sudo apt instal...

2020-10-16 16:17:53 1066

原创 linux中指定动态库路径的方式

库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径【deepin可以在里面搜索出qt,因为deepin默认安装了qt程序运行依赖库】,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:...

2020-10-16 10:41:28 1446

转载 Linux下unlink函数的使用

一、头文件#include<unistd.h>二、函数原型int unlink(const char *pathname);三、函数介绍unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。注意:执行unlink()函数并不一定会真正的删除文件,它先会检查文件系统中此文件的连接数是否为1,如果不是1说明此文件还有其他链接对象,因此只对此文件的连接数进行减1操作。若连接数为1,并且在此时没有任何进程打开该文件...

2020-10-14 18:35:14 995

原创 Linux内核配置 make menuconfig时出现缺失ncurses库

在新装的ubuntu中,配置编译Linux时,在make menuconfig时会出现缺失ncurses库的现象,错误信息如下:*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses libraries.*** Install ncurses (ncurses-devel) and try again.make[1

2020-10-12 23:28:53 690

原创 用命令硬盘安装window7

记录下安装原版windows的方式,win7 win10都适用1.进PE,格式化C盘2.将原版win7解压后,将bootmgr文件和boot、sources这两个文件夹复制到C盘中;3.在PE下运行cmd,输入c:\boot\bootsecr.exe /nt60 c: (注意,exe和60后面是有个空格的)4.回车,当提示successfully的时候即可5.重启电脑,开始进行安装...

2020-10-12 23:19:55 1104

原创 curl库的编译

以下为版本curl-7.67.0的编译,顺利通过1. 编译openssl库 具体参考openssl笔记 https://blog.csdn.net/yhcasey/article/details/1090388842. curl源码下载:wget https://curl.haxx.se/download/curl-7.67.0.tar.gz3. 配置 CPPFLAGS="-I/home/huyh/curl/openssl/build_arm/ -I/home/huyh/c...

2020-10-12 23:00:44 729

原创 openssl库的编译,仅总结了linux下的编译,包含X86_X64和ARM平台

在linux开发中,设置到安全认证或者数据加密时,往往设计到使用openssl。但是在有些嵌入式的环境下,系统一般不会带该库或者自带的库版本不满足开发要求,所以往往我们需要自己编译库文件,下面记录下在自己在编译过程中的步骤及遇到的问题,供日后参考使用。1、openssl库的源码下载 官网下载地址: http://distfiles.macports.org/openssl/ 进去后选择自己需要的版本,右键复制地址后,使用下面的命令下载 ...

2020-10-12 22:55:52 2468 1

转载 Linux-镜像源汇总

企业站搜狐:http://mirrors.sohu.com/网易:http://mirrors.163.com/阿里云:http://mirrors.aliyun.com/腾讯:http://android-mirror.bugly.qq.com:8080/(仅针对APP开发的软件,限流,不推荐)淘宝:http://npm.taobao.org/教育站上海交通大学:http://ftp.sjtu.edu.cn/html/resources.xml(部分移动运营商出口状况不佳,无法访问)

2020-10-10 13:59:14 1358

原创 华为matebook14 笔记本触摸板操作

公司发了一台华为了matebook笔记本,为了方便操作,总结如下的常见操作,基本覆盖鼠标的操作1.单击:模拟鼠标左键单击。2.连续单击两次:模拟鼠标左键双击。3.两个手指同时单击:模拟鼠标右键单击。4.三个手指同时单击:打开windows的搜索。5.三个手指一起往上移动或者一起往左边或者右边移动:打开任务切换界面,按个动作打开的样式不同。6.三个手指一起往下移动:显示桌面。7.连续单击两次之后手指不离开触摸板:模拟鼠标拖拉。8.两个手指在触摸板移动:模拟鼠标滚轮。...

2020-10-05 17:10:32 15664

转载 互斥锁pthread_mutex_init()函数

linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。使用互斥锁(互斥)可以使线程按顺序执行。通常,互斥锁通过确保一次只有一个线程执行代码的临界段来同步多个

2020-09-28 10:56:48 1030

原创 C++中调用C库或者C代码

在嵌入式开发的项目中,有时需要给其它项目组或者第三方提供静态库或者动态库,但是有时别人编译过程中,反馈有些函数未定义或者找不到,但是实际上是有实现该函数且在头文件中有对应的定义。最后了解到,该项目开发使用的是C++,而我们嵌入式底层用的C实现的库,解决办法可以在头文件中加入如下代码:#ifdef __cplusplus extern "C" {#endif/*code*/#ifdef __cplusplus }#endif小小的坑,记录一下!!...

2020-09-28 10:03:39 389

空空如也

空空如也

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

TA关注的人

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