- 博客(48)
- 收藏
- 关注
原创 PCIE Switch
边带信号:就是“不跑在主数据通道上的辅助控制线”,在PCIe/背板场景下,它就是“LED、PERST#、PRSNT#、I²C、BP_TYPE 等低速度、低电压的控制/状态线”,作用=“让主机/BMC能点灯、复位、检测、配置、而不用跑PCIe TLP。每个DS设备都需要配置对应的物理槽位号,用于系统下或者其他PCIE链路方式获取进行识别,槽位号的配置需要根据软硬件接口文档进行配置,主要确保所有的槽位号不会重复,其次分配槽位号的方式需要基于DS带宽进行配置。还需要设置SWITCH的工作模式,P2P功能开关等。
2025-10-30 11:44:38
1064
原创 2. 硬件基础-2.2微处理器基础-2.2.2嵌入式微处理器的异常和中断
当CPU查询各个中断标志位的时候,会依照优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高查询优先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。当多个中断源同时请求中断时,而CPU一次只能响应其中的一个中断,同时为了能响应所有中断,就引入中断优先级来处理。中断控制器能够对中断进行排队管理,避免中断信号的丢失,同时支持对不同中断进行优先级的配置,使高优先级中断能够中断低优先级中断,满足系统中具有更高时间约束特性功能的需要。
2025-09-11 10:06:48
842
原创 ROS通信机制
ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listener 订阅。通信过程通过ROS Master进行服务注册与发现,Master维护全局服务注册表,协助节点建立连接。模式的,是一种应答机制。注意1:上述实现流程中,前五步使用的 RPC协议,最后两步使用的是 TCP 协议。2.服务端和客户端都可以存在多个。
2025-06-27 15:36:21
991
原创 嵌入式开发随笔
ADC是模拟到数字转换器(Analog-to-Digital Converter)缩写,主要用于将连续传输的模拟信号转换为数字信号,便于数字系统(如中央处理器CPU、微控制器MCU等)对传输信息进行快速处理和分析。模拟信号是指用连续变化的物理量所表达的信息,如温度、湿度、压力、电压、电流等。ADC模块所采集的模拟信号是连续变化的电压或电流信号,其数值在一定范围内连续变化。增强信号,增强抗干扰能力,扩大传输距离方便进行数据的压缩和处理兼容性。
2025-06-27 15:34:52
858
原创 Expender概念介绍
UBM缓存控制是背板管理的“神经中枢”,通过硬件加速+策略可编程性解决了多协议混存环境下的性能瓶颈。其价值在NVMe普及时代愈发凸显——企业只需通过修改OEM页(如 0xFF2C/0xFF32)即可适配新型硬盘,无需更换背板硬件,显著降低升级成本与复杂度。实施提示:修改UBM配置后需冷重启扩展器生效,并建议通过Trace掩码 0x80000000 监控缓存命中率(参考SDK编程指南)。
2025-06-26 15:24:10
1309
原创 Expender配置
功能:⼚商定制化扩展 ,需通过XML/XSD动态定义。. 添加步骤:在 sas4xMfgEval.xml 中定义新页结构(字段类型⻓度)。使⽤ g4Xmfg ⼯具⽣成制造镜像并烧录。. ⽤例:添加背板温度告警策略或私有诊断指令[[来源⽂件]]。1 . 预验证:通过CLI命令 cfgdump 导出当前配置 ,⽐对更改前后差异。2. 批量部署:将验证后的XML配置注⼊ g4Xmfg ⽣成量产镜像。
2025-06-26 10:12:05
875
原创 RT-Thread操作系统的FreeRTOS兼容层
这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统的项目快速、无感地迁移到RT-Thread操作系统上,实现在RT-Thread操作系统上无感的使用FreeRTOS的API,同时可以使用RT-Thread的丰富组件。项目基于FreeRTOS V10.4.6版本。目前已经支撑多款基于FreeRTOS编写的SDK落地RT-Thread。
2024-10-09 16:55:15
1299
原创 I²C通信协议
I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线两根通信线:SCL(SerialClock)、SDA(Serial Data)同步,半双工带数据应答 支持总线挂载多设备(一主多从、多主多从)MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度。
2024-09-14 10:30:27
1828
原创 USART串口通信
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力Receiver/Transmitter)通用同步/异步收发器USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里。
2024-09-12 15:31:45
1234
1
原创 DMA直接存储器存取
DMA(Direct Memory Access)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源外设:外设存储器,一般指外设的数据寄存器存储器:运行内存SRAM和程序存储器Flash,存储变量、数组和程序代码的地方其实外设寄存器也是存储器,只是STM32方便区分取得名字,所以DMA本质上都是存储器到存储器的数据转运12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发。
2024-09-11 17:01:23
936
原创 ADC模数转换
ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:03.3V,转换结果范围:04095 18个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围“地址锁存和译码”用来选择通道“IN0~IN7”是8路输入通道,可以输入模拟信号。
2024-09-11 15:20:07
1489
原创 STL相关算法
算法部分主要由头文件,和组成。是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。中则定义了一些模板类,用以声明函数对象。STL提供了大量实现算法的模版函数,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能,从而大大地提升效率。算法主要是由头文件组成。
2024-07-23 13:36:12
863
原创 常用容器的讲解
常用容器的讲解STL的stringString概念string容器常用操作string 构造函数string基本赋值操作string存取字符操作string拼接操作string查找和替换string比较操作string子串string插入和删除操作string和c-style字符串转换vector容器vector容器基本概念vector迭代器vector的数据结构vector常用API操作vector构造函数vector常用赋值操作vector大小操作vector数据存取操作vector插入和删除操作vec
2024-07-19 11:44:52
1316
原创 STL(标准模板库)理论基础
/STL 中的容器 算法 迭代器//STL 中的标准容器之一 :动态数组//vector 容器提供的插入数据的方法//迭代器//vector 容器提供了 begin()方法 返回指向第一个元素的迭代器//vector 容器提供了 end()方法 返回指向最后一个元素下一个位置的迭代器//通过迭代器遍历= pEnd){pStart++;
2024-07-18 15:28:21
938
原创 C++中关于异常的知识点
标准库中也提供了很多的异常类,它们是通过类继承组织起来的。异常类继承层级结构图如下:标准异常类的成员:① 在上述继承体系中,每个类都有提供了构造函数、复制构造函数、和赋值操作符重载。② logic_error类及其子类、runtime_error类及其子类,它们的构造函数是接受一个string类型的形式参数,用于异常信息的描述③ 所有的异常类都有一个what()方法,返回const char* 类型(C风格字符串)的值,描述异常信息。
2024-07-15 08:00:00
1417
原创 函数模板与类模板
/交换int数据a = b;b = temp;//交换char数据a = b;b = temp;//问题:如果我要交换double类型数据,那么还需要些一个double类型数据交换的函数//繁琐,写的函数越多,当交换逻辑发生变化的时候,所有的函数都需要修改,无形当中增加了代码的维护难度//如果能把类型作为参数传递进来就好了,传递int就是Int类型交换,传递char就是char类型交换//我们有一种技术,可以实现类型的参数化---函数模板。
2024-07-12 10:45:15
1794
原创 多态相关面试题
在多态使用中,我们通常会通过基类指针来操作派生类对象。如果基类的析构函数不是虚函数,那么当通过基类指针删除派生类对象时,只会调用基类的析构函数,而不会调用派生类的析构函数。这会导致派生类部分的资源(如动态分配的内存、文件句柄等)没有被正确释放,从而引发内存泄漏或资源泄露。通过定义虚析构函数,可以确保当通过基类指针删除派生类对象时,先调用派生类的析构函数(进行必要的清理工作),然后再调用基类的析构函数,从而实现正确的析构顺序。多态性允许我们通过基类指针或引用来操作派生类对象。
2024-07-07 13:44:18
1209
原创 多态相关知识2
在设计时,常常希望基类仅仅作为其派生类的一个接口。这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象。同时创建一个纯虚函数允许接口中放置成员原函数,而不一定要提供一段可能对这个函数毫无意义的代码。做到这点,可以在基类中加入至少一个纯虚函数(pure virtual function),使得基类称为抽象类(abstract class).建立公共接口目的是为了将子类公共的操作抽象出来,可以通过一个公共接口来操纵一组类,且这个公共接口不需要事先(或者不需要完全实现)。可以创
2024-07-04 13:22:06
1341
原创 多态相关知识1
如果函数的调用,在编译阶段就可以确定函数的调用地址,并产生代码,就是静态多态(编译时多态),就是说地址是早绑定的。C++动态多态性是通过虚函数来实现的,虚函数允许子类(派生类)重新定义父类(基类)成员函数,而子类(派生类)重新定义父类(基类)虚函数的做法称为覆盖(override),或者称为重写。取一个对象的地址(指针或引用),并将其作为基类的地址来处理,这种称为向上类型转换。c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。
2024-07-03 15:17:52
1232
原创 C++面向对象模型初探
C++类对象中的成员变量和成员函数是分开存储的。C语言中的内存四区模型仍然有效!C++中类的普通成员函数都隐式包含一个指向当前对象的this指针。静态成员函数与普通成员函数的区别:静态成员函数不包含指向具体对象的指针普通成员函数包含一个指向具体对象的指针。
2024-05-30 17:19:18
1703
原创 C++对C的扩展4:函数扩展
讲解C++对C的扩展4,关于函数方面的扩展,帮助理解更强大的C++编译器,从而进一步在项目中灵活运用C++的语法知识。
2024-05-22 16:08:46
1728
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅