TL2640-COMS摄像头测试 问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10890|回复: 11
打印 上一主题 下一主题

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,0 I$ _) G/ R2 r
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入% W. F8 ?$ k  A  b) F  X+ P. [
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:& f3 v' z7 E7 `# j( T/ A
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
7 Q! S6 I, z6 x5 B3 ]CAMERA capture, W, b% G/ G+ w$ y/ H! o/ b: c
input_device /dev/video08 x" U6 e# ?4 o1 {4 T4 j2 v  h
Camera-Camera
% T: K8 p3 U- y4 \9 ufmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
$ }4 \6 c  Q5 V; Y5 u: ufmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)0 S/ C; b% P/ M( D' {
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)% C" A, o! V8 z" Y
capture_buff_info[0].length = 4147200
4 E/ q, K3 z$ i6 S" Xcapture_buff_info[0].index = 0
$ }9 i, }/ q0 P. q6 x9 ^capture_buff_info[0].start = 0xb6bec000
- ], v* E; N4 U! J0 ]capture_buff_info[1].length = 4147200  n: M1 h$ m0 ?. T, a( F$ L/ V
capture_buff_info[1].index = 11 y' C6 }. w0 O. Q
capture_buff_info[1].start = 0xb67f7000: M( f$ z" k/ \  {5 C) V
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed- u+ P- P3 |* x  \$ T( B
Cannot mmap = 2 buffer+ B0 h" h* A, p4 T
Error in opening capture device for channel 0
/ x5 E6 H4 Z/ j; l
$ P- c$ i/ n. i% T& J! J
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!! j# w) d2 j" d" L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
沙发
发表于 2016-1-30 10:46:25 | 只看该作者
您的还是默认的bufsize的,再检查一下配置吧
回复 支持 反对

使用道具 举报

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
板凳
 楼主| 发表于 2016-1-30 11:15:26 | 只看该作者
human 发表于 2016-1-30 10:46
& e1 q" g; L( l您的还是默认的bufsize的,再检查一下配置吧
2 @* ~: S8 F* s( M3 A

2 ^( Z  e- }7 R8 i& q
. R' d+ @7 \/ Y看一下,我把环境变量打印出来了,这样配置是对的吗?, E, a' S; ?8 R  O5 a# w4 Z5 X, x" J

$ Z3 A( n+ l4 A) [* W
! ~" a9 `$ }& j. f6 ]4 ^8 troot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
# e) A4 `! Z) \CAMERA capture/ X" S3 t; }8 q
input_device /dev/video08 p1 [/ |/ h% c# S% S9 b
Camera-Camera
- ]0 y& v6 K8 ?fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
  j8 p* z5 D2 f3 g! p  zfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752); \  k9 }$ M* I5 ?' o/ \. N
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
9 J# R% p' \3 S; {: Ycapture_buff_info[0].length = 41472004 n. A& [9 r6 I0 P
capture_buff_info[0].index = 0. _: k% o' T3 ]; {8 \3 j
capture_buff_info[0].start = 0xb6b40000$ h: b( ]' d' ?6 d7 t4 i, L
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0+ Y) A% Q1 L4 A# O5 T3 s! y
[   74.323663] Backtrace: 8 n9 N1 F( z$ m3 p" r% E3 r
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)0 Q: E6 E; ], s
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
$ n  \% t( ^& ~0 _. A' M$ D[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)7 Q# L+ C! s% i5 @7 b" u
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)& Z9 P! C' ~. t- I+ {
[   74.406178]  r3:c71fbd1c r2:00000000
+ V: s$ R/ [' i+ R0 F" [[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
% d* R: h$ a* _# l( L' B% s6 ][   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
4 S0 D& j- Q4 H) q[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)" L$ h8 p8 C) t! I4 |5 Y+ O$ e7 T
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180). W4 {( U/ A# B( n7 _) k. Y
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0# P) A# |$ M0 R1 Z2 i5 z
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
1 s/ e+ q  Z  w' B7 C[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
9 R5 ^  a5 c* i7 b[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
2 v* L% ?& @9 i& y[   74.556197]  r5:c7ba8c00 r4:c72b69a0; V- M! `/ ]9 s  L& ]9 f0 B& m1 V
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
5 o  s0 c2 y% X7 R8 o[   74.587055]  r5:c71fe580 r4:c79c2e00
9 R5 s: V. i/ F; Z/ i% \% f9 I[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)+ e4 W; j$ C  x9 p, p$ b: m
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
- F" _6 H# w: {9 z1 g. A[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
# n3 k3 H+ U# I; R0 e[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
7 z$ d( A4 o* l# {[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
4 n4 [. x, o' o8 J* r[   74.688020] Mem-info:
" k0 b9 i% u6 i5 D( A  ]: s[   74.690383] DMA per-cpu:3 f" R" |2 X6 _2 V( o9 K
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
' l; ^  V) m- K" h! V[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
* x$ w2 h4 y( m2 c% A" Q[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
: j+ R6 {7 J  o/ l" g5 d$ ?[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:09 k! K2 J7 A8 }7 G2 \8 W
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
, W8 u! d! ~9 Q9 L, ^$ ^- c( f[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0: D" L) U( `% _6 G
[   74.766255] DMA free:33856kB min:1244kB low:1552kB high:1864kB active_anon:12004kB inactive_anon:188kB active_file:10736kB inactive_file:21200kB unevictable:0kB isolated(anon):0kB isolated(file):20kB present:97280kB mlocked:0kB dirty:268kB writeback:0kB mapped:8372kB shmem:568kB slab_reclaimable:2020kB slab_unreclaimable:2956kB kernel_stack:576kB pagetables:572kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
! F- T) m# U5 K) O: ^[   74.846179] lowmem_reserve[]: 0 0 0
4 a! {% }% V" v, ~" ], q[   74.849759] DMA: 760*4kB 461*8kB 239*16kB 158*32kB 92*64kB 43*128kB 21*256kB 6*512kB 7*1024kB 0*2048kB 0*4096kB = 42616kB" J5 \% N9 B* K; H# b
[   74.871095] 5393 total pagecache pages8 a" s& @) a5 c3 Y
[   74.874878] 0 pages in swap cache
8 i0 G. R# A1 Q: L: G  [) D1 ~[   74.896156] Swap cache stats: add 0, delete 0, find 0/01 k# t4 ~0 h6 D! n$ o% F0 B
[   74.901444] Free swap  = 0kB/ u' b! S% Z& n7 x, W
[   74.904346] Total swap = 0kB
" }- I9 `. s: r5 T0 D[   74.946799] 49152 pages of RAM
0 \6 O! _% N; l9 [+ P! j[   74.949901] 25326 free pages
' |' {5 y7 A: Z! a- [* K[   74.952803] 3366 reserved pages
7 ^" U" q, g* G$ B[   74.966186] 2124 slab pages5 |' m4 }$ @9 s7 Y; M
[   74.969063] 7387 pages shared- F$ u- w/ a9 `" |  n; R: q
[   74.972058] 0 pages swap cached
+ @0 g% X% Q- N- c# o5 Y[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed1 U& v1 p: d: y+ p% V
Cannot mmap = 1 buffer9 t8 K0 Q% i0 z3 V" c, |# U
Error in opening capture device for channel 0
9 P3 O6 ]( E) ^% A( G' I% c# |

8 n% Y; ^: a" Y : ?( d  J/ E* q& o- a& j8 T
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。/ E% |* a+ `' w6 \4 _

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2016-1-30 11:32:03 | 只看该作者
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的
回复 支持 反对

使用道具 举报

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
5#
 楼主| 发表于 2016-1-30 11:40:19 | 只看该作者
human 发表于 2016-1-30 11:32
0 i7 U+ x3 Q( x5 W: T; i还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
5 t  b8 v/ @8 ]2 y5 P% d
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
9 c: ]* [6 h# Q7 f: @6 W第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2* B" |! Y/ h5 S% I8 l  P

. p. c) J( B5 O4 V我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
6#
发表于 2016-1-31 22:16:32 | 只看该作者
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给内核。
回复 支持 反对

使用道具 举报

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
7#
 楼主| 发表于 2016-2-1 08:46:36 | 只看该作者
teddy 发表于 2016-1-31 22:16
  E  X" l/ |: {, p, M* M在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
9 M0 Y$ C6 J, V' y
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:' y3 K; M  w  ^+ x8 ~9 F& X
root@tl:~# cat /proc/cmdline
: b/ \5 R8 S4 E6 O) z1 Q) Vmem=32M@0xc0000000 mem=64M@0xc4000000 mem=32M@0xc0000000 mem=64M@0xc4000000 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw ip=off eth=06:02:40:16:fa:b0 rootwait root=/dev/mmcblk0p2 rw rootwait

  R" Y! D' g$ h/ n( h
- Q6 M3 a' Q% b' s) D& e( I我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
7 Y1 e1 M$ N* g$ }那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
0 O5 H, O/ D8 A
  Q( I, a6 n9 M4 F) [以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助+ N) Z; P9 @. X1 @% L1 d! L
root@tl:~# uname -a: O# c" Q. Z8 `# y
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

& Z0 K# b0 Q; p. X
& C% |: \" l1 [8 h, ?  s7 K5 O 9 ~/ b! U4 T8 |$ _& J! D7 Q. B) P- G
7 ~% {7 V- {  o% o4 I
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;: P% L: Y' _$ n0 I, m$ P- H* I
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
; x4 ?6 P7 E0 E% q2 G5 S第三步,重启板子,然后再setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
回复 支持 反对

使用道具 举报

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
9#
 楼主| 发表于 2016-2-1 10:53:30 | 只看该作者
teddy 发表于 2016-2-1 10:12
4 j6 J8 i9 G6 N2 R$ {, m. O第一步,确认你的u-boot版本是不是v1.5或以上版本;
& b) P. Y( C/ g9 E第二步,可以在u-boot里面执行:nand erase 0 20000; ...
, s' o" g3 W& U' F
您好,# s- E- b" n: p; r
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
3 g1 h" W. ]5 v& m3 o6 P" p' B& d  h请问这个是什么版本的?
+ D& W" g4 j$ \8 S
; s& ~+ c/ v) L' m' T1 L; z4 ~) Q: i另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
" O& l. V, }! F4 n' H( A我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?5 e7 Z/ Y8 z. y2 h) c
% B: m5 @! Y" Q
还有就是想问一下这个vpif_mmap_loopback_sd是用什么编译的? 之前摄像头不通的时候,我改过vpif_mmap_loopback_sd.c,想用 ioctl(fd,VIDIOC_ENUM_FMT,&fmttest) 打印一下摄像头支持的视频格式,但是我用gcc -o vpif_mmap_loopback_sd vpif_mmap_loopback_sd.c(我现在只会这一个编译方法),编译一直出错,能不能写一个编译的指令给我,让我学习一下怎么编译这个vpif_mmap_loopback_sd 的?2 c- i* w9 y5 m% r. D& m' z/ ]  E

( M9 s( I! e& D& N问题有点多,希望大神好人做到底,多教教我,谢谢您!+ }( Y: }7 p" q* M& r6 j" m
% a9 ]& W7 D4 N  e# Q' ^
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
10#
发表于 2016-2-14 17:02:25 | 只看该作者
U-Boot 2012.04.01-00059-g7363edf对应的版本是: v1.6,可以查看创龙提供的uboot-feture-support.xls;
4 N; H( Z( L/ L. z
# \8 x5 w3 H4 B$ M) }& O可以根据环境的光线强度,修改摄像头的亮度参数:
# B9 _2 ]7 e4 d* J; k- N* broot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 3 f6 m1 f% M5 C5 H. D
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode   j6 g4 G' d0 y- g- ?/ H6 K7 q
Cloudy 7 z: C9 Z+ y) p  e0 c

% p% b3 g/ a( A, y参数说明:
! ~+ S! Y( B6 @3 P/ Dlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 2 D# j, h- E* Q+ t# b/ d2 o$ r
/ H3 t/ T) \: j! E# q3 r
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
6 u3 o7 J# {! ?- f! E8 N3 |2 w+ S8 p& f* n: B2 S) }
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-6-17 03:30 , Processed in 0.043975 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表