嵌入式大杂烩
一位喜欢分享的嵌入式软件工程师
一位全网累计10万+粉丝的嵌入式博主
一位能源专业转做嵌入式的过来人
展开
-
嵌入式设备配网:从基础到实战!
其原理是嵌入式设备自身创建一个无线热点,用户通过手机或其他终端设备连接到这个热点,然后在终端设备上输入目标网络(如家庭 WiFi)的信息,设备接收到这些信息后,就会尝试连接到目标网络。smartconfig配网的原理是利用手机等终端设备将网络信息(SSID 和密码等信息)通过广播的方式发送出去,嵌入式设备通过监听周围的无线信号,解析出网络信息,从而实现配网。• 无线 AP(Access Point):无线接入点,是一种无线网络设备,用于将无线客户端连接到有线网络,起到桥梁的作用。原创 2025-05-11 21:47:39 · 35 阅读 · 0 评论 -
嵌入式软件:函数式 VS 非函数式编程
例如,在一个嵌入式控制系统中,使用命令式编程可能会有大量的循环和条件判断来实现不同的控制逻辑,代码的整体结构不够清晰。非函数式编程中存在大量的共享状态和副作用,测试时需要模拟复杂的外部环境和状态,增加了测试的难度和复杂度。代码的可维护性和可测试性较差,因为函数之间的依赖关系不清晰,修改一个函数可能影响其他函数。代码结构通常围绕函数的组合和复用构建,函数之间的依赖关系清晰,每个函数只负责单一的任务。,它将计算视为函数的求值,避免使用共享状态和可变数据,强调函数的纯粹性和不可变性。原创 2025-04-20 12:17:40 · 107 阅读 · 0 评论 -
分享一个代码生成器编写思路!
大家好,我是杂烩君。中,李先静前辈提到一点:让电脑去做单调重复的工作。这点让我很受启发,在工作中需要这类重复性的工作时,我也会编写代码生成器来帮我处理。最近,又完成了一个代码生成器的开发,一键生成大部分原本需要靠体力输出的相似代码,极大地提高了开发效率。业内知名的代码生成器有很多,如:STM32CubeMX生成STM32基础库代码、project_generator生成器生成基础工程、protoc生成protobuf协数据格式代码等。原创 2024-09-16 13:38:22 · 319 阅读 · 0 评论 -
C语言,日志调试法的一些规则!
当我们的函数设计有多个功能函数模块的时候,当某个模块出现问题时,这个时候我们只是关心此模块,那么可以先把其他模块的日志功能关闭掉,只是打开关心模块的日志。使用日志动态过滤控制功能可以动态地调整日志地输出,但前提是项目使用地日志组件具备这样的能力。这样我们就可以在日志文件里通过模块标签来筛选某个模块的日志,提高我们定位问题的效率。在Release版本中,可能需要减少日志输出或者去掉一些不必要的日志,需要一个开关来进行切换。分支判断中,各执行分支需要加上对应的日志信息,可以帮助我们准确地知道程序执行的走向。原创 2024-03-05 00:18:20 · 417 阅读 · 0 评论 -
嵌入式处理器微架构与指令集
作为最低的授权等级,拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。3、ARM和苹果的渊源很深,当年苹果是ARM的创始股东之一,后来苹果陆续卖掉了ARM的股票,再后来苹果基于ARM的架构开始大搞自研芯片。系统设计,低耗电节能,非常适用移动通讯领域。内核层级的授权是ARM公司设计出不同的微架构,其他芯片公司可以购买这些微架构,再添加一些自己的一些外设模块,就可以设计出一个芯片。原创 2024-03-15 11:00:00 · 1251 阅读 · 0 评论 -
Shell编程的常用知识,看这篇就够了!
大家好,我是杂烩君。在Linux下进行开发,对于一些繁杂的、需要重复性进行的工作,我们都有必要写一些shell脚本来完成这些繁杂的工作。原创 2023-06-14 09:33:58 · 592 阅读 · 0 评论 -
Makefile的基础知识,看这篇就够了!
大家好,我是杂烩君。本次我们来介绍关于Makefile的一些知识。什么是make、Makefile?make是一个 构建工具,主要用于C/C++项目。Makefile是一个编译脚本,使用 make 工具解释Makefile(makefile)文件中的指令(编译指令)进行我们的项目编译。在Linux环境下进行开发,工程源文件较少时,直接使用gcc进行编译。源文件较多及工程复杂时,就可以使用 Makefile(makefile) 来对我们的工程进行管理,然后使用 make 工具解释Makefile(m原创 2023-06-15 10:57:37 · 2281 阅读 · 0 评论 -
CMake的基础知识,看这篇就够了!
CMake 是一个跨平台的安装(编译)工具。CMakeList.txt是一个与平台无关的、用于定制编译流程的文件。CMake 靠的是 CMakeLists.txt 文件来生成Makefile文件。Hello系列 | Shell编程必备简明基础知识。下面简单了解CMakeLists.txt简单的规则及一些示例。CMakeLists.txt中只有字串和字串数组两种变量。定义变量通过 set命令来定义,使用变量时在外面加上 ${} 符号即可。# 定义变量# 使用变量")① 注释使用符号 #。原创 2023-06-16 12:09:08 · 2537 阅读 · 0 评论 -
嵌入式Linux | 浅析程序开机自启动
在《实用 | 如何远程登录开发板?》这篇文章中我们给开发板配置了网络,但是板子重启之后,又得手动输入命令去配置连接WiFi。在《实用 | 10分钟教你搭建一个嵌入式web服务器》、《实用 | 10分钟教你通过网页点灯》及这两篇文章中我们每次都是先登录开发板,再启动我们的boa服务器。显然,这很不方便。这篇笔记我们就一起来解决这个痛点。设置板子重启之后自动连接WiFi、boa服务器开机自动启动,以及设置我们的应用程序开机自启动。嵌入式Linux初始化程序1、init进程init进...原创 2021-08-03 22:18:26 · 1777 阅读 · 0 评论 -
分享几个实用的代码片段(附代码例子)
大家好,我是杂烩君。本次来分享几个实用的代码小片段。原创 2022-07-11 21:30:12 · 3085 阅读 · 0 评论 -
如何监控各个线程的资源占用情况?
大家好,我是杂烩君。嵌入式Linux开发中,有时候为了定位问题,需要查看某个进程的各个线程的运行情况。原创 2022-09-07 21:44:21 · 1421 阅读 · 0 评论 -
如何检测设备的联网状态?
大家好,我是杂烩君。嵌入式Linux开发中,有时候我们程序需要检测设备的联网状态。这里分享两种方法:方法一:创建一个socket client尝试去链接一个服务器。方法二:通过检测sysfs下的对应文件。原创 2022-09-18 21:30:20 · 1880 阅读 · 0 评论 -
分享一种你可能不知道的bug定位方法
在Linux下,一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。原创 2022-08-13 23:01:15 · 1019 阅读 · 0 评论 -
分享一种修改配置文件的方法
平时,我们使用的配置文件可以是json、ini等这些标准格式,也可以是一些非标准格式。这些标准格式都有一些对应的库进行解析修改,比较方便。但是,有时候我们需要修改一些非标准格式的一些文件里的一些内容,可能就得自己想办法了。sed 工具是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。在修改配置文件之前,需要重置一下,保证配置文件的格式正确。本次分享一种修改配置文件的方法,文章很短,但挺实用~原创 2022-08-01 23:11:18 · 1988 阅读 · 0 评论 -
STM32 | STM32如何收发float类型数据?
在之前《干货 | 结构体、联合体嵌套使用的一些实用操作》文章里提到了共用体用来传输浮点数的用法,但那篇笔记中没有详细介绍,这篇笔记我们一起来看一看具体实例。实际应用中,我们可能需要两个设...原创 2021-01-16 21:34:42 · 11255 阅读 · 1 评论 -
谈谈嵌入式 C 语言踩内存问题!
除了数据存储区之外,多申请12个字节。自定义申请内存的函数自然是要兼容malloc的使用方法。返回值自然要返回数据存储区的地址。原创 2023-06-07 22:50:11 · 731 阅读 · 0 评论 -
实用的嵌入式代码优化技巧与经验分享!
使用指针的方式写代码会比柔性数组的方式会繁琐一些,特别地,如果在释放内存的时候把顺序弄反了,则结构体里的指针成员所指向的内存就释放不掉,会造成内存泄露。使用内联函数替换重复的短代码,一方面,可以避免函数的回调,加速了程序的执行,利用指令缓存,增强局部访问性;尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链,提高流水线的连续性。在多重循环中,应当将最长的循环放在最内层, 最短的循环放在最外层,以减少 CPU 跨切循环层的次数。另一方面,查表法的代码往往比常规法要简洁些。原创 2024-03-12 09:00:00 · 1135 阅读 · 2 评论 -
STM32 | protobuf在STM32平台的移植使用
说在前面的话 这是一篇2020年欠下的文章,一直搁置着,现在还上。之前分享了两篇关于Protobuf的笔记:Proto...原创 2021-01-07 23:09:01 · 5850 阅读 · 4 评论 -
STM32 | 串口打印知多少?
常规打印方法 在STM32的应用中,我们常常对printf进行重定向的方式来把打印信息printf到我们的串口助手。在...原创 2020-05-17 23:00:00 · 5150 阅读 · 1 评论 -
STM32 | 分享一个简单易用的单片机裸机程序模板,附代码实例分析!
前言 前不久,我有位做测试的朋友转去做开发的工作,面试遇到了一个问题,他没明白,打电话问了我。题目大概就是:在单片机裸机开发时,单片机要处理多个任务,此时你的程序框架是怎样的呢?这其实是...原创 2020-08-25 22:51:58 · 4808 阅读 · 0 评论 -
嵌入式中,升级时涉及的协议兼容性问题?
大家好,我是杂烩君。越来越多的硬件产品,硬件构成不仅仅是集成在一块板子上,而是多块控制板协同工作。此时,就会涉及到多块板之间的通信(有线/无线通信),就会涉及到到通信协议。很多时候,我们都会自定义一些协议。我们在软件迭代过程中,可能会涉及到板间交互的数据的升级,比如新增数据。新增的某个数据属性上属于某个数据集合,比如与某个结构体是同类数据,理论上为了程序设计得更合理些,应该把这个数据加在已有的结构体里面。但是,这可能会涉及到兼容性问题。原创 2024-03-03 23:17:44 · 843 阅读 · 0 评论