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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
3 k' ^  R% I) t4 s0 G    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
1 H" S% b( K! F  F3 y"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
) ~: H$ N3 Z: c# J+ {" L$ Groot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2  L- K  O' X! `( x7 r4 Q
CAMERA capture1 Z2 v, z, ?0 r* y
input_device /dev/video0
* e8 f# Z4 `7 Z0 i. o/ R; h5 s2 Y( bCamera-Camera' Q6 S# _1 v% U9 ?3 ?7 B
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 F2 K3 `# Y, t- w5 p& E
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)7 l% E9 s" D; B% J- z) }
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)5 ?- N' H! o/ S
capture_buff_info[0].length = 4147200
# p( e! m+ {' @- r$ }( m6 G0 Mcapture_buff_info[0].index = 0
1 `6 {' u/ v4 S0 J4 Lcapture_buff_info[0].start = 0xb6bec000
. H- g5 R2 k" B  G- Ecapture_buff_info[1].length = 4147200( m, K6 d& ?. M9 \- d
capture_buff_info[1].index = 1
: ?5 r" ~: o& dcapture_buff_info[1].start = 0xb67f7000
* y; G8 ^$ ?( N& n: t[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed0 R) L* Y: u# P, Z3 g
Cannot mmap = 2 buffer
# o' w, v3 o7 k) o5 b" x6 EError in opening capture device for channel 0
! V" B* h& r; S% G& I  u4 n
) [4 ^" D- F8 V; `7 S9 \! J
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!2 |( M2 }6 P5 k, B9 P8 E* k- j
分享到:  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
) W3 W; ^  N) r. R7 j您的还是默认的bufsize的,再检查一下配置吧

; |' n8 p4 Q+ X0 a3 r: U; Y; N
* J! k" b, ^3 g( V0 X1 ]: h) N; R
看一下,我把环境变量打印出来了,这样配置是对的吗?
$ ~+ F; N& k' X6 n$ |  j+ v* W! }+ U! O! P0 f# y6 Y* A" Z: |1 h

+ W- d- F4 q/ E, R1 B2 Iroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2: E0 S/ |; W4 ~" k
CAMERA capture
3 z+ f" U& P# a; K, o6 N; cinput_device /dev/video0
( d% J/ b, C; J' T) l6 J8 r* bCamera-Camera2 ?- W6 \# ?) M4 r8 C# |
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
, o8 Y/ ^0 z7 Z( [) ^; ?fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
' @/ r# U' h+ n6 Q2 @fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
3 g% M& z) R0 v8 D% \! bcapture_buff_info[0].length = 4147200+ Y! \  J2 V" O- }! X* U' {
capture_buff_info[0].index = 0
' x# x( a/ Z% K) Y- m& K5 }capture_buff_info[0].start = 0xb6b400005 L+ ]' o& @7 Q
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0* H, {0 p5 E) J; `
[   74.323663] Backtrace:
& B* F# b& m# x( F0 }" V[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
1 C! }$ G9 E9 Q[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000939 Q8 J; i/ T3 D# t# j
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
, Y0 G9 }! P6 [8 U% i% m' A% ^; x0 C[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)+ v% M$ A! u9 U  n8 e% n
[   74.406178]  r3:c71fbd1c r2:00000000# Y2 c! ~* B7 [( s1 U1 J8 \
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
: A1 G# B  y: H4 T* D: A[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)# K! _3 A* E# E1 ?1 S3 h
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)9 h1 N2 ?2 s* A5 K' I0 ?
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)3 t( k: }6 b4 d+ s3 ]
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
  F# B0 v3 d6 ^[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)6 M. ?) a; N5 M+ X3 o  B* X
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90- [* @( Q( k! t* ^  P) v
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)/ W" \2 Q. m6 g  h# k# q
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
* _5 n' }: W3 E# o[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
# s. a+ B# n9 u% Y* ?; e[   74.587055]  r5:c71fe580 r4:c79c2e00
6 \3 S  n" |0 z3 N6 K; m( n- |0 N[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
1 {8 ]5 N1 [6 p+ E[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584) i$ l: N2 g$ R# Q  h. s0 K* b
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
9 Y; I* }; f0 j/ v[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0): p0 Q) s+ g( Y8 p1 `/ s6 }
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)+ j) _! h9 f- ^
[   74.688020] Mem-info:
" y: T3 k; F1 M" e. n% X  u[   74.690383] DMA per-cpu:
# u  @  d7 d# p* k( V0 }4 ][   74.692955] CPU    0: hi:   18, btch:   3 usd:  17( s# M& x: y) F7 j2 I
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0' K4 B* {/ Q2 y6 e+ h8 [1 R9 Y
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
4 v$ r$ ]1 I6 M6 U[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
3 {9 c) S8 Z  g# D# J[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739. u; ?' a( V' M# L
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
1 V, q7 D0 K( ~) J  [[   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
% r1 h, i0 R1 l[   74.846179] lowmem_reserve[]: 0 0 0* I5 \  I8 e: Q
[   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 = 42616kB6 l# P/ p8 L0 A- d9 K
[   74.871095] 5393 total pagecache pages
$ w  e# U; @. _9 f% _[   74.874878] 0 pages in swap cache- A/ W9 ?9 d/ C5 K
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
# x% A: C' p5 ~3 e# |, }" L[   74.901444] Free swap  = 0kB
* ?0 U  \$ o8 D; ^6 w8 C% S[   74.904346] Total swap = 0kB1 U* Q* v5 u  B
[   74.946799] 49152 pages of RAM+ N7 X2 `' s$ N/ L$ U9 H
[   74.949901] 25326 free pages) Y0 J0 q3 i- }5 {
[   74.952803] 3366 reserved pages  e4 {% n" a4 N7 i, a
[   74.966186] 2124 slab pages
7 J- k. g' t# n& k& Z  S0 ]2 {[   74.969063] 7387 pages shared7 X3 r6 j2 m# ~' V& z4 @+ b  t# ?
[   74.972058] 0 pages swap cached
9 x4 R: E3 n" o  {0 z& F[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
  V$ j4 N' D0 \2 MCannot mmap = 1 buffer2 M# e; w% N$ t+ g, e
Error in opening capture device for channel 0
! x6 |7 V7 E7 Q1 X% b, i, k
! S, M8 X! b( `& x
1 y. p' t; o+ ]0 X/ P' M: R; r' X% T
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。1 w1 k. H# ~+ d* v7 D' `- g

本帖子中包含更多资源

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

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
  l6 |( Q' |2 u, i3 V9 n还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
" s7 ]- s. w: g+ `4 t
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。8 P  k* S; \& [/ W1 C& l
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 23 h+ l" F% {% Z
+ j& h1 d2 r$ }; R; y/ n
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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# L5 y, \1 {( S  }0 e, s8 A, ?1 s
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
, d$ N$ B- v- _3 F5 S
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
/ [/ K. ^8 ]1 }  Droot@tl:~# cat /proc/cmdline 1 Q" H% B% X) A. K# U
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
2 `/ g' Z& P! G8 R
$ Z3 T' Z2 K8 m: D4 E5 f. O- W
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?1 m: U6 f: B, V
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
  |# ^" ~5 c+ P7 x 4 r* ~$ a8 @& K, y& p( F. G% J/ A
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助( C4 a. W1 D7 A; N  ^" X0 F  Q
root@tl:~# uname -a
' G6 F8 W! u+ i: T* u# t# CLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

! a; I# P" b0 ^
# b% ^9 e" m5 \2 \+ o$ u $ [# J+ a5 z: ]( a

" E$ ]9 `& u/ r* k
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;  j4 `* F7 L- p) m/ ?6 W- w4 z
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;3 l- E, K) a* {( M
第三步,重启板子,然后再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:120 n9 @$ V$ O8 m+ u4 [; l% T
第一步,确认你的u-boot版本是不是v1.5或以上版本;3 V' ]9 H' w7 E& W. E
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

4 }8 K2 Z& }/ H) Z, N8 X+ i您好,
$ H& v% g0 ]+ V. ^我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf2 [' E  n1 U' s% ~: I7 X
请问这个是什么版本的?
; [5 R! m! E4 s0 C# D  E) m 2 S1 `2 D' h" r% ~  L
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?* N: d  m6 h& b/ l
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
( C: r# Z+ h1 {
" ^- P! S0 D( J4 L) o* E9 j5 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 的?) R9 \3 j. e0 s

/ S' f4 R2 H" I" b" H问题有点多,希望大神好人做到底,多教教我,谢谢您!
" F- i+ [9 U4 M/ a6 E& n5 Z1 {' d
- \* Y5 C( R+ ]! o: a9 ?
回复 支持 反对

使用道具 举报

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;
0 D6 t1 W& r; ]- T& K% p% B9 y/ \5 Q' ^
可以根据环境的光线强度,修改摄像头的亮度参数: - Z! D: Z) N" o* l; q) C2 F% I
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
4 s! Y) g$ V: J& Nroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
5 {, U. x. Q8 i2 _9 a' P, wCloudy : `5 {7 _+ K- g7 O9 z
2 M8 O( u3 k- l' o: I
参数说明: 8 o+ t5 K" r& @) C+ o
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 8 ~. J! S5 u5 }: F; G9 d& j8 }. H
0 U+ C7 z/ g/ ^% T4 r& b% Y5 D% T6 z
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
4 Q4 T7 y1 g& G$ J1 `5 H% h9 N; y0 d/ w) e9 Y
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 15:56 , Processed in 0.055513 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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