当前位置: 首页 > news >正文

驱动开发硬核特训 · Day 15:电源管理核心知识与实战解析

在嵌入式系统中,电源管理(Power Management)并不是“可选项”,而是实际部署中影响系统稳定性、功耗、安全性的重要一环。今天我们将以 Linux 电源管理框架 为基础,从理论结构、内核架构,再到典型驱动实战(如 regulator、suspend/resume、runtime PM)进行完整讲解。


一、为什么必须关注电源管理?

我们先从几个实际场景开始思考:

  • 一个音频芯片如果一直上电,会导致电池过快耗尽;
  • 需要在系统空闲时自动关闭 LCD 背光;
  • 启动时必须先启用 PMIC(电源芯片)供电,再初始化 CPU 核心;
  • Linux 设备需要支持 suspend to RAM、runtime suspend 等节能机制;
  • 某些电源域必须和外设生命周期保持同步,提前上电、延后断电;

这些需求背后,其实都依赖于 Linux 的电源管理子系统。


在这里插入图片描述

二、Linux 电源管理框架概览

Linux 电源管理包含多个层次,我们可以从高到低划分为以下几类:

电源管理类别对应机制
系统电源管理(System PM)suspend / hibernate
运行时电源管理(Runtime PM)自动 suspend/resume
设备电源管理(Device PM)regulator、clk、gpio 控制等
SoC 电源域管理PM Domain(power domain)支持

它们之间是逐层调用、逐层配合的关系:

系统进入 suspend└── 内核调度设备进入 suspend└── 驱动实现 -> suspend() 回调└── 控制 regulator / clk / GPIO / power-domain

三、核心机制详解

3.1 设备电源控制:Regulator 框架

Regulator 是 Linux 电源管理最核心的子系统之一,用于控制 PMIC 提供的电压通道(如 BUCKx、LDOx)。
在这里插入图片描述

使用场景
  • CPU 电源需要通过 regulator 提供稳定电压
  • 驱动希望通过 devm_regulator_get() 获取指定供电通道
  • 电压可以动态调节(通过 OPP 机制)以适配不同性能场景
示例代码
// 在 probe 中获取电源
struct regulator *vdd_supply;
vdd_supply = devm_regulator_get(&pdev->dev, "vdd");// 上电
regulator_enable(vdd_supply);// 下电
regulator_disable(vdd_supply);

3.2 runtime PM 与 autosuspend

Runtime PM 支持“设备空闲时自动挂起”,比如 USB 摄像头、I2C 外设等。

关键 API
  • pm_runtime_enable(&dev->dev); 开启 runtime 管理
  • pm_runtime_get_sync() 保证设备上电
  • pm_runtime_put_sync() 释放引用,设备可自动 suspend
  • 可配合 autosuspend_delay 实现自动挂起

3.3 System Suspend / Resume

当系统整体进入睡眠,内核将调用所有驱动的 suspend() / resume() 回调,驱动必须正确实现。

常见写法
static int xyz_suspend(struct device *dev)
{// 关闭设备电源,保存上下文return 0;
}static int xyz_resume(struct device *dev)
{// 恢复设备,重新上电return 0;
}static const struct dev_pm_ops xyz_pm_ops = {.suspend = xyz_suspend,.resume  = xyz_resume,
};static struct platform_driver xyz_driver = {.driver = {.name = "xyz",.pm = &xyz_pm_ops,},
};

四、实战:从设备树到驱动的电源联动

4.1 设备树描述 regulator

buck2: regulator@2 {compatible = "regulator-fixed";regulator-name = "vdd_cpu";regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;
};cpu0: cpu@0 {device_type = "cpu";compatible = "arm,cortex-a53";cpu-supply = <&buck2>;
};

cpu-supply 使用 phandle 引用了 buck2,内核通过 of_parse_phandle() 获取 regulator 设备。

4.2 驱动中访问供电信息

struct regulator *vdd;
vdd = devm_regulator_get(&pdev->dev, "vdd");  // 由设备树 cpu-supply 解析
regulator_enable(vdd);
若没有设备树,也可手动绑定 regulator
regulator_set_voltage(vdd, 900000, 900000);

五、电源域(Power Domain)机制

复杂 SoC(如 i.MX8MP)中,多个模块共用电源域,必须通过 PM Domain 统一管理开关电源。

5.1 设备树定义电源域

gpu: gpu@... {...power-domains = <&gpu_power_domain>;
};

5.2 驱动中注册与使用

dev_pm_domain_attach(&pdev->dev, true);

Linux 会根据 power-domains 自动判断何时上电、何时断电。


六、调试与验证方法

6.1 查看 regulator 列表

cat /sys/kernel/debug/regulator/regulator_summary

6.2 查看 runtime PM 状态

cat /sys/devices/.../power/runtime_status
cat /sys/devices/.../power/autosuspend_delay_ms

6.3 测试 suspend/resume 流程

echo mem > /sys/power/state  # 触发 suspend

内核会自动调用设备驱动中的 suspend 回调。


七、常见问题与解答

Q1:设备 suspend 时崩溃?

A:可能驱动未正确关闭电源资源,或调用了已经 suspend 的外围设备接口。

Q2:regulator 获取失败?

A:检查设备树是否定义了正确的 xxx-supply 属性,regulator 是否注册成功。

Q3:如何实现设备空闲自动下电?

A:使用 runtime PM + autosuspend,即:

pm_runtime_set_autosuspend_delay(dev, 1000);
pm_runtime_use_autosuspend(dev);

八、总结与启发

电源管理不仅是一个子系统,而是“系统级驱动整合能力”的体现。驱动编写者必须具备以下能力:

  • 熟练掌握 regulator、runtime PM、系统 suspend 接口;
  • 清楚设备树中的 regulator 和 phandle 如何影响驱动行为;
  • 理解电源域和设备生命周期之间的联动;
  • 能够定位 suspend/resume 中断电或资源冲突的异常。

📺 视频教程请关注 B 站:“嵌入式 Jerry”
内容同步更新,实战演示更清晰!


如需继续输出 Day 16 博文内容,也可以告诉我主题,我们继续高强度特训。

相关文章:

驱动开发硬核特训 · Day 15:电源管理核心知识与实战解析

在嵌入式系统中&#xff0c;电源管理&#xff08;Power Management&#xff09;并不是“可选项”&#xff0c;而是实际部署中影响系统稳定性、功耗、安全性的重要一环。今天我们将以 Linux 电源管理框架 为基础&#xff0c;从理论结构、内核架构&#xff0c;再到典型驱动实战&a…...

如何使用人工智能大模型,免费快速写工作计划?

如何使用人工智能大模型&#xff0c;免费快速写工作计划&#xff1f; 具体视频教程https://edu.csdn.net/learn/40406/666579...

延长(暂停)Windows更新

延长&#xff08;暂停&#xff09;Windows更新 因为不关闭更新有时候就会出现驱动或者软硬件不兼容&#xff0c;导致蓝屏出现。 注&#xff1a;为什么选择延长更新而不是用软件暂停更新&#xff0c;因为使用软件暂停更新会出现一下问题&#xff0c;比如微软商店打不开等等 键…...

QT实现串口透传的功能

在一些产品的开发的时候&#xff0c;需要将一个串口的数据发送给另外一个串口进行转发。 具体的代码如下&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::Ma…...

分布类相关的可视化图像

目录 一、直方图&#xff08;Histogram&#xff09; 1.定义 2.特点 3.局限性 4.类型 5.应用场景 6.使用Python实现 二、密度图&#xff08;Density Plot&#xff09; 1.定义 2.特点 3.局限性 4.类型 5.应用场景 6.使用Python实现 三、箱线图&#xff08;Box Plo…...

【android bluetooth 框架分析 02】【Module详解 12】【 BidiQueue、BidiQueueEnd、Queue介绍】

1. BidiQueue 和 BidiQueueEnd 蓝牙协议栈里面有很多 BidiQueue ,本节就专门来梳理这块内容。 2. BidiQueue 介绍 BidiQueue&#xff0c;是 Host 与 Controller 层通信的中枢之一&#xff0c; acl_queue_、sco_queue_、iso_queue_ 都是 BidiQueue 类型。让我们一起看一下这个…...

c++通讯录管理系统

通讯录是一个可以记录亲人&#xff0c;好友的信息工具。 功能包括&#xff1a; 1&#xff0c;添加联系人&#xff1a;向通讯录添加新人&#xff0c;包括&#xff08;姓名&#xff0c;性别年龄&#xff0c;联系电话&#xff0c;家庭住址&#xff09; 2&#xff0c;显示联系人…...

React 打包

路由懒加载 原本的加载方式 #使用lazy()函数声明的路由页面 使用Suspense组件进行加载 使用CDN优化...

day1 python训练营

变量与输出 print(1,2,3,sep\n,endsep用来区分两个变量&#xff0c;end会紧跟最后一个变量) print(1,2,3,sepaaa,endsep用来区分两个变量,3后面不会再输出aaa) 格式化字符串 变量名值 print(f"变量名{变量名}") 变量的基础运算 ,-*,/ 注意*不要忘写。比如2j就不…...

C语言状态字与库函数详解:概念辨析与应用实践

C语言状态字与库函数详解&#xff1a;概念辨析与应用实践 一、状态字与库函数的核心概念区分 在C语言系统编程中&#xff0c;"状态字"和"库函数"是两个经常被混淆但本质完全不同的概念&#xff0c;理解它们的区别是掌握系统编程的基础。 1. 状态字&…...

软件测试笔记(测试的概念、测试和开发模型介绍、BUG介绍)

软件测试笔记 认识测试 软件测试是啥&#xff1f; 说白了&#xff0c;就是检查软件的功能和效果是不是用户真正想要的东西。比如用户说“我要一个能自动算账的软件”&#xff0c;测试就是看这个软件到底能不能准确算账、有没有漏掉功能。 软件测试定义&#xff1a;软件测试就…...

Python多进程同步全解析:从竞争条件到锁、信号量的实战应用

1. 进程同步的必要性 在多进程编程中&#xff0c;当多个进程需要访问共享资源时&#xff0c;会出现竞争条件问题。例如火车票售卖系统中&#xff0c;如果多个售票窗口同时读取和修改剩余票数&#xff0c;可能导致数据不一致。 1.1 竞争条件示例 from multiprocessing import…...

Vue3 + TypeScript,关于item[key]的报错处理方法

处理方法1&#xff1a;// ts-ignore 注释忽略报错 处理方法2&#xff1a;item 设置为 any 类型...

Spring源码中关于抽象方法且是个空实现这样设计的思考

Spring源码抽象方法且空实现设计思想 在Spring源码中onRefresh()就是一个抽象方法且空实现&#xff0c;而refreshBeanFactory()方法就是一个抽象方法。 那么Spring源码中onRefresh方法定义了一个抽象方法且是个空实现&#xff0c;为什么这样设置&#xff0c;好处是什么。为…...

Pandas数据可视化

在当今这个数据驱动的时代&#xff0c;数据可视化已经成为数据分析不可或缺的一部分。通过图形化的方式展示数据&#xff0c;我们能够更直观地理解数据的分布、趋势和关系&#xff0c;从而做出更加精准的决策。Pandas&#xff0c;作为Python中最为流行的数据处理库&#xff0c;…...

string类(详解)

【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 3. string类的模拟实现 4. 扩展阅读 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 C 语言中&#xff0c;字符串是以 \0 结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c; C 标准库中提供…...

零基础上手Python数据分析 (19):Matplotlib 高级图表定制 - 精雕细琢,让你的图表脱颖而出!

写在前面 —— 超越默认样式,掌握 Matplotlib 精细控制,打造专业级可视化图表 上一篇博客,我们学习了 Matplotlib 的基础绘图功能,掌握了如何绘制常见的折线图、柱状图、散点图和饼图,并进行了基本的图表元素定制,例如添加标题、标签、图例等。 这些基础技能已经能让我…...

【上位机——MFC】MFC入门

MFC库中相关类简介 CObject MFC类库中绝大部分类的父类&#xff0c;提供了MFC类库中一些基本的机制。 对运行时类信息的支持。对动态创建的支持。对序列化的支持。 CWinApp 应用程序类&#xff0c;封装了应用程序、线程等信息。 CDocument 文档类&#xff0c;管理数据 F…...

ASP.NET Core 最小 API:极简开发,高效构建(下)

在上篇文章 ASP.NET Core 最小 API&#xff1a;极简开发&#xff0c;高效构建&#xff08;上&#xff09; 中我们添加了 API 代码并且测试&#xff0c;本篇继续补充相关内容。 一、使用 MapGroup API 示例应用代码每次设置终结点时都会重复 todoitems URL 前缀。 API 通常具有…...

【leetcode100】一和零

1、题目描述 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 输入&#xff1a…...

代码随想录算法训练营第五十三天 | 105.有向图的完全可达性 106.岛屿的周长

105.有向图的完全可达性 题目链接&#xff1a;101. 孤岛的总面积 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;图论&#xff1a;岛屿问题再出新花样 | 深搜优先搜索 | 卡码网&#xff1a;101.孤岛总面积_哔哩哔哩_bilibili 思路&#xff1a; 1.确认递归函数&…...

在 Debian 10.x 安装和配置 Samba

1. 更新系统 sudo apt update sudo apt upgrade -y2. 安装 Samba sudo apt install samba -y3. 配置 Samba 备份默认配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak编辑配置文件 sudo nano /etc/samba/smb.conf示例配置&#xff08;共享目录&#xff09; …...

Python中的短路运算

近期在学习python的过程中遇到此问题&#xff0c;遂总结记录 在”and“逻辑判定布尔类型时: 若判定对象均为True&#xff0c;则输出最后一个判别为True的对象 若判定对象的数据类型中有布尔类型&#xff0c;且最终结果为False&#xff0c;则输出布尔类型False 若判定对象的…...

Java8-遍历list取出两个字段重新组成list集合

在Java 8中,可以使用Stream API遍历List并提取两个字段重新组合成新的List。 以下是几种常见方法: 方法1:使用自定义类 定义一个包含目标字段的类:public class FieldHolder {private final String field1;private final int field2;public FieldHolder(String field1, i…...

【C++ 程序设计】实战:C++ 实践练习题(31~40)

目录 31. 数列&#xff1a;s 1 &#xff0b; 2 &#xff0b; 3 &#xff0b; … &#xff0b; n 32. 数列&#xff1a;s 1 - 2 - 3 - … - n 33. 数列&#xff1a;s 1 &#xff0b; 2 - 3 &#xff0b; … - n 34. 数列&#xff1a;s 1 - 2 &#xff0b; 3 - … &#…...

【笔记】SpringBoot实现图片上传和获取图片接口

上传图片接口 接口接收图片文件和布尔类型的是否生成缩略图参数。 生成保存图片文件的文件夹&#xff0c;文件夹的命名为上传图片的日期“根目录\file\cover\202504”,如果文件夹已存在则不生成。接下来拼接文件名&#xff0c;生成30位的随机数拼接到原文件名防止文件名相同的…...

Linux 下依赖库的问题

假设你在 某用户 user_name 下安装了一个 rquests库。 然后你在命令行使用 python3 -c &#xff08;...&#xff09;验证。发现没有任何问题。 然后你使用python3 xxx.py 发现执行验证也没有问题。 这个时候你信心慢慢的写了一个C的代码在代码中system调用这个.py文件。 然…...

STM32 HAL 水位传感器驱动程序

工作原理是输出模拟量电压值&#xff0c;只需要使用stm32adc读取电压再转换一下即可 本代码中&#xff0c;水位传感器连接在PA0&#xff0c;可通过宏定义快速设置电压区间和水位之间的关系 water_level.c /***************************************************************…...

DeepSeek R1 7b,Langchain 实现 RAG 知识库 | LLMs

DeepSeek R1 7b&#xff0c;Langchain 实现 RAG 知识库 | LLMs DeepSeek R1 7b&#xff0c;Langchain 实现 RAG 知识库DeepSeek R1Chat via ConsoleChat via Browser LangchainFAQs GitHub https://github.com/hailiang-wang/ollama-get-started DeepSeek R1 7b&#xff0c;La…...

【C语言】char unsigned char signed char

在C语言中,char 和 unsigned char 虽然都是1字节(通常8位)的数据类型,但它们在符号处理、数值范围和用途上有显著区别。以下是详细对比: 1. 核心区别 特性charunsigned char符号性可能是signed或unsigned(由编译器决定)明确无符号(仅非负数)数值范围通常 -128 到 1270…...

硬件电路(24)-NE555振荡电路

一、概述 NE555 是一款能产生高精度定时脉冲的双极性集成电路。内部包括阈值比较器、触发比较器、RS触发 器、输出电路等四部分电路构成。它可通过外接少量的阻容器件&#xff0c;组成定时触发电路、脉宽调制电路、音 频振荡器等等电路。广泛应用于玩具、信号交通、自动化控制等…...

Transformer系列(二):自注意力机制框架

自注意力机制框架 一、K-Q-V的自注意力机制二、位置表征1. 通过学习嵌入来进行位置表征2. 通过直接改变 α \alpha α来进行位置表征 三、逐元素非线性变换四、未来掩码&#xff08;future mask&#xff09;五、总结 上篇博客:NLP中放弃使用循环神经网络架构讲解了循环神经网络…...

安全技术和防火墙

传输层4.7层防火墙 传输层&#xff08;4&#xff09;四层防火墙&#xff1a;ip地址 mac地址 协议 端口号来控制数据流量 应用层防火&#xff08;7&#xff09;墙/代理服务器&#xff1a; ip地址 mac地址 协议 端口号来控制数据流量 真实传输的数据&#xff08;把前面的ip地址…...

深度可分离卷积与普通卷积的区别及原理

1. 普通卷积 普通卷积使用一个滤波器在输入特征图的所有通道上滑动&#xff0c;同时对所有通道进行加权求和&#xff0c;生成一个输出通道。如果有多个滤波器&#xff0c;则生成多个输出通道。假设上一层的特征图有 n 个通道&#xff0c;每个通道是一个二维的图像&#xff08;…...

STM32时钟树

1、认识时钟树 H&#xff1a;high 高 L&#xff1a;low 低 S&#xff1a;speed 速度 I&#xff1a;internal 内部 E&#xff1a;external 外部 HSE就是高速外部时钟源 HSI就是告诉内部时钟源 外部时钟一般需要接一个时钟源&#xff0c;也就是晶振&#xff0c;这个需要外接&…...

致迈协创C1pro考勤系统简介

1.应用背景 该套件的“数据映射引擎”技术&#xff0c;完成了OA系统与考勤机硬件设备的无缝联接。V5具有良好交互特性和B/S的程序架构&#xff0c;使得客户管理层和HR相关管理人员通过V5能实时查询统计人员的考勤情况&#xff0c;从而及时有效的完成人员考勤的监控与管理&#…...

pivot_root:原理、用途及最简单 Demo

什么是 pivot_root pivot_root 是 Linux 系统中的一个系统调用&#xff08;和对应的命令行工具&#xff09;&#xff0c;用于更改进程的根文件系统。与 chroot 类似&#xff0c;pivot_root 将一个指定目录设置为进程的新根目录&#xff08;/&#xff09;&#xff0c;但它比 ch…...

【小沐杂货铺】基于Three.JS绘制卫星轨迹Satellite(GIS 、WebGL、vue、react,提供全部源代码)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第二期3【小沐学GIS】…...

MySQL -数据类型

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【暂无】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 目录 前言数值类型intbitfloat 字符串charvarcharenum set 日期和时间类型 前言 在之前的操作篇&#xff0c; 我们用到的大多是DDL(数据定义语言)。 在建表时&#xff0c;…...

数据通信学习笔记之OSPF的邻居角色

邻居与邻接 OSPF 使用 Hello 报文发现和建立邻居关系 在以太网链路上&#xff0c;缺省时&#xff0c;OSPF 采用组播的形式发送 Hello 报文 (目的地址 224.0.0.5) OSPF Hello 报文中包含了路由器的 RouterID、邻居列表等信息。 邻居状态&#xff1a; 邻居&#xff1a;2-way 邻…...

2025第十六届蓝桥杯python B组满分题解(详细)

目录 前言 A: 攻击次数 解题思路&#xff1a; 代码&#xff1a; B: 最长字符串 解题思路&#xff1a; 代码&#xff1a; C: LQ图形 解题思路&#xff1a; 代码&#xff1a; D: 最多次数 解题思路&#xff1a; 代码&#xff1a; E: A * B Problem 解题思路&…...

计算机组成原理笔记(十七)——4.2定点加减运算

定点数的加减运算包括原码、补码和反码3种带符号数的加减运算&#xff0c;其中补码加减运算实现起来最方便。 4.2.1原码加减运算 原码加减运算详解 原码是计算机中表示数值的基本方式之一&#xff0c;其特点为最高位为符号位&#xff08;0表正&#xff0c;1表负&#xff09;…...

javase 学习

一、Java 三大版本 javaSE 标准版 &#xff08;桌面程序&#xff1b; 控制台开发&#xff09; javaME 嵌入式开发&#xff08;手机、小家电&#xff09;基本不用&#xff0c;已经淘汰了 javaEE E业级发开&#xff08;web端、 服务器开发&#xff09; 二、Jdk ,jre jvm 三…...

成品检验工程师心得总结

岗位&#xff1a;成品检验助理工程师 成品检验工程师——————>OQC工程师 何为成品&#xff1f; 简单来说&#xff0c;就是已经完成了产品的开发&#xff0c;测试&#xff0c;满足客户所有需求开发的产品。 成品检验工程师对应的是哪一个角色&#xff1f; 客户&…...

操作系统:进程是一个非常重要的抽象概念

在操作系统中&#xff0c;进程是一个非常重要的抽象概念&#xff0c;它是程序在计算机上的执行实例&#xff0c;是系统进行资源分配和调度的基本单位。 一、进程的定义 从动态角度来说&#xff0c;进程是程序的一次执行过程。例如&#xff0c;当你在计算机上打开一个文本编辑…...

QML 字符串格式化

在 QML 中&#xff0c;处理字符串格式化有多种方法&#xff0c;以下是常用的字符串格式化函数和技巧&#xff1a; 1. 基本字符串连接 qml var str "Hello, " "QML!"; // 简单连接 var name "Alice"; var greeting Hello, ${name}; // 模…...

堆排序的C++相关实现

大根堆的实现 #include <iostream> #include <vector> using namespace std;// 调整堆&#xff0c;确保以i根节点的子树满足大根堆 void heapify(vector<int>& vec, int n , int i) {int largest i;int left 2 * i 1;int right 2 * i 2;if (left &…...

c++类与对象(一)

前言&#xff1a; 什么是面向对象编程&#xff1f;什么是类与对象&#xff1f;为啥要搞类与对象啊&#xff1f;凭什么c能支持面向对象编程啊&#xff1f; 每次学东西前问自己几个问题会挺爽的&#xff0c;因为你越是懵逼&#xff0c;你就越想知道答案是什么。希望我的这几篇文章…...

(二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)

框架&#xff1a;GrafanaPrometheusMysqld_exporter 一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装&#xff08;mac&#xff09;-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录…...

认知升级:把握人工智能教育化转型的历史机遇

认知升级&#xff1a;把握人工智能教育化转型的历史机遇 ----灌南县第四中学 孟祥帅 2025年4月17日至19日&#xff0c;我有幸参加了教育部主办的“全国人工智能校长局长专题培训班”。此次大会以“人工智能赋能教育现代化”为主题&#xff0c;汇聚了全国各地的教育局局长、校…...