自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 BMC_IPMI_v2.0_IPMB接口

获取消息命令的响应将如下所示。:注意,这是整个IPMB响应消息,前导从机地址已被剥离(不需要存储,因为已知是BMC从机地址20h)。使用BMC来发送和接收IPMB消息。

2024-08-13 17:07:19 901

原创 网络设备驱动-上下文判断-dev_kfree_skb_any()

需要注意的是,这些宏的具体实现可能会依赖于特定的硬件架构和内核版本,但它们的基本功能和用途在大多数Linux内核实现中是相似的。在编写内核代码时,合理使用这些宏可以提高代码的安全性和可靠性。是两个用于检查当前执行上下文的宏或内联函数。它们帮助内核代码确定是否处于特定的中断处理环境,这对于编写安全的内核代码非常重要。这是重要的,因为在中断上下文中直接释放skb。这行代码检查当前是否在中断上下文(详解:在Linux内核中,,表示释放skb的原因。)或者中断是否被禁用(

2024-08-13 17:03:22 304

原创 BMC_IPMI_v2.0_会话_桥接_Session

会话激活的必要性:在进行一般的IPMI消息传递之前,必须先激活会话。对于IPMI v1.5,激活会话的基本机制是通过一组IPMI命令来执行“IPMI挑战-响应”过程。IPMI v2.0的会话建立机制:IPMI v2.0增加了使用RMCP+(带认证的密钥交换协议,RAKP)作为会话建立机制。更多信息可以参考第13.3节和第13.15节。IPMI挑战-响应过程:涉及三个IPMI命令:获取通道认证能力(Get Channel Authentication Capabilities)

2024-08-09 18:03:12 798

原创 BMC_IPMI_v2.0_消息接口_Channel

当激活会话时,BMC会从用户ID 1开始顺序扫描用户名,并寻找第一个匹配的用户名且为给定通道启用了访问的用户。如果不支持“设置用户访问”命令,则使用通道的权限限制用于所有用户。要为给定的用户名配置不同的密码,需要配置多个用户条目 - 每个不同的密码都用于特定的通道集。如果实现仅支持一个具有固定用户名的用户,则该固定用户名必须为空(全部为零)。用户名可以是固定的,可配置的,或两者的组合,具体取决于实现的选择。如果需要,一个通道上的用户名可以与另一个通道上的密码不同。必须支持为所有用户ID配置用户密码。

2024-07-26 17:53:32 751

原创 BMC_IPMI_v2.0_消息接口描述

1. **标准命令的正常响应**:对于标准命令的正常响应,必须返回`00h`完成代码。2. **OEM命令的正常响应**:对于OEM(原始设备制造商)命令的正常响应,建议也返回`00h`完成代码。3. **标准命令的错误或非典型响应**:对于标准命令的错误或非典型响应,必须返回非零的完成代码。4. **OEM命令的错误或非典型响应**:对于OEM命令的错误或非典型响应,建议返回非零的完成代码。

2024-07-26 17:46:08 696

原创 BMC_IPMI_v2.0_BMC功能简介

如果提供了IPMB,则SDR存储库必须通过该接口可读,并且通过IPMB接口进行SDR更新是可选的。在系统上电或ACPl 'S1'休眠状态下访问SDR存储库是强制性的,但在系统下电或>S1休眠状态下访问SDR存储库是可选的。无论系统电源状态如何,只要BMC可访问,并且通过任何可操作的接口访问,SEL读访问总是强制性的。如果提供了IPMB,事件接收函数也必须接受来自IPMB的事件消息。事件接收器在系统上电或ACPI 'S1'休眠状态时的操作是强制性的,但在系统下电或>S1休眠状态时的操作是可选的。

2024-07-26 17:43:01 926

原创 struct cdev *cdev = filp->f_path.dentry->d_inode->i_cdev;

dentry_path_raw(filp->f_path.dentry,buf,buflen)

2024-04-17 20:07:35 218

原创 container_of //随手记-内核驱动

container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。type的起始地址 = ptr - size (这里需要都转换为char *,因为它为单位字节)。已知结构体type的成员member的地址ptr,求解结构体type的起始地址。

2024-04-17 20:05:15 99

原创 bootcmd & bootargs

bootargs:设置根文件系统以什么方式加载。bootcmd:设置内核镜像以什么方式加载。

2024-04-08 20:50:37 135

原创 Card did not respond to voltage select!

原因 默认在mmc 0 (SD卡)切换分区到emmc分区 已解决。

2024-04-08 19:35:09 537

原创 ./include/uapi/linux/types.h:5:10: fatal error: asm/types.h: 没有那个文件或目录 #include <asm/types.h>

【代码】./include/uapi/linux/types.h:5:10: fatal error: asm/types.h: 没有那个文件或目录 #include <asm/types.h>

2024-03-18 21:00:21 526

原创 (C语言笔记)位域的详解使用(含内存对齐)

在一般学习C语言中,关于位域的知识点以及讲解一般都很少,导致我第一次接触到的时候一片迷茫,在嵌入式系统以及相关单片系统学习使用方面会比较多所以在此对位域的详解及使用做一个总结(个人理解不晦涩)

2023-07-19 13:32:36 1307

原创 (C语言笔记)const 与volatile关键字连用

C语言中,关于关键字const的理解很容易出现偏差,由于const是constant的缩写,恒定不变的意思,所以很多人将const修饰的值是常量,这是不精确的。综上,再引出const volatile连用的关键字,不再将const修饰的认为是一个绝对不可变的常量就能理解了。const表示将限制其写入。但不能排除其他因素:硬件平台的控制,多线程的状态控制。即0x30是能被外部条件改变的端口值,这里就能理解const只做只读的意义了。意思就是每调用一次就会重新去找他地址对应的值,发生变化后就取变化后的值。

2023-07-12 21:10:12 571 1

原创 C语言_动态分配内存

这种情况下,可以使用动态内存分配函数来创建、更新和释放动态数据结构。如果结构体的大小在编译时无法确定,或者需要在程序运行时根据需求进行分配和管理,就需要使用动态内存分配。如果需要在运行时根据输入或其他因素确定字符串的长度,就需要使用动态内存分配。同时也别忘了在动态分配内存以后,需要对分配的内存进行释放,例如,使用free函数对之前malloc或calloc等函数所分配的内存进行释放。数组:如果数组的大小在编译时无法确定,或者需要根据程序运行时的需求进行扩展或缩小,就需要使用动态内存分配。

2023-07-12 10:17:42 88 1

空空如也

空空如也

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

TA关注的人

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