自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wayne2018的博客-心情驿站

码农干的是泥瓦工的活,如果不去努力提高格局,许多年后将依然是干泥瓦工的活。

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

原创 Windows下添加ESP-IDF到右键菜单

实现在任意目录下,通过鼠标右键,选择esp_idf here直接打开esp-idf编译窗口

2024-01-13 12:27:48 412

原创 嵌入式软件工程师做些什么?

MCU芯片从晶圆厂生产出来到用户手中的产品,整个产业链的不同环节都有嵌入式软件工程师的身影。软件开发是一项综合性的工作,需要综合运用技术、设计和创新思维。作为一个终端产品开发的嵌入式软件工程师,我想探讨一下嵌入式软件工程师岗位的工作,主要是为了明确我们要做的事情,以及为什么这么做。通过这种方式找到嵌入式软件开发工作的重心及目标,解决职业发展方向的问题是一个及其重要的问题。不能做那种战术上的高手,却是战略上的智障的一类人。

2024-01-03 15:33:25 819

原创 复数向量缓存数据结构

相对于实数向量,复数向量数据结构中增加了对复数变量的结构。示例图结构FFT算法模块展示

2023-10-03 10:12:56 110

原创 向量,矩阵,时间序列数据结构

用在数字信号处理算法计算时窗的向量,矩阵,时间序列数据结构array\_mem。

2023-10-03 09:58:54 103

原创 从fifo数据结构到环形缓存结构

在嵌入式开发中,FIFO(先入先出)数据结构常被用于字符设备的数据缓存。FIFO结构允许生产者(Producer)和消费者(Consumer)分别存入和取出数据,其中,生产者存入单个字节,消费者则取出单个字节。该结构的核心特点是遵循先入先出的原则,确保数据按照其存入的顺序被取出。

2023-10-03 09:45:27 116

原创 嵌入式通信数据帧缓存数据结构

嵌入式开发中,数据的传输和处理涉及到多个模块之间的交互。为了确保数据的连续性和避免数据丢失或堆积,往往需要在各个模块之间设置缓存机制

2023-10-03 09:06:22 61

原创 基于W801-SDK 内部flash读写封装示例

旨在可以定义flash变量,通过简单接口来实现读写。可以使用统一的接口形式,读写外部eeprom, flash存储等。

2023-10-02 03:08:14 93

原创 嵌入式项目实战之系统架构

 嵌入式产品固件开发是一个多层面、多维度的过程,大致可以分为三大方向:技术开发,业务开发和系统架构开发。

2023-09-26 11:04:16 44

原创 嵌入式项目实战之EEPROM读写(示例:STM8S GPIO模拟IIC读写EEPROM)

项目使用STM8S005芯片,IIC使用HK24C32,实现了单字节读写,页写,多字节读写功能。主要有3个文件如下。

2023-07-25 13:36:48 218

原创 嵌入式项目实战之固件IAP升级解决方案(示例芯片CH32V307R)

MCU固件IAP升级的业务主要是固件下载和写入,其中固件管理业务主要又包括版本管理,校验等。固件升级的文件都是BIN文件格式,看过不少升级方案,固件升级文件都是在BIN文件格式上增加一些前缀或后缀信息,俗称为“打包”。前缀或后缀信息包括了固件版本,校验信息,通过这种方式实现固件管理业务虽然没问题,但增加了打包解包的业务,管理起来也增加复杂程度。本文提到的方案中,MCU固件方案是通过把版本管理,校验信息通过编译器编译到固件内,不需要额外的“打包”业务。方案如下,其中APP就是MCU主程序。

2023-06-30 21:51:43 495

原创 基于Zephyr系统驱动开发介绍

Zephyr规范定义了很多术语,但道理相通。就像C语言中的数据类型及赋初值,对应了C++中的对象及实例化。Zephyr系统规范定义了统一的设备类型device。特定的设备,例如gpio端口,定义了统一的驱动类型及接口函数,例如gpio。设备树节点属性通过宏定义了配置信息。

2023-02-05 07:10:54 425

原创 基于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 1562

翻译 OS服务——日志——日志

日志记录API提供了一个通用的接口来处理由开发人员发布的消息。消息通过前端传递,然后由活动的后端进行处理。如果需要,可以使用自定义的前端和后端。

2022-10-28 07:40:54 289

翻译 OS服务——SMP协议规范——格式化输出

应用程序以及Zephyr本身都需要基础设施来格式化值以供用户使用。标准的C99库`*printf()`功能满足了对流输出设备或内存缓冲区的需求,但在嵌入式系统中,设备可能不接受流数据,而内存可能无法存储格式化的输出。

2022-10-28 07:39:39 296

翻译 OS服务——SMP协议规范—— Shell管理

Shell管理允许使用SMP协议将命令传递给Shell子系统。命令行管理程序管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|Shell command line execute|

2022-10-28 07:38:36 206

翻译 OS服务——SMP协议规范——文件管理

文件管理组提供允许从设备上载和下载文件的命令。文件管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|File download/upload||1|File status||2|File hash/checksum|

2022-10-28 07:37:39 333

翻译 OS服务——SMP协议规范——统计管理

统计管理允许获取由Zephyr的统计子系统收集的数据,由`CONFIG_STATS`启用。统计信息管理组定义了以下命令:|Command ID|Command description|| ----- | ----- ||0|Group data||1|List groups|

2022-10-28 07:36:40 204

翻译 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 167

翻译 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 139

翻译 OS服务——SMP协议规范——SMP协议规范

这是对简单管理协议SMP的描述,mcumgr使用它将请求传递给设备并接收来自设备的响应。SMP是一个应用程序层协议。底层传输层不在本文档的范围内。

2022-10-28 07:32:55 1061

翻译 OS服务——文件系统——文件系统

Zephyr RTOS虚拟文件系统交换机(VFS)允许应用程序在不同的装载点(例如,/fatfs和/lfs)挂载多个文件系统。挂载点数据结构包含实例化文件系统、挂载和操作所需的所有必要信息。文件系统交换机通过引入文件系统注册机制,将应用程序与直接访问单个文件系统的特定API或内部功能解耦。

2022-10-28 07:31:01 343

翻译 OS服务——设备管理——无线更新

无线(OTA)更新是一种使用网络连接将固件更新传递到远程设备的方法。虽然这个名称意味着一个无线连接,但通过有线连接(如以太网)接收到的更新仍然通常被称为OTA更新。这种方法要求服务器基础设施托管固件二进制文件,并在更新可用时实现信令的方法。安全性是OTA更新中关注的一个问题;固件二进制文件应该在升级之前进行加密签名和验证。

2022-10-28 07:29:42 216

翻译 OS服务——设备管理——设备固件升级

设备固件升级子系统提供了在运行时升级基于Zephyr的应用程序的映像的必要框架。它目前由两个不同的模块组成:* subsys/dfu/boot/:引导加载程序的接口代码* subsys/dfu/img\_util/:映像管理代码

2022-10-28 07:28:49 205

翻译 OS服务——设备管理——MCUmgr

管理子系统允许远程进行启用Zephyr的设备的管理。可使用以下管理操作:* 映像管理* 文件系统管理* 日志管理(当前已禁用)* 操作系统管理

2022-10-28 07:27:16 391

翻译 OS服务——调试——GDB存根

GDB特性提供了一个GDB远程串行协议(RSP)的实现,它允许您使用GDB远程调试Zephyr。该协议支持不同的连接类型:串行、UDP/IP和TCP/IP。和风目前只支持串行设备通信。

2022-10-27 21:21:22 168

翻译 OS服务——调试——核心转储

核心转储模块允许转储CPU寄存器和内存内容以进行脱机调试。当遇到致命错误时,将调用此模块,并根据启用的后端打印或存储数据。

2022-10-27 21:20:25 110

翻译 OS服务——调试——线程分析器

线程分析器模块支持跟踪线程信息所需的所有Zephyr选项,例如线程堆栈大小使用情况和其他运行时线程运行时统计信息。

2022-10-27 21:18:09 127

翻译 OS服务——加密——加密

加密部分包含有关Zephyr内核支持的加密原语的信息。利用这些信息来理解不同算法操作背后的原理以及它们是如何实现的。

2022-10-27 21:16:37 248

翻译 OS服务——加密——随机数生成

随机API子系统在加密和非加密安全实例中提供随机数生成API。使用哪种随机API是基于随机数的加密要求的。如果需要非加密值,非加密api将更快地返回随机值。

2022-10-27 21:15:08 204

翻译 构建和配置系统——配置系统——Kconfig提示和最佳实践

本页面涵盖了一些Kconfig的最佳实践,并解释了一些可能是神秘的或很容易被忽视的Kconfig的行为和特性。

2022-10-27 21:13:16 347

翻译 构建和配置系统——配置系统——设置Kconfig配置值

菜单配置和菜单配置接口可以用来在应用程序开发期间测试配置。本页解释了如何使设置永久化。

2022-10-27 21:10:43 224

翻译 构建和配置系统——配置系统——交互式Kconfig接口

有两个交互式配置接口可用于探索可用的Kconfig选项和进行临时更改:`menuconfig` 和`guiconfig`。`menuconfig` 是一个运行在终端上的界面,而guiconfig是一个图形配置界面。

2022-10-27 21:09:33 285

翻译 构建和配置系统——配置系统——配置系统(Kconfig)

可以在构建时对Zephyr内核和子系统进行配置,以适应特定的应用程序和平台需求。配置通过Kconfig进行处理,它与Linux内核使用的配置系统相同。其目标是支持配置,而无需更改任何源代码。

2022-10-27 21:06:48 309

翻译 构建和配置系统——设备树——Devicetree对比Kconfig

除了设备树之外,Zephyr还使用Kconfig语言来配置源代码。是否使用设备或Kconfig用于特定目的有时会令人困惑。这部分应该可以帮助您决定使用哪一个。

2022-10-26 19:10:10 277

翻译 构建和配置系统——设备树——设备树问题排除

这是一般的建议,特别适用于调试设备树的问题,因为输出是在CMake配置阶段创建的,并且在其输入发生变化时并不总是重新生成。

2022-10-26 19:08:47 219

翻译 构建和配置系统——设备树——设备树 HOWTOs

这个页面有一步一步的关于用设备树完成任务的建议。

2022-10-26 19:07:49 291

翻译 构建和配置系统——设备树——从C/C++访问设备树

本指南描述了Zephyr的用来从C源文件中读取设备集的API。它假设您熟悉设备介绍和设备介绍绑定中的概念。参考资料见参考资料。

2022-10-26 19:05:01 185

翻译 构建和配置系统——设备树——设备树绑定

一个设备本身只是描述硬件故事的一半,因为它是一种相对非结构化的格式。设计人员的绑定提供了另一半。设备树绑定声明对节点内容的要求,并提供有关有效节点内容的语义信息。Zephyr设备树绑定是自定义格式的YAML文件(Zephyr不使用Linux内核所使用的dt模式工具)。

2022-10-26 19:03:30 300

翻译 构建和配置系统——设备树——设计目标

随着时间的推移,Zephyr对设备树的使用有了显著的发展,预计还会有进一步的变化。以下是一般的设计目标,以及关于它们如何影响Zephyr的源代码的具体例子,以及还有更多工作需要做的领域。

2022-10-26 19:02:15 116

翻译 构建和配置系统——设备树——设备树

设备树是一种描述硬件的分层数据结构。设计树规范定义了它的源表示和二进制表示。Zephyr使用设备树来描述其支持的电路板上可用的硬件,以及该硬件的初始配置。设备输入文件有两种类型:设备源和设备绑定。资料来源包含了设计装置本身。绑定描述了其内容,包括数据类型。构建系统使用设备树源和绑定来生成生成的C头。生成的头的内容由`devicetree.h` API抽象,您可以使用该API从设备中获取信息。

2022-10-26 19:00:46 399

Jlink配置为支持普冉MCU

1 将目录中PY32目录拷贝到Jlink中Device目录 2 备份并了解文件格式 A.复制JLinkDevices.xml文件并将其存储在同一文件夹(或其他你选择的位置)进行备份。 文件备份可能会命名为JLinkDevices_backup.xml或任何你选择的名字,以便你可以识别这是一个备份文件。 B.了解JLinkDevices.xml文件格式: XML文件是用于存储和传输数据的格式,其中数据被包含在开放和关闭的标签之间。 在关于JLinkDevices.xml的情况中,它可能包含有关设备的一些信息,例如设备名、内存大小、核心类型等等。每种设备可能会在<Device>标签下面。 一个示例格式可能如下: Xml <Database> <Device> <DeviceName>...</DeviceName> <FlashSize>...</FlashSize> <Core>...</Core> <!-- more details here --> </Device> <!-- more devices he

2023-09-27

atmega8a pwm驱动

atmega8a pwm驱动,qs_pwm_init初始化函数,MCU运行主频1Mhz。 PWM为8KHZ. qs_pwm_duty_set用来设置占空比,0~255。0为关闭,255为占空比100%

2023-09-23

atmega8 内部256字节的eeprom读写

atmega8 内部512字节的eeprom读写例子。参数值配置在起始地址0,求和校验码存储在地址0x1FA.初始化时,调用qs_eeprom_load,校验失败后,回调函数p_settings_reset。重置参数。正常写操作qs_eeprom_write_bytes,需要调用qs_eeprom_checksum_update更新校验,正常读操作qs_eeprom_read_bytes

2023-09-23

atmega8a ADC电压采集驱动

atmega8a ADC电压采集,通道 PC0,PC1,PC2,分别对应CHANNEL0, CHANNEL1, CHANNEL2,qs_analog_init初始化后,qs_analog_get_value读取ADC值。

2023-09-23

STM8S 模拟输入驱动实现端口电压采集

STM8S模拟输入驱动,代码是按照状态机来运行的。例子中,首先启动ADC POWER 通道采集,然后读取ADC POWER 通道10组采样数据,再次启动ADC CURR通道,然后读取ADC CURR通道10组采样数据,最后,算法计算均值。只需在while循环中调用ADC_Data_Loopwhile即可,没有初始化代码。任何地方调用qs_analog_get_value获取转换结果。

2023-09-23

,STM8S平台,PWM驱动代码

嵌入式软件开发,STM8S平台,PWM驱动代码。使用TIME1, channel 1,channel 4, 8KHZ。使用qs_pwm_init初始化后,qs_pwm_duty_set(a)使能PWM,a在0~100范围调节。0为关闭,100为占空比100%

2023-09-23

kalman filter test.rar

标量卡尔曼滤波器测试代码,原始信号为常数5与标准差为2的高斯噪声叠加。滤波器采用递归调用算法,输出滤波后的信号波形,预测误差偏差波形。

2021-08-30

空空如也

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

TA关注的人

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