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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,* c- \4 w# M1 U" f7 P6 F
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入( p" B. E; d# i. t+ v
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:: \. d3 ^+ o( L9 K
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 29 a8 Z: G+ l0 L! L$ V3 n1 O6 h% S
CAMERA capture
  b" ]9 C8 b4 `1 W; `& E& T# \# |7 Einput_device /dev/video0
$ B- m& g8 Y0 PCamera-Camera$ b/ _1 D5 o. W
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)* o: i$ v- x8 i* o" S8 @
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
: G1 ]# ?, j" W3 W8 C7 A* Lfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)) e0 T1 H0 H# _! A
capture_buff_info[0].length = 4147200
9 C' Z% M7 `' m  f2 dcapture_buff_info[0].index = 00 d. S$ A, U( `7 k* z, Z
capture_buff_info[0].start = 0xb6bec000" ^1 z" H( P; \$ a3 ]
capture_buff_info[1].length = 4147200% t* N- q. U6 J& l6 ?3 j7 g, v
capture_buff_info[1].index = 1
; f( B; `1 c; G( u3 j  Gcapture_buff_info[1].start = 0xb67f7000
5 W& B) H3 A% {& \. J" H2 a[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
9 r, G& X& R' ^. ]2 D0 k; hCannot mmap = 2 buffer% K  ]/ ^3 q" u
Error in opening capture device for channel 0
! M: j0 G% o! H* B) Y! Z2 q

. e5 F( L1 ~3 |% u( V我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
7 [9 ^; n/ r8 `5 _- ~
分享到:  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:463 t" x/ O+ C7 w9 i- A
您的还是默认的bufsize的,再检查一下配置吧

& |1 [/ H( V8 v: q$ Q0 D% C" \+ U9 j
9 p/ r% B; q# n* o
看一下,我把环境变量打印出来了,这样配置是对的吗?
) t# B4 |* O2 D  c+ [# X$ @- d( G' |  c' M
% F+ q3 L3 R$ @( y$ f9 j& W
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
. T8 `; a/ F  n7 B- T6 g" q: }CAMERA capture
, j4 l2 n5 n7 \2 C& U8 kinput_device /dev/video0
) _8 `' `' r8 l  b5 W( ZCamera-Camera
/ g- d* ]( P& n) E5 D- G# efmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
7 W8 i( f8 h# x# y2 {# w! tfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
; \% B  u& E8 S* |: d; ufmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
9 T) a# s% n% \9 I+ p, E& ecapture_buff_info[0].length = 4147200
. j- \3 q2 P' _( I# a- M  \* f3 Kcapture_buff_info[0].index = 0' G/ g/ t) G, S5 m* O- ~6 }
capture_buff_info[0].start = 0xb6b40000
+ Z0 N7 a$ K: K; b[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0- s% e- Q0 E3 P/ A* E
[   74.323663] Backtrace: $ ^* C* ]# `9 M: z
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)( m1 V8 ^" [. I
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
+ g  A; X8 t" Y/ L: x[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
. I0 Y" O9 N& i[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)' ]6 _0 r, J! A7 Q6 k
[   74.406178]  r3:c71fbd1c r2:00000000* @. F: w5 y- Y! x. N
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d08 k8 r- l0 ^3 p; e0 Z( I
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
' k1 `% M% m. @% B" Q' w[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
, b* B& A9 G, d( X" W; U[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)! {& p; K! }% E1 Z; D$ V- ?/ ~
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
( V/ v0 |1 X9 z! D: v[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)0 I" g5 S* H5 y% z
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
1 C# [$ b& Z/ a( i[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)) S; P* k8 X) X+ n  p6 R
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
7 H. Z4 }7 \$ G; M[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
7 k0 \* s( h: i5 m7 @8 E[   74.587055]  r5:c71fe580 r4:c79c2e006 s# ^4 @# T% e" Q6 ^( n' b
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)* X9 O; y' q3 U  O  ^5 E. _2 U
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
/ ]6 s! ~: O4 {9 j( k[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)# P; `4 Q9 t5 j3 F$ \) w6 s
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
3 q+ v* d2 J  ]2 q[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)# N/ b+ k' V- l& V
[   74.688020] Mem-info:
% L6 ?3 B- N* W; c! w[   74.690383] DMA per-cpu:
% L# w5 Z0 }, R! M" `* n[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
5 ]  [( m- X* t3 t+ u, d4 n. R[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:09 v! A9 [( y3 I6 m+ [! m' j) M8 u
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
& X4 s* M& {8 \- C6 y) ][   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
- s& _! m. d% u( l- q[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739& u1 x( w7 U5 K7 O  e! D$ r
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:03 F! _/ C3 P0 h0 Y1 N
[   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
6 R, d0 M( R( m. P5 m5 a# `2 ^[   74.846179] lowmem_reserve[]: 0 0 0
$ F1 W: M- ^+ z9 ]5 u7 K) q' _4 b- @3 C[   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
# w+ N2 }! }/ q  A' \2 _9 g+ y[   74.871095] 5393 total pagecache pages! [8 `# y7 ?1 |$ A! y( X" B
[   74.874878] 0 pages in swap cache. z2 K  t3 Z0 k$ G  ?! \: W# T
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
  S+ t) u+ C0 O2 I[   74.901444] Free swap  = 0kB; F# w! _& Z) [: l
[   74.904346] Total swap = 0kB4 [( c# ]  ?: [$ i% v$ ~
[   74.946799] 49152 pages of RAM
7 s: [) H3 p) _/ l2 n* q[   74.949901] 25326 free pages; m  o$ K$ q% }1 z
[   74.952803] 3366 reserved pages
$ Z  S5 h. F- d[   74.966186] 2124 slab pages
4 i( X3 ]3 L/ S7 E[   74.969063] 7387 pages shared8 f  J; ^* W4 T$ K. A2 B, X7 h( J
[   74.972058] 0 pages swap cached3 o- |6 s' `$ M! q) c
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed+ [1 N3 S! X6 H4 v* ^
Cannot mmap = 1 buffer
2 C8 L6 Y. ?/ B5 @) D, `Error in opening capture device for channel 0

8 M) T' Y7 c  z- L+ o, _* G, X( i - F  ]; O. u! S3 I+ @

$ e2 B( {- q1 G: \- w  F这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。1 X! ^" x" b- ~3 e% u6 L# M

本帖子中包含更多资源

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

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
: Z! E) Y$ ~3 h/ f' @还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
" m4 P) O' h* o
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
# M& z/ A: h9 [( a7 m+ S第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
) h6 ^5 K( G; U& f1 S3 o1 a$ c+ r, i: X
. q, S8 I1 U1 ?8 n0 O; u3 f, M" W/ i' ^我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
. X6 l. y1 ^# z1 E在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

$ s% I' t3 y6 _" Q8 C2 Z谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
% f6 w, y; ]5 i& Mroot@tl:~# cat /proc/cmdline 7 S( ?. k1 D) y0 l9 Q! G1 l5 z
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 s1 ?2 y% }1 w+ |/ M+ I 7 v' l) Z3 y8 A+ M
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
1 x: v3 I9 ^4 \7 m2 h1 l2 S那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
1 X: u4 C$ G8 K& i) M
. f) z  `6 W2 ]/ f$ l5 u3 u以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助2 s! v% w; t+ O6 O& g! o9 T
root@tl:~# uname -a9 P* y5 S0 i& {/ @+ y* \
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

5 H  u% H4 }* R   X: ?! H( E1 O& p
& L" F8 m$ ~. d& ~! H- \7 o6 K% g" K
+ |1 Q3 q) a+ W
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
$ N) a0 C2 F1 A  }% m9 g第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;4 p9 E9 ]- j; e' F7 m$ B& r
第三步,重启板子,然后再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
& G4 f8 |! B) r  H第一步,确认你的u-boot版本是不是v1.5或以上版本;  S- e7 o$ ?8 j0 U- z
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

( ^+ B/ B8 r0 z' B( `: h8 k; n% M您好,
8 M! d, t* A) ?1 Y4 _我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
2 Z8 W& [! U5 t请问这个是什么版本的?
! l7 B, a4 q% w/ s) [
* v4 D' F4 o7 T  F0 {3 e( y另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?% g8 C0 Y' ^3 e* p
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
% G7 S/ A/ ?( `$ p , z$ f4 |* W9 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 的?( E, |! i# r9 a- C& e% g; J" D
+ r, T5 N' w6 j& B
问题有点多,希望大神好人做到底,多教教我,谢谢您!
/ v0 ]: d4 R! v5 M) @
5 Z. @9 Y0 `* `! g, X! p; a
回复 支持 反对

使用道具 举报

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 z; }3 }8 g( I& [
/ ^9 K% C  N# H4 J1 f: h
可以根据环境的光线强度,修改摄像头的亮度参数: ; U! I8 _7 O* N; g- Q
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
3 W9 a0 O1 R! Uroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 7 C1 ^1 ^4 G+ f% s8 w
Cloudy
& w9 z- s1 w3 z* o2 w  W) t9 j( Y
9 y8 z& Q4 x$ a; I8 E/ r参数说明: 3 u4 L5 `( u- ]8 q3 j2 J9 s
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
3 T6 l7 k/ i; N+ w  j9 t1 l
' O' N( L- [/ R! p& y% e' p8 j0 ]如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c( ^! D, M, P( x$ h7 F: `+ u; D

3 s) F* D3 P1 F2 Mvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 13:09 , Processed in 0.047052 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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