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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
8 Q3 |( b: W5 H1 P/ G  F    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入/ B  B9 g# I" C2 h+ U9 y+ {
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:6 G! S, s# E2 |7 \! r: \
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
- w" s  `& R  n# rCAMERA capture
4 N! V" D7 x' |2 e  `+ z- Kinput_device /dev/video0& h  J4 E; f; H2 y* G3 e
Camera-Camera
# Y0 k; H, l6 L2 A# |, bfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
( C2 ^- G8 |/ c; y3 W3 O$ `0 [6 Nfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)% [8 i7 V. m, L& \6 G
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000). d3 b% ^0 Y- k+ p; u
capture_buff_info[0].length = 4147200
' ]8 o, [, V" Y3 b) t, ncapture_buff_info[0].index = 0
- X  \% ]5 b' Wcapture_buff_info[0].start = 0xb6bec000
) l: V5 ^0 v! L/ Q7 i2 Ccapture_buff_info[1].length = 4147200" k9 o# ?6 g4 Q; x
capture_buff_info[1].index = 1' V+ Z6 o8 e1 O/ K: M* }7 V' a
capture_buff_info[1].start = 0xb67f70004 Y1 f4 C* A( u" {$ K* O0 h
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
" I: G# F5 M* [/ _$ PCannot mmap = 2 buffer
1 i! l$ n" g6 GError in opening capture device for channel 0

# D& T0 m. k+ L0 p! j) }; ~ " z4 {5 o: v  P+ t! V
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!4 K* b' Y. p/ M/ a6 [
分享到:  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
* Z0 W- ~/ Z! M+ N  |/ O您的还是默认的bufsize的,再检查一下配置吧
7 C3 Q; _( U. x; N4 \- x* Z5 R" F

/ }" ?, Y! R, z7 y4 w. a7 [% A( _6 w. Q( N2 @" P0 a
看一下,我把环境变量打印出来了,这样配置是对的吗?
: J) n( D0 O4 D$ `  y
3 }2 \- P4 s4 B6 u. a: S  W
6 F, e; L# g8 }; K: Eroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
5 B2 i/ ~! M) v4 b3 i+ l' N$ ^CAMERA capture
7 K4 k3 k& {- d9 v7 ?/ Ninput_device /dev/video0
' r7 m$ ^6 F* Y5 r: R: tCamera-Camera! w5 ?; u2 S- U
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
; s& O, [# o. C$ t# G) vfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
" c1 \0 V- j2 Z5 I. kfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
8 _( {. a6 q; W# F( y) E( k; [  E0 wcapture_buff_info[0].length = 4147200
8 Y2 {& f6 [( N$ S( k9 z- k" Scapture_buff_info[0].index = 0
4 `8 P5 p) I, e! `$ p6 `+ Y/ l  a. dcapture_buff_info[0].start = 0xb6b40000
  l7 W2 Y& H+ h8 a[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0; a! p( z+ r9 p1 l
[   74.323663] Backtrace: - |3 J) w/ a9 g8 ~' }3 V4 |
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
7 Q2 U5 D- v, d1 d[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
* E& X/ [+ A0 o: Q+ n[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)4 x6 r$ e/ p  D. r
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
' d* K/ z) d: A[   74.406178]  r3:c71fbd1c r2:00000000$ F2 X- S. O0 {4 ?
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
8 n: a8 q+ Y: S' ?& W$ t[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)' N& R' s' r7 ^( b/ Z0 \. F# C7 [8 w
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
" r; X0 w* a0 R! b[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
+ w0 C" n: p) M$ W[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
# N- V. F9 \* Z7 A[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
0 O) p$ R  g& P. X[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d908 D  l' Y  ?5 L7 H0 F
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)8 b* ~" D; a. ^/ m" Q0 `3 o( j
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
' U' y' {/ r2 s3 L, V0 Q[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
1 G, b. r- ~7 K[   74.587055]  r5:c71fe580 r4:c79c2e00: O- @3 V4 g9 E9 O
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
) a0 v  G5 w& f. m2 e$ h[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
  y0 Q8 q" q! p: E[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
! \+ o2 H5 S0 d! A[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)- A7 D8 f3 s5 r% W8 T9 v
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)$ i' ^  b0 C$ r* G; w
[   74.688020] Mem-info:4 f! R; ^4 Q- }: y6 p6 o* `
[   74.690383] DMA per-cpu:" u0 j* R% p; b8 e5 V- p* x! x
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
( X5 V. j5 u) r[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
; m8 {4 S* Z4 M/ _2 n! j( E$ z/ t5 I* `[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:249 }) C9 A  U7 o5 B  _
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
4 P9 k  ]6 t2 u" y! Y0 v[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
" M, ?  T" o6 z[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0# U7 t; a/ I- R' E0 ^. h  F& 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
  O4 n' j, }9 h; F6 M7 r( y4 q8 v[   74.846179] lowmem_reserve[]: 0 0 0
. G3 |3 I% o* P( z) 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 = 42616kB3 b( P' o% x: D' G
[   74.871095] 5393 total pagecache pages
# G4 B& f& k" K- M[   74.874878] 0 pages in swap cache6 Q, k6 ]( ]  K6 h2 Z6 Q/ \* O
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
6 d" W* O7 ^6 Z2 u$ J! i" [+ [[   74.901444] Free swap  = 0kB9 h3 l/ b/ Y* Y+ O
[   74.904346] Total swap = 0kB' M9 R; g! ^7 O# Y3 [
[   74.946799] 49152 pages of RAM
0 t. R! \8 C! d# v[   74.949901] 25326 free pages  \& ]' r: Q& }4 W$ X! D8 D3 w
[   74.952803] 3366 reserved pages
- Z* L5 Z* c: ]' P' i. I[   74.966186] 2124 slab pages1 }" |4 H7 S0 g$ a: h
[   74.969063] 7387 pages shared" d8 f7 `( D! r1 a; I6 z8 r8 [
[   74.972058] 0 pages swap cached
6 Y1 @8 N1 X8 G# n[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed$ D2 b8 l: |, W& U7 A
Cannot mmap = 1 buffer% h( }' u. ~' g2 V% u
Error in opening capture device for channel 0
! U0 H2 Z% v8 j  ~& X  m. {
  L: r$ E9 `0 k  R+ `0 q3 ~

+ S4 ~; w/ m5 U  x这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
% j7 R' K# r) s. y' Q

本帖子中包含更多资源

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

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- m2 c+ X- f( S& b9 D- c/ E
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
, C1 f- d' y0 R( [0 h
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。% ?' R! O9 W. |- e2 t) x
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2! C) b- S& s+ Z# v" }

. h( N8 G# b3 m9 c0 Z* b% V! W我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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:166 ]% s6 i8 J. n: v4 \5 E0 \0 o
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
7 M! r$ s* r* |" K2 P. c6 c
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:" ]8 W, R2 p, ?
root@tl:~# cat /proc/cmdline
+ _4 t4 o) S# b6 @5 amem=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
  h  y5 r  n" g1 u  z! U  V

7 ]0 N5 j& P: y3 W. W  n我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
4 A  Y4 Q7 N2 @" e/ R那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!: E! S9 d! r4 O3 A  N

& h+ L+ o+ C' p  _/ F- i' Z以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助( p7 C" t: F5 _' Q$ v
root@tl:~# uname -a4 U/ s5 X' K! H+ p1 p
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

" @3 Z# o1 S. r, }& F1 b 3 H. a/ \0 E+ g3 I- y" h
9 h$ {5 s, X3 e

) E; ^) b! P3 ?( U" G
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
& z& j: P! y! S8 X+ a0 B第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;' Y" d! E4 Z! X
第三步,重启板子,然后再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
( A# I5 G8 t/ Z, w& m" u2 R2 A- n第一步,确认你的u-boot版本是不是v1.5或以上版本;
, w' R! @: x; A" p) K第二步,可以在u-boot里面执行:nand erase 0 20000; ...
' a; B$ K* n" ]8 D, j- j  j4 v
您好,* b/ h( _4 w1 v$ u9 A4 _/ b+ _
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
( g  |; J0 [& ]请问这个是什么版本的?
7 ?$ i) [' s! [! O - m1 r9 B, P$ L. W
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
7 m7 j0 x( w& }' F( a我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?2 C! N  }  k% E

5 {0 z) j- y/ n1 `还有就是想问一下这个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 的?1 A+ w. Y( e9 I

7 \' }) _% I- ]) A! V) z问题有点多,希望大神好人做到底,多教教我,谢谢您!9 f$ H2 w" s. c  I& e& d# v' |7 n

0 a$ S  U; [$ x
回复 支持 反对

使用道具 举报

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;" f; y. t" `  L7 i' X  @

/ ?$ F1 D" N/ Q, j. x5 `$ s# `* Q可以根据环境的光线强度,修改摄像头的亮度参数: 5 [7 o7 {' |( n: x4 K+ m
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
* a! p  y: E) C$ z* X* Y9 xroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode % [2 K" S0 y/ b
Cloudy 1 s# Y. z0 n2 V1 {% ~

" |* @. s9 M- |参数说明: 2 N2 ^. y" ]9 p' j9 n
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
( P% u2 L' V0 d$ @
. H  D0 |/ I2 g/ s如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
2 `( C; v/ j0 h, |$ N5 P, {9 P  E* W% D! o- H1 t5 x9 {, l$ Z' p, E- K
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 03:22 , Processed in 0.044405 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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