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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
- W& [& T% X  V    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
6 R( i3 P* Q; N( d, @0 r+ J"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
4 V( m0 [8 t9 y, S; N8 Lroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2: G- W/ X1 s3 ?2 ]- ^
CAMERA capture
4 R/ [) p! @. t1 x: C9 _, oinput_device /dev/video0
: \: i& T6 n4 q' k2 t( `Camera-Camera
# c. \; [  M1 v6 Sfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)" g) @. H1 K& u* Y4 o. b& E: }
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)4 J4 W% k" X0 a+ k) o2 f3 z8 Z# @
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# A: _" s: p/ Scapture_buff_info[0].length = 4147200
8 f( ]5 e5 e8 J  M6 P  L" q% Vcapture_buff_info[0].index = 0
/ F; m) {* J) U0 i% icapture_buff_info[0].start = 0xb6bec0000 }* b4 i' D  s2 f
capture_buff_info[1].length = 4147200  C/ V  w: F0 R$ M$ ^2 n2 s# k
capture_buff_info[1].index = 1, V" H6 D" ?5 X$ K
capture_buff_info[1].start = 0xb67f7000) V% f0 A3 ~" r% G, q3 z
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed0 M( ?& d$ Q, r# {6 X
Cannot mmap = 2 buffer7 R& ^$ a/ I5 V; c
Error in opening capture device for channel 0
2 i& E+ @4 k# r* Z4 A% S- {
2 e2 \+ F4 k; s6 O* P& A& f2 Q7 N
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!  Y* d* \/ a% k0 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:461 P1 R! ?+ o5 u' \! \  m
您的还是默认的bufsize的,再检查一下配置吧
9 y1 ^0 \4 l# l, m) V3 D
  [8 B. O# E8 j5 J

3 S+ y; C  J% Y看一下,我把环境变量打印出来了,这样配置是对的吗?
# ~7 g! h; `9 L2 ]! A$ G  l9 A9 N7 x  T! m$ C* ?4 [7 g8 D

' p& `8 ^) w! W1 v* n4 mroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 _, H2 K* [8 C: n, z
CAMERA capture
; j7 Z3 O' j1 w# z8 m8 p! C" minput_device /dev/video0
3 i: o& Z7 b! ~" g- q6 jCamera-Camera
) E4 z" b9 ^8 q6 d1 ~5 F" yfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
0 T  t+ h% I  w- r/ E, u1 m# ]fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
$ L. n% W! ]/ _( U8 m/ I/ _fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)/ H) }1 x$ H* l" z
capture_buff_info[0].length = 4147200& V3 b6 {& e* [! [- Q8 e0 j
capture_buff_info[0].index = 02 S0 W0 z1 a2 [! H/ Z) ^
capture_buff_info[0].start = 0xb6b40000( B# @) r6 j* h) E- [$ J
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd00 ~1 ]* w& `4 p/ e: v
[   74.323663] Backtrace:
- @0 ^/ K. |' U' L; \! o[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)$ @7 b1 n! c& M) o9 h" p$ g
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000934 r) Y; j! r! d
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)5 e7 [6 H$ J% a! S: \2 E
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
) |( T% ^+ u/ x[   74.406178]  r3:c71fbd1c r2:00000000* d0 I" `9 |* O& @1 l( o" q
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
: Z! r3 {. [* s% ?( z6 j- C& _' ^[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
+ e/ n, }1 y! U( L* Q[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)7 M. @! z/ R! j/ Y' i
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)9 x+ I9 D* Y" e3 N; c
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
) [  J  o% I! S1 ?[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)6 K' |: X6 s0 \6 |7 e6 j
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
; i' E$ H2 `- A; d0 k[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50), [. B5 N( @( ^; \+ V
[   74.556197]  r5:c7ba8c00 r4:c72b69a0/ K* p2 g/ N% U9 L) T
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)) [0 X  r4 U, u: C9 ^) n
[   74.587055]  r5:c71fe580 r4:c79c2e00
$ ]& @2 v# G# p+ `" e; q[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)4 P7 y4 j# T9 r7 ^! _$ v
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c55843 K) L. ?6 G; D  B7 x+ ]" Y
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
3 P: }2 b7 w2 s& p[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
* L3 H9 ~" T* y# T' k[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
# K  n  b4 x; e- W[   74.688020] Mem-info:
5 Z5 t, J! [, F9 ]0 K% }. z5 N( |[   74.690383] DMA per-cpu:
( [5 [! M# \0 }( s' e1 C[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
: L7 Q+ x5 F+ S[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0' G- n* X; A; O! P
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24/ b' [1 D8 C  Y2 o
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:07 B7 I& @$ P# S7 {- H# g" _$ z
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739; G0 H: j, A9 ?1 b
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0" w2 V8 t& ^4 V* a+ e' I
[   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
  C: h0 ~+ u0 m7 [  b. k' M[   74.846179] lowmem_reserve[]: 0 0 0/ Q* s# X0 k. B1 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
* `" ?  e& ^( r: G4 m[   74.871095] 5393 total pagecache pages) I" S& |( L4 E3 u4 W
[   74.874878] 0 pages in swap cache* Z; X0 m8 t. o0 b  k9 B. F. p( s( P
[   74.896156] Swap cache stats: add 0, delete 0, find 0/06 S, R5 f' k$ {  ^& p, \
[   74.901444] Free swap  = 0kB
( Y! F$ @5 o. f1 Z4 w% G[   74.904346] Total swap = 0kB
% b4 g9 x, F. R0 N$ o" T( U1 z[   74.946799] 49152 pages of RAM
% ^# `/ c1 d2 d# S[   74.949901] 25326 free pages$ q8 K0 t- x/ G+ a' l
[   74.952803] 3366 reserved pages/ F6 d* b+ Q* W9 \8 \) a
[   74.966186] 2124 slab pages3 @1 o+ d8 O1 X% p/ K
[   74.969063] 7387 pages shared
, K9 R5 m: B4 @" M  ~2 y# ~; {  d[   74.972058] 0 pages swap cached1 ^; i6 D3 \9 l: {7 F2 S+ }
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
2 d8 _" w0 N. k2 J" [) o9 MCannot mmap = 1 buffer
2 \& R) _+ N8 r/ l; |Error in opening capture device for channel 0
2 r8 q! |( T& B2 t$ J

' m: W8 X/ S( n0 R/ r' t, R
$ `' ~1 ?! ~: ^9 ?这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。& H; t1 n9 _* W$ A4 f' V

本帖子中包含更多资源

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

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
0 I8 e3 b) V. ?还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
; Y) d. ~; c4 k+ M6 r
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。# M+ ?8 k" S- h7 i" k0 h% n
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2- M0 L/ h. q- Q1 f
2 m. J! l$ w8 }6 t# X
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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) O) {7 F9 S5 ^2 W/ S
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
) o3 b. C2 R) X6 G
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:# i+ j& p' ?6 |" k: h
root@tl:~# cat /proc/cmdline 0 N, V/ s* x0 d) u0 w. c
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

6 B' q# K& l' X/ _+ N
8 ]$ k! q; |( `. D我是按照手册上设置的环境变量,为什么没有成功传递进去呢?8 ]/ j- p- |  ?+ d2 h
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
/ A0 ~9 i; Y' d0 U/ N + d0 W7 C  ~  N0 ^! d$ }
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助  g: V0 j7 F3 I) F! {: L0 ?# X# x
root@tl:~# uname -a( G9 b% K0 f3 J) T
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
1 ^0 o7 }+ i. H' [: I
  z) M, A, B2 s" n
: v/ g2 p" A+ b

5 R9 w* M: v5 f
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
7 S/ g! q3 V! x0 S& y第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;5 V4 f+ R3 g# ?) ^+ L/ h4 S3 a
第三步,重启板子,然后再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:129 B4 F# ~% F1 t3 Q! G( E( @
第一步,确认你的u-boot版本是不是v1.5或以上版本;  `5 @' R& i; o: G
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
% x# n* ]$ _, T/ H# X
您好,
( v, A  }3 G/ d9 `% \! [$ E我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf! S1 F; S; y6 d& G% n) s
请问这个是什么版本的?% \. M1 ^5 I0 a/ G0 y) y" {
$ C# W8 c2 s  o; [. d
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
' [8 b- V7 R, E' u8 U2 \我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
6 f1 v7 |6 T5 X! c4 X# S ) ?5 M# T1 {3 Q% x* g
还有就是想问一下这个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 的?& N; Q  H$ N0 E/ U

& U4 z+ `3 x3 i问题有点多,希望大神好人做到底,多教教我,谢谢您!6 Y: ~& m5 ]% o

  s: d5 {! L! f0 Q
回复 支持 反对

使用道具 举报

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;; M% ]9 n3 N" b7 P

( c) v4 W# @: ^/ O6 V/ [+ T/ L可以根据环境的光线强度,修改摄像头的亮度参数: 4 ^. t3 e# u0 B
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
- \1 o0 k; m& P2 i* O& proot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode   G6 b) @% V; E. {2 `( @4 c6 t
Cloudy * J# J; a% }# C1 d
! j) ~3 M( V* K2 O
参数说明: ! ~2 X4 A( {: X
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home . O$ T! W' Y* J, }: p9 f
; k9 R+ |1 \$ N0 j
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
0 ]- w9 h5 f4 o( o0 D, Y1 \: ~8 W
9 r. D; i% j) q$ v' ovpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 04:55 , Processed in 0.050875 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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