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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,& E; J  N' o: \! W& O
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入- }, g: p$ C! V& ?( p( ~
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:% W8 _: F; y* E. ]: D) E  z
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2  E0 C, c5 `  u$ I- T3 e( e
CAMERA capture
. d. [2 O/ |! M' linput_device /dev/video02 J. N; K: K5 Y0 F7 b% f
Camera-Camera% A2 s% d) v! ?+ ^
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
1 b) ^5 a" K4 @. s; M3 ^% \3 kfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
4 z. C# Y+ i5 i1 Q/ O- afmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& C# ^9 Q+ O3 e& R& o+ I
capture_buff_info[0].length = 41472006 e% g" ^' V$ w0 l  j" G1 N
capture_buff_info[0].index = 0
0 j( F0 V2 d3 \* t( x- \- ccapture_buff_info[0].start = 0xb6bec000
, p8 a3 G$ R; D2 B% @6 k) ~$ gcapture_buff_info[1].length = 41472002 ?1 q* u  `/ i: g' }
capture_buff_info[1].index = 1  o" }* w: L, S6 `5 h( u
capture_buff_info[1].start = 0xb67f7000/ n# }) U$ E1 y5 F3 c* D- t
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed9 q+ E# b0 e' t, e( [: N
Cannot mmap = 2 buffer% ]. R' Q% L+ H  e+ }8 z
Error in opening capture device for channel 0

3 y2 N' U4 l. _ $ M) H/ u+ J. Y
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
+ a$ E. O' O  y+ `3 ^
分享到:  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
! J. w9 z* ^9 o1 O- Y) T9 p您的还是默认的bufsize的,再检查一下配置吧
! y, Z0 k3 H+ m/ y: |; m8 j
6 B/ N+ S2 c: c8 j* K# i
2 I  O6 V7 N; @! i0 X; z
看一下,我把环境变量打印出来了,这样配置是对的吗?
+ I7 X5 O4 R" c  z4 Q/ v3 ]+ x$ T1 W! z+ l. `9 J: v

! ~  I* @2 D* B/ e' o( T! oroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
1 ~0 u$ F" j/ y; L# L5 zCAMERA capture
) t. J4 a) {- ~3 winput_device /dev/video0+ [0 J: F% X2 E& Q
Camera-Camera
) }" }8 J* d. R# _7 x5 t. @fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)" p  n; L$ z' x, c4 v+ F: W
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
. C; F& F" [! P1 j: F) d1 N. h  Ifmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
7 T+ u8 @# ]- c) q$ {capture_buff_info[0].length = 41472006 H6 L& k' D) c
capture_buff_info[0].index = 0
* C% s# `1 a2 s7 r1 s+ s) [# tcapture_buff_info[0].start = 0xb6b40000
& A& E, J6 I! i% p[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
4 A+ n+ `* D( I/ w[   74.323663] Backtrace: 0 n9 L# @! U# O: x$ R0 R
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
1 \4 s8 K: @# e: a2 z6 F! S' E[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000934 I* C, l$ h  [, C) V9 U- Y5 V
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
( ^3 ?2 `4 v, \# l7 A* I3 r[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)/ Y8 M' |' f7 c, \2 J+ h5 I
[   74.406178]  r3:c71fbd1c r2:000000002 @5 R; _% C6 z+ j* ?4 J
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0: [2 \; @4 ~* Q
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
; b* Q- X0 [" S* |9 I" V! P6 C[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
0 Y1 ^2 }) p' w  X2 g+ H[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)+ M; U, z5 u$ q: |0 L% i
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
+ r6 R+ K5 c/ q- O: M# U' B; O[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
. R3 }6 f9 Z! u' L8 u5 K[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
  y6 p% M+ f& h  q8 M[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
0 X* s3 |# I$ P  T7 b1 S' K* j: [[   74.556197]  r5:c7ba8c00 r4:c72b69a0
! Q+ S: D& z# U" q0 S4 Y[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)- l) Y/ I! F" t6 K5 b7 C
[   74.587055]  r5:c71fe580 r4:c79c2e00
, z8 \& U1 H. y[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
0 p: |% }1 x; n( i" x[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
$ e+ Y+ G# A$ M) k+ ~0 t[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318): M1 y+ B" t) d: L7 {! M6 ], X
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
8 U$ y2 c+ j$ N2 m; s# W8 @[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
# [4 c8 D; A. x! h, s# e[   74.688020] Mem-info:; E% P/ Y+ H8 |9 z- ]
[   74.690383] DMA per-cpu:% A  v% Q6 U3 [
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
' ]& f- {( {9 G" w9 `, ]3 n7 j+ c0 c" {[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:01 `6 h" N, S" [8 ?% x) W
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:248 V6 X5 G3 o8 O8 z. ]8 A
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
) n) E" t# V* v) r[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
; b" Y* P+ }+ r3 [$ A[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0: J, G5 f- z6 E0 C9 _# k
[   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" S+ b: J4 E5 X/ h5 A
[   74.846179] lowmem_reserve[]: 0 0 0, r8 n0 E/ Q8 [  Y+ T6 e
[   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
) X, B2 N# V* s5 y" A, s$ U& ?% R[   74.871095] 5393 total pagecache pages! v( u+ {& z$ X3 @/ e2 t( L
[   74.874878] 0 pages in swap cache
2 _- |) m; C0 F[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
9 V# [+ C8 d# m[   74.901444] Free swap  = 0kB
  M% e) g7 v1 Q4 k- l4 F9 t[   74.904346] Total swap = 0kB
$ b- Q% D" n& ]; T" ~* B0 x2 l[   74.946799] 49152 pages of RAM4 @0 t& q8 k2 b4 _2 [' i
[   74.949901] 25326 free pages
% U# N# l% ~, t[   74.952803] 3366 reserved pages; j, e7 c8 y: z) \- v4 ^
[   74.966186] 2124 slab pages$ ?$ _# x, G. `% w) g6 w
[   74.969063] 7387 pages shared- q$ L9 O9 D& L5 X# d' V$ H
[   74.972058] 0 pages swap cached" ]! |+ @( x% B% _
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed. d  g/ l- y, j6 \8 n& a' L
Cannot mmap = 1 buffer2 B- Y5 r; h* r
Error in opening capture device for channel 0
9 a& f$ A1 S# @: A) |8 z+ y

3 w" C. c% I* Z4 T& _" l/ y( V # c5 h# ?# D7 s7 l0 ^
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。0 s# x* h5 k. q

本帖子中包含更多资源

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

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
2 k' I; ^0 S: w6 t还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
5 u7 A  N- f/ D1 V
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
# P/ T2 w8 X0 P6 h3 ?- b第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 s2 p  S' e  ~/ ]$ o: b+ j

, K/ \4 }7 l0 t1 a# v我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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:167 y/ }. w) x: F9 k* a' `  r
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
5 C( h# e) H9 b# N
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:( P, y. v' m5 R* U
root@tl:~# cat /proc/cmdline 3 P$ z! K' j; B" O9 O5 M
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

. S# p' ?( G# r4 s+ Q+ ?( ^
: C! D7 [1 D6 N) K; Q- P我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
7 s, N( G% K6 w6 }" V9 o那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!. o2 u4 {, s3 A3 y* b( w

  q( y) u9 u+ e! V- D以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助* z( t9 Q$ S9 {: V- ~
root@tl:~# uname -a6 m! c  s; m1 D
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
- r  T3 R6 k" `7 q
! U$ A+ ^0 Y% v  C1 \2 V
9 g8 E5 h; L  u: f
- h' `) G) C  X$ ~5 t2 B* P# i
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;! F$ [3 \, u6 d! n+ q
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;! j* I, T3 o) s+ |* t$ X7 a) B: [
第三步,重启板子,然后再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+ V7 G, Q5 m8 x& e* H. q
第一步,确认你的u-boot版本是不是v1.5或以上版本;
  k: u& b# K' p, y4 a第二步,可以在u-boot里面执行:nand erase 0 20000; ...
/ L5 }/ `# V# T+ a; L9 i7 d
您好,
4 F  V  X; @$ q( j" n% L0 y我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
/ ^# j' X9 `; q& @, q请问这个是什么版本的?+ M2 P7 S, x' W. |- w, f
8 J$ N/ e* l& x
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?: m- w; B: m/ d( j- w; j7 T
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?$ q/ I# n8 k7 Y2 l: ?5 Z

* q7 n& p: l: }' y, O( B) O0 D还有就是想问一下这个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 的?
9 }$ R3 ^8 `: I
& r, @+ G/ b, y( o8 L0 f. w1 l5 i问题有点多,希望大神好人做到底,多教教我,谢谢您!
/ ?) g7 f+ K; q! C
; ?. ^- r! B# K" J5 |2 K$ U5 x! p
回复 支持 反对

使用道具 举报

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 Z8 ~7 _7 F! n2 t
  P8 e( h6 N5 e6 V可以根据环境的光线强度,修改摄像头的亮度参数:
" r; ~- Q$ J1 Qroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
' W& C* I0 i6 Y7 xroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode % b" i( E4 u0 Z" e
Cloudy
7 |+ d. G1 u& Y+ b1 p3 t
0 k4 L9 ]* D; i8 a( |参数说明: 3 U% g! o! t" n1 g) t9 ~
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
" G% |' _5 P0 ~# Y  A+ Z
9 E/ U' h7 J+ Q( X6 |+ m5 l" v如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
* |" F3 h9 \6 w+ N* G  q6 M1 C; ^+ ^! ?) h* F0 [
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 03:58 , Processed in 0.054958 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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