# fccu_linux_demo **Repository Path**: liudegui/fccu_linux_demo ## Basic Information - **Project Name**: fccu_linux_demo - **Description**: FCCU (故障收集与控制单元) 在 Linux 平台的演示程序 - **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**: 2026-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, FCCU, Linux, 示例代码, 嵌入式 ## README # FCCU Demo 工程说明 ## 文章地址 https://blog.csdn.net/stallion5632/article/details/149144349 ## 一、工程结构关系图 ```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 结束 ``` ## 三、执行结果说明 ```bash $ ./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 [AO_P0] Handle fault idx=3, detail=0x00000000 [AO_P0] user_hook return: 888 [AO_P1] Handle fault idx=3, detail=0x00000000 [AO_P1] user_hook return: 888 [AO_P0] Handle fault idx=2, detail=0x68691ecb [AO_P0] No user_hook for fault idx=2 [AO_P0] Handle fault idx=1, detail=0x68691eca [AO_P0] No user_hook for fault idx=1 [FCCU] Active faults: 2 [FCCU] Fault idx=1 cleared [FCCU] Fault idx=2 cleared [FCCU] Active faults: 0 === FCCU Demo End === ``` ### 主要执行信息说明: - **初始化信息** 显示 FCCU 初始化完成及结构体大小。 - **注册信息** 显示用户自定义钩子函数注册成功的信息。 - **故障上报** 每次调用 `Fccu_ReportFaultPoint` 会记录故障信息并将其推入指定优先级队列。 - **故障处理** 在 `Fccu_ProcessPostEvent` 中从队列中弹出故障并调用对应的钩子函数进行处理。 ## 四、QPC 优势体现 QPC(Quantum Platform for C)为项目提供了基于事件驱动的轻量级并发框架,使故障处理流程更加高效,支持优先级处理和队列管理。使用 QPC 可以: - 实现模块化设计,提高代码可维护性。 - 通过 AO(Active Object)对象进行独立任务处理,支持并发机制。 - 通过优先级队列管理,实现关键任务优先处理。