- 博客(160)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 关于CMAKE构建C/C++遇到的问题汇总
据说目前已经有更为现代化的cmake,先不说现代化的cmake如何如何.本文记录是目前工作后又遇到的常规cmake的问题。不确定是否高版本的cmake已经解决了一些自身的问题.本文只做记录.
2024-01-27 17:32:57
455
原创 MingW-W64交叉编译找不到‘mutex‘问题解决
链接问题:如果你使用的是第三方库或系统特定的线程库,可能需要在编译时链接相应的库。编译器或语言标准:确保你的编译器支持你想要使用的线程模型,并且你已经指定了正确的编译语言标准,例如 -std=c++11 或更高版本。如果你在使用 C 或早期版本的 C++,可能需要使用 pthread 库或其他线程库提供的互斥锁。这样默认安装的线程模型是win32模型.这个线程模型不支持mutex.的线程模型,不支持mutex等其他的多线程相关的类.的选项.在修改gcc的时候会有一个警告.提到的来进行mingw的交叉编译。
2024-01-15 15:12:46
1435
原创 Linux(Ubantu)交叉编译生成windows(32位,64位)可执行程序和库
与 mingw32 相比,mingw-w64 提供了对 64 位 Windows 应用程序的支持,并且通常被认为是更现代和更新的工具。这个选项通常用于 Unix-like 系统的编译器,用以指导链接器在生成可执行文件时保留符号信息,以便支持运行时的符号解析(例如用于动态加载库).该选项对于 Windows 下的编译是无效的,通过。(能够解析windows平台的可执行程序) 则能直接允许直接在linux环境中运行我们生成的win32的可执行程序(包括验证win32平台的动态库).
2024-01-10 18:34:15
6237
原创 嵌入式SOC之通用图像处理之OSD文字信息叠加的相关实践记录
很多优秀的芯片厂商,都会提供与开发板配套的完善的软件以及完善的技术支持(FAE),突然觉得爱芯的技术支持就不错.几乎涉及到图形处理的soc都会内置一些图形处理的api,我们常见的图形处理工具有开源第三方库,但opencv交叉编译麻烦,移植在嵌入式平台上吃资源较多,所以,一般是选择使用它们内置的一些api去实现的操作.比如常见的图形处理操作有: 等等.本次主要是实现文字信息叠加.在爱芯平台上画框有例子提供了从 也就是从. 爱芯的git仓库中有很多例子是结合用来画框和叠加字符串的.当然这些通常对格式有要求
2023-12-29 11:17:27
2168
原创 关于Hexo的Mixed Content: The page at ‘<URL>‘ was loaded over HTTPS, but requested an insecure stylesh.
这个问题说明,网站是通过HTTPS进行加载的,HTTPS被认为是安全的,但是网站请求了别的HTTP协议的资源.需要我们把。重新部署解决问题.F12看有没有报错,问题解决.(如下显示连接安全)
2023-12-17 16:42:56
1402
原创 嵌入式Linux平台使用Cmake交叉编译构建C/C++生成Makefile构建项目
在 Makefile 中,CFLAGS 是一个常用的变量,用于指定 C 语言编译器(如 gcc 或 g++)的编译选项。本周一,mentor给我的一个需求,在一套客户新的SDK开发套件中(原先是基于makefile构建的),且makefile互相嵌套. 任务就是找一个独立的例程,比如。所以本次作文,不仅是对CMake进行交叉编译的总结,也是从Makefile转变到Cmake构建的一些经验.:为一个目标(如库或可执行文件)设置包含目录,以便CMake可以在构建时找到所需的头文件。:用于将库链接到目标。
2023-12-13 11:59:45
1745
原创 Linux中Python已经安装了某个模块却报错?(ModuleNotFoundError: No module named)和pip list 和 sudo pip list 的差异.
在使用glibc_all_in_one管理glibc时用到了requests这个模块.报了这个ModuleNotFoundError: No module named.本次的python是linux内置的python,非anaconda进行管理的.这个问题是我在用WSL2跑python脚本时遇到的,相信记录下来有一定意义.
2023-11-21 11:23:04
483
原创 多种方式解决交叉编译中glibc版本不兼容导致的编译问题(libc.so.6: version `GLIBC_xxx‘ not found问题)
一个常见的问题就是:拿到客户的开发板后需要验证自己本地搭建的交叉编译环境是否正确,这影响到后续的开发.glibc就是指libc.so.6这个动态库,libc.so.6软链接到实际的动态库.
2023-11-20 18:22:07
19071
1
原创 报错 documentation/kbuild: is a directory. stop(Windows 内置Linux子系统WSL编译Linux内核)
出现的 /mnt/c /mnt/d就是 主机的磁盘 C 和 D.这里就是共享的文件区.这个时候我的SDK文件在此处进行编译(看起来是非常方便的,毕竟文件共享啊,猜想在NFS文件系统应该也会出现这个问题.)Windows 10的内置子系统Linux 编译SDK,在clean 时出现的报错.把SDK从这类共享区移到从/home/用户/工作区中编译.则问题解决., 于是在这类的共享的文件区编译 则是导致该问题的原因.网上很多说是文件名有空格, 这确实会导致这个问题.所以要先排除目录,文件名没有空格的情况.
2023-11-09 10:22:04
746
原创 Windows 内置Linux子系统的配置(From WSL1 to WSL2)
第一次安装的子系统是WSL1的,因为不能使用systemctl ,以及因为WSL1没有完整的Linux内核,所以使得WSL1很多命令是无效的,比如lsmod等等.发现多了与snap相关的,而snap 就依赖与systemd 程序.其他盘的文件如(c,d)依然是挂载在 /mnt目录下.试了一些方法无效后于是重新安装. 卸载原来的子系统,在应用商店中重新安装.这里需要注意的是两点,一个是ubantu的版本,一个是Codename.于是试着解决systemctl的问题.引用自Microsoft Learn。
2023-11-03 10:38:38
388
原创 Bsdiff,Bspatch 的差分增量升级(基于Win和Linux)
一般情况下,本以为可以直接通过压缩包的形式去进行, 安卓平台的.apk文件是可以的,单片机的可执行hex等格式的文件也是可以的. 但通过压缩的压缩包则可能会有隐患. 通过开会讨论以及本人查询资料发现 会因为压缩算法,压缩文件顺序的不一样而导致差分包出现问题.1. 不同的压缩算法会产生不同的压缩数据。以我自己的理解,这种方式有些像git中的版本管理, 以最少的时间进行版本管理.核心在于如何去记录文件的差异.所以,考虑解压后保持相同的目录结构进行差分,即为生成的.patch文件和原工程有相同的目录.
2023-10-27 16:55:12
2447
3
原创 Tire树实现
Trie树,又称字典树或者前缀树,是一种特殊的树形数据结构。它的目的是为了解决字符串快速查找的问题,可以高效地进行单词的插入、查询和删除等操作。
2023-10-10 13:43:27
142
原创 C/C++中的STL
首先,vector是一个变长数组,元素属于顺序存储.数组扩容,默认以倍增的思想进行扩容.在算法中,开辟动态内存的次数会极大影响算法的运算时间,这个时间主要是os为程序申请内存时的的内核态和用户态的堆栈切换导致的.所以能一次性分配完就不要频繁分配内存.当向向量添加元素时,如果发现 size == cap(容量已满),就调用 expand() 方法进行扩容,然后再添加元素.
2023-10-10 13:41:26
215
原创 手写堆与堆的常见操作
堆是一种特殊的树形数据结构,它满足以下两个条件:堆是一个完全二叉树:即除了最后一层外,每一层都是满的,且最后一层上的节点都集中在左侧。堆中每个节点的值都要大于等于(或小于等于)其子节点的值:如果每个节点的值都大于等于其子节点的值,我们称之为“大根堆”;如果每个节点的值都小于等于其子节点的值,则称之为“小根堆”。堆通常用来实现优先队列,通过维护堆顶元素的位置和值,可以快速取出当前队列中的最小(或最大)值,并且支持插入、删除、修改操作。堆排序算法就是利用堆这种数据结构来实现的。
2023-10-10 12:16:50
187
原创 静态链表C/C++
与常见的数据结构的链表不同,想想常见的链表,每次新增数据都要重新开辟内存,这对有时间限制的算法程序来说每次插入新的数据就malloc是绝对会TLE的(除非从一开始就新开辟连续的堆空间当然这种情况下就不是动态链表了).所谓静态链表,指的是:静态链表是一种使用数组来实现链表的数据结构。它是在数组的基础上,通过将每个节点中的指针指向它在数组中的位置来表示链表中的连接关系。
2023-10-10 12:12:33
229
原创 基于动态规划的0-1背包问题学习
动态规划是一种解决多阶段决策过程最优化问题的数学方法。其基本思想是将问题分解成若干个子问题,通过求解子问题的最优解来推导出原问题的最优解。具体而言,动态规划方法可以分为两个步骤:定义状态:将原问题转化为某一阶段的子问题,并记录下该子问题的最优解。状态转移方程:通过对每个子问题的最优解进行组合,得到原问题的最优解。在定义状态时,需要明确每个状态所代表的含义和与其他状态之间的关系;在构造状态转移方程时,需要根据前一个状态推出当前状态,从而不断递推到最终状态,得到最优解。
2023-10-10 12:11:48
163
原创 哈希表模拟
哈希表,这个词若是对学过Java集合的人来说,是再熟悉不过的了,一般从数据库力获取的一切属性和值的映射都可用用hash表来存储,被称为万能的HashMap.在C++的STL里有Map,Set,unorderd_map ,unorderd_set,multmap,multset.区别:有序和无序(map和unordered_map)map和unordered_map都是关联容器,用于存储键值对。
2023-10-10 12:10:22
102
原创 [RT-Thread]基于ARTPI的文件系统认识与搭建
ARTPI是极好的开发板,M7的处理器,大容量的FLASH,有基于RT-Thread完善的软件包和组件,有BSP,极大能够让人快速面向bsp进行开发.实现了上层应用与底层的解耦.
2023-08-05 21:48:04
407
原创 [RT-Thread]基于ART-PI的YMODEM协议在文件系统(LFS,FAT,RAMFS)下的文件传输及其注意事项
写作为了记忆,个人最终输出的内容往往是遗忘后最容易捡起的内容,朝花夕拾故以此作文]
2023-08-05 20:41:11
1441
10
原创 基于Arduino UNO的DS18B20多点组网测温
DS18B20基于单总线协议,多个DS18B20可以连接在同一个引脚上,通过单总线扫描可以得到地址,并分别对某个地址上的DS18B20进行通信(发命令开启温度转换)完成测温。设备地址(64位)每个传感器都有一个唯一的64位序列号,其中包含一个8位的家族代码,一个48位的序列号和一个8位的CRC校验码2。您可以使用相应的函数来扫描总线上所有连接的传感器,并打印出它们的地址。
2023-06-13 10:05:50
1170
4
原创 基于注解的Spring(IOC+AOP)
非自定义Bean不能像自定义Bean一样使用@Compnent进行管理,非自定义的Bean需要通过工厂的方式进行实例化,使用@Bean标注方法即可,@Bean的属性为beanName.若不加beanname则默认为方法名。(如以下的dataSource)。因为需要@Bean注解被扫描到,所以非自定义的bean所在的类必须被Spring容器管理。这也是为什么以下的'other'必须加component的原因。见实例@Component基本数据类型 :@Value (位置放在参数内部)
2023-06-13 09:36:43
1143
原创 蓝桥杯嵌入式第十二届决赛试题及其参考
涉及频率捕获,多路pwm捕获,led扫描,按键扫描,ad采样,lcd液晶驱动,队列处理数据,排序输出。链接:https://pan.baidu.com/s/1YPu9g7w3-JNVrgv5iPo7qg。
2023-06-09 10:36:12
283
原创 基于HAL库的STM32单定时器多路输入捕获测量PWM的频率和占空比实现(状态机方式实现)
先有了这篇文章实现了单定时器的多通道测量频率,以外部时钟的方式可测量任意频率的方波),奈何不能多路测试PWM波的频率,于是有了本文。
2023-06-08 18:55:55
7369
5
原创 基于HAL库的STM32的单定时器的多路输入捕获测量脉冲频率(外部时钟实现)
STM32的定时器本身有输入捕获的功能。可选择双端捕获,上升沿捕获或者是下降沿捕获。对应捕获频率来说,连续捕获上升沿或下降沿的时间间隔就是其脉冲的周期.
2023-06-06 22:31:24
3155
4
原创 蓝桥杯嵌入式第十三届决赛赛题及其题解参考
涉及到的内容有定时器的输入捕获,PWM输出,按键的长按和短按,iic协议读写epprom,led指示灯,adc的多通道采样,lcd液晶显示屏,以及串口通信。链接:https://pan.baidu.com/s/1QIFW-A_Se5nKPXFud5m1Eg。
2023-06-04 19:42:57
587
1
原创 CVTE2024青源计划嵌入式软件开发笔试感受
还有一些C考察,比较简单,C++考了个迭代器失效的情况,如哈希表,list,vector 删除插入是否迭代器失效的情况。5月22日19点的笔试,题目第一道来个反编译的代码的什么。以及最后一个编程题,求字母和数字组成的字符串中数字的最大值。20个选择题(看扩号,【】是不定项选择题)然后就是iic 有个集中仲裁。
2023-05-22 19:52:56
534
原创 Clion结合CubeMX以Makefile编译和构建STM32以及OPENOCD调试&嵌入式的优雅开发
先说说Keil,keil有强大的编译器,但其编辑器万年不变,对于开发人员的代码编写不能起到一个及时反馈的作用。比如说,一个报错在修改后,还得等过几十秒,Keil的编辑器才消除警告。是一个真正意义上的开发工具。这是工具上的革新带给你的,这也是一个好的IDE带给开发人员不一样的优雅体验。上图的stm32G431.cfg的内容(STM32G431是控制器的芯片类型)定义烧录器的类型,比如DAPLINK ,FlashSize根据芯片来选择。每新建源文件需要添加到makefile文件中,新加的头文件目录也给出。
2023-05-20 22:55:55
1471
原创 Uart,RS232,RS485串口通讯协议学习
串口UART,RS232,RS485只定义了物理层,对我们的编程没有任何影响,我们只需要会UART串口通讯,就能通用这3个物理层的通讯。应用层和物理层分层的好处就体现出来了。参考爱上半导体。
2023-05-20 10:57:50
3308
原创 CAN总线通讯协议学习
CAN总线应用最多的是汽车领域,这里的控制器在汽车领域的专业术语是ECU.(electronic control unit)电子控制单元。可以看成一个超小型的计算机,内部集成了供电系统,单片机,驱动系统,是汽车领域里最小的控制模块。当收到低电平时,两根差分线的电压差位2V(一个3.5,一个1.5)当收到高电平时,两个差分线的压差为0V. CAN收发器也可以把差分信号转换为普通信号(高低电平发送给单片机)CAN通讯采样差分通讯的好处:两根线组成双绞线,受到干扰也是同时受到干扰,压差保持不变。
2023-05-19 21:09:04
1546
原创 SPI总线通讯协议学习
SPI是芯片与芯片之间的通讯,准确得说是串行同步通讯。既然都说了同步,那发送数据当然要和时钟线SCK配合才能发数据.采用一主多从的模式,主机只有一个,而从机可以有若干个。
2023-05-19 20:16:56
1829
原创 IIC总线通讯协议学习
在写数据帧中主机发送数据,从机负责应答,每次主机连续发超过8位都需要从机应答.在读数据帧中主机每次连续发超过8位也需要从机应答.在读数据帧发送了两次起始信号,且在第二次起始信号中,主机发设备地址+读数据位(共8位),从机发8位数据.此处并没有主机连续发送数据的情况,所有没有要从机应答,最后是主机发送应答信号,表示已经接受到数据(读取数据完毕).奈何面试可能问及。故此学习总结.参考爱上半导体。
2023-05-19 18:19:18
1109
1
原创 C/C++里的解引用与多维数组指针(面经)
解析 :arr为一维数组指针.arr++则地址自增sizof(int)*7.7为列数.规律: n维数组指针自加,地址相差后n-1维相乘再乘以sizeof(类型).p=arr->p[0]第0行.以此类推.同类型的指针可以相减。
2023-05-18 15:44:41
462
原创 蓝桥杯嵌入式第十四届省赛总结
反正人生就这一次打蓝桥杯嵌入式,不妨写个总结给今后的学弟学妹们作个Present!(写博客不忘复习单词)。auloreload为50时: Freq =8K (设置预分频系数为200-1)客观题:总会有几个是能做的。虽然不定项得分很低。主观题:一个感受,难点在于输入捕获和PWM输出。步长最大值为 8K-7843
2023-04-08 19:11:20
1462
6
pt模型转torchscript模型
2022-05-05
通过PNNX将pytorch模型转ncnn时的inputshape是什么?模型转换失败
2022-04-26
如果实现无网局域网内远程端(如接入局域网的安卓和应用程序),控制设备(ARM设备类)?
2022-03-08
ROS系统怎么与ABB机械臂通过串口(usb)连接?
2021-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人