- 博客(146)
- 资源 (2)
- 收藏
- 关注
原创 Linux C语言 Zlib 实现解压zip文件
Linux C语言 实现解压zip文件因为在做嵌入式Linux,做OTA功能的时候需要加压zip升级包。所以需要用到zip文件的解压缩功能。就想着能不能用zlib来完成这个功能。在网上一通找以后,发现教程千篇一律,要么是打着解压文件的标题解压buff内容,要么是c++完成的。好不容易有两篇C语言解压缩文件的,结果并不能用。最后还是只能看英文文档,终于找到案例了。下面记录如何实现的,其实还是非常的简单,例程写得比较复杂,我只用到一个解压功能,我基本上取了一部分代码,没有太大改动。有需要的话,可以再进行精
2020-11-11 19:33:44 8431 1
原创 阿里云 腾讯云 设置DDNS(动态域名解析)
阿里云设置DDNS(动态域名解析)搭建内网服务器时,因为运营商分配的公网ip地址是动态的。在一段时间后或者重启路光猫后,会导致公网ip变化,此时阿里云设置DNS将失效。因此需要进行动态域名解析。阿里云没有像花生壳一样的内置到路由器的动态域名解析服务。所以,我们没办法在路由器段进行动态域名解析设置。但是,阿里云提供了DNS的API,各个语言的API都有,因此我们可以在服务器端来实现这个动态域名解析服务。下面讲一下我实现的整个过程,我是通过go语言完成的。如下。1. 设置DNS域名解析服务进入阿里云的
2020-11-03 23:19:24 112895 11
原创 makefile管理编译工程 自动生成.h头文件依赖
makefile管理编译工程工程目录结构每一个功能模块建立一个文件夹,然后该文件夹下建立include,lib,src文件夹。include存放对外接口,lib存放编译好的静态库,src存放源码.c和.h文件。每个功能模块有单独的makefile进行编译管理。顶层路径下建立一个管理所有功能模块的makefile。这个makefile负责主函数的编译链接工作。(关于.h文件更新,则重新编译包含了该头文件的所有的文件,这条规则还没实现)Makfile实现cJSONbuild = ../buil
2020-08-23 11:18:59 5044 1
原创 Linux系统迁移(将配置好的系统安装到其它电脑上)
Linux系统迁移说在前面:下面的有几个教程链接,我都是通过这几个链接来完成的备份与恢复系统。并且遇到过一些问题,踩过一些坑。建议先看完我的说明再进行操作,少走弯路。没有图是因为下面分享的几个链接都说得太详细。我只负责填坑。当我们再用Linux时,总是会经常性的重装系统。重装系统是一件非常简单的事情,但是装好后,对于常用软件的安装和系统配置,是一件让人非常头大的事情。装系统十分钟,配置软件24小时。因此,在我们安装好并且配置好一个系统以后,在用着非常舒服的时候,做一个系统备份。当电脑出问题时,把备份恢
2020-08-08 00:24:41 24341 15
原创 如何实现C语言通用链表
C语言通用链表实现C语言的数组有时候很好用,但在不知道数据有多少的时候,并且涉及到某个数据的删除时,操作起来很不方便,这个时候就需要用到链表。自己定义一个链表数据结构,然后实现它,此时这个链表仅能表示你要处理的相关数据,并不是通用的,这将导致你要使用的时候就得重新写数据结构的代码。这个时候,定义一个通用链表,用这个链表就能处理所有的数据类型了,因为是通用的,所以会有一部分代码需要在用户使用的时候自己完成。常见链表定义struct Student { char name[20]; int
2020-07-04 14:00:41 1236 2
原创 Linux 编译安装 openssl库
Linux 编译安装 openssl库如果是不需要特定版本的openssl库的安装非常简单。直接sudo apt install opensll即可。而且像Ubuntu这种应该是自带了openssl库的。运行openssl version -a查看版本。当这个默认版本不满足我们的使用要求时,我们需要自己编译安装需要的版本。方法如下。1、下载openssl源码openssl官网链接:https://www.openssl.org/找到需要下载的版本:https://www.openssl.or
2020-07-02 23:38:28 20013 6
原创 gsoap 远程调用举例
gsoap 远程调用举例gsoap生成Web Service框架代码。这里通过gsoap官网**Example XML SOAP server ©和Example XML SOAP client ©**例子来实现sgoap生成框架,并实现远程调用。gsoap官网例程:https://www.genivia.com/dev.html#server-c1、SOAP服务器将gsoap安装路径下的import和custom文件夹,stdsoap2.h和stdsoap2.h拷贝到需要生成文件的路径中。利用
2020-05-25 17:48:01 583 1
原创 Manjaro-Nvidia独显解决方案(外接显示器修复)
Manjaro独显外接显示器解决方案针对问题:①无法使用外接显示器②可以使用外接显示器,但是当没有外接时,笔记本开机黑屏。安装开源驱动更新系统。$ sudo pacman -Syyu在Manjaro Setting Manager中,安装Nvidia显卡开源驱动video-nvidia-430xx,并写在掉其它显卡驱动。(此时重启将黑屏,无法进入桌面,所以请进行第2步操作再重启...
2020-03-13 23:59:00 9715 3
原创 二、设备-驱动 匹配机制探究
Linux总线和设备都会注册到总线驱动上,然后在添加新驱动时,会进行匹配查找,将适合的设备和驱动进行绑定,并将设备和驱动注册显示在sys的层级结构种去。当在使用i2c设备驱动时,遇到一个问题,一般会将定义i2c_device_id结构,注册到驱动的.id_table中去。再顶一个of_device_id,用于设备树风格的设备驱动匹配。按理来说,如果使用设备树匹配风格,那么不定义i2c_device_id结构应该也是可以的。
2025-01-19 18:01:15 388
原创 一、I2C客户端驱动 —— bmp280
在开始转Linux驱动开发的时候,就计划着把约翰·马迪厄的Linux设备驱动开发看完,然后找一些器件把上面的驱动实验都做一下的。因为各种各样的原因,一直没有做这个事情。现在也算是做了一点项目,计划深入并复习一下。于是乎,专门开个专栏记录一下,适配各个器件驱动的过程,内核API使用,驱动开发注意事项,以及调试代码。方便自己使用的时候查看,也为正在学习的童鞋做一个分享。Linux设备驱动开发并没有想象的那么难,难点主要还是在对芯片的了解,芯片的使用上,主要工作量还是在阅读理解芯片手册上面。
2025-01-16 23:44:53 576
原创 记录一个FreeRTOS任务被抢占的问题
由于FreeRTOS使用的是抢占式的任务调度机制,因此任务必须要让出CPU,其它相同优先级的任务才能被调度执行。或者主动调用任务调度API来解决这个问题。当在任务中使用了while(1) 死循环的代码时,可能会导致其它相同优先级的任务无法切换,导致出现被无限抢占不执行的情况。如果是使用相同任务时间片轮转的任务调度机制,那么将不会出现这个问题。FreeRTOS支持配置时间片轮转的调度功能。
2025-01-08 10:41:03 87
原创 解决一个android service启动无法开文件的问题
这里我抄了一个demo的 rc 配置,使用的 class 是 hal,user 和 group 都是system,android 系统中只有root权限和非root权限。调试阶段,我直接将service push到板卡上,进行调试,未出现问题无法开的问题。接下来报除了一些 uinput 相关的 avc 权限问题,将需要的权限添加到 te 文件中即可,可能需要多次调试添加。自己定义的权限和全局设置的权限要求冲突了。avc 相关的已经在集成时,解决了所有的 avc 报错。还有与权限相关的就是 rc 文件了。
2024-10-15 08:58:02 463
原创 解决 make_ext4fs is not find, it is recommanded to install android-tools-fsutils
编译cluster linux时,遇到make_ext4fs命令无法找到。这个工具是被软件包 android-tools-futils 包含的。这个软件包只支持18.04的系统,在ubuntu20.04和ubuntu22.04上,无法被正确的安装。会报依赖问题,报错的信息是依赖python相关的,但是又没有指定一个版本。这个命令是被构建系统依赖的,因此没办法使用其它更新的版本。虽然可以直接安装deb包,但是每次使用apt install 时,都会报这个相关的错误。使用。
2024-06-05 16:44:14 1028 1
转载 QLabel无法显示图片
转载于:https://blog.csdn.net/qiangzi4646/article/details/80764262。
2023-12-15 00:58:18 464
转载 udhcpc dhcpcd 区别
参考:https://forums.gentoo.org/viewtopic-t-1072758-start-0.html
2023-11-18 22:14:33 429
原创 patch 生成合入补丁
由于需要对比的目录文件数量非常多,如果是完全比较是非常慢的,如果只是少量的修改,并且我们是知道具体路径的,那么,我们不需要完全对比这两个目录,只读取我们修改的目录即可。针对上述操作,已经针对最开始的文件夹,生成了我们修改后产生的补丁文件。通过diff命令,可以为两个的目录生成差异补丁,这样,可以对于文件夹文件的修改,我们可以得到一个修改操作的补丁文件。可以将其中一个目录软链接到另一个目录的同级目录,也可以把两个目录都进行软链接,软链接到同一个目录下即可。即合入补丁后,可以通过这个参数撤销合入的补丁。
2023-11-17 14:52:06 610
原创 配置Linux为无线路由器
将Linux配置为无线路由器。使用hostapd,可以配置无线网卡为AP模式。这里使用buildroot来生成这个工具。Wi-Fi模块使用的是 rt8188eus。
2023-11-08 16:50:34 579
原创 解决buildroot中fakeroot执行很慢的问题
在使用docker容器作为buildroot环境时,生成文件系统时,buildroot会使用fakeroot来设置一些文件权限。曾经生成文件系统是非常快的,最近使用docker容易,生成文件系统时,速度变的非常慢。尝试更换到ubuntu下,速度是没有问题,那么就是容器的问题。网上搜了一些,说是golang的bug导致的。再次测试编译打包,速度飞快。
2023-11-06 14:50:19 425
原创 hi3518ev200 从sd卡启动rootfs
板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs。
2023-11-05 21:31:17 379
原创 解决一个Qt程序崩溃的问题
当Qt崩溃时,使用Qt Creator调试,也无法定位到是哪个地方除了问题。只发现日志报出一个Fatal。怀疑是进程没有被kill掉,导致主线程一直阻塞,然后崩溃的。仅仅是怀疑,但我没有证据…触发的情况,就是使用QProcess同时启动多个进程时,主动退出进程导致的。是在主线程被调用的。在process主动退出前,调用这个接口,就会卡死。
2023-11-05 01:37:46 1732
原创 libopenssl 实现私钥加密公钥解密
在需要验证可信来源时,需要用到签名验签。因此,需要使用私钥加密,公钥解密,取得被加密的信息。这就会使用到私钥加密,公钥解密的场景了。使用 openssl-1.1.1 版本,3.x版本API不一样。
2023-09-21 22:35:15 521
原创 在 android 上使用 adb client
adb tool 分为 adb 和 adbd。adb 用作 host 使用,包含了client和server,adbd 则作为 device 端,在 android 源码目录下,共用一套源码。但 android 源码下的 adb,不支持把 adb 编译为 android 平台的 adb client。因此需要自己进行交叉编译。
2023-09-19 19:00:51 1057 3
原创 CMake搭建GHS工具链编译RH850/U2A16
文件,里面有每个文件的编译命令。编译参数参数可以参考该出处。链接参数参考GHS IDE工程主目标的链接命令,在最下面的command窗口中,会有完整的链接命令,链接参数可以参考该位置。工具链编译是会有问题,目前看到的现象是无法进行预处理,会导致一些不需要的符号被编译进去,导致链接失败。编译参数和链接参数,都是参考GHS IDE中编译的输出文件。在编译输出目录中,会有很多。因此的解决办法是对于这些启动文件进行单独编译,再把。后缀的汇编代码,直接修改后缀,使用。由于CMake无法识别。
2023-07-07 15:41:23 1907
原创 Qt 正则表达式匹配失败的一个原因
来匹配元字符中加了转义符号的字符。对于在元字符集中不需要加转义的字符,在需要将其匹配为普通字符的时候,只需要加一层转义,如。此时,使用模式串1去匹配发现并不能匹配成功。但是,使用正则表达式的测试工具测试,这个模式串是能匹配成功的。在正则表达式中,有很多需要元字符,是需要使用普通字符加转义符号搭配使用的。在Qt中做正则表达式时,遇到一个很坑爹的问题,还是经验不足导致。再次进行转义,某则模式串是无法识别为。
2023-03-26 11:50:39 811
原创 Qt 调试时 程序异常结束
暂时还不知道是怎么回事。在构造时,指定了parent为ui。在构造时,不指定parent可以解决这个问题。后面再看看Qt的元对象系统看是咋个回事。通过调试发现,程序结束在析构函数的地方报了段错误。在调试时,关闭窗口,应用程序输出窗口提示。
2023-03-14 21:40:07 1021
原创 解决 error: no matching member function for call to ‘connect‘
原因是由于里信号被重载过,同名了,但是参数不一样,就会报这个错误。这种情况下,需要使用旧版语法。在连接信号槽时,报错。
2023-03-13 21:44:09 4288
原创 RT-Thread SPI使用教程
使用RT-Thread Studio IDE创建芯片级的工程。创建完成后,可以直接编译下载进行测试。完成bmp280的读取Device ID的代码编写,添加到文件中。这里我使用的CS Pin是PB12,注意attach接口参数。SPI从机设备使用的是BMP280温湿度大气压传感器。中被完成,注册到了ops中。工程创建完成后,在RT-Thread Studio的。实验环境使用的是正点原子的潘多拉开发板。完成后,SPI的驱动就算是添加完成了。中打开需要使用的那一路SPI的宏。完成配置后,还需要在。
2023-02-19 19:45:02 3009 1
原创 RT-Thread MSH_CMD_EXPORT分析
这里通过编译时,将这个段的起始地址给到msh,然后通过查这个表来对比命令的名称,匹配上了,就执行相应的函数指针,从而就能够执行对应的命令的函数。由于是bin文件,是相对地址,因此地址前面没有。这里可以看到,所有命令的结构体都存到这个段的,间隔也是正好是12个字节,和。看这个情况,应该是照编译时的按顺序摆放所有结构体到这个段中。命令的名称和描述字符串变量的链接地址和段位置。开始的地址表示ROM上的地址,即FLASH地址空间。,用来存放命令的名称,描述和函数指针。,和map文件中链接的地址一致。
2023-02-12 21:31:58 6035 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人