- 博客(345)
- 资源 (1)
- 收藏
- 关注
原创 CMake的基础知识,看这篇就够了!
CMake 是一个跨平台的安装(编译)工具。CMakeList.txt是一个与平台无关的、用于定制编译流程的文件。CMake 靠的是 CMakeLists.txt 文件来生成Makefile文件。Hello系列 | Shell编程必备简明基础知识。下面简单了解CMakeLists.txt简单的规则及一些示例。CMakeLists.txt中只有字串和字串数组两种变量。定义变量通过 set命令来定义,使用变量时在外面加上 ${} 符号即可。# 定义变量# 使用变量")① 注释使用符号 #。
2023-06-16 12:09:08
292
原创 Makefile的基础知识,看这篇就够了!
大家好,我是杂烩君。本次我们来介绍关于Makefile的一些知识。什么是make、Makefile?make是一个 构建工具,主要用于C/C++项目。Makefile是一个编译脚本,使用 make 工具解释Makefile(makefile)文件中的指令(编译指令)进行我们的项目编译。在Linux环境下进行开发,工程源文件较少时,直接使用gcc进行编译。源文件较多及工程复杂时,就可以使用 Makefile(makefile) 来对我们的工程进行管理,然后使用 make 工具解释Makefile(m
2023-06-15 10:57:37
646
原创 Shell编程的常用知识,看这篇就够了!
大家好,我是杂烩君。在Linux下进行开发,对于一些繁杂的、需要重复性进行的工作,我们都有必要写一些shell脚本来完成这些繁杂的工作。
2023-06-14 09:33:58
192
原创 Linux POSIX消息队列用于线程间通信
在应用开发中,生产者,消费者的模型非常常见,一方产生数据并把数据放入队列中,而另一方从队列中取数据,先进先出。Linux系统中提供的消息队列一般应用于进行间通信,但也可以用于线程间通信。其中,POSIX消息队列可移植性较强,使用较广。本文介绍POSIX消息队列应用于线程间通信。例子:线程1不断给线程2发送字符串数据。应用:线程间通信/进程间通信。
2023-06-10 09:54:43
245
原创 Linux多线程编程之线程安全!
在多线程环境中,多个线程在同一时刻对同一份资源进行写操作时,不会出现数据不一致。反之,则是线程非安全的。线程安全是程序设计中的术语,指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的公用变量,使程序功能正确完成。为了确保在多线程环境中的线程安全,就要确保数据的一致性。从字面上简单理解,原子是一种很微小的粒子;原子操作是不能再进一步细分的操作。
2023-06-10 09:35:42
164
原创 Linux多线程编程知识汇总!
进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程之间的数据不共享。线程是进程内的执行单元,它与同一进程内的其他线程共享进程的内存空间和系统资源。
2023-06-08 09:28:57
257
原创 谈谈嵌入式 C 语言踩内存问题!
除了数据存储区之外,多申请12个字节。自定义申请内存的函数自然是要兼容malloc的使用方法。返回值自然要返回数据存储区的地址。
2023-06-07 22:50:11
232
原创 谈谈嵌入式软件的兼容性!
大家好,我是杂烩君。嵌入式项目中,软件是一个不断迭代的过程,需要考虑各种兼容性。之前我们的项目,因为这方面考虑得比较少,导致项目中后期开发起来很被动。项目系统总体设计阶段,应尽可能地考虑到未来可以遇见的情况,覆盖到尽可能多的业务扩展。项目虽然分阶段开发,各个阶段完成的功能都不一样,总体设计要指向最终的需求。
2023-06-07 13:20:26
270
原创 多进程编程知识汇总,附代码例子!
进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程之间的数据不共享。进程是资源分配的基本单位。线程是进程内的执行单元,它与同一进程内的其他线程共享进程的内存空间和系统资源。线程是调度的基本单位。操作系统根据不同的场景提供了不同的方式,消息队列、共享内存、UNIX域套接字、管道、信号量。内核中的一个优先级队列,多个进程通过访问同一个队列,在队列当中添加或者获取节点来实现进程间通信。
2023-06-05 22:03:59
149
原创 经验 | 初学者注意这几点,可以少走一些弯路!
这位小伙伴全面阅读某个模块的代码时,没有做一些自己的学习、理解记录,这就会导致看了后面部分,又忘了前面部分。我们刚开始切入某个陌生的项目,并且代码量比较大的情况下,在阅读代码的过程中,很有必要做一些阅读笔记,便于自己反复阅读(有些代码不看好几遍可能理解得不透彻)的时候加深一些理解。做笔记得方式可以是写一些注释描述、流程图、思维导图等。
2022-11-01 22:12:36
1046
2
原创 嵌入式设备AP配网实例分享
大家好,我是杂烩君。上一篇笔记我们分享了,这篇我们分享一下配网。在这之前,建议阅读往期相关笔记:下面我们来简单分享基于阿里生活物联网平台的AP配网实例。
2022-10-20 21:30:33
973
原创 嵌入式Linux单板连接飞燕物联网平台
大家好,我是杂烩君。最近,我们的设备连接的云平台需要切到阿里的飞燕平台,做个笔记记录下。阿里的物联网平台有好几个:物联网平台生活物联网平台(飞燕平台)城市物联网平台它们的应用场景不一样。其中,物联网平台的入口是最容易找到的,网上大多数demo都是基于物联网平台。而本篇笔记我们是基于生活物联网平台(飞燕平台)来记录的。阿里的生活物联网平台是面向消费级生活智能设备的平台。平台入口:开发文档:下面我们使用基于嵌入式Linux单板系统的设备一步一步地连接飞燕平台。
2022-10-18 21:30:32
961
原创 如何检测设备的联网状态?
大家好,我是杂烩君。嵌入式Linux开发中,有时候我们程序需要检测设备的联网状态。这里分享两种方法:方法一:创建一个socket client尝试去链接一个服务器。方法二:通过检测sysfs下的对应文件。
2022-09-18 21:30:20
1208
原创 柔性数组在实际项目中的应用?
大家好,我是杂烩君。柔性数组在实际中应用还是挺多的,看过上一篇文章分享一种灵活性很高的协议格式(附代码例子)的小伙伴不知有没有注意到我们有使用了柔性数组:本篇文章我们就来一起学习柔性数组。什么是柔性数组? C99中,结构体中的最后一个元素允许是未知大小的数组,这就叫作 柔性数组 。柔性数组的特点:结构体中柔性数组成员前面必须至少有一个其他成员。sizeof返回的这种结构大小不包括柔性数组的内存。包...
2022-08-27 21:30:48
671
原创 嵌入式大杂烩周记 | 第 15 期
大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每篇一个主题。内容主要来源于我们之前收集的资料:https://gitee.com/zhengnianli/EmbedSummary本期主角:sds SDS 是 C 的字符串库,旨在通过添加堆分配的字符串来增强有限的 libc 字符串处理功能。SDS 字符串库特点:(1)计算效率更高。获取字符串长度所需的复杂度从O(N)降低到了O(1...
2022-08-25 21:30:39
637
原创 分享一种灵活性很高的协议格式(附代码例子)
大家可能看到网络上的很多文章用的是TLV(Tag、Length、Value)格式数据。实际中,可以根据实际需要进行修改。我们这里稍微改一下,实际上也是大同小异的。我们这里的ITLV各字段的含义:I:ID或Index,用于区分是什么数据。T:Type,代表数据类型,如int、float等。L:Length,表示数据的长度(Value的长度)。V:Value,表示实际的数据。
2022-08-22 21:30:10
916
原创 访问非法内存为什么不会出错?
大家好,我是杂烩君。上篇文章我们分享了一段代码:有位读者在朋友圈评论我的文章:(type * )0不是指向空地址吗?(type*)0->member不是访问非法内存了吗?为什么不会出错?这篇文章我们就来解释这个问题。
2022-08-20 21:45:21
758
原创 分享一种你可能不知道的bug定位方法
在Linux下,一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。
2022-08-13 23:01:15
813
原创 分享一种修改配置文件的方法
平时,我们使用的配置文件可以是json、ini等这些标准格式,也可以是一些非标准格式。这些标准格式都有一些对应的库进行解析修改,比较方便。但是,有时候我们需要修改一些非标准格式的一些文件里的一些内容,可能就得自己想办法了。sed 工具是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。在修改配置文件之前,需要重置一下,保证配置文件的格式正确。本次分享一种修改配置文件的方法,文章很短,但挺实用~
2022-08-01 23:11:18
1499
原创 嵌入式并行多线程处理器,了解一下!
MC3172 是厦门感芯科技的一款32 位 RISC并行多线程实时处理器。基于RISC-V RV32IMC 指令集, 100%单周期指令, 最高200MHz主频, 3.37coremark/MHz。可以代替实时操作系统, 实现程序的模块化与复用性。相关资料可在感芯官网下载。链接:嵌入式开发,是软件+硬件结合,两者互补。如果硬件功能很强大,则软件可能可以设计得比较简单;如果硬件功能有限,则软件方面可能得考虑比较多的方面。
2022-07-21 21:31:19
1135
原创 废旧板子再利用:搭建无线调试环境!
前言 大家好,我是杂烩君。本篇博文我们来分享嵌入式Linux设备开启无线AP/无线接入点(Wireless Access Point)的方法。什么情况下会用到无线AP?我最近的工作中有如下两种情况需要用到:(1)AP配网。设备热点配网,智能硬件处于AP模式,手机作为STA连接到处于AP模式的智能硬件后组成局域网。此时,手机就可以通过局域网把设备即将连接的路由的ssid和p...
2022-07-04 21:30:03
655
原创 嵌入式段错误的3种调试方法汇总!
大家好,我是杂烩君。嵌入式C开发,或多或少都遇到段错误(segmentation fault )。之前我们有分享总线错误的例子:Linux软件开发中,总线错误的坑?替大家先踩一步段错误相比于总线错误,是一种更常见的错误。段错误是怎么产生的呢?段错误是因为访问不可访问的内存产生的。下面是一些典型的段错误产生的原因:访问不存在的内存地址访问只读的内存地址栈溢出内存越界……段错...
2022-06-30 21:30:09
1230
原创 写国际化的嵌入式代码,时间问题如何处理?
大家好,我是杂烩君。写国际化的程序比较难处理的两个问题可能是:时间问题 、 编码问题 。本篇文章来聊一聊时间问题。最近设备到了国外,时间不不准了~杂烩君一直在东八区写代码,处理时间问题时,习惯性的把时区写死为东八区,即设备的小时数总是基于GMT的小时数加上8个小时作为设备的小时数。如果设备到了国外,设备的时间就不准了,设备的小时数对不上当地的小时数。我们的设备时间,是使用...
2022-06-20 21:30:51
670
原创 分享一种日志滚动覆盖的方法
大家好,我是杂烩君。祝各位假期愉快!今天看一篇短小的技术文~上次分享了分享嵌入式软件调试方法及几个有用的工具!。其中有简单提到log滚动覆盖,就有小伙伴来问怎么做log滚动覆盖,本篇文章我们就来介绍一种log滚动覆盖的方法。其实,我们之前有分享过的,大家可能没注意。我们之前的周记嵌入式大杂烩周记 | 第 7 期 : zlog 的zlog这个开源日志库就具备这个功能。这里我...
2022-04-29 21:45:00
1090
1
原创 分享嵌入式软件调试方法及几个有用的工具!
大家好,我是杂烩君。本次分享一些嵌入式软件的调试经验及一些有用的工具。需要说明的是:这不是一篇大神教你如何成为大神的文章,因为我还不是大神;而是一名普通嵌入式软件工程师从毫无经验到略有经验的一点调试总结,都很基础。我们常常说,软件三分写七分调。实际开发中,确实也是这样子的。我工作这几年了,对这体会也越来越深。每当需求一下来,我代码很快就可以写完,但是,调试需要花很多时间。这里需要明确的是, 调试的目的不仅仅是调通整个功能需求。调通功能是最基本的要求,还需要进行优化、完善逻辑、完善异常处理。
2022-04-24 21:27:12
2253
原创 嵌入式大杂烩周记 | 第 11 期
大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每周一篇,每篇一个主题。内容主要来源于我们之前收集的资料:https://gitee.com/zhengnianli/EmbedSummary我们的资料仓库下面之前有一位小伙伴留言:杂烩君之前偶然间知道aardio这么一个工具,但没有实际去了解过。本期花点时间来了解、学习一下aardio,看看aardio是不...
2022-04-21 23:28:15
708
原创 嵌入式大杂烩周记 | 第 10 期
大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每周一篇,每篇一个主题。内容主要来源于我们之前收集的资料:https://gitee.com/zhengnianli/EmbedSummary本期主角:inih inih:一个C 语言编写的 INI 文件解析器。配置文件的格式有很多,如JSON、INI等。JSON之前分享过了:例说嵌入式实用知识之JSON数据...
2022-04-14 21:30:00
626
原创 给媳妇科普热电分离铜基板
大家好,我是杂烩君。想起我以前初学硬件的时候,每当我画完一个PCB板或者做出某个硬件的东西的时候,每次我都是第一时间拍给我对象看,每次都试图想给她讲解这是怎么做的,原理是啥。后来,我做软件之后,给她分享我做的东西她觉得那只是一些英文单词的拼凑~最近,嘉立创找我推广了一个叫做 热电分离铜基板 的东西。这是一个与硬件相关的东西。正好有机会给媳妇科普一波,让她多了解了解我的相关...
2022-04-13 20:00:00
1557
原创 嵌入式大杂烩周记 | 第 9 期
大家好,我是杂烩君。嵌入式大杂烩周记主要是一些实用项目学习分享,每周一篇,每篇一个主题。内容主要来源于我们之前收集的资料:https://gitee.com/zhengnianli/EmbedSummary本期主角:nanopb nanopb是也是一个轻量的、支持C语言的Protobuf,可以在STM32等单片机上使用。Protobuf是Google公司开发的一种数据格式...
2022-04-06 21:30:00
653
原创 嵌入式 C 结构体内存对齐
大家好,我是杂烩君。明天放假了,祝各位假期愉快!今天给大家带来一道经典、易错的关于C语言结构体内存对齐的题目:求32bit环境下以下结构体所占的字节数:typedefstructtest_struct{chara;shortb;charc;intd;chare;}test_struct;请说出你的答案:下面看...
2022-04-02 22:00:36
852
JSON天气数据包解析
2018-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人