
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
链表宏在linux内核、鸿蒙内核、rtos和一些开源代码中用的非常多。链表宏是双向链表的经典实现方式,总代码不超过50行,相当精炼。宏的定义如下,其作用是将所传入指针N的两个指针域和都指向N。目的是完成单个节点的初始化工作,如下图示意了该过程。宏的定义如下,直接将宏展开,其意图很明显是定义一个新链表(H表示为传入宏的参数名),并且将H的两个指针域,都初始化为H地址本身,如下图示意了该过程。宏的定义

嵌入式软件错误的五个主要原因在嵌入式开发软件中查找和消除潜在的错误是一项艰巨的任务。通常需要英勇的努力和昂贵的工具才能从观察到的崩溃,死机或其他计划外的运行时行为追溯到根本原因。在最坏的情况下,根本原因会破坏代码或数据,使系统看起来仍然可以正常工作或至少在一段时间内仍能正常工作。工程师常常放弃尝试发现不常见异常的原因,这些异常在实验室中不易再现,将其视为用户错误或“小故障”。然而,机器中的这些鬼魂
嵌入式产品开发流程详解阶段1:产品需求阶段2:产品规格说明阶段3:产品总体设计方案阶段4:产品概要设计阶段5:产品详细设计阶段6&7:产品调试与验证阶段8:测试阶段9:产品附录:嵌入式硬件开发流程硬件阶段1:硬件产品需求硬件阶段2:硬件总体设计方案硬件阶段3:硬件电路原理图设计硬件阶段4:PCB图设计硬件阶段5:PCB加工文件制作与PCB打样硬件阶段6:硬件产品的焊接与调试硬件阶段7:硬件
嵌入式内存管理被欺骗的C进程每一个C语言的程序被执行起来的时候系统为了更方便开发人员操作,会给每一个进程分配一个虚拟的内存空间,它实际上是从处理内存映射出来的。虚拟内存的起始地址结束地址都是固定的,因此虚拟内存的布局都是一样。比如有三个进程 P1 P2 P3 ,他们虽然得到的物理内存是完全不一样,但是从进程的角度来看他们三个得到的内存确实一模一样的。假设你正在使用的计算机实际物理内存只有 1GB
嵌入式软件可靠性设计规范是确保系统稳定运行的基础。通过模块化设计、冗余设计、容错设计等技术手段,结合严格的开发流程和测试方法,可以有效提高嵌入式软件的可靠性。同时,完善的文档和工具支持也是不可或缺的。
嵌入式应用软件任务划分的原则参考文章“嵌入式应用软件任务划分的原则”在基于实时操作系统(RTOS,RealTime Operating System)的单片机应用软件设计中,“任务”是一个很重要的概念。对于任务的划分,并没有一个人人都要遵守的规则,不同的人来设计一个同样规格要求的系统,会有不同的方案。本文将深入研究划分任务的方法,并在此基础上,从实用的角度给出编写基于RTX51 Tiny实时...
嵌入式C开发中编程模型事件驱动消息驱动事件驱动vs消息驱动数据驱动1. 表驱动法(Table-Driven)用表驱动法来实现Unix设计原则中的“分离原则”和“表示原则”2. 基于数据模型编程**数据驱动思考**总结事件驱动事件驱动架构(Event-Driven Architecture)是一种用于设计应用的软件架构和模型,程序的执行流由外部事件来决定,它的特点是包含一个事件循环,当外部事件发生时
本人在学习STM32 USB使用的过程中,收集网上的资料,阅读别人博文,拼凑零碎知识,边看边学,记录下学习过程。推荐看《圈圈教你玩USB》。枚举前的工作根据STM32的USB库做移植,介绍枚举过程,SetSystem函数是一些初始化化设置。首先系统执行USB中断设置:USB_Interrupts_Config(); //中断向量表设置然后执行USB时钟设置:Set_USBClock();...
typedef定义函数类型的用法最近在CodeProject上看了段关于COM in plain C项目的代码,其中的一段关于typedef使用的代码一时让人有点模糊,代码如下:typedef long SetStringPtr(char *);typedef long GetStringPtr(char *, long);typedef struct {SetStringPtr * Se
利用WSL2搭建Qemu仿真Vexpress-a9开发环境,实现了制作根文件系统,u-boot引导linux运行。







