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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
2 r1 B( V( b: `3 X2 A4 N8 i    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
* G5 M; Z1 i* R+ a% H! K4 L1 I"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:/ x) O) g6 b+ c( d
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2( I! z; ]: E1 H7 R, x$ a
CAMERA capture
1 r& B, @  r8 ]% ?' ?) F+ T3 V' ?input_device /dev/video0" H: L* V: E0 p9 j
Camera-Camera9 h+ G8 ^4 E) z4 i
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)3 r1 H  |( a( T$ c% t: a3 s
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
! |' m  s# w9 S2 C5 d: t) Ofmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)9 b- `! F& ]! p  b
capture_buff_info[0].length = 4147200
3 a& B% ?2 Z  k$ F' u- ?  O, Jcapture_buff_info[0].index = 0
. ~% M; ^! R1 G6 l; Ycapture_buff_info[0].start = 0xb6bec000  P6 o5 g1 L' n3 `% ]. P* U
capture_buff_info[1].length = 41472004 y3 n5 g# O7 Q" ?, o1 j  t4 O
capture_buff_info[1].index = 10 j% o0 f9 d$ t2 {# U0 Y. o
capture_buff_info[1].start = 0xb67f7000
$ N) ]* x2 D6 Y7 z. e$ p7 f9 B[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
: m$ Z  l$ y- F$ F; e* c2 OCannot mmap = 2 buffer
3 d+ Q# B) B' hError in opening capture device for channel 0
2 {+ O2 `6 C) ^: _
) K5 d+ Q9 ]5 z5 t
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
8 A# A* l2 Q' v' c$ U
分享到:  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/ {$ {! q$ L( L7 J5 U
您的还是默认的bufsize的,再检查一下配置吧

  G( B( K( [2 a4 {
1 z- [0 Y( W- N9 j" u; j* \5 K3 ]$ [9 ]+ j& u$ r, V
看一下,我把环境变量打印出来了,这样配置是对的吗?% _( i) B0 x! ]

! \3 M) Z  p4 k. O6 B  z  M' J* z) [7 u" O
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
0 q8 _( k5 n: w8 ZCAMERA capture; _$ |+ r$ r" I5 E) k& L* [
input_device /dev/video0' m/ e9 {0 N( N; I5 ~5 b5 i3 r0 V' {
Camera-Camera( R$ W$ T- F; S0 b1 C
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
2 Z% o5 B) R& }) U" i. d! \fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)( N$ L3 r& j/ e$ a7 ^& \
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)3 Z$ v! K2 m% M1 O
capture_buff_info[0].length = 4147200" |9 l) q* l7 N% z1 r2 F
capture_buff_info[0].index = 0
4 n) m6 k' I7 Y: ?& x" h5 @capture_buff_info[0].start = 0xb6b40000
  f) d" s% U) u7 V6 y[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd03 ~  L7 k" K* C) h$ f5 P
[   74.323663] Backtrace: 7 L* C7 u2 c0 ^/ B. {
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
) C6 w- q- E3 X! P2 w& H* d: {[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
3 h$ f) s; \6 x; o: [% Z[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
, J) h1 Q* M$ e  R, c/ B" G[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)1 v$ S8 ?5 l8 G2 t
[   74.406178]  r3:c71fbd1c r2:00000000
9 p2 g$ m; s+ |8 c[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0/ s& |7 e  y4 ~0 s6 I
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
' i/ z5 U- c! b. j% Q6 |& V. t! |[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)( H* }2 N3 f9 P/ F( V% q, S- K
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)% ^% v4 Z0 W7 X" [/ ?
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0/ h4 b9 q0 R" x2 H
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
( z- M9 P& t: E( L1 Y( N[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90& m- I0 [/ X! A' i, w9 t; @
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)7 y* [3 {: q9 t3 b+ p- b. G# a
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
0 @. u3 U" v% P7 R[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)! `  d* |* u. r( v* j. y5 E
[   74.587055]  r5:c71fe580 r4:c79c2e003 v6 Q/ @% d/ h3 H) E
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
, G) z, N  D% u" H5 T+ F[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c55847 O2 k2 \" n6 M# r  Q3 z
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318); `- \! i" w; l  a4 U1 [# A
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
- E: r8 I& H2 v- Z" j9 J[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
9 a4 {1 Y& o* F" e& I0 y) F% s) j[   74.688020] Mem-info:
# j. v# r( F# ^$ K3 e" N' e! b$ m[   74.690383] DMA per-cpu:  A3 e- o* `2 m7 D
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
3 a9 q* w8 I5 `. Y3 E9 W[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0) e: k' m! ~8 G1 T+ S" ^! ~
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
% m# [( W/ [8 o5 p6 r% |[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0$ C6 p. t3 R. R( _
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739; t8 D( t# R5 u5 x6 d0 h$ n% F1 |3 Y
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
7 T. N% m& X) n4 s/ P1 l. _[   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
7 ~1 ^& X  h! K[   74.846179] lowmem_reserve[]: 0 0 05 w, C3 i+ a# k) e9 ?" a& S
[   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
0 T4 v0 L( Y+ E9 M/ t- l! u[   74.871095] 5393 total pagecache pages
' T# i7 H( ]% W[   74.874878] 0 pages in swap cache/ I5 x  r3 V7 _9 t1 S5 q2 l1 L4 q
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0& T5 l$ ^- J: r
[   74.901444] Free swap  = 0kB
* p' T- X- r& w0 x[   74.904346] Total swap = 0kB
, _# z6 g: n3 l/ @[   74.946799] 49152 pages of RAM
7 a; Q# j! F  C: ?  j[   74.949901] 25326 free pages
% N# k) Z/ t" v% X[   74.952803] 3366 reserved pages/ Q6 l: u( B  \1 z5 [# B
[   74.966186] 2124 slab pages
1 g9 a+ r3 _* A6 M1 D: n[   74.969063] 7387 pages shared4 W- D) C! I2 Q7 z6 o
[   74.972058] 0 pages swap cached) @# }& R' D6 B1 W
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
. M7 {- G% a5 M+ a. oCannot mmap = 1 buffer1 Z4 t- N# ^/ {
Error in opening capture device for channel 0

) V0 c( Y: V$ }: j+ H2 X+ m 8 X+ l6 N0 z4 T
6 \# e9 f( y1 Q4 o- @+ Y5 ?
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
. z1 q6 k4 y8 m/ S

本帖子中包含更多资源

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

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# I8 V3 L# j  A
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

  a5 g. J8 [4 Y2 J! Z3 {) D我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
' V$ c5 x7 [/ a第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
6 C2 ~% Y) Q* O0 O
& N" t2 a* |6 h6 w9 Z9 _# E' s我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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' [7 R  ^( o& G
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
; R4 h* v" l1 h5 A) y
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
% m% r# Q0 f: j! I$ m* B2 Z0 p( Q8 {root@tl:~# cat /proc/cmdline 2 Z' \, ^2 n& R; D0 [* s
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
% R0 \: L$ p: R4 `4 A

, l% h& d3 ?5 M5 n" H我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
6 o8 y, m& N) i9 d那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
, O, @8 `" ^! B , K6 e2 k& i& u7 p. W2 j, A
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
( }# s/ z+ z0 o/ Z9 [, }root@tl:~# uname -a
8 k. t. I' X, m. |Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

) n* c2 Z$ t9 ^) h- F4 [# A. m: G
/ `5 G! c. F7 \, V3 p' @ * B' b4 |% S2 d$ E
* n3 b6 z# d. z. I9 @: m+ R
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
  I: L5 T. q: c' m第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;8 l3 ^- t- p+ d8 D' ]' W
第三步,重启板子,然后再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:128 R8 j- [* M2 Z1 ?! [, n
第一步,确认你的u-boot版本是不是v1.5或以上版本;5 y8 R. P( l' e, ?/ V
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

* }( w* C3 X- a4 T6 c' j您好,; c! I! ?, w6 k2 G1 W
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
  o- A; Q, t+ v  N请问这个是什么版本的?! ^6 `3 d* Z8 s- H* U
1 R( K; ~  C7 f4 ~( X2 t, ?
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?" ~0 F$ J3 {, b* G2 q% z% N
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
- e; S+ t5 n6 p% A8 z9 l9 S
/ q4 T4 _+ G: d0 ]6 E还有就是想问一下这个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 的?
6 k3 R3 T5 n. l4 l3 W7 y
( R/ e- y- T- P5 @1 w8 t5 A- b问题有点多,希望大神好人做到底,多教教我,谢谢您!6 y$ X8 y, _5 P6 y
4 E' R5 d* v2 D4 e. E' w. t) Y
回复 支持 反对

使用道具 举报

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;
1 Y! @0 F: Q9 y) g9 m( D0 \
8 K4 e. a3 H4 S# D# y' @- k可以根据环境的光线强度,修改摄像头的亮度参数: . m* G1 _! H0 \+ Y: s4 ~& c# \% _
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
) o) T. n* D/ M# |% N% b  z, iroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
7 o( u/ ], A: ^0 PCloudy , d5 I% Y' T2 y- f0 D
& v0 L1 g# }( a
参数说明: , v7 U- q+ k1 `( a( m0 _8 E! i1 ^' V
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
! \. K7 s2 m* v. |; p2 r5 \: }
4 |9 _7 ]* a* e* C: ?如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c, G( c# _+ {: }  W1 g* u- [

3 a7 S$ l; c, Jvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 17:29 , Processed in 0.046857 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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