# fccu_linux_demo **Repository Path**: liudegui/fccu_linux_demo ## Basic Information - **Project Name**: fccu_linux_demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-05 - **Last Updated**: 2025-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FCCU Demo 工程说明 ## 文章地址 https://blog.csdn.net/stallion5632/article/details/149144349 我的FCCU其实是软件版本的FCCU,主要作用是: - 统一收集全系统(软硬件)故障 - 对故障分类、队列缓存、状态维护、持久化 - 根据故障属性自动采取不同的后处理措施(如紧急处理、复位、输出安全信号) - 支持用户自定义后处理钩子 - 提供系统级/业务级“故障快照”与“诊断信息”查询接口 ## 一、工程结构关系图 ```mermaid graph TD main.c -->|调用接口| fccu.h fccu.h -->|声明/实现| fccu.c fccu.c -->|使用| fccu_queue.h fccu_queue.h -->|实现| fccu_queue.c fccu_queue.c -->|依赖| spsc_queue.h main.c -->|依赖| qpc_stub.h fccu.h -->|依赖| qpc_stub.h ``` ## 二、执行时序图 ```mermaid sequenceDiagram participant User participant Main as main.c participant FCCU as fccu.c participant Queue as fccu_queue.c participant QPC as qpc_stub.h User->>Main: 程序启动 Main->>FCCU: Fccu_AO_Ctor() Main->>FCCU: Fccu_Init() FCCU->>Queue: Fccu_QueueSetInit() Main->>FCCU: Fccu_SetQueueOverflowCallback() Main->>FCCU: Fccu_RegisterUserHook() Main->>FCCU: Fccu_ReportFaultPoint() FCCU->>Queue: Fccu_QueueSetPush() Main->>FCCU: Fccu_ReportFaultPoint() FCCU->>Queue: Fccu_QueueSetPush() Main->>FCCU: Fccu_ReportFaultPoint() FCCU->>Queue: Fccu_QueueSetPush() Main->>FCCU: Fccu_GetActiveFaults() Main->>FCCU: Fccu_ClearFault() Main->>FCCU: Fccu_GetActiveFaults() Main->>FCCU: Fccu_ProcessPostEvent() FCCU->>Queue: Fccu_QueueSetPop() FCCU->>FCCU: 调用 user_hook Main->>FCCU: Fccu_ProcessPostEvent() FCCU->>Queue: Fccu_QueueSetPop() FCCU->>FCCU: 调用 user_hook Main->>User: Demo 结束 ``` ## 三、执行结果说明 ``` $ ./fccu_demo === FCCU Demo Start === [FCCU] Initialization complete sizeof(struct FCCU_VmEntry) = 32 [FCCU] Register user_hook for idx=3 [FCCU] Report fault: idx=1, detail=0x68691eca, priority=0 [FCCU] Report fault: idx=2, detail=0x68691ecb, priority=1 [FCCU] Report fault: idx=3, detail=0x68691ecc, priority=0 [FCCU] Active faults: 3 [FCCU] Fault idx=1 cleared [FCCU] Active faults: 2 [AO_P0] Handle fault idx=1, detail=0x68691eca [user_hook_minor] code=0x01010002, detail=0x68691eca, first=1 [AO_P0] user_hook return: 200 [AO_P0] Handle fault idx=3, detail=0x68691ecc [Demo] my_custom_hook: code=0x01010004, detail=0x68691ecc, first=1 [AO_P0] user_hook return: 888 [AO_P1] No pending faults === FCCU Demo End === ``` - **初始化信息** 显示 FCCU 初始化完成及结构体大小。 - **注册信息** 显示 user_hook 注册成功。 - **故障上报** 每次上报打印索引、详细信息、优先级。若队列溢出,触发溢出回调。 - **活跃故障统计** 显示当前活跃故障数量,清除后数量减少。 - **事件处理** 按优先级弹出并处理队列中的故障项,调用对应 user_hook 并显示返回值。若无待处理故障,打印提示。 - **自定义钩子** 若注册了自定义 user_hook,会在处理对应故障时被调用并打印自定义内容。 - **结束信息** 显示 Demo 结束。 ## 四、QPC 优势体现 - **事件驱动**:通过活动对象和事件队列模拟异步事件处理。 - **优先级调度**:多级队列支持不同优先级的故障分级处理。 - **钩子机制**:支持用户自定义故障处理逻辑,灵活扩展。 - **溢出保护**:支持队列溢出回调,增强健壮性。 - **状态管理**:支持活跃故障状态查询与主动清除。