Watchdog Timers(WDT)

文章目录

  • 1. 介绍
  • 2. Feature List
  • 3. 概述
    • 3.1. Safety Watchdog
    • 3.2. CPU Watchdog
  • 4. 看门狗定时器功能
  • 5. Endinit Functions
    • 5.1 Password Access to WDTxCON0
      • 5.1.1 Static Password
      • 5.1.2 Automatic Password Sequencing
    • 5.2 Check Access to WDTxCON0
    • 5.3 Modify Access to WDTxCON0
    • 5.4 总结
      • 5.4.1 清除ENDINIT流程
      • 5.4.2 设置ENDINIT流程
  • 6. Timer
    • 6.1. Timer Modes
      • 6.1.1 Time-Out Mode
      • 6.1.2 Normal Mode
      • 6.1.3 Disable Mode
      • 6.1.4 WDT状态机
      • 6.1.5 总结
    • 6.2 WDT Alarm Request
    • 6.3 Servicing the Watchdog Timer
  • 7. Demo
    • 7.1 Watchdog_1_KIT_TC375_LK

1. 介绍

Watchdog Timers (WDT)是Ifx System Control Units (SCU)六大模块之一。详细信息可以参考Infineon-AURIX_TC3xx_Part1-UserManual-v01_00-EN.pdf 文档“9.4Watchdog Timers (WDT)”章节。
在这里插入图片描述

2. Feature List

TC37x支持一个Safety Watchdog和三个CPU Watchdog(每个核一个)
每个看门狗定时器具有以下基本功能:

  • 可编程时基和重新加载值(Watchdog基本功能,超时复位)
  • 可编程密码保护与可配置的自动密码排序(访问一次后,下次访问密码支持特点规则变化)
  • 可编程时间戳检查与可编程窗口
  • 无效或缺失定时器刷新顺序导致安全警报
  • 可以在调试期间挂起看门狗操作
  • 关键寄存器写保护,只能在短时间内解除锁定(ENDINIT保护)

第一个和最后一个为主要功能。

3. 概述

WDT提供了一种高度可靠和安全的方式来检测和恢复软件或硬件故障。WDT有助于在用户指定的时间段内中止CPU或系统的意外故障。
在这里插入图片描述
除了这个标准的“看门狗”功能之外,每个WDTs都包含一个结束初始化(ENDINIT)特性,可以保护临界寄存器免受意外写操作的影响。为了保护这些功能,实现了一个复杂的方案,在访问WDT控制寄存器期间需要密码和保护位。

  • 任何写访问如果没有提供正确的密码或保护位的正确值,都被认为是系统故障,并导致看门狗报警。
  • 即使执行有效的访问和清除ENDINIT位(用于提供对关键寄存器的访问),Watchdog也会对该访问窗口施加时间限制。如果ENDINIT位在时间窗口内没有被正确设置,则假定系统出现故障。

这些严格的要求,虽然不能保证,但是为系统操作的健壮性提供了高度的保证。

3.1. Safety Watchdog

安全看门狗定时器提供了一个整体的系统级看门狗,它独立于CPU看门狗定时器,还提供了另一种防止意外写入安全关键系统寄存器的保护。当启用安全WDT时,如果在用户可编程的时间段内没有提供喂狗服务,则会引起SMU报警请求。CPU必须在此时间间隔内进行喂狗,以防止这种情况发生。对安全WDT超时的响应可以在SMU中配置。因此,定期对安全WDT进行喂狗可以确认系统运行正常。

在模块寄存器表中标记为“SE”的寄存器被认为是安全关键系统的静态属性,并且在初始化后都是开启写保护的。如果Safety ENDINIT位被清除,这个写保护可能会被暂时移除

3.2. CPU Watchdog

单独的CPU看门狗计时器提供了监视单独的CPU执行线程的能力,而不需要软件来协调公共看门狗的共享使用。当CPU WDT使能时,如果在用户可编程的时间段内没有提供喂狗服务,则会引起SMU告警请求。SMU可以配置对每个cpu看门狗超时的响应。因此,对CPU WDT的定期维护可以确认相应的CPU正在按预期执行软件序列。复位后,CPU0运行,CPU0 Watchdog Timer自动启动。其他cpu最初处于HALT状态,因此它们对应的看门狗定时器被禁用。其他CPU Watchdog Timers默认不配置为生成超时重置,但可以启用。CPU看门狗只能由相应的CPU配置、启用或禁用。
在模块寄存器表中

  • 标记为“CEy”(y= CPU编号)的寄存器是与CPU相关的关键寄存器,它们在初始化后开启写保护的。如果清除对应的cpu (y-CPU号)Watchdog ENDINIT位,该写保护可能会暂时取消。
  • 标记为“E”的寄存器是关键系统寄存器,它们在初始化后开启写保护的。如果任何CPU Watchdog ENDINIT位被清除,这个写保护可能会被暂时移除。

Eg:
在这里插入图片描述
具体含义可见“1.1.6 Register Access Modes”章节
在这里插入图片描述

4. 看门狗定时器功能

  • 16位看门狗定时器
  • 可选输入频率:fSPB/64, fSPB/ 256或fSPB/16384
  • 16位用户自定义加载值正常看门狗定时器操作,固定加载值超时模式
  • 结合相应的ENDINIT位并监控其修改复杂的密码访问机制与用户可定义的密码字段
  • 访问错误检测:密码无效(第一次访问时)或保护位无效(第二次访问时)触发告警请求SMU
  • 时间和逻辑监控功能:
  • 可选的代码序列检查。码序签名识别错误会触发向SMU发送告警请求
  • 可选的代码执行时间检查。代码执行时间超出预期限制将触发向SMU发出警报请求。
  • 溢出错误检测:当WDT计数器溢出时,向SMU发出告警
  • 可禁用看门狗功能;访问保护和ENDINIT位监控功能保持开启状态

5. Endinit Functions

部分寄存器(CLC\KRST0\KRST1等)通常情况下只会在程序运行时修改一次,为避免在正常运行期间寄存器值被篡改,导致系统崩溃,Ifx提供了ENDINT(“初始化结束”)保护,仅清除对应ENDINIT标志位后,才能修改对应寄存器值,修改完成后,重新设置ENDINIT,完成一次修改。
注意:清除到设置ENDINIT标志位的时间不能过长,否则会触发Alarm信号,上报错误到SMU(Safety Management Unit)模块。

根据寄存器类型不同,Ifx细分以下三种类型的ENDINIT。

  • “CEy”-CPU临界寄存器。CPU WDT ENDINIT=0 (y=CPU编号)时可写
  • “E”-系统关键寄存器,当任何(一个或多个)CPU看门狗定时器ENDINIT= 0或EICONO.ENDINIT =0(Global ENDINT,前者依赖硬件,后者可以理解为存软件控制)时可写
  • “SE”-安全关键寄存器-只有当安全看门狗定时器ENDINIT=0或SEICON0.ENDINIT=0 (Global Safety ENDINT)时才可写

框图如下:
在这里插入图片描述
总结:
CEy:只能通过WDTCON0.ENDINIT清除
E:可以通过每个CPU的ENDINIT标志位位清除,也可以用全局的EICON0.ENDINIT清除
SE:可以通过WDTSCON0.ENDINIT标志位清除,也可以用全局的SEICON0.ENDINIT清除
注意:清除ENDINIT位需要一些时间。在清除ENDINIT位之后访问受ENDINIT保护的寄存器必须在真正清除ENDINIT位时才进行。所以,ENDINIT位应该在ENDINIT位被清除后第一次访问受ENDINIT保护的寄存器之前回读一次。

为保证整个系统的稳定,清除、设置ENDINIT等操作也有严格时序,对WDTxCON0寄存器的访问分为Password Access,Check Access,Modify Access三种操作。

5.1 Password Access to WDTxCON0

必须使用正确的密码写入WDTxCON0 (x=CPU, y=CPU number,或S),才能解锁并进行修改。软件必须事先知道正确的密码(上电后默认密码为0x3C)。为了提供独立的看门狗功能,每个看门狗定时器的密码可以不同,程序流具有独立的看门狗功能。

  • Safety WDG的WDTSCON0由通用SCU保护方案保护,该方案只允许配置的Master具有写访问(参见ACCEN10)。
  • CPU WDG的WDTCPUyCON0被单独保护,因此它们只能由相应的CPU写入。

密码有效且SMU状态满足WDTxSR的要求。那么一旦密码访问完成,WDTxCON0将被解锁
(WDTxCON0.LCK = 0)。为了确保正确的服务顺序,只有在访问之前设置了WDTxCON0.LCK位时才允许密码访问。如果在密码访问过程中,WDTxCON0写入了不正确的密码值,触发看门狗访问错误。设置WDTxSR.AE位,并向SMU 发送Alam请求。
14位用户自定义密码,WDTxCON0.PW提供了根据应用程序需要调整密码要求的额外选项。例如,它可以用来检测意外的软件循环,或者监视例程的执行顺序。密码要求如下表所示:在这里插入图片描述PAS: Password Auto-sequence Status Flag, 用于控制下次访问秘钥时是否需要改变,具体见Automatic Password Sequencing章节。

5.1.1 Static Password

在静态密码模式下(WDTxSR.PAS=0),密码只能通过有效的修改权限进行修改。密码访问的设计使得不能简单地读取寄存器并重新写入它。某些密码读取位在被重写之前必须反转(切换)。这可以防止简单的故障通过简单的读/写序列意外解锁WDT。

5.1.2 Automatic Password Sequencing

启用了自动密码排序(WDTxSR.PAS=1),每次密码检查(Password Access or Check Access)后密码自动更改。下一个密码期望值遵循基于14位斐波那契LFSR(线性反馈移位寄存器)的伪随机序列,其特征多项式为x14+x13+x12+x2+1。
在这里插入图片描述

5.2 Check Access to WDTxCON0

Check Access与Password Access相同,只是锁位不被清除,因此不允许后续的修改访问。在满足写数据要求的情况下,Check Access不会触发SMU告警请求。Check Access只能在LCK位被设置的情况下执行。
这种类型的访问用于WDT服务之间的中间检查点。这可以用(例如在与时间戳计数检查特性(或序列密码)结合使用,用于任务序列或执行时间监视。
在这里插入图片描述
如果在Check Access过程中,WDTxCON0上写了不正确的值(秘钥错误),则触发Watchdog Access Error。设置WDTxSR.AE,并向SMU (Safety Management Unit)发送告警请求。

个人理解:启用PAS后,秘钥序列是固定的,例如秘钥序列为0x12->0x34->0x56,正常情况下依次使用三个秘钥发起Check Access,若正确访问,则访问序列正确,若在中断或其他任务中,使用其他秘钥发起Check Access,则WDT报错。

5.3 Modify Access to WDTxCON0

如果WDTxCON0 通过Password Access成功解锁,下面对WDTxCON0的写访问可以修改它。但是,这种访问还必须满足某些要求,才能被接受并被视为有效。表265列出了所需的位模式。如果访问不遵循这些规则,则检测到看门狗访问错误条件,设置位WDTxSR.AE,向SMU (Safety Management Unit)发送告警请求。修改访问完成后,再次设置WDTxCONO.LCK,自动重新锁定WDTxCON0。在可以再次修改寄存器之前,必须再次执行有效的Password Access。
在这里插入图片描述
只有bit1必须为1,其他32bit可以用户自定义。
对该寄存器执行写操作后,该寄存器重新被lock住,在次经过Check Access操作后,才可以重新写入。

5.4 总结

进行Password Access(解锁CON0寄存器)后,必须在较短的时间写进行Modify Access,否则会触发Alarm报警。
若Password Access时写入错误的密码,CON0寄存器值保持不变,看门口定时器进入预警模式,并最终触发复位。

5.4.1 清除ENDINIT流程

在这里插入图片描述

5.4.2 设置ENDINIT流程

在这里插入图片描述
喂狗流程也是这样,Modify Access时会重新写入REL(加载值)

6. Timer

Safety Watchdog 和CPU0的定时器在应用程序复位后自动激活。每个实现定时器功能的16位计数器由fspb/ 64、fspb/256或fspb/16384触发。三种配置通过位WDTxCON1.IRx 控制。如表266所示:
在这里插入图片描述
每个WDT前的时钟分频器提供三个WDT计数器频率,fSPB / 64,fSPB / 256和fSPB / 16384。看门狗超时时间的一般计算公式为:在这里插入图片描述
参数startvalue表示计算超时时间的固定值FFFCH,用户可编程的重新加载值WDTxCON0.REL用于计算正常周期。
divider 参数表示IRx选择的用户可编程源时钟分频,可以是64、256或16384。

6.1. Timer Modes

每个看门狗定时器可以在三种不同的工作模式之一:

  • 超时模式(time-out mode)
  • 正常模式
  • 禁用模式
    下面概述了这些模式,以及WDT如何从一种模式切换到另一种模式。

6.1.1 Time-Out Mode

CPU0应用复位后进入WDT超时模式。“应用复位”后会禁用其他CPU。当对WDTxCON0执行有效的Password Access时,也会进入超时模式。Time-Out Mode用WDTxSR.TO = 1表示。计时器设置为0xFFFCH并开始向上计数。只有设置ENDINIT = 1并设置正确的访问顺序,“超时模式”才能正常退出。如果对WDT进行了错误的访问,或者在设置ENDINIT之前定时器溢出,则向SMU (Safety Management Unit)发送告警请求。
根据禁用请求位WDTxCON1.DR的状态,退出超时模式可以是正常模式,也可以是禁用模式。

6.1.2 Normal Mode

在正常模式下(DR = 0), WDT以标准看门狗方式工作。定时器设置为WDTxCON0.REL,并开始计数。必须在计数器溢出之前进行喂狗。喂狗是通过对控制寄存器WDTxCON0的适当访问顺序进行的。
如果WDT在计时器溢出之前没有得到喂狗,则假定系统发生故障。Normal Mode终止,并向安全管理单元(SMU)发送报警请求。

6.1.3 Disable Mode

应用复位后,除CPU0外,所有CPU WDT都处于禁用状态。为不需要WDT功能的应用程序提供了禁用模式。当设置了禁用请求位WDTxCON1.DR时,可以从“超时模式”中请求。当请求时进入禁用模式,并且设置了位WDTxCON0.ENDINIT。定时器在此模式下停止。但是,关闭WDT只会使其停止执行标准的看门狗功能,不需要对WDT进行喂狗服务。它不会禁用超时模式。如果以禁用模式访问WDTxCON0寄存器,如果访问有效,则进入超时模式,如果访问无效,则向SMU (Safety Management Unit)发送告警请求。因此,ENDINIT监视器功能以及(一部分)系统故障检测仍将处于活动状态。

6.1.4 WDT状态机

  • 进入Time Out模式条件:复位后进入,在Normal、Disable模式下执行Password Access也会进入
  • 进入Normal mode条件:执行Password Access(解锁写保护),写入新的密码和重载值,清除-ENINIT,设置DR=0(请求使能WDTx模块),设置ENINIT标志
  • 进入Disable mode条件,执行Password Access(解锁写保护),写入新的密码和重载值,清除ENINIT,设置DR=1(请求禁用WDTx模块),设置ENINIT标志
  • SMU Alarm:超时或者写入无效的访问都会进入
    在这里插入图片描述

6.1.5 总结

1)上电复位后自动进入“Time out mode”,计数器按照最慢的时钟进行计数
2)超时模式中止后,进入“Normal mode”,进入方式如下

  • 正确的密码访问WDT_CON0(对应上面的Check Access)
  • 对WDT_CON0寄存器进行Modify Access访问,将重载值设置为REL_1, ENDINIT设置为1

3)正确的密码访问WDT_CON0。会终止Normal mode,进入Time out mode
4)重复2的过程,从新设置ENDINIT为1,设置重载值为REL_2,结束Time out mode,进入Normal Mode
5)定时器一直计数到0xFFFF,触发一个Alarm请求,启动SMU内部的Recovery Timer开始计数,Recovery Timer超时后,触发复位信号,复位WDT模块。
在这里插入图片描述
备注:
1、Time out mode永远都是从0xFFFC开始计数。
2、Clear ENDINIT会进入Time out mode, Set ENDINIT进入Normal mode
3、启动Watchdog后,WDG模块内部会定时喂狗,用户不用关心

6.2 WDT Alarm Request

SMU alarm 请求包含以下三种情况:

  • 无效的数据写入 WDTxCON0 (x=CPUy and y=CPU number, or S) , SEICON0 or EICON0寄存器(例如密码错误)
  • 在任何WDT、ENDINIT超时计数器或Safety ENDINIT超时计数器的超时模式中,定时器溢出之前不执行Password Access(喂狗操作)
  • 在正常模式下定时器溢出之前不提供任何WDT喂狗操作

由此产生的报警响应(Trap, Reset等)可在安全管理单元(SMU)内编程。

注意:WDT本身通过Application Reset来重置。

6.3 Servicing the Watchdog Timer

如果在应用程序中使用WDT并且WDTxSR.DS = 0,则必须定期维护(喂狗),防止超时溢出。喂狗分两个步骤执行,一个是有效的Password Access,然后是有效的Modify Access。有效的密码访问WDTxCON0会自动将WDT切换为超时模式。因此,Modify Access必须在超时时间之前执行,否则会向SMU (Safety Management Unit)发送告警请求。

注意:为了执行正确的服务,必须将ENDINIT写入为1,即使它已经设置为1。

7. Demo

7.1 Watchdog_1_KIT_TC375_LK

使用CPU0看门狗,演示喂狗功能,正常情况下,1.3s内进行喂狗,CPU正常工作。可修改71行函数,延时周期时间乘2,修改为2s,MCPU会不断复位。
在这里插入图片描述

71行wait函数可参考STM模块,相关链接如下:
System Timer (STM)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++]使用C++部署yolov11目标检测的tensorrt模型支持图片视频推理windows测试通过

官方框架: https://github.com/ultralytics/ultralytics yolov8官方最近推出yolov11框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov11的tensorrt模型,并最终成功。 重要说明:安装环境视为最基…

Tiny-universe手戳大模型TinyRAG--task4

TinyRAG 这个模型是基于RAG的一个简化版本,我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本,它只包含了RAG的核心功能,即Retrieval和Generation。Tiny-RAG的目的是为了帮助大家更好的理解RAG模型的原理和实现。 1. RAG 介绍 LLM会产…

Halcon基础系列1-基础算子

1 窗口介绍 打开Halcon 的主界面主要有图形窗口、算子窗口、变量窗口和程序窗口,可拖动调整位置,关闭后可在窗口下拉选项中找到。 2 显示操作 关闭-dev_close_window() 打开-dev_open_window (0, 0, 712, 512, black, WindowHandle) 显示-dev_display(…

超级干货:Air780E之RS485通信篇,你学会了吗?

今天,我们来学习低功耗4G模组Air780E的RS485通信,同学们,你学习了吗? 一、RS485简介 物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于工业自动…

快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例

本文作者:胡玉龙,快手技术专家 快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年,快手的数据量已突破800TB大关,其中最大集群的数据量更是达到了数百TB级别。为此,快手将数据…

关于视频监控介入的部分内容,使用的是海康H5web播放的模式

这是原发直接能在系统中使用。里面的样式自己修改&#xff0c;主要是在引入时出现黑色的框就是引入成功&#xff0c;需要在public文件夹中引入h5player.min.js文件就可以。 <template><div class"Shiping"><el-container><el-header><di…

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据&#xff0c;该数据来源于国家青藏高原科学数据中心。为方便大家使用&#xff0c;我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据&#xff08;可查看之前的文章获悉详情&#…

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1&#xff0c;环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2&#xff0c;预备环境 一个比较新的 ubuntu 18.04&#xff0c;为了迎合 cuda 11.01 的版本需求 安装如下软件&#xff1a; sudo apt-get instal…

【Linux】几种常见配置文件介绍

配置文件目录 linux 系统中有很多配置文件目录 /etc/systemd/system /lib/systemd/system /usr/lib/systemd/system 【结果就是这个目录配置文件是源头】 这三者有什么样的关系呢&#xff1f; 以下是网络上找的资料汇总&#xff0c;并加了一些操作验证。方便后期使用 介…

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集&#xff08;RISC&#xff09;的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点&#xff1a; 精简指令集&#xff1a;ARM芯片使用精简指令集&#xff0c;即每条指令只完成一项简单的操作&#xff0c;从而提高指令的执行效率…

进程的创建、多任务及退出

一、创建进程 1、并发与并行 为了提高计算机执行任务的效率&#xff0c;一般采用的解决方案就是能够让多个任务同时进行&#xff0c;可以使用 并发 与 并行两种方式 并行 : 在 cpu 多核的支持下&#xff0c;实现物理上的同时执行 并发 : 在有限的 cpu 核芯的情况下 , …

60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录一、理论知识比喻机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU(值越大越好)总结 二、代码编码器解码器损失函数训练预测预测序列的评估小结练习 一、理论知识 比喻 seq2seq就像RNN的转录工作一样&#xff0c;非常形象的比…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

netty之NettyClient半包粘包处理、编码解码处理、收发数据方式

前言 Netty开发中&#xff0c;客户端与服务端需要保持同样的&#xff1b;半包粘包处理&#xff0c;编码解码处理、收发数据方式&#xff0c;这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了&#xff1b;半包粘包、编码解码等&#xff0c;为此在本章节我们…

C++和OpenGL实现3D游戏编程【连载12】——游戏中音效的使用

1、游戏中音效的使用 前面我们实现了图片纹理的显示功能,是不是感觉到非常的简单。那么今天我们就继续说下游戏声音的实现。音效也是游戏的灵魂,只有搭配了美妙动听的音效以后,游戏才能令人耳目一新,与玩家产生良好的效果。 音效文件最常用的可分为两种,分别为.wav和.mp3…

SQL Server中关于个性化需求批量删除表的做法

在实际开发中&#xff0c;我们常常会遇到需要批量删除表&#xff0c;且具有共同特征的情况&#xff0c;例如&#xff1a;找出表名中数字结尾的表之类的&#xff0c;本文我将以3中类似情况为例&#xff0c;来示范并解说此类需求如何完成&#xff1a; 第一种&#xff0c;批量删除…

Mysql 学习——项目实战

MySQL 学习——项目实战 项目出处 博主&#xff1a;Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…

使用VBA快速将文本转换为Word表格

Word提供了一个强调的文本转表格的功能&#xff0c;结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格&#xff0c;表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…

828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)

&#x1f680;对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统&#xff1f;&#xff1f;&#xff1f; 【重塑知识边界&#xff0c;华为云Flexus云服务器X引领开源问答新纪元&#xff01;】 &#x1f31f; 解锁知识新动力&#xff0c;华为云Flexus云服务器X携…