- 博客(112)
- 资源 (1)
- 收藏
- 关注
原创 嵌入式软件工程师做些什么?
MCU芯片从晶圆厂生产出来到用户手中的产品,整个产业链的不同环节都有嵌入式软件工程师的身影。软件开发是一项综合性的工作,需要综合运用技术、设计和创新思维。作为一个终端产品开发的嵌入式软件工程师,我想探讨一下嵌入式软件工程师岗位的工作,主要是为了明确我们要做的事情,以及为什么这么做。通过这种方式找到嵌入式软件开发工作的重心及目标,解决职业发展方向的问题是一个及其重要的问题。不能做那种战术上的高手,却是战略上的智障的一类人。
2024-01-03 15:33:25
1068
原创 从fifo数据结构到环形缓存结构
在嵌入式开发中,FIFO(先入先出)数据结构常被用于字符设备的数据缓存。FIFO结构允许生产者(Producer)和消费者(Consumer)分别存入和取出数据,其中,生产者存入单个字节,消费者则取出单个字节。该结构的核心特点是遵循先入先出的原则,确保数据按照其存入的顺序被取出。
2023-10-03 09:45:27
203
原创 嵌入式通信数据帧缓存数据结构
嵌入式开发中,数据的传输和处理涉及到多个模块之间的交互。为了确保数据的连续性和避免数据丢失或堆积,往往需要在各个模块之间设置缓存机制
2023-10-03 09:06:22
149
原创 基于W801-SDK 内部flash读写封装示例
旨在可以定义flash变量,通过简单接口来实现读写。可以使用统一的接口形式,读写外部eeprom, flash存储等。
2023-10-02 03:08:14
177
原创 嵌入式项目实战之EEPROM读写(示例:STM8S GPIO模拟IIC读写EEPROM)
项目使用STM8S005芯片,IIC使用HK24C32,实现了单字节读写,页写,多字节读写功能。主要有3个文件如下。
2023-07-25 13:36:48
403
原创 嵌入式项目实战之固件IAP升级解决方案(示例芯片CH32V307R)
MCU固件IAP升级的业务主要是固件下载和写入,其中固件管理业务主要又包括版本管理,校验等。固件升级的文件都是BIN文件格式,看过不少升级方案,固件升级文件都是在BIN文件格式上增加一些前缀或后缀信息,俗称为“打包”。前缀或后缀信息包括了固件版本,校验信息,通过这种方式实现固件管理业务虽然没问题,但增加了打包解包的业务,管理起来也增加复杂程度。本文提到的方案中,MCU固件方案是通过把版本管理,校验信息通过编译器编译到固件内,不需要额外的“打包”业务。方案如下,其中APP就是MCU主程序。
2023-06-30 21:51:43
900
原创 基于Zephyr系统驱动开发介绍
Zephyr规范定义了很多术语,但道理相通。就像C语言中的数据类型及赋初值,对应了C++中的对象及实例化。Zephyr系统规范定义了统一的设备类型device。特定的设备,例如gpio端口,定义了统一的驱动类型及接口函数,例如gpio。设备树节点属性通过宏定义了配置信息。
2023-02-05 07:10:54
671
原创 基于Zephyr平台nRF Connect SDK在Windows10下开发环境的快速搭建
1. Nordic开发SDK需要在线搭建,对于网络不太好的,实在是费时费力,该文特点是利用拷贝已经搭建好的一个SDK目录,直接在新的PC平台实现大部分文件的离线安装,安装效率很高。2. 离线安装的文件数据主要包括两个部分,一个是toolchains,即ncs-toolchain-windows-x86_64-v2.2.0-rc1-20221128T075938-f88d497.tar包含在离线安装包内,另一个是github的代码文件。
2022-12-02 14:53:01
1829
翻译 OS服务——日志——日志
日志记录API提供了一个通用的接口来处理由开发人员发布的消息。消息通过前端传递,然后由活动的后端进行处理。如果需要,可以使用自定义的前端和后端。
2022-10-28 07:40:54
418
翻译 OS服务——SMP协议规范——格式化输出
应用程序以及Zephyr本身都需要基础设施来格式化值以供用户使用。标准的C99库`*printf()`功能满足了对流输出设备或内存缓冲区的需求,但在嵌入式系统中,设备可能不接受流数据,而内存可能无法存储格式化的输出。
2022-10-28 07:39:39
388
翻译 OS服务——SMP协议规范—— Shell管理
Shell管理允许使用SMP协议将命令传递给Shell子系统。命令行管理程序管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|Shell command line execute|
2022-10-28 07:38:36
278
翻译 OS服务——SMP协议规范——文件管理
文件管理组提供允许从设备上载和下载文件的命令。文件管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|File download/upload||1|File status||2|File hash/checksum|
2022-10-28 07:37:39
494
翻译 OS服务——SMP协议规范——统计管理
统计管理允许获取由Zephyr的统计子系统收集的数据,由`CONFIG_STATS`启用。统计信息管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|Group data||1|List groups|
2022-10-28 07:36:40
293
翻译 OS服务——SMP协议规范——应用程序/软件映像管理组
应用程序/软件映像管理管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|State of images||1|Image upload||2|File (reserved but not supported by Zephyr)||3|Corelist (reserved but not supported by Zephyr)||4|Coreload (reserved but not supported by Z
2022-10-28 07:35:21
248
翻译 OS服务——SMP协议规范——默认/操作系统管理组
操作系统管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|Echo||1|Console/Terminal echo control; unimplemented by Zephyr||2|Statistics||3|Memory pool statistics||4|Date-time string; unimplemented by Zephyr||5|System reset||6|MCUMGR param
2022-10-28 07:34:19
206
翻译 OS服务——SMP协议规范——SMP协议规范
这是对简单管理协议SMP的描述,mcumgr使用它将请求传递给设备并接收来自设备的响应。SMP是一个应用程序层协议。底层传输层不在本文档的范围内。
2022-10-28 07:32:55
1271
翻译 OS服务——文件系统——文件系统
Zephyr RTOS虚拟文件系统交换机(VFS)允许应用程序在不同的装载点(例如,/fatfs和/lfs)挂载多个文件系统。挂载点数据结构包含实例化文件系统、挂载和操作所需的所有必要信息。文件系统交换机通过引入文件系统注册机制,将应用程序与直接访问单个文件系统的特定API或内部功能解耦。
2022-10-28 07:31:01
493
翻译 OS服务——设备管理——无线更新
无线(OTA)更新是一种使用网络连接将固件更新传递到远程设备的方法。虽然这个名称意味着一个无线连接,但通过有线连接(如以太网)接收到的更新仍然通常被称为OTA更新。这种方法要求服务器基础设施托管固件二进制文件,并在更新可用时实现信令的方法。安全性是OTA更新中关注的一个问题;固件二进制文件应该在升级之前进行加密签名和验证。
2022-10-28 07:29:42
429
翻译 OS服务——设备管理——设备固件升级
设备固件升级子系统提供了在运行时升级基于Zephyr的应用程序的映像的必要框架。它目前由两个不同的模块组成:* subsys/dfu/boot/:引导加载程序的接口代码* subsys/dfu/img\_util/:映像管理代码
2022-10-28 07:28:49
301
翻译 OS服务——设备管理——MCUmgr
管理子系统允许远程进行启用Zephyr的设备的管理。可使用以下管理操作:* 映像管理* 文件系统管理* 日志管理(当前已禁用)* 操作系统管理
2022-10-28 07:27:16
659
翻译 OS服务——调试——GDB存根
GDB特性提供了一个GDB远程串行协议(RSP)的实现,它允许您使用GDB远程调试Zephyr。该协议支持不同的连接类型:串行、UDP/IP和TCP/IP。和风目前只支持串行设备通信。
2022-10-27 21:21:22
269
翻译 OS服务——调试——核心转储
核心转储模块允许转储CPU寄存器和内存内容以进行脱机调试。当遇到致命错误时,将调用此模块,并根据启用的后端打印或存储数据。
2022-10-27 21:20:25
513
翻译 OS服务——调试——线程分析器
线程分析器模块支持跟踪线程信息所需的所有Zephyr选项,例如线程堆栈大小使用情况和其他运行时线程运行时统计信息。
2022-10-27 21:18:09
198
翻译 OS服务——加密——随机数生成
随机API子系统在加密和非加密安全实例中提供随机数生成API。使用哪种随机API是基于随机数的加密要求的。如果需要非加密值,非加密api将更快地返回随机值。
2022-10-27 21:15:08
277
翻译 构建和配置系统——配置系统——Kconfig提示和最佳实践
本页面涵盖了一些Kconfig的最佳实践,并解释了一些可能是神秘的或很容易被忽视的Kconfig的行为和特性。
2022-10-27 21:13:16
469
翻译 构建和配置系统——配置系统——交互式Kconfig接口
有两个交互式配置接口可用于探索可用的Kconfig选项和进行临时更改:`menuconfig` 和`guiconfig`。`menuconfig` 是一个运行在终端上的界面,而guiconfig是一个图形配置界面。
2022-10-27 21:09:33
439
翻译 构建和配置系统——配置系统——配置系统(Kconfig)
可以在构建时对Zephyr内核和子系统进行配置,以适应特定的应用程序和平台需求。配置通过Kconfig进行处理,它与Linux内核使用的配置系统相同。其目标是支持配置,而无需更改任何源代码。
2022-10-27 21:06:48
415
翻译 构建和配置系统——设备树——Devicetree对比Kconfig
除了设备树之外,Zephyr还使用Kconfig语言来配置源代码。是否使用设备或Kconfig用于特定目的有时会令人困惑。这部分应该可以帮助您决定使用哪一个。
2022-10-26 19:10:10
396
翻译 构建和配置系统——设备树——设备树问题排除
这是一般的建议,特别适用于调试设备树的问题,因为输出是在CMake配置阶段创建的,并且在其输入发生变化时并不总是重新生成。
2022-10-26 19:08:47
341
翻译 构建和配置系统——设备树——从C/C++访问设备树
本指南描述了Zephyr的用来从C源文件中读取设备集的API。它假设您熟悉设备介绍和设备介绍绑定中的概念。参考资料见参考资料。
2022-10-26 19:05:01
290
翻译 构建和配置系统——设备树——设备树绑定
一个设备本身只是描述硬件故事的一半,因为它是一种相对非结构化的格式。设计人员的绑定提供了另一半。设备树绑定声明对节点内容的要求,并提供有关有效节点内容的语义信息。Zephyr设备树绑定是自定义格式的YAML文件(Zephyr不使用Linux内核所使用的dt模式工具)。
2022-10-26 19:03:30
418
Jlink配置为支持普冉MCU
2023-09-27
atmega8a pwm驱动
2023-09-23
atmega8 内部256字节的eeprom读写
2023-09-23
atmega8a ADC电压采集驱动
2023-09-23
STM8S 模拟输入驱动实现端口电压采集
2023-09-23
,STM8S平台,PWM驱动代码
2023-09-23
kalman filter test.rar
2021-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人