.. _tutorial_index: 综合应用实战(基于 qemu_cortex_a53) ############################################################ 在完成 :doc:`环境搭建 ` 与 :doc:`CMake、Kconfig 与 Devicetree 基础 ` 后,开发者参考章节分别介绍了 :doc:`/develop/kernel/index`、:doc:`/develop/driver/index` 和 :doc:`/develop/subsys/index` 的单项接口。 本专栏承接上述基础知识,以 64 位 ARMv8-A 模拟目标板 **``qemu_cortex_a53``**(``qemu-system-aarch64``)为实验平台,通过一个分 4 步递进演进的完整工程 **``smart_node``(智能监测终端)**,演示如何把多个子系统与内核机制组装成工业级固件。 为什么用 ``qemu_cortex_a53`` 进行综合演练? ============================================ #. **零硬件依赖,100% 可复现**:使用本机 ``qemu-system-aarch64`` 即可验证 GICv3 中断控制器、ARM 架构定时器和 PL011 串口。 #. **用仿真驱动打通外设与存储**:``qemu_cortex_a53`` 默认仅提供基础 CPU 与串口。我们通过编写 ``app.overlay`` 挂载官方内置的 **GPIO 仿真器(``zephyr,gpio-emul``)** 与 **Flash 模拟器(``zephyr,sim-flash``)**,使应用层能够以与真实开发板完全一致的 ``gpio_dt_spec`` 和 ``nvs_fs`` API 完成外设中断与掉电存储实验。 #. **天然支持双核 SMP**:在实战四中只需将构建目标切换为 ``qemu_cortex_a53/qemu_cortex_a53/smp``,即可验证双核对称多处理。 Smart Node 四步演进路线 ======================= .. list-table:: :header-rows: 1 :widths: 22 43 35 * - 阶段 - 核心实训内容 - 串联的参考章节 * - :doc:`step1_observability_and_shell` - 自定义应用 ``Kconfig``、多文件模块、分级日志(``Logging``)与交互式 ``Shell`` 命令(``node info`` / ``node threshold``) - :doc:`/develop/application`、:doc:`/develop/subsys/logging/logging_usage`、:doc:`/develop/subsys/shell/shell_usage` * - :doc:`step2_gpio_and_workqueue` - ``app.overlay`` 挂载虚拟 LED/按键、``gpio_dt_spec`` 硬件中断回调、``k_timer`` 与 ``k_work_delayable`` 下半部消抖处理 - :doc:`/develop/driver/gpio`、:doc:`/develop/kernel/system_thread`、:doc:`/develop/kernel/workq` * - :doc:`step3_multithread_and_ipc` - 多线程生产者-消费者架构:``K_THREAD_DEFINE``、``k_msgq`` 传递采样包、``k_mutex`` 保护阈值、``k_sem`` 外部立即唤醒 - :doc:`/develop/kernel/synchronization`、:doc:`/develop/kernel/sem`、:doc:`/develop/kernel/mutex`、:doc:`/develop/kernel/msgq` * - :doc:`step4_nvs_storage_and_smp` - ``zephyr,sim-flash`` 分区定义、``flash_map`` 与 ``NVS`` 参数掉电保存(兼容 3.7 LTS 与 4.x),以及双核 SMP 运行验证 - :doc:`/develop/driver/flash_introduction`、:doc:`/develop/subsys/storage/flash_map`、:doc:`/develop/subsys/storage/nvs` .. toctree:: :maxdepth: 1 step1_observability_and_shell step2_gpio_and_workqueue step3_multithread_and_ipc step4_nvs_storage_and_smp