TL2640-COMS摄像头测试 问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,9 {8 ]5 M4 f1 |  y, J4 |: v
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入; i) ]6 C6 C% r/ F( W
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
1 Y) c$ ^7 N4 w1 Groot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
6 K) M. t7 ?7 T/ @1 \/ p' x( dCAMERA capture
- U1 S, ?8 A3 z+ z! H8 d# {input_device /dev/video0
; V9 d) L! w6 k' z: ZCamera-Camera* D( t* V6 s: T5 _8 |- e  T; K! x
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)" k8 Q0 r" z1 N8 e+ I/ v! {6 N" N; T
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
! f" x$ z5 i, y  |- }- ]' ]6 Hfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
7 j! ^! P7 {. k- T% vcapture_buff_info[0].length = 4147200! H" p+ X' c2 l  e; @( b, w- }
capture_buff_info[0].index = 0
3 q9 B7 F6 V' [8 rcapture_buff_info[0].start = 0xb6bec000
) b# B: }) V+ Wcapture_buff_info[1].length = 4147200. f0 M3 I5 |# j+ o, Y
capture_buff_info[1].index = 1/ N9 X5 z4 E# O$ R8 a/ E( H0 x
capture_buff_info[1].start = 0xb67f7000
7 S! v' _) P6 |- ?9 y# I" B[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed- m  W( X3 E, T! h8 ]6 `8 @2 f* M
Cannot mmap = 2 buffer
  ]3 r8 S( W1 Q* Q! }+ D3 fError in opening capture device for channel 0
" g& I2 ?! a5 x" n
- ]$ g& d3 c& @; w' @4 b
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
" v) q( T6 l8 N" w0 _7 X2 Y* j
分享到:  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
: G, \0 V8 o  f' {( p- G. [您的还是默认的bufsize的,再检查一下配置吧
) T1 F' m& P2 [" K
  D( R; ]$ \6 p* u
$ X# ?; X8 ?! R! n8 Z8 }
看一下,我把环境变量打印出来了,这样配置是对的吗?
1 ?5 V1 N9 z- U, Q3 j2 y, d( q4 h* ~2 q+ W1 k% }, s

, \; x* G9 c1 |root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2. @5 m& U+ O2 E$ u0 v
CAMERA capture
- l; A) M# W9 ~& finput_device /dev/video0# C/ G5 m1 I" }; ~1 g: I* |5 m4 @
Camera-Camera
9 O- A" K8 b. @3 C5 Xfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
$ u3 f' Q0 ]7 k  Q: ~fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
8 V4 h" a5 w4 b* T9 \' b  ^0 lfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& _/ P1 m, |- ]. I/ N$ z4 X
capture_buff_info[0].length = 4147200
7 G8 K9 t$ i1 Ycapture_buff_info[0].index = 0! ?/ V5 L2 V1 Z5 c9 s$ \+ g
capture_buff_info[0].start = 0xb6b400001 v- a  C3 G6 |7 \
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
# y$ k" Y4 d) a- M" t[   74.323663] Backtrace:
2 x' ^& `2 j( s+ }* b& G[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
" z3 k+ i# p# E[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093" l/ G9 J$ D* g+ d% t
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)3 G( ^3 r1 }# q& Q. f
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)9 [# A2 ?" f  B& L* Q6 B7 @
[   74.406178]  r3:c71fbd1c r2:00000000
4 k" S* `$ E/ Y7 }* i[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
6 X1 ^7 c( u; Z' |3 S- R( k[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)4 `3 ~! X$ |; }6 [
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
8 |- x4 g; Z) g/ f/ G! Z1 m2 j: o[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)( d- o8 \" H4 M7 j6 ]4 [, R! ~- s
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0& x7 e5 [3 C3 p; y3 k
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)- Z" |+ }7 O0 E! t; u- N; A' P
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
! F& f( T  @4 t[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)4 g8 K) o* Q' v! |
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
9 Q1 a, o" K! Y0 o7 G) A[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
7 a+ @) K( x3 f4 y8 |: e' m[   74.587055]  r5:c71fe580 r4:c79c2e00% P7 G2 g! c4 A  A% q$ e
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
, i, Q. B) c& @' p" L[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
% R: h: P& s& [- {) R9 Z2 x[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)( ]( v; K5 B+ z- ]6 l3 \- ~
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
, O# {6 f: T, T  ?6 v6 T4 q% x/ l[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)9 B4 O* Z& H4 ?7 w: w: {' s) S
[   74.688020] Mem-info:
6 e+ n9 ?7 X6 h  i[   74.690383] DMA per-cpu:
+ g! @" ?- k  ]  j' e[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17  a" s; X; s( d# B' E
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
1 M! t3 z# F' M* G  c  I# K3 T[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
* ?2 f3 v4 e! t7 c' |; x[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:07 D" \' p$ p# E' P
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739& r* i( i- U, _
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
( u) P& `" f6 ?0 ?! i# 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% M) y# @( u; Z
[   74.846179] lowmem_reserve[]: 0 0 0/ w  S/ k3 P' t$ O$ t4 R
[   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) d  @; S4 ~6 w8 M3 f
[   74.871095] 5393 total pagecache pages
% a2 F8 G( H% p* K  A- Q# f# N( z: U[   74.874878] 0 pages in swap cache
% O# O% r" g% x[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
: r: g/ o4 t7 F- J( G[   74.901444] Free swap  = 0kB
2 C: b- H, y* q( }* ]( {[   74.904346] Total swap = 0kB
! b/ u" m, f5 s4 D% Q% R[   74.946799] 49152 pages of RAM
1 y8 p) q$ S2 p- i  c; e[   74.949901] 25326 free pages
# R) Q# M" v  |3 _% i6 l[   74.952803] 3366 reserved pages
1 b) P5 Z& M. K  ^$ {[   74.966186] 2124 slab pages, u; \0 Z. P) R7 Y
[   74.969063] 7387 pages shared/ A) c  P+ L9 \5 V, Z$ p3 R9 E- f
[   74.972058] 0 pages swap cached& \- v+ G- @9 \% Q
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
* O0 i3 }* j/ `+ J  P  ?/ \# O( UCannot mmap = 1 buffer) V6 z6 D! ^1 b
Error in opening capture device for channel 0
) A" h: ]5 Q# v+ ^% H

( Z5 |  P# y/ e  }8 H' b* s
+ F; f, }# m9 G8 q8 O0 i1 X0 P这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。; @" L! J- K3 t1 ~- H3 g1 n5 K

本帖子中包含更多资源

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

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:320 i5 z- j; @  A* P
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

# T, O8 A0 J" l% R我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
8 U9 C7 d! Q1 ?1 y5 t+ q) z第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2  U' W& v; ?* Z1 |( F. P- z- h
! U: |5 h2 ^: f1 R; E8 \
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
& @0 c- q$ a& C+ \在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
9 E: n3 k, f1 [' d5 C# y
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:" j5 y2 W7 n1 y1 ]) a2 s* M
root@tl:~# cat /proc/cmdline
4 e" h. A  M, Hmem=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
# y; c; }! p# U7 }
  z, O- I6 R; Y) `7 W1 ?
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?1 q! N3 ^4 R( x& ?/ J& w
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!! l1 ?9 t* X/ y; \, K: a2 N8 {
( S8 |. b7 q. T2 a+ [& m
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助, t- z+ `5 U# r
root@tl:~# uname -a
" {/ V" b8 U3 X6 K* GLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
# w- B# e* T, y. A4 t

! R5 [0 B4 f9 g! e& h) } & l8 p" F6 ^0 j5 i6 e+ k

" r1 g* w) `' H7 U6 m7 t  T- M) N$ ~
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
: v: G; A0 B) I8 u6 V8 |! [第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;7 e7 t% B7 s$ M% g+ |4 q6 p
第三步,重启板子,然后再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:123 Y- h. g% m* ?2 [8 @* }% _
第一步,确认你的u-boot版本是不是v1.5或以上版本;
+ Y8 e# R* p0 ~第二步,可以在u-boot里面执行:nand erase 0 20000; ...
0 h& _! k9 W3 b) @; j* e/ f; t
您好,( q' g8 f2 z& v# m' f9 J/ G& C
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
# h) h0 y" d5 N9 `8 P  T5 i: ~请问这个是什么版本的?6 p9 e+ Z- G2 S+ S, O8 j

9 b1 J8 v: K- @( D4 l另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
9 V+ C- \1 }' o5 r" ~我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
. H( y) T1 G8 R) b1 x6 I$ i* s) T 6 N5 o# F  l$ q5 g1 L" X
还有就是想问一下这个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 g& P& [  X# ]+ G! A2 T4 }. j$ T
2 D4 G* x" H7 I8 P) p: P( x
问题有点多,希望大神好人做到底,多教教我,谢谢您!
7 ?7 |7 n1 z$ b
% ?+ ?4 m/ l% |2 L# a3 F
回复 支持 反对

使用道具 举报

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;8 }) s7 D# D$ R. E. {
% Y" C3 h4 x6 r
可以根据环境的光线强度,修改摄像头的亮度参数: - o, g# }+ B6 B- X* U+ T$ l, L( E8 Y
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode " l( F' l6 s5 S9 K  a- D1 ^( w
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
1 |# h. I$ C! I3 M" W3 N2 E7 VCloudy
0 f& O8 ?0 S: D: F2 r; ]8 f  u/ t8 c" w1 m4 g6 |! e, T
参数说明: 1 v) x# v+ f1 g! ?0 ~, ^4 G
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 6 v7 j, V0 _6 d+ f/ R7 j

& v' Z- p6 `9 _1 s( D% P如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c2 L! b* M/ ^  B7 d1 o  V# ]( n; [

$ L8 j' H0 ]1 c% m+ Evpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 02:07 , Processed in 0.129788 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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