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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
0 j2 y+ X  v3 l    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入# E3 W! y) w, J9 H( G
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:6 \4 x$ h( t0 G
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 27 k: x3 G! u5 r1 Z
CAMERA capture
( h( r% J7 q# y3 Binput_device /dev/video06 W5 j; M% _) Z
Camera-Camera
, {) d* a8 L( t) r( A7 C, ?fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
. S8 i* y( y8 |- k* u0 b$ U) wfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)6 P! d! W; \0 K* _
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000); Y8 t9 i% \: x, f: c
capture_buff_info[0].length = 41472006 f4 M2 i) f, H3 h  ~' r, M! O
capture_buff_info[0].index = 0
! s- P% P" d* ?4 m+ p6 i: R' O( ecapture_buff_info[0].start = 0xb6bec0000 B8 ~# z- X6 Z' i0 d! K! r
capture_buff_info[1].length = 4147200
  n4 K$ @5 K/ ^8 K% \; acapture_buff_info[1].index = 1' w8 Y% u  Z! g( O* h
capture_buff_info[1].start = 0xb67f7000
, j9 B8 x0 Z8 [5 f[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
. a) ?1 M& W* k, a3 R. T' J. NCannot mmap = 2 buffer$ a0 N0 @/ e4 l& I$ {" b* n
Error in opening capture device for channel 0

4 H, Q& T0 U  h; S, I) h4 Y 0 g7 G  W% s  |  f
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!7 O$ J6 v9 |& f
分享到:  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! ?8 S9 }9 J8 h6 i8 O5 n
您的还是默认的bufsize的,再检查一下配置吧
9 j; v0 C! n# \( U
: V/ Q( s0 o$ I" |& G3 \1 g/ n3 {6 ]

  r1 s3 V* G9 a9 U% i看一下,我把环境变量打印出来了,这样配置是对的吗?
6 n& A1 J6 {* S+ m' G: S
3 w3 Q! X4 S1 E1 w# c: l- g. O
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 28 y4 o" v# {* j* t- q
CAMERA capture; L6 n# u! i5 {) X
input_device /dev/video0
& {" ~! j5 {& _- y, }3 \Camera-Camera
$ q8 ]9 Q2 d& M. |+ \# h" v  hfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
* i/ B) O% O& U" ofmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)  C5 ?4 y. S: S
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
" Y5 V& ]5 ]- }8 {4 B: _0 x9 qcapture_buff_info[0].length = 4147200" ^0 J9 ]+ B8 t% C  [% o
capture_buff_info[0].index = 0
- [9 v) }) i. Mcapture_buff_info[0].start = 0xb6b40000
, o7 S5 p' ]! o" t/ m/ t[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
( t# k! M& v- p0 O0 v1 f[   74.323663] Backtrace:
3 E: Q( k6 X: J5 S1 _! [1 G[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)$ L5 r2 g4 R3 s3 x# p; }# D
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093! \( j) B% H) I/ v2 n' \, [
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)! c$ |1 d, ]& t0 _  p# n$ u- T
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)* w3 u+ k- f# {" w# K! C
[   74.406178]  r3:c71fbd1c r2:00000000
8 f! p3 j9 u3 y[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d00 f! a6 U% q. W7 B
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)" S( e# `8 l  I/ S, K) _' J& k- s
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
6 ~" G* T; q; l: {[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)3 }! x( V* a' E' Z
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0- ]2 I6 h& f7 K, t* E) Y  d1 |
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)$ P7 Q. Y6 J  g! q& y7 e0 i
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
8 p0 j: A1 ^& U+ O[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)+ y2 i8 j% d' Z3 Y5 [
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
0 n/ E, T8 E& r% l5 ][   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)& _4 N0 S0 u* e1 D
[   74.587055]  r5:c71fe580 r4:c79c2e00
& ~2 C& b: d/ A$ N( J! r4 t[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)( h4 L/ T. i& U% H& z2 ~
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
4 f4 f! N- H# b7 Y1 c[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
- L/ D+ z* P9 h% `( o; w$ `. z[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
  |: h5 [) P  q, q1 c8 `  W3 ?$ N[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)' P) y3 r' q: i: Q$ _0 O
[   74.688020] Mem-info:) r% _* f4 ~2 s0 b+ e. ]: p* v' W
[   74.690383] DMA per-cpu:/ B& F' H; y7 N, p0 h1 h
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  175 P9 x% P; l" ]" b4 N  f
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
+ U$ E: Z. f! h  L+ U! u" V& Q[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24% G7 r1 n: ], W" A; q
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
( _' J( H- [! Y1 E& X$ v- y[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
  F/ m* `7 |+ _[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
. V0 x& {6 Z! a# ^4 P[   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
8 R* S' W. Y1 ^7 M; ~[   74.846179] lowmem_reserve[]: 0 0 0- w8 o; I- E7 u2 W7 y, D9 t" O
[   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- Y; h8 Y- O9 Q+ {* M; P& O
[   74.871095] 5393 total pagecache pages( Q$ |  {  k7 |) z' i- n6 p
[   74.874878] 0 pages in swap cache  ?0 i5 @  v! Z" J6 c
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
; W, G& H& g, l; d, a. H[   74.901444] Free swap  = 0kB7 L5 y  L: T' t1 P9 p
[   74.904346] Total swap = 0kB/ T# e( B/ S: i6 E; C8 f
[   74.946799] 49152 pages of RAM
  }0 H7 ~  K# ^& q[   74.949901] 25326 free pages
7 K- U' `; C8 ?[   74.952803] 3366 reserved pages, ~! N, C$ G! C( w& j; _
[   74.966186] 2124 slab pages& u  l9 p1 P, C& B
[   74.969063] 7387 pages shared4 {% t0 z/ B; |
[   74.972058] 0 pages swap cached
4 ]& V9 f4 H+ M/ `7 R8 T7 L  k[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
  B" O2 `( `& W" sCannot mmap = 1 buffer: b1 E1 M/ g" ]/ S8 K  U
Error in opening capture device for channel 0

" G' {) H9 T7 z6 S. P1 z1 B
  u) O' y) k5 o1 S1 m. V/ T - q7 F, N# `1 i
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。- R) X/ ]- o2 K, ^' q1 p

本帖子中包含更多资源

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

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: g* a, G0 O. u, O& E. }6 A, z  C
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

: k$ s/ j0 U6 H我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
, C' U9 {- \" N# h3 J2 U( m1 Y, L第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
, ?9 F: f  i0 W+ S% C( h
  g! A8 l# q8 }) }' |我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
) {# G* |) V) a- g) G在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

8 B4 R4 A! e7 ~* ?谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:4 ~6 K; Y/ ]( W5 ]0 d
root@tl:~# cat /proc/cmdline   T$ w; h, C& \
mem=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

! G/ _$ `) U- Z# V/ ` 9 D% V; E2 y+ ?. s, k" j8 X
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?) J7 @, d: T& ^6 Z: }; V
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!8 z/ j- c( h7 d8 H$ Y
! [7 g- P. S- F" Z/ c; H! L
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助" _6 s; y1 O/ w1 F& e) _
root@tl:~# uname -a
/ B, V) s$ A& ^' B- E+ ZLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
8 h- C! J# r, d& Z8 e, p; ]/ G
$ R) O4 e, ?3 e3 V0 n

: K" Z4 Q, N1 J  V4 e# g; B
& y3 G/ f  X$ x2 a0 A1 z
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
; J' x& r1 n+ H' K' {第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
; d: M2 o5 d" V2 n第三步,重启板子,然后再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  N1 G* n2 R6 B+ }
第一步,确认你的u-boot版本是不是v1.5或以上版本;
2 w2 V) h9 I5 D  T$ M/ R( h2 T第二步,可以在u-boot里面执行:nand erase 0 20000; ...

/ c9 |" l* H+ V您好,) F# _2 d; V; F  m- P1 B
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
& u% p2 j0 h% l0 ]* R请问这个是什么版本的?8 |( b; U+ ?1 F9 m: k: H9 D* T

5 K, e# o2 ], F' n, X+ Y9 U另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
3 q  c3 V" j, _: h& p我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
. H7 D  S8 x4 v, c% b- I   e0 _0 V1 R7 L4 h
还有就是想问一下这个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 的?7 \+ ]' `5 t8 E& E

( I3 i4 D! H; G" w9 R问题有点多,希望大神好人做到底,多教教我,谢谢您!
6 ^# U3 ~: g5 P" g- R
4 [9 u2 j6 y* h0 |" P& ?' g
回复 支持 反对

使用道具 举报

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;6 K5 E, c' R* P/ A, e# X
" f3 I+ [( ~& w0 \
可以根据环境的光线强度,修改摄像头的亮度参数: $ Z+ d; m) t  \+ U) l* F$ p2 `5 I4 b
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
. P% j7 h. p! [' m, xroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode : ~7 i7 H: R3 c% J8 C$ b8 |
Cloudy 7 R" h6 o% |5 D9 H. c; F5 c& w$ w

2 E  c! V, x0 {3 }0 ?# F参数说明: 0 R+ y+ g% P1 Z  n  i
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home # Q/ W- a6 I9 P' ?5 G

* M4 P: z4 D3 }9 q- Z& H1 m5 @如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
* h! D& d; D+ H7 I( b
1 f+ i$ d! {% ^7 Cvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 23:08 , Processed in 0.050052 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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