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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
" j5 [: }4 I$ @! k    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入) k8 F( [' \4 g0 Q  E5 u
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
* Z, R0 O' T$ ]0 hroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
6 ]8 y4 F( i. H5 t$ {# W, j+ xCAMERA capture
5 `2 S2 \9 n9 g/ pinput_device /dev/video0
% @; B$ _' y% Y. Y! h# h0 d! VCamera-Camera/ L- |) \5 J) `. a- q
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
' i6 W- ^* T( }4 H0 Xfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
4 A) i4 J+ w: F4 t9 r! Zfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
) x  T& Z. j  W, jcapture_buff_info[0].length = 4147200
, }" v& c2 H2 w; Ecapture_buff_info[0].index = 0/ _, q% x) }& k/ G5 l& a$ Q
capture_buff_info[0].start = 0xb6bec000
% {2 X. s1 e4 a& \! xcapture_buff_info[1].length = 4147200
$ `1 d% n4 v1 I1 A9 F. u* i1 u3 ucapture_buff_info[1].index = 1
. O8 U. M9 ?% C( A8 T& ]" j& d7 K  Zcapture_buff_info[1].start = 0xb67f7000
8 @) Z7 Q  r. V5 t/ n[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed) E4 M0 ~* V7 ?2 V: V# }
Cannot mmap = 2 buffer
7 C  s0 q3 z- H: P& MError in opening capture device for channel 0

2 o& U$ ^, X! P" [# G- F: u( [
5 v, B( U& G$ U; v我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
" O& e1 B4 _4 g& y1 l% P0 `
分享到:  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
+ d4 ?7 U  y  b  }您的还是默认的bufsize的,再检查一下配置吧
0 k* S/ Y: Q5 S' ^' r/ h
0 ~1 e; g/ B, U

8 H! t3 t! U9 t) M5 n  {; x# E看一下,我把环境变量打印出来了,这样配置是对的吗?& A% U& Z. v3 h  a0 {. G9 Z+ r) q

$ N: X6 A- ]& f/ T' B  s3 k, ], |+ V- @
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
1 K1 i: S8 h& x2 WCAMERA capture
* C  E- {& |: g8 Jinput_device /dev/video0  E0 G" u2 }, ]+ D  |4 c
Camera-Camera9 p- j1 Y3 Z3 ]2 |) b
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000). u% z1 b. `1 g0 p% s* W# F4 H
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
& \1 }$ x0 g' G9 ~1 h! ]5 T9 h: g8 Hfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
* [/ E0 N1 k+ u+ V, vcapture_buff_info[0].length = 41472001 _( z/ e+ S3 v' C* W1 \
capture_buff_info[0].index = 0
6 o( l1 A4 Z5 V0 Z1 Y( Lcapture_buff_info[0].start = 0xb6b40000
+ O- D" y: z4 {+ l6 C& e; o5 W[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
. ]) n9 W7 [5 d" A$ R3 _[   74.323663] Backtrace:
  O7 X$ I  z: @! @& q[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
# M; ]; b* B. t[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
6 Q: L, H8 D. w1 r" A3 m: G7 Y[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)- a1 L/ n* E' R) A4 E; Z
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)1 e1 }; y; D, X
[   74.406178]  r3:c71fbd1c r2:00000000
0 v! D+ A- y3 B1 q. M. D[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0& a% i% [2 G5 k. x) ?; @
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
* n* H- v' [; w3 q% J' o3 f5 I! B3 P[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)9 j0 n: H! f  O
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)( _0 b: |, ]/ [9 E/ k# G" Y) V7 Q% |6 ~" k
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0& R' F6 v+ s/ M- S
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)+ C2 b) ?% \+ ^8 [, R2 w
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
. K2 h, e; d" l[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
+ i8 C. H; S' F' a8 m4 k[   74.556197]  r5:c7ba8c00 r4:c72b69a0
) u. ^- l8 H3 A[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
, ^* I7 z+ N" c0 B[   74.587055]  r5:c71fe580 r4:c79c2e00" K$ J" u+ B. |; @, q( B
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
1 Y0 ~3 A2 P+ e* o; z4 C[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584) {: R1 c/ n* N, x$ v( t1 D
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
0 c1 N. W4 R# V1 O[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
9 D9 m6 K- t* j[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)9 G" t+ v% c* {" d: {
[   74.688020] Mem-info:
1 o" H: e# K3 n6 n) l! o6 q[   74.690383] DMA per-cpu:2 I( Y; b! b" X* r( p5 b6 K' {
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
  }" p) T2 I0 v$ }* I, X[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
, L% `7 B0 ^# j2 r[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:245 o% T# Q: }+ M
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0% u6 b! S/ y/ l- J/ w& ~
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
' ?+ m. k. N6 n5 z6 A[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0# p) F+ a" X+ o4 i& X
[   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* w3 z& X; x$ l- F
[   74.846179] lowmem_reserve[]: 0 0 0
! R& k# Z, }* _% R% x* v[   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 C/ R/ T. ]; d6 D1 n! Q: M[   74.871095] 5393 total pagecache pages1 o6 m% w2 H7 k( e8 n
[   74.874878] 0 pages in swap cache
; Y' W( d/ u, E/ \, a0 i' Y[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
/ T8 i/ A2 o# O. h[   74.901444] Free swap  = 0kB
/ C; }6 p/ J$ P[   74.904346] Total swap = 0kB; p% o  l+ O+ v& J; q8 c
[   74.946799] 49152 pages of RAM
5 ^+ v( p6 o& M9 Y3 s# G[   74.949901] 25326 free pages
4 k! B* v9 a2 A# {% j[   74.952803] 3366 reserved pages
7 ]2 ?' q3 Q7 X. n4 ^, ^; ?" J[   74.966186] 2124 slab pages
3 d, ~; p- C+ e5 M4 E[   74.969063] 7387 pages shared
$ n2 i$ D+ M/ A[   74.972058] 0 pages swap cached7 {7 q' w7 ?' L# S% S! L
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
( P: S$ j8 A' i2 iCannot mmap = 1 buffer
: h1 g2 M7 p: ?Error in opening capture device for channel 0
$ g$ |2 i1 j& h
3 y$ T1 ~& j' F
3 [2 U" u! b4 w1 |
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。" Y1 ^* t; b6 y' l: K  n

本帖子中包含更多资源

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

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* k( d. T- z* C2 g
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

5 }: M8 v% E! m/ H. }我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。) r, \" O% R; |; Y0 u6 Z$ m4 S# q
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 21 x) Q% ~4 {/ d# E. J% @2 f. |

5 }" P6 j& e5 A$ s+ @我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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/ {% g7 l9 I( O& j* U" R
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
- s1 A) O9 A" L) G/ l' e  ^
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:& {: ?% g; N! F2 I' ]! S& A
root@tl:~# cat /proc/cmdline
8 x$ S( m1 U+ C) Dmem=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
2 H# n3 }! g- }+ S( _5 x
' M8 d! P8 e7 W0 G. O8 z7 k" G/ x2 d
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?$ |0 W' @, j) j4 a- C4 _
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!+ v. [* k6 Y7 Y- w4 J

. u  Q' U2 K$ @  D- N以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助- p" G7 n9 C0 [1 F- ^
root@tl:~# uname -a
( H  J/ h1 `. t. e- KLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

8 t3 b9 {8 X6 w
9 W; i6 [; l8 ~; }! j
2 r- [2 n% c2 u. q , i. D& I8 u4 q
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;3 [. z! n, [9 P' E6 j# i3 N* n
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;2 a% @$ }, h3 s4 r. ^8 N9 ~
第三步,重启板子,然后再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& B) ?6 z( Y" o2 ~' D* [( q
第一步,确认你的u-boot版本是不是v1.5或以上版本;2 \9 X# A3 B. i* J5 Q
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
' S/ Q# _$ A8 h( }& a
您好,
/ c; U. ]2 U5 c( z2 j3 h9 A* ]3 s我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
8 j# h6 h2 v- ?# g1 a3 G/ |* I请问这个是什么版本的?
1 g- ^% A/ n9 S& a7 R% n) R- W $ T5 u6 W6 G( n' |; |. d% _
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
+ z9 ?8 ]# k* }* d我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?- C. \, t# r4 v' B3 P
* B8 e/ y  l$ ~/ G) W' x0 l! B" n
还有就是想问一下这个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 的?
% r" @3 ]! P( R3 v; N/ D
, n% k1 [0 M2 I- O( R问题有点多,希望大神好人做到底,多教教我,谢谢您!; ^& K, R, Z$ i- h+ A2 t

/ [/ t6 u0 r' q8 m. d- j
回复 支持 反对

使用道具 举报

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;
/ w4 \0 Y/ F# z  s+ q. a- W* i! I9 |
可以根据环境的光线强度,修改摄像头的亮度参数: , \2 H$ h/ [& [% u, _
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
: _) I! d: F' l$ kroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 1 F/ x8 V5 z8 j! C& F
Cloudy + Y6 [# ?9 _9 n, L& `  ^6 N
' M) ~7 N& u5 a' S3 i  h# d
参数说明:
, ?) B' o4 N5 q- h0 W6 v) v0 \light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home . w! ~, P, M2 i2 f* {5 E7 a1 C

/ ~. \4 ^- {% C6 e8 ]如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
8 S! G% [  d9 [/ [
! d, n$ b/ a6 z* M' p5 n+ lvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 11:44 , Processed in 0.053606 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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