API GUIDE / JPEGE / LL

G32S10 JPEGE LL 接口

LL 层接口:量化表有两条路径:

1. jpege_regs.h 寄存器列表

1.1 基地址

名称地址说明
JPEGE_IOBASE0x13200000G32S10 JPEGE 寄存器基地址
JPEGE(jpege_regs_t *)(uintptr_t)JPEGE_IOBASEJPEGE 寄存器实例指针

1.2 主要寄存器

寄存器RW偏移说明
trigRW0x000触发、复位、shadow 控制
ctrlRW0x004编码模式、量化控制、AXI 写控制、ISP 联动
nmcuRW0x008当前帧 MCU 数量减一
frm_infoRW0x00C输入帧宽高
line_strdRW0x010输入行 stride
rawy_addrRW0x014Y/RAWY 输入地址
rawc_addrRW0x018NV12/YUV420 的 UV 输入起始地址,需 256 字节对齐;YUV422/Bayer 下无效
format_ctrlRW0x01C输入图像格式、Bayer pattern、AR outstanding
wrapRW0x020OCM 中 ISP/JPEG 可用的 8 行像素空间数量
markerRW0x024JPEG restart marker 控制
code_pix_totalRW0x028编码像素总数,按 MCU 对齐后写入
post_rdy_key0 / post_rdy_key1RW0x02C / 0x030Post-ready debug key
bs_addrRW0x034JPEG bitstream 输出地址
timeout_thrdRW0x038硬件帧超时阈值
version_numR0x040RTL 版本号
glb_statR0x100帧结束状态、当前帧 QP、输出码流长度
glb_fsmR0x104全局 FSM debug 状态
glb_fe_frm_cntR0x108JPEG/ISP frame counter
intr_enableRW0x10C中断使能
intr_statR0x110中断状态
intr_clrW0x114中断清除
debug_*R/RW0x118-0x1E0运行期和帧结束锁存 debug 信息
qt_base_tab[32]RW0x300-0x37C硬件 QP 模式使用的 base quantization table
qt_tab[384]RW0x400-0x9FC软件量化表 RAM,3 组 Y/UV 表

1.3 关键位域

1.3.1 TRIG

位宏说明
16:31JPEGE_FRM_END_CYCLES_MASK帧结束后进入 reset FSM 前的保持周期
12JPEGE_SW_SEQ_RST_REGS_MASKSW sequence reset 是否包含 sequence registers
8:11JPEGE_SW_RESET_CYCLE_MASK软件 reset pulse 宽度
7JPEGE_SHADOW_NEXT_START_EN_MASKshadow 更新在下一帧开始时生效;生效后硬件自动清零
6JPEGE_SHADOW_NEXT_END_EN_MASKshadow 更新在下一帧结束时生效;生效后硬件自动清零
5JPEGE_SHADOW_CUR_EN_MASKshadow 更新对当前帧生效,用于第 0 帧配置;生效后硬件自动清零
4JPEGE_SHADOW_FLAG_MASKshadow 控制使能标志,用于第 0 帧配置和更改 QP 与 QK_TAB_SEL 时
3JPEGE_SW_FSM_RESET_MASK软件触发 FSM reset
2JPEGE_SW_SEQ_RESET_MASK软件触发 sequence reset,包括 frame reset
1JPEGE_SW_FRM_RESET_MASK软件触发 frame reset
0JPEGE_START_MASK非自动模式下每一帧需手动启动

1.3.2 CTRL

位宏说明
31JPEGE_AUTO_MODE_MASK是否开 start auto 模式,仅在开启isp时可使用
30JPEGE_AUTO_RESET_MASK帧结束或中断后自动 frame reset
29JPEGE_TABLE_MODE_MASK0 软件表模式,1 硬件 QP 模式
22:28JPEGE_QP_MASKQP,硬件 QP 模式使用,有效值 0-98
20:21JPEGE_QK_TAB_SEL_MASK软件表模式下使用,选择 3 组量化表之一
18JPEGE_TIME_OUT_EN_MASK硬件帧超时检测使能
16:17JPEGE_AWLEN_MASKAXI AWLEN selector,0/1/2/3 对应 4/8/16/32 burst length
15JPEGE_SAME_FRM_SEL_MASKsame-frame counter 逻辑选择,default 0
14JPEGE_ISP_EN_MASK使能 ISP/scaler 联动输入
13JPEGE_CROSS_4K_DIS_MASKAXI cross-4K boundary 控制,default 0
10:11JPEGE_QT_V_MASKV 分量量化表索引,default 1
6:7JPEGE_QT_U_MASKU 分量量化表索引,default 1
2:3JPEGE_QT_Y_MASKY 分量量化表索引,default 0

1.3.3 FORMAT_CTRL

位宏说明
0:1JPEGE_FORMAT_SEL_MASK输入格式:0 NV12/YUV420,1 YUYV/YUV422,2 Y-only,3 Bayer
2:3JPEGE_BAYER_FORMAT_MASKBayer pattern:RGGB/BGGR/GBRG/GRBG
4:7JPEGE_AR_OUTSTANDING_MASKAXI read outstanding,硬件存实际值减一

1.3.4 MARKERS

位宏说明
0JPEGE_MARKERS_ENABLE_MASKRestart marker 使能
16:31JPEGE_MARKERS_NUMBER_MASKRestart interval MCU 数,硬件存实际值减一

1.3.5 GLB_STAT / 中断

寄存器位宏说明
glb_stat31JPEGE_FRM_END_MASK当前帧结束,BS_LEN 稳定
glb_stat24:30JPEGE_QP_IN_CUR_FRAME_MASK硬件 QP 模式下当前帧使用的 QP
glb_stat0:23JPEGE_BS_LEN_MASK输出 bitstream 长度,单位 byte
intr_enable/stat/clr3JPEGE_TIMEOUT_*硬件 timeout
intr_enable/stat/clr2JPEGE_FRAME_START_ABNORMAL_*frame start abnormal
intr_enable/stat/clr1JPEGE_OVERFLOW_*ISP 向 DDR 写数据覆盖 JPEG 读数据区域的异常,不表示 bitstream buffer 溢出
intr_enable/stat/clr0JPEGE_FRAME_END_*frame end

1.4 硬件限制和量化表区域

项限制
输入宽度640-1920,并满足像素格式对齐要求:Y 为 8,NV12/YUYV/Bayer 为 16
输入高度480-1440,并满足像素格式对齐要求:YUYV 为 8,Y/NV12/Bayer 为 16
源/目的地址JPEGE HAL 要求 256 字节对齐
AR outstanding1-16
AWLEN selector0-3
QP0-98,仅硬件 QP 模式使用
QK_TAB_SEL0-2,仅软件表模式使用

量化表有两条路径:

模式 TABLE_MODE 软件配置项 表区域
HAL_JPEGE_QT_MODE_HARD 1 param.qp + config.codec.qt_table qt_base_tab[32]
HAL_JPEGE_QT_MODE_SOFT 0 param.qk_table + config.codec.qt_table qt_tab[384]

软件量化表 RAM 支持 3 组 Y/UV 表。QK_TAB_SEL=0/1/2 分别选择高/中/低压缩程度的表组。

1.5 公开类型

值 说明
HAL_JPEGE_QT_MODE_SOFT 软件提供完整量化表,使用 QK_TAB_SEL 选择表组
HAL_JPEGE_QT_MODE_HARD 硬件根据 QP 和 base table 计算量化表
值 说明
HAL_JPEGE_QT_TABLE_1 使用内置表 preset 1
HAL_JPEGE_QT_TABLE_2 使用内置表 preset 2
值 说明
HAL_JPEGE_QK_TABLE_HIGH_COMPRESSION 软件表模式选择高压缩组
HAL_JPEGE_QK_TABLE_MEDIUM_COMPRESSION 软件表模式选择中压缩组
HAL_JPEGE_QK_TABLE_LOW_COMPRESSION 软件表模式选择低压缩组
值 说明
HAL_JPEGE_PIX_FMT_NV12 Semi-planar NV12 输入
HAL_JPEGE_PIX_FMT_YUYV Packed YUYV 输入
HAL_JPEGE_PIX_FMT_Y 单 Y 平面输入
HAL_JPEGE_PIX_FMT_BAYER Bayer raw 输入;HAL 会强制转为手动 start 并关闭 ISP linkage
字段类型说明
widthuint32_t输入宽度,范围 640-1920,必须满足像素格式对齐
heightuint32_t输入高度,范围 480-1440,必须满足像素格式对齐
qpuint32_t硬件 QP 模式使用,范围 0-98
字段类型说明
src_addrvoid *Y/RAWY 源地址,必须 256 字节对齐
src_uv_addrvoid *NV12/YUV420 UV 源地址;为 NULL 时 HAL 按 src_addr + stride * height 推导;YUYV/YUV422、Bayer 和单 Y 不使用
dst_addrvoid *JPEG bitstream 输出地址,必须 256 字节对齐
dst_buf_sizeuint32_t输出 buffer 容量
字段类型说明
restart_markers_enbool是否插入 restart markers
restart_mcu_numuint32_trestart interval,启用时必须在 1 到 mcu_number - 1
字段类型说明
start_autobooltrue 使用 scaler 自动 start,false 使用软件 START
reset_autobooltrue 硬件自动 frame reset,false 由 HAL 在取结果后触发 SW_FRM_RESET
wrapuint32_tJPEG_WRAP 寄存器值,表示 OCM 中 ISP/JPEG 可用的 8 行像素空间数量;NV12/YUV420 至少 4,YUYV/YUV422 和单 Y 至少 2,Bayer 不配置
ar_outstandinguint32_tAXI read outstanding,范围 1-16
awlenuint32_tAXI AWLEN selector,范围 0-3
isp_enbooltrue 关联 ISP/scaler 输入,false 使用 PSRAM direct input
timeout_msuint32_t软件等待帧完成的超时时间,单位为毫秒;为 0 时使用 middleware 默认值
reset_cycleuint32_t软件 reset pulse field,范围 0-15

2. LL JPEGE 接口

详见 code/include/drivers/g32s10/jpege/ll_jpege.h。所有函数均为 static inline,直接访问 JPEGE 寄存器。

2.1 触发、复位、Shadow

类别主要函数
reset 参数ll_jpege_set_trig_frm_end_cycles, ll_jpege_set_trig_sw_reset_cycle, ll_jpege_enable/disable_trig_sw_seq_rst_regs
shadowll_jpege_set_shadow_flag, ll_jpege_enable_shadow_cur, ll_jpege_enable_shadow_next_start, ll_jpege_enable_shadow_next_end
软件 resetll_jpege_enable_fsm_reset, ll_jpege_enable_seq_reset, ll_jpege_enable_frm_reset
startll_jpege_start

2.2 CTRL 控制

类别主要函数
触发模式ll_jpege_set_auto_mode, ll_jpege_set_trig_mode
auto frame resetll_jpege_enable_auto_reset, ll_jpege_disable_auto_reset
量化控制ll_jpege_set_table_mode, ll_jpege_set_qp, ll_jpege_set_qk_table, ll_jpege_set_ctrl_qt
timeoutll_jpege_set_enable_time_out, ll_jpege_set_disable_time_out, ll_jpege_set_timeout_threshold
AXIll_jpege_set_awlen, ll_jpege_set_new_frm_sel, ll_jpege_set_cross_4k_enable
ISPll_jpege_enable_isp, ll_jpege_disable_isp

2.3 帧参数和地址

类别主要函数
MCU/宽高/stridell_jpege_set_mcu_number, ll_jpege_get_mcu_number, ll_jpege_set_frame_info, ll_jpege_set_line_stride
源/目的地址ll_jpege_set_src_y_addr, ll_jpege_set_src_uv_addr, ll_jpege_set_dst_addr
格式ll_jpege_set_pix_format, ll_jpege_set_bayer_format, ll_jpege_set_format
AXI readll_jpege_set_ar_outstanding
wrapll_jpege_set_wrap,配置 OCM 中 ISP/JPEG 可用的 8 行像素空间数量
restart markerll_jpege_enable_restart_markers, ll_jpege_disable_restart_markers, ll_jpege_set_restart_markers_number
像素总数ll_jpege_set_code_pixel_number

2.4 状态、计数器和中断

类别主要函数
输出状态ll_jpege_get_output_size, ll_jpege_get_frame_end, ll_jpege_get_qp_in_cur_frame
FSMll_jpege_get_glb_fsm, ll_jpege_get_reset_fsm_done
frame counterll_jpege_get_frm_cnt, ll_jpege_get_isp_frm_cnt
中断使能ll_jpege_enable/disable_frame_end_intr, ll_jpege_enable/disable_overflow_intr, ll_jpege_enable/disable_frame_start_abnormal_intr, ll_jpege_enable/disable_timeout_intr, ll_jpege_enable/disable_all_intr
中断状态ll_jpege_get_intr_status, ll_jpege_get_frame_end_info, ll_jpege_get_overflow_info, ll_jpege_get_frame_start_abnormal_info, ll_jpege_get_timeout_info
中断清除ll_jpege_clear_intr_status, ll_jpege_clear_frame_end_intr, ll_jpege_clear_overflow_intr, ll_jpege_clear_frame_start_abnormal_intr, ll_jpege_clear_timeout_intr, ll_jpege_clear_all_intr

2.5 量化表写入

函数功能
ll_jpege_set_quant_base_table(table, word_count)写硬件 QP 模式 base table,即 qt_base_tab[]
ll_jpege_set_quant_table(table, word_count)写软件量化表 RAM,即 qt_tab[]