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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
/ R# p$ d! V: l1 `. a    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
4 C" A' w1 ]1 {% n# U9 J  k"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
( L. C7 S. ?- d1 Wroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2& [% m9 X* f9 R+ ]% f1 L
CAMERA capture! x- ]7 t; o) ?9 W% t
input_device /dev/video0
) ?/ d( [8 v: z8 jCamera-Camera
6 d! ^: C( R% p6 f* l$ ifmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
* [, C6 Y' z9 K; s$ P/ hfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
8 G7 w$ s& w. j' q4 y' ifmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)* W( f& |% E) f* ~+ }9 P( T
capture_buff_info[0].length = 4147200
5 p) q' R/ s& `  y3 Wcapture_buff_info[0].index = 0: @* T. [* b' m; s- u* C, m4 P, Q
capture_buff_info[0].start = 0xb6bec0000 p7 d! w2 \2 t6 A
capture_buff_info[1].length = 4147200
1 A( n1 m, x' p$ O2 t9 vcapture_buff_info[1].index = 1
! z" j2 F. i: S5 U) w- Vcapture_buff_info[1].start = 0xb67f7000
9 y  r9 j  l: o- g' X" T8 t[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
+ X! F- B' t/ K8 t8 XCannot mmap = 2 buffer
7 b9 ^; W/ k+ s: @Error in opening capture device for channel 0

8 M" G& d* z* [9 Q7 r) p
4 p: ?$ U, X# L% {" G我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!6 ~- \" l4 B) K, p. F
分享到:  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' }( y4 s6 p8 K# ]# P  N
您的还是默认的bufsize的,再检查一下配置吧
4 q* Y3 L! W: P0 r
5 Q9 X  p6 b! v* U
: J* |: u, U# o% r
看一下,我把环境变量打印出来了,这样配置是对的吗?
7 _$ Q$ y* Z  J2 j$ l/ o6 N, K
2 j- k+ T! H, k6 }" f! E$ ]8 y3 h  \' I6 y% R
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2/ o, p6 _5 ]3 v5 i
CAMERA capture
# x6 b  Y- d8 i" X9 Qinput_device /dev/video0
* ^$ [9 A# o. S: `5 fCamera-Camera
; E; q: a( v% [$ Yfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)8 M- E7 i& z# u: p
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)$ O0 C% [  f4 n8 |) E# n
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)) V! F, }4 f* m) s8 i
capture_buff_info[0].length = 4147200
% c  n- q* [5 Tcapture_buff_info[0].index = 0
4 D' o9 }% U  o( _, I4 ]+ ]capture_buff_info[0].start = 0xb6b40000, [) `5 {; {) j: b( K0 f9 _
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
% a7 D. R' }0 j+ z( j[   74.323663] Backtrace:
$ u: Q0 e4 i. i4 ^[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)3 A! P) @! z# e- m: K/ D
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
+ f8 f) _/ T0 b[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)6 c0 Q+ W! j. j% \' J# p
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)" l+ h" Y0 W# H2 U  P- [9 X
[   74.406178]  r3:c71fbd1c r2:00000000- p3 F, ~9 k4 C
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0) s3 V  J3 b7 s3 B$ ~
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
- F( }: A8 _& k1 i8 x[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68): Z) ?% _/ A4 t, B2 @. T; ?$ q
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
9 d/ f" ~3 b2 s! a% `% I4 h[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
7 K, B, e: t' \! E1 l& I[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)5 A9 r, z: r* F: C
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90: c# E% z  v0 `. t9 k" c/ N2 T/ \
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
3 J: Z  n: p& i! x4 P[   74.556197]  r5:c7ba8c00 r4:c72b69a0% p. m& P. i4 N9 e9 f8 {/ P
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)6 Q: _/ ?& C5 c  Z
[   74.587055]  r5:c71fe580 r4:c79c2e00
. V( s9 p+ |) F# P[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)4 k0 v( _. M/ F+ L
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584( s4 m8 `- _% U# @/ B$ D
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)$ y, s6 _) j* ^2 e+ v) M
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)% r+ l. P7 x! Z- E2 K, x8 l* O3 z9 g8 Z8 e
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
/ r2 E* C( \/ Q0 U[   74.688020] Mem-info:
4 ?6 |/ y; F- ^5 Y[   74.690383] DMA per-cpu:
0 _! ]2 |- U! [1 \9 q( q[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17% v4 u1 k1 b- s' e2 ^' ^" _3 O
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
2 k; ?6 f. C5 K4 ~[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24$ g0 Q) e. N& U' a6 ]2 j# P
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
7 V- h. T$ p6 a9 r, E& p' s[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:7390 `, Y; E3 Q6 }+ a# L
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
6 K# I4 Y" s8 s2 r[   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- d8 d7 W: ?7 a3 Z
[   74.846179] lowmem_reserve[]: 0 0 0* W3 i! j' u* T* |3 @
[   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+ t! H( e" C) J# H8 D
[   74.871095] 5393 total pagecache pages; B: L4 ~, C$ B1 y  g
[   74.874878] 0 pages in swap cache
" B+ |# g* M* S! _" |0 G[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
  w& I7 `: _0 ?[   74.901444] Free swap  = 0kB% y0 d( s- {. {* r( d; y- F8 o
[   74.904346] Total swap = 0kB
4 H" p) Q. O4 |6 F[   74.946799] 49152 pages of RAM
$ v5 x( g  c7 n! j: h[   74.949901] 25326 free pages8 v/ V, k; Y: Z0 F7 S& B3 Z
[   74.952803] 3366 reserved pages' |) D% s$ G0 m! W
[   74.966186] 2124 slab pages) G. r# W3 q& Q! J$ M5 k* U
[   74.969063] 7387 pages shared
" @8 s: p. ]& ~5 v- ?[   74.972058] 0 pages swap cached
% `" y; I1 B* b, k! i[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed5 ?9 k: z# `, Z
Cannot mmap = 1 buffer9 M  k7 q$ ^" g! Y. W
Error in opening capture device for channel 0
, @) o5 ~+ I/ c9 t1 c

( r( l7 A2 w1 v9 N7 Q0 R3 J6 `
* w3 J3 ^4 G! w! n. F# i这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
, u8 r0 y$ L! C, h7 Z' o) i

本帖子中包含更多资源

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

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
& D4 ?" n4 N0 K2 B8 M还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
3 y& C3 q3 I* C, K5 Q; ?$ i: }
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
: p' @5 V% ~5 \5 o' i) U第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
( v) U0 f5 I$ E; |1 V, Y
5 E# V+ b' {4 a  R我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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:163 ?6 x4 o% g  j/ G5 Q& N
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

% }/ _7 t# i$ p1 ^$ i( @谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
! ]2 R9 Q2 Z- R6 Aroot@tl:~# cat /proc/cmdline
0 L% l; }. L5 A! @; Pmem=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

+ t) J" f/ p( T8 j . u! h  ~) W) K0 i( s0 N
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
9 u+ {, n6 B6 Y6 I那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
0 k, N# p1 H1 N6 r9 ?3 }& v
% Q. e+ o) F2 k( N1 ^: O9 @以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
6 e1 w4 F2 Z" E- Q8 C* W+ t1 u, {) Zroot@tl:~# uname -a
2 ~# F* p$ z1 KLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

8 Q* P4 a5 Y  F& Z7 D# s   x' H& i9 u- z  o1 c" U4 [
/ d6 r" c! z' ?; r  Z5 i
% {% P' J9 D/ [2 Q5 L- M8 l; [
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
: G: `+ |3 F6 q6 f第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
5 e7 t& K/ m2 ~) l! ?+ \第三步,重启板子,然后再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
( q4 ~  i! q4 H1 y7 i0 j第一步,确认你的u-boot版本是不是v1.5或以上版本;
2 @% ~1 R' c$ z. B8 c/ c4 \第二步,可以在u-boot里面执行:nand erase 0 20000; ...

4 W0 J8 X7 V' b# k) `& C/ O您好,
# h( _; I1 T; B/ @7 V我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
3 F1 B; Y% v1 n& l" q7 i: ?请问这个是什么版本的?2 A0 Y9 n/ B4 E$ @1 M2 e5 u

% o& E; R3 W  A: z* s另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?- N7 \0 ~0 |: a1 q% Z! b
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?2 X, l. d8 O- @3 }

% c' b7 n; L# q5 C7 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 的?) l0 F( V0 r8 E: w/ S1 l
+ [5 z4 B; R8 Z2 \
问题有点多,希望大神好人做到底,多教教我,谢谢您!
* N- y; C5 X( B- e- J4 U. p. d - j) r, C* Y  t5 d4 w: M5 g
回复 支持 反对

使用道具 举报

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 b- y$ m+ f1 f; [8 N) z
, d6 a+ i+ v3 s) C可以根据环境的光线强度,修改摄像头的亮度参数: , y0 U' K7 h3 c6 q) i( {
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
2 z- x$ u1 K2 ?( g) zroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 7 p( K, i- s  M  I# n
Cloudy $ f4 |: {; n8 f' R6 F' |
( n! v  Y* l# |7 B9 c. z
参数说明:
5 M+ g7 v  l1 v3 A9 Dlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
& r% ]4 S; e8 P
3 j5 u1 _7 x0 w# S. d如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
: {, n! q; \- I) S2 _4 e, J. ^- N$ a+ k
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 19:34 , Processed in 0.044739 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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