我目前正在使用 Mistral DM36x EVM (尤其是 TMDXEVM368)。 我看到 G-Streamer v0.1包含在软件包中包含的 SD 卡中 Mistral 提供的文件系统中、我正在使用它来运行简单的视频捕获应用。
但是、我发现由于 DMA 相干大小不足、VPFE 捕获无法为帧分配内存。 当我使用 V4L2捕获应用从/dev/video0而不是 G-Streamer 读取数据时、再次出现此问题。
实际上、/dev/video0是一款有效的 V4L2输入器件、通过查看其属性:
驱动程序信息(不使用 libv4l2):
驱动程序名称:VPFE-CAPTURE
卡类型:DM365 EVM
总线信息:VPFE
驱动程序版本:0.0.1
功能:0x04000001
视频捕捉
流式传输
视频输入:0 (复合:正常)
视频标准= 0x0000f900
PAL-M/60
NTSC-M/M-JP/443/M-KR
格式化视频捕捉:
宽度/高度:720/480
像素格式:'UYVY'
field:隔行
每行字节数:1440
大小图像:691200
颜色空间:SMPTE 170m
传输功能:未知(c1f4dc60)
YCbCr 编码:未知(c1f4dc58)
量化:未知(c1f4dc74)
裁剪功能视频捕捉:
边界:左0,上0,宽度720,高度480
默认值:左侧0、顶部0、宽度720、高度480
像素宽:11/10
裁剪功能视频捕捉:
边界:左0,上0,宽度720,高度480
默认值:左侧0、顶部0、宽度720、高度480
像素宽:11/10
裁剪:左侧0、顶部0、宽度720、高度480
流参数视频捕捉:
功能:时间帧
每秒帧数:无效(0/0)
读取缓冲区:0
亮度(int):min=0 max=255 step=1 default=128 value=128 flags=slider
对比度(int):min=0 max=255 step=1 default=128 value=128 flags=slider
饱和(int):最小=0最大=255步进=1缺省=128值=128标志=滑块
色调(int):最小值=-180最大值=180步进=180默认值=0标记=slider
GAIN_AUTOMATIC (bool ): DEFAULT=1 Value=1
以下是页面分配错误的详细日志:
VPFE 捕获 VPFE 捕获:宽度= 720、高度= 576、bpp = 2
VPFE-CAPTURE VPFE-CAPTURE:已调整宽度= 720、高度= 480、bpp = 2、字节线= 1440、尺寸图像= 691200
CaptureFrame:页面分配失败。 顺序:8、模式:0xd0
回溯:
[ ](dump_backtrace+0x0/0x114)从[ ](dump_stack+0x18/0x1c)
R7:00000008 R6:000000d0 R5:00000000 R4:00000000
[ ](dump_stack+0x0/0x1c)从[ ](_alloc_pages_nodemASK+0x4a0/0x500)
[ ](__alloc_pages_nodemASK+0x0/0x500)从[ ](_dma_alloc+0x160/0x3fc)
[ ](_dma_alloc+0x0/0x3fc)、来自[ ](dma_alloc_相干+0x58/0x64)
[ ](dma_alloc_相干+0x0/0x64)从[ ](__video_buf_mmap_mapper+0x118/0x224)
R7:c203d900 R6:c1150e14 R5:c2234e4 R4:c1ef5bb0
[ ](__video_buf_mmap_mapper+0x0/0x224)来自[ ](video_mmap_mapper+0x64/0x94)
R8:00000000 r7:c203d900 R6:40150000 R5:c1ef5bb0 R4:c1150e14
[ ](video_mmap_mapper+0x0/0x94)、来自[ ](VPFE_mMAP+0x48/0x54)
r5:c1ef5bb0 r4:c1150c00
[ ](VPFE_mMAP+0x0/0x54)、来自[ ](v4l2_mmap+0x40/0x4c)
r5:c1ef5bb0 r4:c203d900
[ ](v4l2_mmap+0x0/0x4c)从[ ](mmap_region+0x220/0x42c)
r5:c1ef5bb0 r4:000000ff
[ ](mmap_region+0x0/0x42c)从[ ](do_mmap_pgoff+0x2c4/0x324)
[ ](do_mmap_pgoff+0x0/0x324)从[ ](sys_mmap_pgoff+0xa0/0xd0)
[ ](sys_mmap_pgoff+0x0/0xd0)、来自[ ](RET_FAST_SYSCALL+0x0/0x28)
MEM 信息:
每个 CPU 的 DMA:
CPU 0:Hi:6、btch:1 USD:5
ACTIVE_ANON:702 INACTIVE_ANON:746 Isolated anon:0
active_file:24 inactive_file:158 isoled_file:0
unevicable:0脏:0写回:0不稳定:0
FREE:6901 slab_RELEASGable:254 slab_unreimclable:983
映射:45分页:49可页:59回弹:0
无 DMA:27448kB 最小值:880kB 低电平:1100kB 高电平:1320kB ACTIVE_ANON:2808kB INACTIVE_ANON:2984kB ACTIVE_FILE:96kB INACTIVE_FILE:800kB Unevicable:0kBO
lowmem_reserve[]:0 0 0
DMA:236*4KB 376*8KB 244*16KB 134*32KB 58*64KB 27*128KB 22*256KB 5*512KB 0*1024KB 0*2048KB 0*4096KB 0*8192KB 0*16384KB =27504KB
共278页页
12288页 RAM
6939免费页面
2140保留页
822个层块页
共享118页
0页交换缓存
VPFE-CAPTURE VPFE-CAPTURE:dma_alloc_相干 大小692224失败
mmap:无法分配内存
这是否与 DMA 一致存储器区域(USALE_DMA_SIZE)的大小不足有关? 目前、这已定义为2MB、而可以以2MB 的倍数增加到14MB。
谢谢、
Anirudh