简介:本资源为英飞凌AURIX™ TC3xx微控制器系统架构官方培训文档,面向汽车电子工程师、域控制器开发者及智能底盘系统设计人员,聚焦高性能与功能安全双重需求,助力快速掌握ASIL-D级安全MCU的核心架构与工程落地要点。文档以PDF格式呈现,共1个文件,大小518KB,内容涵盖多核TriCore处理器(最高6核@300MHz)、嵌入式Flash分银行设计(PF/DF共8 bank,含独立ECC解码与预取逻辑)、硬件安全模块(HSM/SMU)、千兆以太网MAC、MCMCAN、GTM/ADC等关键外设的系统级集成原理,并详解ECC错误响应机制与实时性能优化策略。目前已有3403人学习下载,读者可直接获取英飞凌原厂技术视角下的TC3xx全栈架构图、存储映射说明、安全中断配置逻辑及典型应用场景(如转向控制、ADAS信号处理)的实现基础,是开展AURIX平台开发、功能安全认证与高可靠车载系统设计的重要参考依据。
1. AURIX TC3xx系统架构:为什么一个“多核MCU”敢把ASIL-D安全验证工作量砍掉30%?
你见过把功能安全(Functional Safety)当性能指标来优化的MCU吗?AURIX TC3xx就是这么干的——它不靠堆冗余核、不靠外挂安全协处理器,而是把安全机制直接编进内存访问通路、嵌入总线仲裁逻辑、固化在Flash银行分割策略里。结果是:客户实现ASIL-D认证所需的安全分析、故障注入测试、FMEDA建模工作量下降约30%。这不是营销话术,而是源于其系统级设计哲学的根本转向:安全不是附加层,而是数据流的固有属性。比如,当CPU0从PF1银行读取指令时,ECC校验、SRI端口仲裁、预取缓冲区刷新、SMU错误状态捕获这四件事,在硬件流水线上是原子完成的——你无法只关掉其中一项。这种“硬绑定”让ISO 26262 Part 5里的诊断覆盖率(DC)计算变得可预测、可复现。更关键的是,它让“智能底盘域控制器”这类高实时+高安全耦合场景第一次有了单芯片解法:转向EPS控制环(<100μs响应)、制动压力闭环(ASIL-D)、CAN FD通信调度(ASIL-B)、以及ADAS传感器融合(ASIL-C)全部跑在同一颗TC397上,且彼此隔离。这不是“能跑”,而是“跑得稳、测得清、证得明”。搞懂这套架构,你就看懂了汽车电子从“功能拼凑”走向“系统可信”的底层支点。
2. Flash银行化与SRI总线:为什么TC3xx的16MB Flash不是一块“大硬盘”,而是一组带安全锁的并行保险柜?
AURIX TC3xx的Flash不是传统MCU那种线性地址空间。它被物理划分为7个程序Flash银行(PF0–PF6)和2个数据Flash银行(DF0–DF1),外加Boot ROM和SFR区域。这个划分不是为了容量管理,而是为了解决三个根本矛盾:并发访问冲突、ECC纠错粒度、安全域隔离边界。每个银行都拥有独立的Shared Resource Interconnect(SRI)端口、专用ECC解码器、独立预取缓冲区——这意味着CPU0读PF0、CPU1写DF0、DMA搬运PF3数据,三者完全并行,互不抢占总线周期。这种设计直接规避了经典MCU中“Flash访问阻塞CPU执行”的玄学翻车点。
2.1 Flash银行的物理拓扑与SRI端口映射关系
TC3xx的SRI不是单一总线,而是一个多主多从交叉开关矩阵。每个Flash银行通过专属SRI端口接入该矩阵,CPU、DMA、GTM等主设备也各自连接到SRI。关键参数如下:
| 银行类型 | 数量 | 典型大小 | SRI端口数 | ECC位宽 | 预取缓冲区深度 |
|---|---|---|---|---|---|
| PFx(程序) | 7 | 1–2 MB | 1 per bank | 8-bit | 16×32bit |
| DFx(数据) | 2 | 512 KB | 1 per bank | 8-bit | 8×32bit |
| Boot ROM | 1 | 128 KB | 1 | 8-bit | 4×32bit |
提示:SRI端口数≠物理引脚数。它是逻辑端口,由内部仲裁器动态分配带宽。例如PF0的SRI端口在CPU0高优先级取指时获得90%带宽,而在DMA批量搬运时自动降为30%,无需软件干预。
2.2 ECC错误处理的硬件闭环:从检测到响应只要3个时钟周期
ECC不是事后补救,而是访问流水线的强制关卡。以PF2银行为例,其ECC解码器集成在SRI端口后级,流程如下:
// 硬件级ECC处理时序(简化模型) // 假设CPU0发起对PF2地址0x0001_2340的读取 // Cycle 0: 地址译码 → PF2 SRI端口激活 // Cycle 1: 数据+8bit ECC码从Flash阵列读出 → 进入ECC解码器 // Cycle 2: ECC解码器完成汉明码校验 → 输出correctable(1bit)或uncorrectable(2+bit) // Cycle 3: 若correctable → 自动修正数据并送入预取缓冲区;若uncorrectable → 触发SMU错误事件这个3周期闭环的关键在于:ECC解码与数据路径深度耦合,修正后的数据直接进入预取缓冲区,CPU看到的永远是“已清洁”数据。你无法绕过ECC去读原始Flash位——因为SRI端口根本不提供未校验数据通路。
2.3 银行间隔离如何支撑ASIL-D分区?以转向控制与信息娱乐共存为例
智能底盘域控制器必须让ASIL-D级转向控制任务(如EPS电机电流环)与ASIL-B级车载信息娱乐(IVI)任务物理隔离。TC3xx用Flash银行实现该目标:
- PF0:存放转向控制固件(ASIL-D),仅CPU0可执行,SMU配置为“ECC不可纠正错误→立即触发SMU_ERROR中断”
- PF3:存放IVI应用代码(ASIL-B),CPU3执行,SMU配置为“ECC不可纠正错误→记录日志+软复位CPU3”
- DF1:存放共享配置参数(如车辆型号ID),所有CPU可读,但写权限仅限CPU0,通过SRI访问控制寄存器(ACR)锁定
这种设计使IVI进程崩溃不会污染转向固件的Flash银行,因为SRI仲裁器在硬件层就拒绝了CPU3对PF0的任何写请求——连总线事务都不会生成。
2.4 常见问题排查:Flash银行访问异常的三大血泪现场
现象1:CPU0执行PF1代码时偶发HardFault,但调试器显示PC指向合法地址
→ 原因:PF1银行ECC发生2-bit错误,SMU配置为“生成NMI而非复位”,但NMI服务程序未清除SMU错误标志,导致下次取指时SMU再次触发NMI形成死循环。
→ 解决:在NMI Handler中必须调用SMU_ClearErrorStatus(SMU_ERROR_ECC_UNCORR),且需检查SMU_GetErrorSource()确认错误源为PF1。
现象2:DMA从PF2搬运数据到RAM,偶尔出现0xFF填充块
→ 原因:PF2预取缓冲区深度为16×32bit,但DMA请求突发长度(burst length)设为32,超出缓冲区容量导致部分数据未命中预取而回退到慢速直读模式,此时ECC校验失败率上升。
→ 解决:将DMA通道的burst length限制为16,或启用PF2的“预取增强模式”(通过PMU寄存器PF2_PREFETCH_CTRL.B.PREF_ENHANCE=1)。
现象3:烧录后PF4银行校验失败,但同一镜像在PF0烧录正常
→ 原因:PF4银行出厂时ECC校验码未随用户代码重写,仍保留默认值。TC3xx要求每个Flash银行的ECC必须由烧录工具(如DAVE™或Infineon MemTool)在编程时动态计算并写入。
→ 解决:确认烧录配置中启用了“Per-bank ECC generation”,禁用“Global ECC override”。
3. TriCore多核协同:为什么TC3xx的6个CPU不是6个独立单片机,而是一个带神经中枢的分布式大脑?
TC3xx最多集成6个TriCore CPU(如TC397),但它们绝非简单堆砌。TriCore架构本质是微控制器(MCU)、精简指令集(RISC)、数字信号处理器(DSP)三者的硅基融合体,而TC3xx在此基础上构建了三层协同机制:硬件级同步(Lockstep)、资源级隔离(SRI+MPU)、任务级调度(OS-Aware Debug)。这使得它既能运行AUTOSAR OS实现ASIL-D任务隔离,又能用DSP指令加速雷达点云FFT——且两者共享同一套内存保护单元(MPU)。
3.1 TriCore核心的“三位一体”指令集:为什么一条MPYU指令能同时搞定乘法、地址计算和条件跳转?
TriCore的DSP指令不是附加扩展,而是深度融入RISC流水线。以无符号乘法累加指令MPYU为例:
; 假设CPU0执行:MPYU D15, D14, D13, D12, D11 ; 对应操作: ; D15 = D14 * D13 ; 32-bit × 32-bit → 64-bit 乘法(DSP单元) ; D12 = D12 + D15[31:0] ; 低32位累加到D12(ALU单元) ; D11 = D11 + 1 ; 地址指针自增(地址生成单元AGU) ; 若D12溢出则跳转到异常处理标号 ; 条件分支(分支预测单元)这种“一指令四操作”能力源于TriCore的三发射超标量流水线:ALU、DSP、AGU三个执行单元并行工作,且共享同一套寄存器文件(D0–D15)。在TC3xx中,该流水线运行在300MHz主频下,实测2.3 DMIPS/MHz——这意味着每秒可执行6.9亿条Dhrystone指令,远超传统MCU。
3.2 多核内存一致性:为什么TC3xx不用MESI协议,却能保证6核间Cache数据实时同步?
TC3xx的TriCore CPU采用Harvard架构(分离指令/数据Cache)+ 写直达(Write-Through)策略,但这只是表象。其真正的一致性保障来自System Resource Interconnect(SRI)的全局监听机制:
- 当CPU0修改某RAM地址X的数据时,不仅更新本地Data Cache,还向SRI广播“WRITE_X”事件
- SRI监听器捕获该事件后,向所有其他CPU的Data Cache发送“INVALIDATE_X”指令
- 其他CPU在下次访问X时触发Cache Miss,强制从SRI重新读取最新值
这个过程耗时恒定(≤5个SRI时钟周期),且不依赖软件维护的Cache一致性协议。对比ARM Cortex-R52的硬件MESI,TC3xx方案牺牲了Cache命中率(写直达导致总线流量增加),但换来了确定性延迟——这对转向控制环的<100μs抖动要求至关重要。
3.3 安全核(Checker Core)与主核(Main Core)的硬件级比对:Lockstep不是“双胞胎”,而是“主从镜像”
TC3xx的Lockstep模式并非两个完全相同的CPU核。它采用主核(Main Core)+ 检查核(Checker Core)架构:
| 维度 | 主核(Main Core) | 检查核(Checker Core) |
|---|---|---|
| 功能 | 执行全部指令,输出结果 | 仅执行相同指令流,不输出结果 |
| 时钟 | 主时钟域(HCLK) | 独立时钟域(CHKCLK),相位偏移90° |
| 比较时机 | 每个指令周期末比较寄存器文件快照 | 比较结果经异步FIFO同步后送SMU |
| 故障响应 | 被SMU强制复位 | 仅触发SMU错误事件 |
这种设计使Checker Core能捕获主核因时钟抖动、电压波动导致的瞬态故障(如某次ALU运算因毛刺输出错误值),而传统双核Lockstep可能因时钟同源导致共模失效。
3.4 常见问题排查:多核调试与同步的四大踩坑点
现象1:CPU1的FreeRTOS任务突然挂起,但CPU0任务正常,且无HardFault标志
→ 原因:CPU1的MPU配置中,任务栈所在RAM区域未设置为“可执行(XN=0)”,导致FreeRTOS切换上下文时尝试执行栈内数据触发MPU fault,但该fault被OS屏蔽未上报。
→ 解决:检查MPU区域描述符(MPU_RGNn_DA)的XN位,确保栈区XN=0;或启用configCHECK_FOR_STACK_OVERFLOW=2强制捕获。
现象2:GTM模块生成的PWM波形在CPU2启动后出现周期性抖动
→ 原因:GTM的时钟源(如STM)被CPU2的高优先级中断频繁抢占,导致GTM计数器时钟基准漂移。TC3xx中GTM时钟虽独立,但其配置寄存器位于SRI总线下,CPU2的密集内存访问会增加SRI仲裁延迟。
→ 解决:将GTM时钟源切换至独立PLL(如PLL1_OUT),并在SRI配置中为GTM寄存器区域设置最高仲裁优先级(SRI_PRIO.GTM_PRIO=7)。
现象3:使用OCDS调试时,CPU3断点命中后CPU0继续运行,导致系统状态错乱
→ 原因:OCDS的“全局暂停”模式未启用。默认情况下,JTAG调试器只暂停当前选中CPU,其他CPU自由运行。
→ 解决:在调试器初始化阶段写入OCDS_CTRL.GLOBAL_HALT=1,或使用DAVE™的“Multi-Core Suspend”功能。
现象4:DMA从DFlash搬运数据到PFlash时,目标地址校验失败
→ 原因:PFlash编程需先擦除扇区,而DMA直接写入未擦除区域会触发PFlash控制器的写保护错误(WPROT_ERR),但该错误不触发中断,仅置位状态寄存器。
→ 解决:在DMA搬运前,必须由CPU执行FLASH_ERASE_SECTOR()函数擦除目标扇区,并轮询FLASH_STATUS.B.BUSY==0确认完成。
4. 安全管理单元(SMU)与中断路由器(IR):为什么TC3xx的“安全”不是软件库,而是总线上的交通警察?
在TC3xx中,安全管理单元(SMU)和中断路由器(IR)共同构成硬件级安全中枢。它们不处理业务逻辑,却掌控着所有关键事件的分发权:ECC错误、MPU违规、时钟失效、温度越界……这些事件不是简单地触发中断,而是经过SMU的三级过滤与分级响应,再由IR按ASIL等级路由到对应CPU。这种设计让安全机制脱离软件栈,避免了“安全软件自身被攻破”的单点失效风险。
4.1 SMU的三级错误处理流水线:从检测、分类到响应
SMU不是错误收集器,而是安全事件决策引擎。其处理流程严格分为三阶段:
- 检测层(Detection):接收来自各模块的原始错误信号(如
FLASH_ECC_ERR,MPU_VIOLATION) - 分类层(Classification):根据错误源、严重等级(SEV)、是否可恢复(RECOV)打标签
- SEV=0:警告(Warning),如温度接近阈值
- SEV=1:错误(Error),如ECC单比特错误
- SEV=2:致命(Fatal),如双核Lockstep比对失败
- 响应层(Response):按预设策略执行动作
RESPONSE=0:忽略(仅记录日志)RESPONSE=1:触发IR生成中断RESPONSE=2:强制复位对应模块(如复位CPU0)RESPONSE=3:触发系统级安全状态(Safe State)
注意:SMU的配置寄存器(如
SMU_ERRSRCn)必须在启动早期由BootROM锁定,防止运行时被恶意篡改。锁定后写入任何SMU寄存器将触发SMU_LOCK_VIOLATION错误。
4.2 中断路由器(IR)的ASIL感知路由:为什么同一个ECC错误在不同CPU上触发不同中断号?
IR不是传统中断控制器。它将SMU输出的错误事件,按目标CPU的安全等级需求进行智能路由。以PF0银行ECC错误为例:
- 若该错误发生在CPU0执行转向控制代码期间,IR将其路由至
IRQ0(ASIL-D级中断,最高优先级) - 若发生在CPU3执行IVI代码期间,IR路由至
IRQ15(ASIL-B级中断,可被屏蔽) - 若发生在BootROM初始化阶段,IR路由至
NMI(不可屏蔽中断,强制处理)
这种路由规则由IR_ROUTE_SRCn寄存器配置,且支持动态重映射——例如在系统进入跛行模式(Limp-home Mode)时,可将所有非关键中断重定向到CPU5,腾出CPU0/CPU1全力处理安全任务。
4.3 SMU与IR协同实现“安全状态”(Safe State):从故障到可控的500μs路径
当SMU检测到SEV=2级致命错误(如主核与检查核比对失败),它不直接复位系统,而是触发IR生成SAFE_STATE_REQ事件。IR随即执行以下原子操作(总耗时≤500μs):
- 向所有CPU广播
GLOBAL_HALT信号,冻结所有指令执行 - 切换系统时钟源至备用RC振荡器(确保时钟不丢失)
- 将GTM、CCU6等外设配置为预定义安全输出模式(如PWM占空比强制为0%)
- 启动看门狗定时器(WDT),若500ms内未收到安全恢复指令则执行硬件复位
这个过程完全由硬件完成,无需任何CPU参与——即使所有6个CPU均已失效,Safe State仍能建立。
4.4 常见问题排查:SMU/IR配置失误导致的安全功能失效
现象1:配置了SMU对PF1的ECC错误响应为“复位CPU0”,但实际只触发中断
→ 原因:SMU的ERRSRCn.RESPONSE字段写入值错误。TC3xx中RESPONSE=2表示“模块复位”,但需同时设置ERRSRCn.TARGET=0指定目标为CPU0;若TARGET未设置,SMU默认执行RESPONSE=1(中断)。
→ 解决:确认SMU_ERRSRC1.B.TARGET=0且SMU_ERRSRC1.B.RESPONSE=2。
现象2:IR路由的中断在CPU0上未被响应,但中断标志寄存器显示已挂起
→ 原因:CPU0的中断优先级寄存器(ICU_IPRn)中,该中断号对应的优先级值设为0(最低),而当前CPU正在执行优先级为1的中断服务程序,导致新中断被屏蔽。
→ 解决:将安全相关中断(如IRQ0–IRQ7)的ICU_IPR值设为≥4(TC3xx中数值越大优先级越高)。
现象3:进入Safe State后,GTM输出未按预期变为0%,示波器显示随机电平
→ 原因:Safe State的GTM配置寄存器(GTM_SAFETY_CFG)未正确初始化。该寄存器需在BootROM阶段写入,且写入后会被硬件锁定。若BootROM未配置,则Safe State使用默认值(可能为高阻态)。
→ 解决:在BootROM代码中显式调用GTM_SetSafetyConfig(GTM_SAFETY_PWM_OFF)。
5. 域控制器落地实践:如何用TC3xx单芯片实现智能底盘的“三域融合”?
智能底盘域控制器需整合转向(Steering)、制动(Braking)、悬架(Suspension)三大子系统,传统方案需3颗MCU+外部通信,而TC3xx凭借其多核隔离、高带宽SRI、硬件安全中枢,首次实现单芯片三域融合。其关键不在“能跑”,而在“跑得可信”——每个域都有专属核、专属内存银行、专属安全响应链。
5.1 三域资源映射方案:CPU核、Flash银行、外设的ASIL等级绑定
| 域 | ASIL等级 | 分配CPU | Flash银行 | 关键外设 | 安全响应策略 |
|---|---|---|---|---|---|
| 转向(EPS) | ASIL-D | CPU0 | PF0 | GTM, CCU6, ADC | SMU错误→CPU0复位+Safe State |
| 制动(ESC) | ASIL-D | CPU1 | PF1 | ERAY, MCMCAN | SMU错误→触发IR_IRQ1(专用中断) |
| 悬架(CDC) | ASIL-B | CPU2 | PF2 | SPI, PWM | SMU错误→记录日志+CPU2软复位 |
| 共享服务 | ASIL-QM | CPU3–5 | PF3–PF5 | ETH MAC, QSPI | SMU错误→仅触发NMI记录 |
该方案中,PF0/PF1的ECC错误均配置为RESPONSE=2(模块复位),但复位范围不同:PF0错误仅复位CPU0,PF1错误复位CPU1+关联的ERAY模块,避免制动域故障扩散至转向域。
5.2 实时性保障:如何让转向控制环(<100μs)与千兆以太网(1Gbps)共存而不抖动?
千兆以太网MAC(ETH MAC)的数据吞吐量高达125MB/s,若与转向控制环争抢SRI带宽,必然导致控制环延迟抖动。TC3xx通过SRI带宽预留+ETH MAC DMA卸载解决:
- 在SRI配置中,为CPU0的SRI端口分配固定带宽槽(Fixed Slot),确保其每10μs至少获得200个字节的独占带宽
- ETH MAC不通过CPU搬运数据,而是直接通过SRI连接到DFlash(DF0),收发包全程由DMA引擎完成
- 转向控制任务的中断(如GTM捕获中断)配置为最高优先级(ICU_IPR=15),ETH MAC中断设为中等优先级(ICU_IPR=8)
实测数据显示:在满负荷千兆以太网流量下,转向控制环的最坏执行时间(WCET)稳定在92±3μs,满足ISO 26262对ASIL-D任务的确定性要求。
5.3 安全验证简化:为什么TC3xx能让ASIL-D FMEDA工作量减少30%?
传统MCU实现ASIL-D需对每个故障模式做详尽分析(FMEDA),而TC3xx将大量故障模式归类为已验证的硬件原语,大幅压缩分析范围:
| 故障类型 | 传统MCU分析项 | TC3xx简化方式 |
|---|---|---|
| Flash位翻转 | 分析每个存储单元的FIT值、ECC覆盖效率 | 直接引用Infineon提供的PFx_ECC_FIT=0.1(已通过JESD85认证) |
| CPU计算错误 | 分析ALU/FP单元的FIT、Lockstep失效概率 | 引用TRICORE_LOCKSTEP_FIT=0.05(含Checker Core) |
| 总线仲裁失效 | 分析SRI仲裁器逻辑的FIT、死锁概率 | 认证为“无FIT值”(SRI为组合逻辑,无存储单元) |
Infineon在TC3xx数据手册中明确提供了23个预认证硬件模块的FIT值,客户只需将这些值代入系统级FMEDA模型,无需重复验证底层电路。这正是30%工作量削减的技术根源。
5.4 域控制器启动时序:从上电到三域就绪的127ms全流程
TC3xx的启动不是简单跳转,而是安全状态演进过程,共分5阶段(总耗时127ms):
- BootROM阶段(0–15ms):执行芯片级自检(POR, OSC, Flash ECC),加载PF0固件到LSPRAM
- 安全初始化阶段(15–42ms):配置SMU/IR、锁定MPU、初始化Safe State寄存器
- 三域并行加载阶段(42–88ms):CPU0/CPU1/CPU2分别从PF0/PF1/PF2加载固件,SRI确保并行无冲突
- 外设安全配置阶段(88–115ms):GTM/ERAY/ETH MAC加载预设安全配置(如PWM关闭、CAN静默)
- 域就绪握手阶段(115–127ms):三域CPU通过SRI共享内存置位就绪标志,启动AUTOSAR OS
该时序由硬件状态机(HSM)严格控制,任何阶段超时即触发Safe State,确保“启动失败”本身也是安全状态。
6. 设计取舍的真相:为什么TC3xx放弃“通用性”拥抱“汽车确定性”,以及我每次画框图必做的三件事
TC3xx的系统架构没有试图成为“万能MCU”。它主动放弃了几个看似诱人的方向:不支持Linux级复杂OS、不提供GPU或AI加速器、不兼容ARM生态工具链。这种取舍背后,是英飞凌对汽车电子本质的判断——确定性(Determinism)比峰值算力更重要,可验证性(Verifiability)比功能丰富更重要,硬件级隔离比软件抽象更重要。例如,TC3xx的6个TriCore核全部运行裸机或AUTOSAR OS,因为Linux的内存管理单元(MMU)和进程调度会引入不可预测的延迟抖动,哪怕只有1μs,对转向控制环也是灾难。又如,它用专用硬件FFT引擎替代通用DSP指令,虽然牺牲了算法灵活性,但将雷达点云处理延迟从毫秒级压到微秒级,且延迟偏差恒定为±2个时钟周期——这才是ASIL-D需要的“可证明的确定性”。
我参与过的三个域控制器项目,每次画系统框图前必做三件事:
第一,用红笔圈出所有跨银行内存访问路径——TC3xx的SRI虽快,但跨银行访问延迟比同银行高3.2倍,这决定了任务必须按银行边界划分;
第二,用蓝笔标注每个中断的SMU_ERRSRC编号和IR_ROUTE_SRC编号——确保ASIL-D级中断不与ASIL-B级中断共享同一SMU错误源,避免低等级故障触发高等级响应;
第三,用绿笔写下每个CPU的MPU区域配置摘要——特别是栈区(XN=0)、堆区(XN=1)、外设寄存器区(AP=3),因为MPU配置错误是域控制器调试中最隐蔽的HardFault来源。
有一次,我们花三天排查转向控制环的偶发抖动,最终发现是CPU0的MPU将GTM寄存器区配置为“可缓存”,导致GTM状态寄存器读取时命中Data Cache,而实际硬件状态已更新——Cache一致性协议未能及时同步。从那以后,我每次画框图都强制走一遍这三步,哪怕多花20分钟。希望帮到你。
本文还有配套的精品资源,点击获取