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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,% F# ?. C% F$ J- d
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入$ o' G# S3 v$ q2 H
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
& w! A8 L# W! ^, croot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 e/ a- _2 i0 j3 e
CAMERA capture
5 w) b9 A; e" Z8 M' cinput_device /dev/video0: C7 ?$ i, M9 m) J% n9 l! s/ z
Camera-Camera
: Z, j1 f6 V7 k6 K1 p# Tfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)7 J# f! t! |9 y- P2 u* w
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)& q; J: B7 R8 ?" C% P  i* A
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 l7 j+ y( P; [  ~
capture_buff_info[0].length = 41472002 s9 g# e+ P  }( \/ b
capture_buff_info[0].index = 0
3 G4 D0 N* B$ _: z5 O' Q9 E" w4 Fcapture_buff_info[0].start = 0xb6bec000$ S( |: u) A4 r* E/ W
capture_buff_info[1].length = 4147200
4 f( S9 Y, o/ l$ ~9 ~$ lcapture_buff_info[1].index = 12 b/ W' b1 }0 g5 x' k2 B. }
capture_buff_info[1].start = 0xb67f7000: G2 a8 [3 @' E7 p6 I
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
' I( c  T7 D7 A& F2 ICannot mmap = 2 buffer8 D% o& O  P7 H( M5 x0 ?3 P
Error in opening capture device for channel 0

2 K8 J8 C7 C5 i8 s7 o * E0 |$ {" F0 O4 O& f+ w
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!' B' Q$ k9 h9 ^5 K- W
分享到:  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  u* {% j! ?+ j2 y! v) n/ X6 }
您的还是默认的bufsize的,再检查一下配置吧
- t' ?+ s0 g% ?) ^

6 H0 S1 |# o( D
0 c3 |2 s1 \1 H7 n1 e看一下,我把环境变量打印出来了,这样配置是对的吗?9 e/ q* B- w4 T* h2 D1 p/ z0 i

2 m6 D" G: A, A* k
  j2 \, K' O1 p6 Z3 Iroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
$ W1 S1 |9 J  U3 Y* ACAMERA capture  a9 D$ \: x2 x3 F
input_device /dev/video0
- K1 X' a0 O5 D- ]& FCamera-Camera- L+ {5 E) b2 Y! P- ~
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
+ K3 G& V: m) V) S! h$ ]% j' rfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)2 J2 J, C3 F7 P. B8 \
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
/ B* w, _$ s7 W  l2 a8 L: Vcapture_buff_info[0].length = 4147200
1 T4 N$ D% ^! f5 b/ y+ _capture_buff_info[0].index = 03 K  J8 e- J2 X/ Z
capture_buff_info[0].start = 0xb6b40000& M( d1 I) h: H9 U9 E2 I
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd09 @5 F4 F( x6 g5 \3 X) k
[   74.323663] Backtrace:
6 L) n/ ^- B4 @. C3 w, s; \[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
7 w7 i& {" ~. Z! N+ F. U3 R[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
% }/ J2 q1 G+ \: S0 G+ f[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118); O9 i8 J5 s$ V$ S% r% `
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
  _: E9 k, m: I  V[   74.406178]  r3:c71fbd1c r2:000000001 q, g4 }# C% q8 _& D- s  L6 K
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0$ n7 K0 |  O3 E5 R0 R
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
1 x0 v# F5 H6 i! r6 O[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
; G  F5 X# x& f- l0 q6 `3 v[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)% [( f! {! \( n
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
1 |* w: R3 [0 L% x1 J% F[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
  x9 o2 d9 w6 ~0 w[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d904 S% t1 {0 B9 `$ s# Y7 p
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)) S( u# r. _0 E1 H) o  j: X
[   74.556197]  r5:c7ba8c00 r4:c72b69a03 V; y) }7 X& O3 q& [/ m6 G5 `+ J
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)1 p/ _& I: h! x! r9 [  S
[   74.587055]  r5:c71fe580 r4:c79c2e00
: }2 B* X7 z1 T. ]& A) [$ h[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
& A- W  O6 y9 ~9 [4 |6 L! Z[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584% b' R) m) P) }
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
& j1 `% |: `$ H1 }[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)( U: z5 d* w" I5 ^9 U' Z" e. Z
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
/ o$ @  Z0 a7 x3 E" Q; t3 f! W# e) M* T[   74.688020] Mem-info:
3 D/ w" S9 e  G[   74.690383] DMA per-cpu:+ H9 _! |7 u5 Z' U
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
) y0 ~$ k' A; X1 b( s- d- P[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0. K/ E* ~' {6 r! U
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:243 u/ C* \5 f- S; Y! s
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
4 n  ?# s- T) T9 h[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
% I+ F8 l+ |( O& W# K, ~  `- m[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
0 j. T3 ~  C5 X: L: Q2 N5 H6 T- U( P[   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. l9 m" c7 B9 P$ U
[   74.846179] lowmem_reserve[]: 0 0 0
2 F$ k! z. c; u6 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 = 42616kB% C5 d5 `2 i5 y: K
[   74.871095] 5393 total pagecache pages# E' o# y9 t  u! [, t
[   74.874878] 0 pages in swap cache
3 H( P# O% X  x# c[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
* N9 L+ B# T* h( }$ k1 H[   74.901444] Free swap  = 0kB
' y% t6 ~2 ^2 c, s9 S[   74.904346] Total swap = 0kB  n) o7 X1 ?/ M6 o  @. {; w
[   74.946799] 49152 pages of RAM2 {5 w- t4 H; d5 K; [# V
[   74.949901] 25326 free pages
: a" P4 U) w7 ?! E' D% R8 V8 T, W[   74.952803] 3366 reserved pages
0 O& g# X$ u  t8 `6 O( k[   74.966186] 2124 slab pages3 C8 d( `( x  p
[   74.969063] 7387 pages shared6 Y( f5 U3 H' F3 v- p$ k
[   74.972058] 0 pages swap cached" `+ n8 Z+ e$ h
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed7 \+ N5 L* t! I) J- s, m
Cannot mmap = 1 buffer
3 |: k3 n+ C7 }% }" o4 fError in opening capture device for channel 0

1 F$ e% t$ H/ _; B ( N* F" u5 ?/ d6 K

- T& F8 I) }: v- Z# [: F# \5 N这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
$ Z% q+ y. J5 @" C( ^  z

本帖子中包含更多资源

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

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& `  I# m% P% i+ H7 l
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
- d0 s- I* ?8 K7 l  f6 P
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
& I) s  ^! }; {- d第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2( ^' ?! W: {* U, x

( d2 T! X' n/ ?8 ^我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
5 c: w* z* C7 g, w  a在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

" k) ~* _& |4 c4 R4 `谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:3 q" F3 I* k" _1 e  S
root@tl:~# cat /proc/cmdline
, j5 ?6 f+ k1 `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
/ g% m( u) z! A0 J

+ ]; g# i% l* ]- _( @, J我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
1 h6 B, _& V# a3 X% w那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!5 c+ w3 E4 K: r. K$ H3 s7 K% L
. a- I  \. E- w( @2 H; s
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助8 o; C( \: b3 j: T! T
root@tl:~# uname -a" A2 }; z9 {6 K+ S4 p0 `  T
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
3 Z+ ?4 h' _2 I! W6 k
% j4 _% e5 H6 \
/ B0 A8 v; g+ l3 `: r. |- Z
# d6 F; V- t+ C" d# @: J" T
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;- ^- E$ G1 b! t* @
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;; E! K' o2 l/ l
第三步,重启板子,然后再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
& w& X' v+ T* g% b第一步,确认你的u-boot版本是不是v1.5或以上版本;
, p! b4 H& o( l2 R% b第二步,可以在u-boot里面执行:nand erase 0 20000; ...

5 y) E* Q2 n' _- v- r您好,+ a( Q1 y1 M. `& K
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf# X# ^  M$ g/ ~) u
请问这个是什么版本的?
3 C! {& }7 b7 B' x) y. b" W
; Y( t, d! m8 N5 Q另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
0 O  p8 s8 l! ~& y, H+ R% a2 u; j我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?( r; ?: a1 e7 L9 Z9 a. _6 j

8 x% M; z% V* j4 m' C; `2 |还有就是想问一下这个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 的?
$ e5 B  f: ]- u& D5 Z . c1 E' I/ H' `2 E, I1 E, @
问题有点多,希望大神好人做到底,多教教我,谢谢您!+ w1 G& n+ y0 a

- ^& H' X1 j* H
回复 支持 反对

使用道具 举报

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;4 h, ^! h0 k% q4 r
. B& {$ @, z# c8 E. F+ J
可以根据环境的光线强度,修改摄像头的亮度参数: 3 _* @" X; b2 \. w
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
; I- N, {! ?" k% L/ Croot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 5 K6 ?5 Z5 F/ A. U3 j
Cloudy
' r- e8 ~7 H) a2 f+ }/ U5 W/ ^- X6 M2 Y  n$ N" R
参数说明: : R$ H# b$ H/ F2 j2 v4 ]' ~: `
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
+ x5 M1 B# D* h! m. L
  i9 _% n; g5 A" @. u& V: ^如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c9 ?6 v0 E% b0 S( i7 f$ `
6 o, n0 r  F) Z  g
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 16:36 , Processed in 0.048108 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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