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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
) V" g0 _- y0 b+ n* f1 p1 z* Y    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入. h3 a0 I6 T- q" h9 c5 r' T
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
9 u& v! n, a, Jroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 22 B: w8 g7 ]2 w- N& N# J6 e
CAMERA capture
1 b* J: Y: T' p9 Minput_device /dev/video02 M- {+ X) t' |+ T+ N! b. {. m" f
Camera-Camera9 J4 R" u% g5 l0 I, n8 Y; L$ m7 W9 ^$ o
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
" S3 T, S- b% ]! B3 w( V2 d8 l$ ^8 sfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)+ g5 }0 A$ U" s* S: T
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)! M  c1 L' g3 Q
capture_buff_info[0].length = 4147200
$ B8 d: z% b6 B  U4 b' e& B) ?capture_buff_info[0].index = 0
$ l& h! L7 n; X. }5 vcapture_buff_info[0].start = 0xb6bec000
% O0 d3 ?) J0 ?capture_buff_info[1].length = 41472004 K( _) K2 o- ^7 R
capture_buff_info[1].index = 1
" `( K* _/ q6 q" U. ~% W) ~! kcapture_buff_info[1].start = 0xb67f7000% f2 Q) n+ g5 r# |' v( G! K
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed) K7 l4 M. @! @% r; J! L9 `2 V# n
Cannot mmap = 2 buffer
* P* p: s1 q- b3 [: @8 \; |9 m- `Error in opening capture device for channel 0

- Q6 O  r- Y2 g' w; R
7 {% C# p& ?1 \' }8 u# [% ]我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
" j1 H6 r4 I) H/ }- i
分享到:  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
4 H' z2 t! Z% W, {0 X1 h5 M* @* d您的还是默认的bufsize的,再检查一下配置吧
! I# [' D% C! Y# l  A$ w4 C9 w

  r1 s$ ]$ w* ]2 M6 L( [  {6 g6 V2 ~
看一下,我把环境变量打印出来了,这样配置是对的吗?
: U# a  q1 d! i
) w# c8 K- D' x& G* e$ q, H
6 }/ z2 R$ g3 L! R) [$ c  Uroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 27 R$ x9 D: C( w. j) b: n; |
CAMERA capture1 q; B3 c+ j& D0 S3 V# Z
input_device /dev/video0
# D6 v0 W. R6 pCamera-Camera
. o2 Q2 a# `5 \0 u2 ]2 X$ L- Yfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)% p0 u, x; B: `
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)) U3 F+ W' {0 [* Z
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
% `/ y2 y' G% j! ~' a0 w4 q$ t4 Mcapture_buff_info[0].length = 4147200$ V, e" I9 C/ d8 \+ o% _
capture_buff_info[0].index = 0
7 K; A0 r( d9 _, o( [/ pcapture_buff_info[0].start = 0xb6b400007 e8 x+ f( `( t. [1 Y$ t$ I
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
3 x. t: h, V. K& P# m; M[   74.323663] Backtrace:
) G4 c$ d1 _- H+ n/ ?: w& M[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
- |5 P9 w8 h$ z% y[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
$ H$ ~- G) k$ ], h' M7 y[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)0 O8 r9 ?# K) o1 C& S7 @, Q8 h
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
) V' Y$ {+ \' n" j2 d[   74.406178]  r3:c71fbd1c r2:00000000
) O2 R! r- v7 n[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
( j7 Q( z' R% K, K+ Q5 }9 e6 [[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)3 Z! H8 d+ g! U" s4 l  E5 {
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
9 S( ^" K, ?# d2 J" e6 e  O[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
7 z4 M4 c0 I, E( p/ Q& L/ I7 u7 P: T[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a02 m" i6 n3 N" S/ m& B
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
) ^( Z/ r8 \% v( Z[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90# n0 `% e. o  r  `) q7 N7 N5 `/ y; }2 c
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)/ R; I/ W8 Y1 e  H! n3 ?4 ?" o
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
% O2 Y  X+ J# e4 ~[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
$ U# S2 X- q( E* S5 k" Q$ }- v[   74.587055]  r5:c71fe580 r4:c79c2e00
" G+ r0 ^  \7 ]6 H+ r3 ~! Y[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
' \( R* n7 d, Q9 g[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
: f  }$ o1 {- Y) L[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)2 F- R( g/ f1 d) Z$ K
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
3 o- m* c- d! j) x" t) Q+ i[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
# l; g+ x2 ]/ p; d; {[   74.688020] Mem-info:
4 q* O, V- v$ s( b1 K- g: H[   74.690383] DMA per-cpu:
, F* @' h3 }% s; b[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17- B% B$ @% |) v: Y" d* |4 A# T
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0( d' ^( W( Y5 W" w
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
5 F; t8 _9 ^2 ?8 v) o7 q[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:01 W. ?9 p" n( C1 l$ V, Z! q" L
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
+ X: q0 z* g$ y5 u' j[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
7 |) K. P, H- S: m[   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
6 i4 B. T; s0 n& ?/ U) l[   74.846179] lowmem_reserve[]: 0 0 0
: ]" A7 \6 |' Y: I4 A[   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- C# z; i0 g5 Q
[   74.871095] 5393 total pagecache pages$ b6 e2 b0 g  P) Y7 |0 r( F' G
[   74.874878] 0 pages in swap cache
. z$ e5 ~! A4 a6 Q$ v: y[   74.896156] Swap cache stats: add 0, delete 0, find 0/05 T: n6 v3 s6 G# u" u
[   74.901444] Free swap  = 0kB+ g9 ?/ e" h+ c; a. i
[   74.904346] Total swap = 0kB
! m) l# |3 o- q& B$ M+ z[   74.946799] 49152 pages of RAM
" t) _1 E, Q: c& U. Q[   74.949901] 25326 free pages& @3 R* i' i8 T/ ?5 Q: [
[   74.952803] 3366 reserved pages
2 h9 g: Y! u( R0 }2 t[   74.966186] 2124 slab pages  D0 z/ I: t1 w( W5 D! V9 C& X2 `
[   74.969063] 7387 pages shared
0 I! C' H7 Z9 a. {" C[   74.972058] 0 pages swap cached7 h/ D  s8 d  _- Z6 J% k% O
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed: ~# G" y) ~$ x4 {- s
Cannot mmap = 1 buffer
7 J: p  o3 ]1 g% o, W6 kError in opening capture device for channel 0
/ r) [; ^, \" D- m9 C7 A8 ~. a
* X0 B  n. ]" z; L; g$ h
+ F9 f/ D0 K  ^6 S. @, t2 z/ q! y
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
$ `2 u* q5 U- s- d% X3 E

本帖子中包含更多资源

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

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
& S- O& n* o. Q  |还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
  f; q: F; J/ H4 M$ W- ~
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
; v1 p' t' A. F: u8 D第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2+ ^8 n1 F6 ^% y! J  l: @

% g; s' V2 f' e1 h, Q0 J我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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: N# j9 ]3 @0 I1 ^! f% y2 n$ H* i
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

% T: h, z8 R8 J' q+ o1 U$ Q/ t( H谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
5 `3 m* s* q0 l* X; ?root@tl:~# cat /proc/cmdline
) Q1 x. g5 M" n/ w6 h. c% F- fmem=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

  ?& \- V4 L# h7 q . y, |) U& ~! ~+ ~( q
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?9 O( m* x. v% {8 E" W9 }
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
5 U. t" n( Y4 q " C2 W. O3 Z0 C  e
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
" d, n6 T2 N1 V2 j  A. h7 Broot@tl:~# uname -a
% N! h6 j& r" Q+ NLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
% a9 u0 N0 ~# o! o  Z' _

$ ], x7 a' c  x4 @; @$ |* E 8 ]2 ?* `5 a6 c5 L, j$ e

9 f& u3 {/ T8 X% d* F. n
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;: B' H( R" U6 J$ s, W
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;2 R+ x  X4 B& |, W" f5 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:12
/ o7 w; O7 g4 ^1 ^" n& e3 [) l0 M; x第一步,确认你的u-boot版本是不是v1.5或以上版本;" Z; J/ m5 a# t% b  w1 x4 ^9 {9 {
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
# A; i$ u1 o1 f" n* R" O
您好,
( j' G. y4 s5 r* m3 A& @+ t# o我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
# O1 |5 e% q# d- g) `6 T5 B请问这个是什么版本的?
  @# S1 l1 v! H" {
1 [& l9 H' h* k* d  w另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?( ?" w2 T% P& m
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
; p" j$ S- w" K& X ' C) \3 H& n7 W8 ~" L7 ?# u
还有就是想问一下这个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 的?5 r2 m! h2 K5 k2 w% Z. S% j4 x

1 B& _  H7 ]+ I6 f问题有点多,希望大神好人做到底,多教教我,谢谢您!7 s# _) X9 r/ v/ H& ^2 Z) Y5 i: Q
) X9 V6 t' _0 }: f# R2 l
回复 支持 反对

使用道具 举报

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;* s/ u* T& B# ]* @9 \1 h

8 D' |2 \& W$ ]6 |8 k% E6 }可以根据环境的光线强度,修改摄像头的亮度参数: % Y2 s+ P6 E$ m9 \; M1 I* v
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode ! F) @# n5 @( @( p
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode & p1 Z+ n( E/ W4 U
Cloudy : [* z. N' }1 ~* g

8 Q4 f2 i# }2 |( _参数说明:
( _9 z/ ?% z  ]light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
" `: ]2 ]" ~4 ^& N1 ~8 f3 v9 b2 X2 K. X# P! Z% z
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c: X$ F+ g% Q) q1 t3 s

! ^7 x" v' r. p" ?1 F% mvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 21:30 , Processed in 0.043413 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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