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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,2 I: F* R3 j& m# q
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入3 A, m% U, P+ E5 a" R* i4 k; `) m% j
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:; e8 U; N: L9 s/ v& K, F" v
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
: g4 o5 N$ s4 x! |CAMERA capture
% t/ l, e+ ~6 `" t8 oinput_device /dev/video0
! K2 U' f) F3 \Camera-Camera4 t+ D+ {; }. y5 e; ]2 A5 w
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)' N" c" x$ E" Q7 s/ P
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)& y6 w; `4 A( p( u
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
( J/ @# i1 B1 G% M' Ccapture_buff_info[0].length = 4147200
7 {7 w4 y0 W! W% W( dcapture_buff_info[0].index = 0
: b! f* B& Y- }! U3 m5 }capture_buff_info[0].start = 0xb6bec0009 Z$ J& N& w; x& k
capture_buff_info[1].length = 4147200
' r8 j4 ?/ d  y0 T$ }  b$ k: K$ jcapture_buff_info[1].index = 1
9 Q& j6 F' R- g+ N, q# n" mcapture_buff_info[1].start = 0xb67f7000
' E6 M- k3 |* u0 W; E; H[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed% w/ U6 ^& ?* v0 j0 y
Cannot mmap = 2 buffer
- {% i% a2 G' ]2 AError in opening capture device for channel 0

. |' _: X9 M% l( [) {8 o " G' s* Z, s$ P8 A# L2 A+ S
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
' G; j0 @# j5 w" c3 q) 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" L- k/ o- G' ~+ ^' B$ `/ e2 t$ b
您的还是默认的bufsize的,再检查一下配置吧
# [" z# |- R! d7 ~

' f0 \; l- T$ ?* a) V7 p  H0 ^  j2 j$ v' ]# G' @" Z. z4 ^
看一下,我把环境变量打印出来了,这样配置是对的吗?$ d) S4 q2 h/ ]6 @1 V# X6 T
5 C3 M* X6 k/ s5 |: p4 C$ n  v
7 `4 k5 w7 b; e2 O: E$ x
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
( I% z7 X9 T& q9 E4 C) ?9 JCAMERA capture0 Y. Q/ Y. P+ a9 ]6 n' D
input_device /dev/video0  x( O/ A4 l3 @2 G' \& i3 w5 w
Camera-Camera
4 X& ~) z6 y/ vfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
  K& @3 O) ?* [$ h; v* T/ l) dfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
( \1 \) l. |! k$ nfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
5 ~* {: E- h2 @6 k9 g( B( xcapture_buff_info[0].length = 4147200
& Z2 G0 R& G5 G5 ?! M& bcapture_buff_info[0].index = 0( ?: ]; y# F- F, y+ e& @
capture_buff_info[0].start = 0xb6b40000) K* T6 Z2 P/ z7 T7 f
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
0 c% j* V" L$ h) v0 `' S; `[   74.323663] Backtrace:
8 ]# Q$ X% h1 j9 p- J3 _" m, b[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)& Q0 o, ^4 ?  J$ ?# U
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093: j1 B4 d" @+ Y, o
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
. w  o) u" R, h" _$ P5 ^[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8); t0 `  t- u/ ?3 \( j5 I% f! W+ \
[   74.406178]  r3:c71fbd1c r2:00000000- z! v* _4 z3 B: ?+ K6 V* t
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
5 W% N8 N$ T: |, `  a[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)1 }9 h) s8 o: X/ N; H2 e
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
9 s" j# f4 w8 W1 S# H[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
' f8 O. H- n8 P0 l  E6 o[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
: m9 j7 P8 K. E5 H. q[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
2 B9 C9 ~) y* {/ f* a' X[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d901 ?8 D0 w7 w/ [5 u
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)6 k: ~2 `! Z  O2 m& m* B- V# |
[   74.556197]  r5:c7ba8c00 r4:c72b69a0& r% f( }, ]% s5 x; n$ T0 Z" ?% l
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)* X3 A3 ~! j* V: q* X6 w; `6 e! R
[   74.587055]  r5:c71fe580 r4:c79c2e00
  v$ x6 e. R- t/ \0 F! X[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)& a, ^2 J4 b; M( Z9 z4 C8 W7 j" P( }
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
5 y8 \# e# m5 u5 P( d& x[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
8 S& S4 t  b! @9 a5 u& ^; M[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0): u8 {8 E* z) ^5 a
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)# s2 D! c  A1 a# @; r
[   74.688020] Mem-info:
6 r' b2 m$ N6 J# U" |; ~[   74.690383] DMA per-cpu:$ N8 W% w. B( ~% J& H7 N' L9 j
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
5 v- {- w2 F' s' t, M2 l[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0+ l9 ~2 e, Y1 c
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
$ f. V. Z4 P1 q! w2 Q  y1 g[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:00 p; H! x' g: Q  M
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739& }( E+ _! M1 u/ S
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:04 f9 t# H9 ^1 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
" p: x" ?- o% o8 @& u# j7 |7 l[   74.846179] lowmem_reserve[]: 0 0 02 B9 d% t# w+ z4 V# N3 I
[   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
9 D  }- R: b' k0 M0 u& ][   74.871095] 5393 total pagecache pages4 w( s: F+ @0 e+ m6 s( ?5 i8 m
[   74.874878] 0 pages in swap cache
  D  z( n$ l- y+ F' ^" Z[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
3 n" j3 x, T# h& z9 Y- t+ f1 n[   74.901444] Free swap  = 0kB
/ g9 H4 T5 e! D6 p& z[   74.904346] Total swap = 0kB
7 M2 M- U6 i( f( r6 R[   74.946799] 49152 pages of RAM
# j2 Q2 w5 p2 O3 V/ H) z[   74.949901] 25326 free pages
# x& H& S+ z/ c8 r5 V' s; Z[   74.952803] 3366 reserved pages
  D0 |% P2 A' q$ O. G8 ?& T[   74.966186] 2124 slab pages
. w, A, M0 l. W; j# h[   74.969063] 7387 pages shared) `# E6 x1 w/ t4 i  z& w
[   74.972058] 0 pages swap cached
7 P% V2 {: S& P0 l% h6 H1 N[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
; g& @3 R8 T# d  n$ M/ A  l# aCannot mmap = 1 buffer
+ y, ]0 m% A9 Q! v* W7 LError in opening capture device for channel 0
" N4 p; j& x. W. \+ ]$ X, p

6 r1 O7 E7 q4 @1 P& X- }, A& T9 h 9 S0 C3 J# k# @: G
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。& C' f3 h, c% q2 ^! T* b

本帖子中包含更多资源

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

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: A! x+ t1 X1 H: ^
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
% ], Q; o1 S8 \2 F
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
7 M6 n& V! t$ L1 E4 C/ L+ t第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
0 y& }! @8 R7 D5 s4 I9 P4 z0 N) f! G
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
$ [, H, D: I7 B- x( g: y) q4 L在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

  c$ I' R4 \9 r) |7 `( h) Z谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
4 F! A& @8 {$ N0 Eroot@tl:~# cat /proc/cmdline
8 t  e# u$ ^/ Omem=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
) b/ M5 N0 D' g! Q. C! I
# Y+ ~( J) d. w; n. B
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
/ u5 U& F$ ]" [+ A* O+ k9 P- M- a2 Q那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!* Z/ E; Q" m5 g2 `# k4 t
+ x( C. Y# @6 m! e& |& S4 }
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助3 P8 x3 C* y3 l9 `3 \3 Y# A# q2 U
root@tl:~# uname -a% ?. K& D3 ]8 Q% c  l" L: S( Y
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

" H- n) t, m* l
( R1 O3 a. c; F0 }0 {
: e6 R. V9 l: R! Z  @ % m$ y- A5 @' Y. m" v9 I; E9 x' [
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;% I- ^9 d, F9 M) L! y- v7 m
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
9 f7 A+ U3 Z! c3 e7 e2 M第三步,重启板子,然后再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
1 }5 {, }6 ^# `8 z) C$ |# N# a1 o第一步,确认你的u-boot版本是不是v1.5或以上版本;
) M+ M( }! U: u) v第二步,可以在u-boot里面执行:nand erase 0 20000; ...

# i. O, F; y4 H4 f1 E您好,
2 r5 ?& M8 W% E: j$ e8 l我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
7 u; H- p* I+ i6 k4 X请问这个是什么版本的?
0 ?  }, N, Q# ?5 E
+ k: `6 I, B$ X) T4 I另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
7 J5 c; g& [+ @5 \1 K我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?6 r  A: }% n6 x3 W7 ~6 a

4 j8 c# Q& f, @& N  e5 O还有就是想问一下这个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 的?
' H; [1 Z, t8 x3 D8 g! u1 |5 s- g
; A9 `( T* J; m$ i问题有点多,希望大神好人做到底,多教教我,谢谢您!/ }& N, Y5 y# p$ a: {
. X! Q' T: }9 L, e" n1 M+ U
回复 支持 反对

使用道具 举报

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;& I7 z! |! X% p4 D3 u2 F2 D

" Y. m# d8 k+ J% s可以根据环境的光线强度,修改摄像头的亮度参数: : m" F3 X+ p' @2 C9 f% G/ b: m" P/ s
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 0 B9 g# w) z% H/ y, T# I
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
; s1 Y6 o) n3 t; w/ YCloudy
9 s* I1 z% s! ~" D4 V: t
9 c) y, w1 W- v& c' d3 U/ \参数说明: # q4 X. x2 L, r. ?4 K
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home , ~; q; _0 G" O; S5 u8 R& ~

1 w% M/ e5 v( @8 a# w如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
1 f. ?) O( t: z0 e9 R/ ^! F  Q/ A
- n# `/ ]& `& H( P7 Svpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 06:55 , Processed in 0.044229 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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