自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式大杂烩

专注于嵌入式技术!

  • 博客(359)
  • 资源 (1)
  • 收藏
  • 关注

原创 C语言开发调试利器 | Sanitizer检测器

Sanitizer是由Google发起的开源工具集,用于检测内存泄露等问题。链接:https://github.com/google/sanitizers/wiki/它包括了AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等多种工具。这些工具最初是LLVM项目的一部分,后来也被GNU的GCC编译器支持。

2024-04-07 22:39:15 920

原创 如何快速开发一个上位机?aardio了解一下

我们的资料仓库下面之前有一位小伙伴留言:杂烩君之前偶然间知道aardio这么一个工具,但没有实际去了解过。本期花点时间来了解、学习一下aardio,看看aardio是不是如这位朋友所说的这是一个不错的工具。

2024-03-17 10:24:47 951

原创 嵌入式处理器微架构与指令集

作为最低的授权等级,拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。3、ARM和苹果的渊源很深,当年苹果是ARM的创始股东之一,后来苹果陆续卖掉了ARM的股票,再后来苹果基于ARM的架构开始大搞自研芯片。系统设计,低耗电节能,非常适用移动通讯领域。内核层级的授权是ARM公司设计出不同的微架构,其他芯片公司可以购买这些微架构,再添加一些自己的一些外设模块,就可以设计出一个芯片。

2024-03-15 11:00:00 994

原创 汇总嵌入式中一些实用的辅助工具!

之后又重新自研,不仅支持 C/C++,还支持 C#,Lua 语言,在发掘 C/C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。轻量高效:小熊猫C++基于QT和C++语言开发,使用内置的轻量级代码分析器进行智能语法分析,运行时无需大量的内存和CPU资源,在低配置机器上也能获得流畅的运行体验。生产力提升:通过集成自动缩进、智能代码补全、智能语法高亮和实时语法检查等功能,小熊猫C++提供了流畅的代码编辑体验,可以大幅度提升代码编写的效率。、可视化的、对比及合并工具。

2024-03-14 08:30:00 612

原创 学嵌入式要学到什么程度才好找工作?

智能家居行业应用的相关技术可能有:WiFi蓝牙等无线通信、MQTT等物联网相关协议、物联网操作系统、物联网安全、传感器数据采集处理、物联网云平台等。机器人行业应用的相关技术可能有:传感器数据采集处理、电机控制、ROS机器人操作系统、规划与运动控制、WiFi蓝牙等无线通信、图像识别、语音识别等。理解整体框图、掌握基础外设如:GPIO、UART、TIM、ADC、DAC、I2C、SPI的裸机编程及相关原理、应用。再学习Linux下的应用开发知识:多线程编程、多进程编程、文件I/O编程、网络编程等。

2024-03-13 12:00:00 325

原创 实用的嵌入式代码优化技巧与经验分享!

使用指针的方式写代码会比柔性数组的方式会繁琐一些,特别地,如果在释放内存的时候把顺序弄反了,则结构体里的指针成员所指向的内存就释放不掉,会造成内存泄露。使用内联函数替换重复的短代码,一方面,可以避免函数的回调,加速了程序的执行,利用指令缓存,增强局部访问性;尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链,提高流水线的连续性。在多重循环中,应当将最长的循环放在最内层, 最短的循环放在最外层,以减少 CPU 跨切循环层的次数。另一方面,查表法的代码往往比常规法要简洁些。

2024-03-12 09:00:00 783 2

原创 来了解一下较受欢迎的Git可视化管理工具!

大家好,我是杂烩君。Git版本管理工具是我们日常开发中常用的工具,熟练使用它可以提高我们的工作效率。老司机们常常使用命令行的方式进行操作,新手可借助可视化工具来进行过渡,命令行与可视化工具结合使用来加深对Git的熟悉程度。

2024-03-11 11:00:00 284

原创 超轻量的嵌入式数据库!

是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。如今,物联网产品种类越来越多,运行时产生的数据种类及总量及也在不断变大。FlashDB 提供了多样化的数据存储方案,不仅资源占用小,并且存储容量大,非常适合用于物联网产品。:是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。

2024-03-10 11:00:00 433

原创 8个很受欢迎的 C 语言项目

xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。是一种轻量级的数据交换格式。,是Google公司开发的一种数据格式,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。zlog在效率、功能、安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性。的缩写,即初始化文件。

2024-03-09 12:27:18 660

原创 汇总一些常用的终端工具!

在各种远程登录工具中,Putty是出色的工具之一,Putty具有完全免费、小巧绿色、无需安装、操作简单等特点。的SSH/Sftp/Shell/Telnet/Serial 客户端,支持 Windows、Linux 和 macOS。集SSH工具、服务器管理、远程桌面加速的良心软件,同时支持Windows,macOS,Linux。集成本地文件管理器,支持移动到、复制到、复制自、删除、重命名、新建文件/目录等。集成sftp、scp客户端,支持下载、上传、删除、重命名、新建文件/目录等。** 的 SSH 客户端。

2024-03-06 00:51:14 572

原创 C语言 | 可测试性软件设计要点!

方式一,因为有一个数据是在函数内部从flash中读取的,所以这个数据我们不太方便进行控制,而能控制的只有参数b。那么,这样子,我们在调用测试时,测得就不是很全,也不能灵活地控制测试路径。设计的软件可测试性强,我们就能在开发阶段进行充分地测试,在开发阶段尽可能多地解决一些逻辑上的问题,从而保证更高质量地软件交付。方式二,计算所依赖的数据都通过函数参数留出来了,我们可以很方便地对函数进行测试,可以很方便地输入不同的数据组合。所以,之后写代码,写之前,有必要先想清楚,这个模块最后要怎么进行自测?

2024-03-06 00:21:07 28

原创 C语言,日志调试法的一些规则!

当我们的函数设计有多个功能函数模块的时候,当某个模块出现问题时,这个时候我们只是关心此模块,那么可以先把其他模块的日志功能关闭掉,只是打开关心模块的日志。使用日志动态过滤控制功能可以动态地调整日志地输出,但前提是项目使用地日志组件具备这样的能力。这样我们就可以在日志文件里通过模块标签来筛选某个模块的日志,提高我们定位问题的效率。在Release版本中,可能需要减少日志输出或者去掉一些不必要的日志,需要一个开关来进行切换。分支判断中,各执行分支需要加上对应的日志信息,可以帮助我们准确地知道程序执行的走向。

2024-03-05 00:18:20 291

原创 嵌入式中,升级时涉及的协议兼容性问题?

大家好,我是杂烩君。越来越多的硬件产品,硬件构成不仅仅是集成在一块板子上,而是多块控制板协同工作。此时,就会涉及到多块板之间的通信(有线/无线通信),就会涉及到到通信协议。很多时候,我们都会自定义一些协议。我们在软件迭代过程中,可能会涉及到板间交互的数据的升级,比如新增数据。新增的某个数据属性上属于某个数据集合,比如与某个结构体是同类数据,理论上为了程序设计得更合理些,应该把这个数据加在已有的结构体里面。但是,这可能会涉及到兼容性问题。

2024-03-03 23:17:44 679

原创 推荐一个嵌入式静态代码扫描工具!

TscanCode是腾讯研发的静态代码扫描工具,最早的版本是基于 cppcheck 二次开发。之后又重新自研,不仅支持 C/C++,还支持 C#,Lua 语言,在发掘 C/C++ 空指针、越界、未初始化、C#空引用、Lua变量未初始化等比较有效。静态代码扫描是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。同样的,也有运行时诊断的工具,如Valgrind等。

2023-10-14 21:09:10 453

原创 这些必备VSCode插件,让嵌入式开发更上一层楼!

在嵌入式开发领域,选择一款合适的开发工具至关重要。而VSCode作为一款轻量级、强大的编辑器,已然成为开发者的首选。本文将推荐一些实用的、与我们嵌入式开发相关的VSCode插件。

2023-10-14 21:02:49 1845 1

原创 CMake的基础知识,看这篇就够了!

CMake 是一个跨平台的安装(编译)工具。CMakeList.txt是一个与平台无关的、用于定制编译流程的文件。CMake 靠的是 CMakeLists.txt 文件来生成Makefile文件。Hello系列 | Shell编程必备简明基础知识。下面简单了解CMakeLists.txt简单的规则及一些示例。CMakeLists.txt中只有字串和字串数组两种变量。定义变量通过 set命令来定义,使用变量时在外面加上 ${} 符号即可。# 定义变量# 使用变量")① 注释使用符号 #。

2023-06-16 12:09:08 1093

原创 Makefile的基础知识,看这篇就够了!

大家好,我是杂烩君。本次我们来介绍关于Makefile的一些知识。什么是make、Makefile?make是一个 构建工具,主要用于C/C++项目。Makefile是一个编译脚本,使用 make 工具解释Makefile(makefile)文件中的指令(编译指令)进行我们的项目编译。在Linux环境下进行开发,工程源文件较少时,直接使用gcc进行编译。源文件较多及工程复杂时,就可以使用 Makefile(makefile) 来对我们的工程进行管理,然后使用 make 工具解释Makefile(m

2023-06-15 10:57:37 1531

原创 Shell编程的常用知识,看这篇就够了!

大家好,我是杂烩君。在Linux下进行开发,对于一些繁杂的、需要重复性进行的工作,我们都有必要写一些shell脚本来完成这些繁杂的工作。

2023-06-14 09:33:58 416

原创 Linux POSIX消息队列用于线程间通信

在应用开发中,生产者,消费者的模型非常常见,一方产生数据并把数据放入队列中,而另一方从队列中取数据,先进先出。Linux系统中提供的消息队列一般应用于进行间通信,但也可以用于线程间通信。其中,POSIX消息队列可移植性较强,使用较广。本文介绍POSIX消息队列应用于线程间通信。例子:线程1不断给线程2发送字符串数据。应用:线程间通信/进程间通信。

2023-06-10 09:54:43 507

原创 Linux多线程编程之线程安全!

在多线程环境中,多个线程在同一时刻对同一份资源进行写操作时,不会出现数据不一致。反之,则是线程非安全的。线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的公用变量,使程序功能正确完成。为了确保在多线程环境中的线程安全,就要确保数据的一致性。从字面上简单理解,原子是一种很微小的粒子;原子操作是不能再进一步细分的操作。

2023-06-10 09:35:42 245

原创 Linux C语言时间相关知识总结!

实际开发中,经常要获取各种时间。

2023-06-10 09:35:23 381

原创 Linux多线程编程知识汇总!

进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程之间的数据不共享。线程是进程内的执行单元,它与同一进程内的其他线程共享进程的内存空间和系统资源。

2023-06-08 09:28:57 467

原创 谈谈嵌入式 C 语言踩内存问题!

除了数据存储区之外,多申请12个字节。自定义申请内存的函数自然是要兼容malloc的使用方法。返回值自然要返回数据存储区的地址。

2023-06-07 22:50:11 495

原创 谈谈嵌入式软件的兼容性!

大家好,我是杂烩君。嵌入式项目中,软件是一个不断迭代的过程,需要考虑各种兼容性。之前我们的项目,因为这方面考虑得比较少,导致项目中后期开发起来很被动。项目系统总体设计阶段,应尽可能地考虑到未来可以遇见的情况,覆盖到尽可能多的业务扩展。项目虽然分阶段开发,各个阶段完成的功能都不一样,总体设计要指向最终的需求。

2023-06-07 13:20:26 506

原创 多进程编程知识汇总,附代码例子!

进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程之间的数据不共享。进程是资源分配的基本单位。线程是进程内的执行单元,它与同一进程内的其他线程共享进程的内存空间和系统资源。线程是调度的基本单位。操作系统根据不同的场景提供了不同的方式,消息队列、共享内存、UNIX域套接字、管道、信号量。内核中的一个优先级队列,多个进程通过访问同一个队列,在队列当中添加或者获取节点来实现进程间通信。

2023-06-05 22:03:59 243

原创 这种情况,你会不会离职?

2023-04-05 21:30:08 449

原创 经验 | 初学者注意这几点,可以少走一些弯路!

这位小伙伴全面阅读某个模块的代码时,没有做一些自己的学习、理解记录,这就会导致看了后面部分,又忘了前面部分。我们刚开始切入某个陌生的项目,并且代码量比较大的情况下,在阅读代码的过程中,很有必要做一些阅读笔记,便于自己反复阅读(有些代码不看好几遍可能理解得不透彻)的时候加深一些理解。做笔记得方式可以是写一些注释描述、流程图、思维导图等。

2022-11-01 22:12:36 1131 2

原创 嵌入式设备AP配网实例分享

大家好,我是杂烩君。上一篇笔记我们分享了,这篇我们分享一下配网。在这之前,建议阅读往期相关笔记:下面我们来简单分享基于阿里生活物联网平台的AP配网实例。

2022-10-20 21:30:33 1232

原创 嵌入式Linux单板连接飞燕物联网平台

大家好,我是杂烩君。最近,我们的设备连接的云平台需要切到阿里的飞燕平台,做个笔记记录下。阿里的物联网平台有好几个:物联网平台生活物联网平台(飞燕平台)城市物联网平台它们的应用场景不一样。其中,物联网平台的入口是最容易找到的,网上大多数demo都是基于物联网平台。而本篇笔记我们是基于生活物联网平台(飞燕平台)来记录的。阿里的生活物联网平台是面向消费级生活智能设备的平台。平台入口:开发文档:下面我们使用基于嵌入式Linux单板系统的设备一步一步地连接飞燕平台。

2022-10-18 21:30:32 1355

原创 如何检测设备的联网状态?

大家好,我是杂烩君。嵌入式Linux开发中,有时候我们程序需要检测设备的联网状态。这里分享两种方法:方法一:创建一个socket client尝试去链接一个服务器。方法二:通过检测sysfs下的对应文件。

2022-09-18 21:30:20 1567

原创 如何监控各个线程的资源占用情况?

大家好,我是杂烩君。嵌入式Linux开发中,有时候为了定位问题,需要查看某个进程的各个线程的运行情况。

2022-09-07 21:44:21 1223

原创 嵌入式大杂烩周记 | 第 16 期

大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每篇一个主题。

2022-08-30 21:57:26 807

原创 柔性数组在实际项目中的应用?

大家好,我是杂烩君。柔性数组在实际中应用还是挺多的,看过上一篇文章分享一种灵活性很高的协议格式(附代码例子)的小伙伴不知有没有注意到我们有使用了柔性数组:本篇文章我们就来一起学习柔性数组。什么是柔性数组? C99中,结构体中的最后一个元素允许是未知大小的数组,这就叫作 柔性数组 。柔性数组的特点:结构体中柔性数组成员前面必须至少有一个其他成员。sizeof返回的这种结构大小不包括柔性数组的内存。包...

2022-08-27 21:30:48 729

原创 嵌入式大杂烩周记 | 第 15 期

大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每篇一个主题。内容主要来源于我们之前收集的资料:https://gitee.com/zhengnianli/EmbedSummary本期主角:sds SDS 是 C 的字符串库,旨在通过添加堆分配的字符串来增强有限的 libc 字符串处理功能。SDS 字符串库特点:(1)计算效率更高。获取字符串长度所需的复杂度从O(N)降低到了O(1...

2022-08-25 21:30:39 680

原创 访问非法内存为什么不会出错?

大家好,我是杂烩君。上篇文章我们分享了一段代码:有位读者在朋友圈评论我的文章:(type * )0不是指向空地址吗?(type*)0->member不是访问非法内存了吗?为什么不会出错?这篇文章我们就来解释这个问题。

2022-08-20 21:45:21 896

原创 嵌入式大杂烩周记 | 第 14 期

大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每篇一个主题。

2022-08-17 21:30:13 956

原创 分享几个实用的代码片段(第二弹)

大家好,我是杂烩君。本次我们再来分享几个实用的代码小片段。

2022-08-15 21:30:52 832

原创 分享一种你可能不知道的bug定位方法

在Linux下,一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。

2022-08-13 23:01:15 922

原创 嵌入式大杂烩周记 | 第 13 期

大家好,我是杂烩君。

2022-08-11 22:57:27 760

原创 分享一种修改配置文件的方法

平时,我们使用的配置文件可以是json、ini等这些标准格式,也可以是一些非标准格式。这些标准格式都有一些对应的库进行解析修改,比较方便。但是,有时候我们需要修改一些非标准格式的一些文件里的一些内容,可能就得自己想办法了。sed 工具是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。在修改配置文件之前,需要重置一下,保证配置文件的格式正确。本次分享一种修改配置文件的方法,文章很短,但挺实用~

2022-08-01 23:11:18 1746

嵌入式LCD模拟器及其使用方法

在没有硬件LCD时,可以借助LCD模拟器来编写软件UI界面。

2023-06-07

JSON天气数据包解析

本程序使用cJSON库对心知天气的JSON数据包进行解析,可以方便的移植到STM32等单片机平台上,再配合WIFI或者其他通信模块即可做成个简易的天气预报系统。

2018-02-06

空空如也

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

TA关注的人

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