BBE32EP Floating-Point
Half Precision Data半精度浮点数:Half Precision,也称 FP16,就是使用 16 bit 表示一个浮点数。 IEEE754 定义如下: 位 长度 含义 Sign 1 bit 符号 Exponent 5 bit 指数 Fraction 10 bit 尾数 表示形式:$$(-1)^s \times 1.f \times 2^{e-15}$$ fraction尾数部分:$$1 \times 2^{-bit9} + 1 \times 2^{-bit8} + \cdots + 1 \times 2^{-bit0}$$ 其中 bias = 15 指数范围(正常数): e = 1~30 e=0 和 e=31 有特殊意义 FP16 长这样: 15 10 0+--------+----------+|S|Exp(5)|Frac(10) |+--------+----------+e.g0 01111 0000000000 Subnormal...
BBE32EP note
ConnX BBE32EPBBE: Baseband Engine32: 32路 MAC(乘累加)能力 - 这意味着 DSP 在一个时钟周期内,其 SIMD(单指令多数据)向量执行单元可以并行完成 32个 16-bit × 16-bit 的复数或实数乘累加运算。这是衡量其通信基带处理吞吐量最核心的指标。EP: Enhanced Performance(增强性能版)或 Extended Precision(扩展精度版) - 相对于前代(如 BBE32),“EP” 版本引入了更强大的硬核功能,特别强化了对浮点数(Floating-Point)的支持(包括单精度 Float32 和半精度 Float16/BF16),并且极大地优化了多天线阵列、雷达信号处理中所必须的矩阵运算(Matrix Operations)和向量穿梭(Vector Shuffle)效率。 SIMD && VLIWCadence BBE 同时使用了 SIMD + VLIW,因此一个 Cycle 内既可以执行多条不同指令,每条指令又可能同时处理多个数据。 SIMDSIMD...
无标题
一、BCM8915X_Main 之前发生了什么 BCM8915X_Main 不是 C 运行时的 main —— 链接命令行 -e BCM_RESET_HANDLER(common.mk:47)把入口设成了汇编 reset handler,crt0 的 __libc_init_array 那一整套从未执行。 向量表(exceptions.S:101-118) .section .vector_tbl,"a",%progbitsCORTEX_MX_VECTOR_TBL: .word __main_stack__ // [0] 初始 MSP VECTOR_FN(BCM_RESET_HANDLER) // [1] Reset VECTOR_FN(BCM_NMI_ISR_LOOP) // [2] ... VECTOR_FN(vPortSVCHandler) // [11] SVCall ← FreeRTOS ...
无标题
当前 LidarQ8App_0_1/lidar_q8_app_raw.c 的 Q8 处理流程,可以概括为: 读取 A55 发布的共享配置 ↓ 根据 Q8_CORE_ID 选择本 Q8 对应的 ADC/FFT 地址组 ↓ 初始化本 Q8 的 iDMA channel 0 ↓ 建立 FFT/ADC → 内部 DRAM 的 ping/pong descriptor ↓ 循环搬运多个采集块 ↓ 内部 DRAM → A55 共享 SRAM buffer ↓ 等待搬运完成 ↓ 通过 IPC channel 4 发送 Q8 buffer done Doorbell ↓ 等待 MCU1 应答 ↓ 切换 ping/pong,继续下一批数据 下面按照代码实际执行顺序说明。 ——— 1. 每个 Q8 image 是独立编译、独立运行的 Q8...
无标题
lightic_app FreeRTOS V11.2 移植笔记 适用工程:BCM8915x Bare Metal / lightic_app 处理器:MCU0 Cortex-M7 DCLS、MCU1 Cortex-M7 内核版本:FreeRTOS Kernel V11.2.0 编译器端口:portable/GCC/ARM_CM7/r0p1 文档日期:2026-08-23 0. 先读这一节这篇笔记有两个目的: 解释把一个普通裸机 Cortex-M 工程移植到 FreeRTOS 的一般过程。 结合 lightic_app 的真实代码,解释 BCM8915x 上的启动、异常汇编、中断优先级、双 MCU 关系、链接脚本和 SRAM 分配。 本文面向第一次接触 RTOS、Cortex-M 异常和链接脚本的读者。术语第一次出现时会解释,已经熟悉这些内容的读者可以直接跳到对应章节。 0.1 当前结论和验证边界当前工程已经完成以下静态工作: FreeRTOS V11.2.0 内核、heap_4 和 Cortex-M7 端口已经加入构建。 SVC、PendSV 和...
无标题
CCUH_SetupAcqTrigger()是整个采集触发链路的“节拍发生器 + 路由配置器”。它并不直接触发 TXSLZR、HSADC 或 HSREF,而是完成以下几件事: 配置 CAPCOM1 生成一条“有效采集行窗口”; 将 NSU_TRG2 接入 CAPCOM1 的 Timer1 Event0,作为这一行采集时序的外部同步事件; 把 CAPCOM1 的 TMR1_COUT0 路由为主 acquisition trigger (acq_trg) 来源; 配置 ACQ trigger counter,使其按 aTrigInterval 周期产生采集触发; 打开 acquisition trigger counter。 代码位置:app/src/bcm/ccu_helper.c:136。 void CCUH_SetupAcqTrigger(uint32_t aTrigInterval, uint32_t aNumSamples, ...
无标题
HSADCH_FullInit() 是应用层对 4 路 HSADC 做“一次性完整初始化”的封装,负责: 初始化选中的 HSADC 实例及其内部存储器; 配置并启动前台/后台校准; 等待校准结束,并处理超时; 配置采样速率和采集参数; 配置模拟偏置和数字偏置; 根据参数决定是否启用 FFT。 代码位置:app/src/bcm/hsadc_helper.c:138。 ——— 一、函数接口和参数 int32_t HSADCH_FullInit(uint32_t aAdcSelect, uint32_t aSampleFreq, uint32_t aAdcSampleSize, uint32_t aAdcAnalogOffset, uint32_t aAdcDigitalOffset, ...
无标题
ACQ Task NSU_DrvInit() -> HSADCH_FullInit() -> 可选 FIR 配置 -> ACQ_SetupTriggerDelays() -> TXSH_SetupTofPulse() -> CCUH_SetupAcqTrigger() -> CCUH_StartNsuTrigger() 实际调用位置见 app/src/tasks/acq_task.c:176。 把模块关系展开,大致是: NSU event channel 2 | | 在未来 500 us 产生一次 NSU 事件 v ACQCMN Timer1 Event0 | v CAPCOM1 / TMR1_COUT0 | v ACQCMN acq_trg | | ACQ_SetupTriggerDelays()...
无标题
TXSH_SetupTofPulseTXSH_SetupTofPulse() 用来把 ToF 发射脉冲“编译”为 TX Serializer(TXSLZR)的 pattern memory 内容,并使能 sequencer 和 pattern generator。它并不是直接写一个“pulse width = N”的寄存器;它实际生成的是一段串行比特波形: 前 aWidth 个 serial bit = 1 后续 serial bit = 0 当 TXSLZR 收到来自 ACQCMN 的 TX trigger 时,会回放这个 pattern,从而输出一个高电平 ToF 发射脉冲。 代码位置:app/src/bcm/txs_helper.c:40。 ——— 1. 函数接口 int32_t TXSH_SetupTofPulse(uint32_t aWidth, uint32_t aPageSize) 头文件中的参数说明见...
无标题
当前代码中,NSU event channel 2 没有配置“周期触发”。 CCUH_StartNsuTrigger(2UL, 500000UL) 只给 NSU channel 2 设置了一个未来约 500 µs 的比较时间,因此它的作用是“一次性启动整条采集时序”。 当前真正的采集触发周期不是 NSU channel 2 产生的,而是后面的 ACQCMN acquisition trigger counter 产生的。 当前默认配置下,实际采集触发间隔约为 5.0016 µs,目标值是 5 µs。 ACQCMN 是 Acquisition Common,中文可以理解为“采集公共控制/触发模块”,它负责把 NSU、CAPCOM、采集计数器以及 TXSLZR、HSADC、HSREF 等模块连接起来。 ——— 一、当前 NSU channel 2 的“周期”是多少 当前调用代码: CCUH_StartNsuTrigger(2UL, 500000UL); 位置:app/src/tasks/acq_task.c:198。 ...
