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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,. P4 l2 y9 f" K6 ~% ~" A0 r4 T
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
4 a- P; C! j3 S( s: f' j2 d; X"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:# u. J' M9 T+ g$ ?+ O& R0 d
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
+ f; K) I' H- t0 L3 R9 N  sCAMERA capture
$ E, s) a5 o0 A) b: Y) g$ Vinput_device /dev/video05 k! E' f5 K$ ]1 T' |6 J# K- [% B% I
Camera-Camera; H5 G7 U, \5 i: ]9 U! `+ b5 E
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& ~$ R* l3 F$ v% }' C2 x
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
# a7 ~) f: W% Y# R1 `( Vfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# d8 H$ j3 u; z9 y  ~capture_buff_info[0].length = 4147200# h# b5 U: @' h: n8 ]
capture_buff_info[0].index = 0
  {6 g: \  M' n% Y/ W. z0 ycapture_buff_info[0].start = 0xb6bec000  v9 N8 H6 p2 O
capture_buff_info[1].length = 41472009 A# Y$ R0 a5 D8 L* f3 o, [) w5 ?
capture_buff_info[1].index = 1. h( E  k9 k# t& {8 M
capture_buff_info[1].start = 0xb67f70004 U* Y/ i* n9 ~6 r  n# O2 u( a& L
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed+ u: a9 f  [( ^  a
Cannot mmap = 2 buffer5 e* O/ Q5 l+ h
Error in opening capture device for channel 0
0 q) I# w! Z. K! ^
+ v& G4 _& ]' k. O  U
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
3 S9 U. y8 ]) c
分享到:  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:464 y- [0 O& X/ t5 K( M
您的还是默认的bufsize的,再检查一下配置吧

5 c& A1 P0 V, B5 e7 f- b- z2 z9 D% D& i; u3 h9 |

- J0 ]' O# W% e" u0 k  ]看一下,我把环境变量打印出来了,这样配置是对的吗?8 `3 t' {0 S  p

' `* O9 n4 f  _% x: [8 j3 q9 u
: Y9 D( H% r5 ~+ ~' }  Nroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
& u% E* r( m5 I' b  @1 mCAMERA capture1 n4 b5 q8 H& b: f
input_device /dev/video0
9 d- D( l' l8 t& b9 DCamera-Camera
* N: ^: u5 f2 v6 ]2 k% D. W: Dfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)) J3 ?* u8 _, I6 M
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
5 v& R: n6 j6 j) Rfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
  X( d/ t1 x; x# Ccapture_buff_info[0].length = 4147200; f5 U. w2 _' G$ c# E
capture_buff_info[0].index = 0
$ S& h+ }3 f) Q- L0 K4 N. jcapture_buff_info[0].start = 0xb6b40000
1 j: }3 `! L$ {2 F) @: u[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0" _4 q( K8 p6 M3 u' y
[   74.323663] Backtrace: & H) S, j1 I# e& Z! C: w1 {
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
" {* P0 C6 m8 v: e2 y! f) u5 |[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093" z, P" Y" W3 }& i! m1 A
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)/ ]1 L' u3 R$ d$ e' c
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)" |5 V: q: B/ H5 \$ a; K2 Q# U* b  U7 y
[   74.406178]  r3:c71fbd1c r2:00000000
" I2 [) z. v9 t! }- K[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
' c2 C. _" i$ w7 M7 _) s[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)+ N! {" [! X! F5 R8 |
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)8 q- a9 U4 v- V5 k* }
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)% d3 ]* y2 s$ Y5 H" \% Q6 n% i
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0/ j) p  h% X% i% h* X1 }: _
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)' p+ ]6 Q+ l3 X' C
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
  ^- f6 U- n5 ~0 B- r[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
3 H  k5 t+ ?" d[   74.556197]  r5:c7ba8c00 r4:c72b69a0/ g( j4 a( S) v' N* c8 `. E
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
% P. }8 T& Y* c# c# _[   74.587055]  r5:c71fe580 r4:c79c2e00
. m& L( D9 X! M" j[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
8 I% L  ]# N$ s+ `( @[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
* Q( K. c! G6 d; ~+ c+ L7 e[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
/ o+ l- C: g2 [2 l8 Q[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)! A3 Y/ ^6 S8 k7 ~( U- `
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)5 C, {! R  e4 @: }/ n) _  Y
[   74.688020] Mem-info:
* J$ f: E) Z: h) P; s" A! U[   74.690383] DMA per-cpu:
/ F; _, Q- p9 r* Z( S& u[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17# Z' P: `9 ~0 Q% d, K( ~- ?
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
  {, H2 L6 ?* S  |% Z# W# j' o[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
" b& R8 _' d; T" H3 l[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
1 L9 [" v( x* _6 g2 W5 X; Z[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739  i$ H$ q4 X7 n% f' ~
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
0 s$ A. ~3 r7 r5 E5 P. D[   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
3 J0 \  L) ]  X1 ?% E+ J0 B, a[   74.846179] lowmem_reserve[]: 0 0 0, w8 m0 v8 t+ ^" G. o
[   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
* ~0 M/ S/ y* M+ O1 e4 e' `[   74.871095] 5393 total pagecache pages$ B& w" q! h4 S: y5 T
[   74.874878] 0 pages in swap cache, h% E$ T( |2 `2 N3 e: ?
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
' y( {( U9 w7 i+ c9 ?[   74.901444] Free swap  = 0kB
- q! L1 p8 D9 j: k[   74.904346] Total swap = 0kB
: a2 ^( F7 Y5 k, _4 h[   74.946799] 49152 pages of RAM/ {; h: \' c% `# M, c; G: F
[   74.949901] 25326 free pages
0 d9 l& G+ Q( `/ M8 U' g' m[   74.952803] 3366 reserved pages4 Q% Q1 a% z% k( ]6 m/ e- N
[   74.966186] 2124 slab pages9 O% Q# v# H- d% m6 y/ i
[   74.969063] 7387 pages shared
( U! P* I4 d  W8 u[   74.972058] 0 pages swap cached% c' G0 x& Z3 }. R" w
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
4 @3 }! _* K: L0 w9 r; x2 ACannot mmap = 1 buffer4 }/ p) P, r+ S9 L$ @- ~
Error in opening capture device for channel 0
2 m/ T0 E) W4 W3 `, h8 V$ M$ D
( l" f& [9 ?7 j) z
+ K2 M0 u0 u: O9 h1 E% q+ `
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。/ ~& }; V4 _& `) R" z: _& O$ }6 j+ `

本帖子中包含更多资源

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

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
- j, o4 {+ [( s" |2 E* J还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

, }" D9 C5 d* o  }) w我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。1 N- \6 M) i( Q' I
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
% i, L+ T/ g# G7 X/ z0 D. X
' g+ m5 N9 D- y; l我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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+ D1 P% c! C& \, F( p. y  @4 @+ |
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

; s/ P6 [- Z, }" V# o- g) u+ X: P) Z谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:  D1 o3 v. [+ D* L
root@tl:~# cat /proc/cmdline ( k0 V3 w0 j2 N5 r) \0 {0 ?  X& A1 d
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
- _7 V& Q3 A8 k7 J- o# s

1 T$ O( B* Z4 g! t9 y! M我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
: K8 D6 O9 t% S% M9 y1 B那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!, s9 m! r4 s7 i5 K4 S

- E  ]+ H9 j% m2 U) {$ q: c以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助* W1 n5 q9 T  `
root@tl:~# uname -a4 j6 o5 L8 z$ `% }& |4 \
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
# `0 X  |8 J! \( X1 H6 c+ I

* i6 B7 Q5 u7 G0 E, ~: g - a3 S* ~2 b% [& y& g3 G8 G( f

; _+ S. B0 L0 Z6 S! R
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
& i! r% I& q, F. j第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;8 S& K% O. y% N3 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
& `5 \4 B# K+ Y1 t8 b' B7 G第一步,确认你的u-boot版本是不是v1.5或以上版本;
9 p* Z$ j/ {' a1 ?- r4 ~, j第二步,可以在u-boot里面执行:nand erase 0 20000; ...
) w5 J$ ]7 @4 N
您好,7 X. o: h6 Q3 D5 B3 r
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
$ ]6 ~7 k6 R, a+ f* _( I+ f' l请问这个是什么版本的?
# M6 c" g& p1 ]+ z7 n0 U2 P& S4 B 6 _0 J% V; W( I( R% R8 q
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
$ I# x+ G* i- s1 L7 B: ^: S4 K5 a我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
2 ^1 ?7 @, Z; E% S9 M
! ~) c2 Z5 j5 K! [  t( f# h还有就是想问一下这个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 的?6 d3 e& G: V3 r
! L( f% d3 x, P2 [8 I7 X" w, H
问题有点多,希望大神好人做到底,多教教我,谢谢您!
( a6 E4 b/ M' y8 ^  B( X, e
+ b7 ?; Q. f- i
回复 支持 反对

使用道具 举报

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;
  z5 m8 ~# s+ A  @2 n% b) t4 J2 n. J2 r, z. C6 n9 _' }( Y
可以根据环境的光线强度,修改摄像头的亮度参数:
: j+ D; |, Q' Wroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode & o1 S# F( }4 D2 b* n5 Z8 X
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 5 i8 K/ i% [' M$ k
Cloudy . I8 N4 y/ J1 T+ h- b5 r( T5 j
8 u( j* N. @( s: A, y0 i6 ^
参数说明:
+ j+ N& h3 F) P' Q5 k: D: F8 ylight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
1 `  y) ]' d2 q; S/ c6 H) T
9 V: {5 r8 j+ g( P. N. q7 e如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
' [. B. v/ d' e* s3 N. u/ F8 h$ \: l& \) i* y: T, M: o
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 16:35 , Processed in 0.049074 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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