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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
: H( n" g$ C* g0 |0 A3 M+ L" L    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入6 ~9 L0 B( R- }" D
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
$ t* j! \3 w8 x3 l* C8 O2 troot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
/ L# R, q* x7 `: x/ e6 zCAMERA capture% k% f$ c( \; i- [3 o4 {8 v4 R
input_device /dev/video05 t  K, Z, y) o3 l! U
Camera-Camera, m1 f4 E( s) d
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
/ \+ z$ u$ U5 k, U( V* Jfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)3 ^* E  K$ F( k+ j3 ~, I9 P
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)( d, g- P  a+ j; W0 E7 g! A
capture_buff_info[0].length = 4147200* L+ S7 ~0 W/ Q/ ~1 [1 T, R
capture_buff_info[0].index = 0
, o. ]0 I# t. t# gcapture_buff_info[0].start = 0xb6bec000; V$ k# E6 K" }( Q  B7 ^/ k
capture_buff_info[1].length = 4147200) @0 L  q$ m) q% e) m7 v8 i( s
capture_buff_info[1].index = 10 P8 b/ ?3 Y, v- G, I
capture_buff_info[1].start = 0xb67f7000* b$ l( P! @0 `# o, t7 l
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed, [1 U) ]+ Y4 ~$ B; F
Cannot mmap = 2 buffer
, b/ \( ]0 M- E( G( V- oError in opening capture device for channel 0

3 _' G% P8 @: x- t7 y6 I6 z 5 {0 u3 w: @3 C( T; Q
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!( c' m5 z; ^4 |3 a' Q/ Y* B
分享到:  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
" R7 P' d5 P3 p+ k( X; H$ {您的还是默认的bufsize的,再检查一下配置吧
* Z$ Q2 m  D8 U% u8 j2 e" m4 u) ]3 |
$ C5 @" u, c4 o! _: `7 x/ O5 K5 }
# _8 n) s6 B8 l, t6 ]
看一下,我把环境变量打印出来了,这样配置是对的吗?
5 s7 D1 }% f4 s$ K7 ^6 p
1 |2 _$ q$ [5 G7 q$ h3 w  z# |/ c) Z9 M0 }3 j7 o( l, n
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
! |1 G+ {. v- c; v# FCAMERA capture% ^% ?$ C/ K% w
input_device /dev/video0% l% f! F' N0 J! J; F! N9 d7 S
Camera-Camera
# g% X+ f; b% h( u8 N6 X. Mfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)# `5 ?. J- c, k9 B- {
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
6 E& ~2 K& ^, q$ }6 y$ Xfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)' f  C# ~- `0 P8 j
capture_buff_info[0].length = 4147200; o6 T% B# E. Q8 D) q" T
capture_buff_info[0].index = 0
  {. q& ~' ^* g. x% X7 Ocapture_buff_info[0].start = 0xb6b40000
" A  V# C$ |+ _2 B4 A# Z8 n[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
  H' g3 M! a- _! v8 X" g0 b[   74.323663] Backtrace: ! i4 r6 ^( `1 \$ c! Y, ^8 J
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)8 H6 T( E1 k0 d  @. T# g3 ?
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
% G+ V- @2 c6 P9 F+ b5 \* w: V, r[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118): S9 Z* D+ w/ t) O$ T6 O8 Y- x$ Y
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
1 m4 Z6 E  B1 Z  n5 J[   74.406178]  r3:c71fbd1c r2:00000000; Q# S0 E3 S: \! ]  y3 w
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d08 T- P4 S0 @, P& i' f
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
" ^3 h& K- Q. j& i[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
! b" e, Q" H3 y+ w[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
" B) ^1 |3 A5 Z# r( ~- A6 D[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a02 f3 h, ]  Q$ R% E" s
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
& `+ f9 i* Z5 ^! D! ?[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
: b. F2 [& I2 o/ `5 F[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
8 i; I' S/ U0 {; u[   74.556197]  r5:c7ba8c00 r4:c72b69a0
# @1 F$ O; s, f/ {[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90). s" b: I2 }  B0 E! m  P4 G- f& n
[   74.587055]  r5:c71fe580 r4:c79c2e00
% f1 i4 j1 f9 J  H[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0); {0 N6 K( C. n( Z0 G3 N  _4 y
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
& r# m" ^) U1 s- m1 X7 ^5 W[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
5 ~8 w. Z/ |- `9 M[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)  M& D6 E* f+ A' S, i( T
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
' a/ y. F( G" |) E[   74.688020] Mem-info:( W/ V: G* y' T
[   74.690383] DMA per-cpu:& c  Z0 p  e; J$ @8 F, H2 G; ?
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17# R' j9 H5 U" W0 X% z) a  ^, `
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
/ R, D: [, X# F* X; v[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
: m" B9 `) ?8 ~[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
8 y7 U: b7 x2 R8 ~* F, _[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739. t. `$ r8 V- @
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
& E" Y0 H+ R5 U9 |[   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- T% r6 B" \5 Q% |1 {
[   74.846179] lowmem_reserve[]: 0 0 0
) H9 @7 s6 X5 L& K) W[   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
+ \. k# L* D( q: v2 r[   74.871095] 5393 total pagecache pages0 y1 b9 ~- N7 W  t9 E+ j
[   74.874878] 0 pages in swap cache
, G! M, @% O) T8 H0 q0 j[   74.896156] Swap cache stats: add 0, delete 0, find 0/0+ J3 J- {) e: X4 [7 r# {  F7 u
[   74.901444] Free swap  = 0kB
  z& b( r6 w! M  F[   74.904346] Total swap = 0kB
, a5 K( C$ @" P! W2 D  h9 P[   74.946799] 49152 pages of RAM
# K2 c, w) [! |8 T( C! U1 |[   74.949901] 25326 free pages- s0 y8 f3 V1 ?" c& w: Z6 G
[   74.952803] 3366 reserved pages5 K  m" t- y; g: H! x
[   74.966186] 2124 slab pages
3 C* ]4 ^6 U& Z6 P) M+ m[   74.969063] 7387 pages shared& x2 ]( e- H' I  g
[   74.972058] 0 pages swap cached& {% ~4 w) P8 t, m
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
; C1 s0 U. k. O/ ACannot mmap = 1 buffer
1 b1 l, @& B2 t: a5 {Error in opening capture device for channel 0
) e) k8 C  w; a

3 a, Z' E" X  q8 |0 r5 j ' i: r4 z+ {/ m
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
, ~0 L1 T9 y5 Y7 K

本帖子中包含更多资源

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

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
3 W6 o. p& j- u# H7 \还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

3 I0 z7 Q6 q, B6 b我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。3 C) m- G8 W3 a9 p: L/ a
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2/ U$ z( ]/ ^) X( e9 m5 F1 v! w
! o8 a  R4 v7 ?, c/ d$ \' G
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
  ^3 L  K5 l5 Y在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
% R. l/ v& o$ F0 w
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:' i( `2 d8 e0 u; L0 G' l, o
root@tl:~# cat /proc/cmdline
7 O6 L3 C. M9 m. hmem=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

3 v% d  E& e4 F! s9 r2 w
: v# t3 G9 m; v/ L我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
, p$ U+ D& w: Q$ @那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!& H5 Y+ m/ u: J: S; G5 l5 p

: Z  N8 m/ k3 X# u以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
& `% _4 U5 k) k, B: Proot@tl:~# uname -a; i( a0 Y8 A% g5 q9 r) T
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

3 a: t" f" P! y7 T. v. W% [
4 M2 s0 b' m, n! |5 B* @ 9 `1 b7 |, k* {
3 W! E' d1 N/ {- b. K' }
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;: Z" Z' t; K0 z4 c0 d
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;2 l; w0 A( u; W* o* X8 O
第三步,重启板子,然后再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:123 }1 n" F+ X; _9 `
第一步,确认你的u-boot版本是不是v1.5或以上版本;1 ]4 L& d$ \8 W' p  B. X
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
% X- S/ H9 ~. ^" M4 `
您好,$ z* f8 T: e$ q' p  |% u1 ~9 B8 ]
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
1 C& n; r( N- }1 O9 M2 B0 N6 G请问这个是什么版本的?
8 _5 L8 W/ B) X) P  A+ b
/ h8 U: ~: P6 I4 N) d! D另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?  e" ?' m+ |5 g* y
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?; K& v  M& h# V9 b
" l9 H" Z$ R0 n& v
还有就是想问一下这个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 的?
. z; K& x( O8 c6 E : `$ ^& P) }) N) ?$ x2 u
问题有点多,希望大神好人做到底,多教教我,谢谢您!: X. {+ [2 p2 L8 R& M
8 t" K" e9 Q" X% c: c; l
回复 支持 反对

使用道具 举报

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;, O4 Y- b" i7 h( G4 h

/ d: M5 z% f5 s5 ^  W5 Q6 N$ h可以根据环境的光线强度,修改摄像头的亮度参数:
$ O4 ?/ i( E6 k# j7 O1 Sroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
* d. `! f+ c; R- C6 T# ^root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 0 k+ q+ d. ?9 C1 M7 \9 I+ \) ~
Cloudy
+ Q. ~7 @% y: F% b9 \7 y
' L) ]; `1 @* Y/ ^* w参数说明:
7 a  w7 m1 S$ {7 T, jlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
$ }1 `' V3 S% X- C
: ~( k7 i7 h/ c. I' [) L" {  _如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c+ p. _+ b# }2 o$ A! `$ v2 p  `' Z
0 ^. }* P6 ~: o1 b- m: }
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 17:27 , Processed in 0.063686 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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