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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
! {( M- }' I% S& b    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入6 H/ I/ x  t' V  k; I
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
2 w2 d6 R" D' Z! `% B7 s/ I/ eroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
% I5 F% v6 G( n$ _4 ~) oCAMERA capture- w) `( G) f% f& }1 e/ u
input_device /dev/video08 ^2 p7 L3 \* o) [
Camera-Camera4 S* B+ M( T2 W
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
$ i+ ^2 ]  Z7 D  ufmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)9 \/ @' O: X& x6 R. N* [4 ~' c
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
' H! I+ I8 V6 u4 A7 u# Ncapture_buff_info[0].length = 4147200
: ?3 {  A: \1 F8 e, N# wcapture_buff_info[0].index = 0
: G/ b1 D$ a) T: c9 U, jcapture_buff_info[0].start = 0xb6bec0001 t* O& i( B( X0 D, b
capture_buff_info[1].length = 4147200
3 X: w* h! C- x' [1 }1 X# @capture_buff_info[1].index = 1' Z) c% p+ L" A; w
capture_buff_info[1].start = 0xb67f70003 s! D/ z+ t3 B6 O8 Y
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed$ ], y$ [! ]  B% J. d
Cannot mmap = 2 buffer- d3 ~0 H$ U5 ^) t9 z* Q/ i, c
Error in opening capture device for channel 0

/ l4 h, C0 A6 h$ s- r
; _) ]$ P/ {$ ?2 W7 B1 R1 J我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
( @- ~# A7 K8 E4 {' S
分享到:  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" ?( k8 O) g. ?5 O
您的还是默认的bufsize的,再检查一下配置吧

% U7 ]  Z! g9 F0 W0 e9 P6 Z
. D2 E' K  H! U5 o6 q0 `$ w( h2 K$ E. Q
看一下,我把环境变量打印出来了,这样配置是对的吗?
" a" x* R' n- `* ^3 X" e
. T/ i/ K7 F! l  g' p2 p3 e1 I0 R0 _1 v! N2 N3 z0 i' D
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
2 u) p5 ?9 ?' I, {CAMERA capture
; ^: \; H* ]1 \5 M" [  linput_device /dev/video05 P' B$ ]8 U; {  p- I' p4 `) ?( ]) s
Camera-Camera) u$ A' |1 j# m) d
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 c4 W" y9 c5 M+ Y
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)6 V) |0 Y$ P# Q5 u+ I/ R
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)' }7 c" w, d1 u1 Y% Q% ~5 ]3 k2 v, ~
capture_buff_info[0].length = 4147200
3 Z: G2 F2 ~2 Kcapture_buff_info[0].index = 0
0 t& a. U) |4 l( t0 Mcapture_buff_info[0].start = 0xb6b40000* m2 {  _* I$ f7 s3 z# L. K% D
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
- {- l% N/ X: ^[   74.323663] Backtrace: ! z% a9 D* t7 n" q3 `
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)( f" d# o2 I3 w: A2 W, E7 @
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000936 T. D+ y/ ?3 t7 ?
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)' m" u; a9 K5 O+ G( ~& P: w1 c  m
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)& _. q" \9 ?3 [2 ~
[   74.406178]  r3:c71fbd1c r2:00000000
  V! _: m$ F+ R. c[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0! J" ]8 _2 |% ]: l, t
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)( [5 E5 p" C/ K
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)% A: Y% m2 k! e+ ]) f4 d
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
7 J/ D4 d  O' J: g[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
* K; Q3 ~8 J( e6 U[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)3 f' p- ]6 o: G+ Q6 O
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
+ t, j1 Y' m! Z" o6 z+ ^[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
* N; Y8 I& q: q: K* x" |[   74.556197]  r5:c7ba8c00 r4:c72b69a06 D# D/ s6 e" w2 n4 v
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90): {. y/ s7 s! a: S, @* z
[   74.587055]  r5:c71fe580 r4:c79c2e00
/ t- t' j+ I& V% k[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)2 C1 Y* V* Y* L6 I
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584; ~# q3 M/ r  E8 i, c
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
0 {4 M3 \# a$ B2 t7 B[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
- P1 h2 g0 _* {3 w0 y- V2 b) y[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
" Y3 g) T- D2 `5 Z: V- _[   74.688020] Mem-info:
! P* m7 r- I5 h" V5 q2 p4 h3 \[   74.690383] DMA per-cpu:3 s  Z8 I* a! ?' H6 z
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
9 K- z* p' y3 z0 b) J[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:08 l  ]  E% G7 p/ r& F. E+ _! E
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
; c; m6 [/ }1 u8 Y. T9 A[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:01 U# C- `: L$ M# i7 E; b5 _
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
6 w3 D7 U' x8 G8 |2 v[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0: m( k! w$ [- b  z- L8 ]) r
[   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
% i- `3 |/ b6 }- S5 z6 S[   74.846179] lowmem_reserve[]: 0 0 0# H) O- Z; H) n% U' Z7 K0 z
[   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
1 D' g! a9 K7 A) ^[   74.871095] 5393 total pagecache pages1 ]4 w, e9 n0 Y% T3 S) F
[   74.874878] 0 pages in swap cache
# M1 j) @5 Z( T+ W+ Y8 d( ^[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
$ c7 E% K8 e3 g# i[   74.901444] Free swap  = 0kB
) f' i! \9 }4 l3 x: T6 c[   74.904346] Total swap = 0kB
: b- f9 i3 E& s8 L: c[   74.946799] 49152 pages of RAM) X0 B9 `: V# x4 C0 ~# k) U
[   74.949901] 25326 free pages
1 ]4 J. B# A4 Y1 j  b[   74.952803] 3366 reserved pages; b! |  k& Y+ o* i$ m
[   74.966186] 2124 slab pages( `8 J0 {# n0 h6 q; t! e
[   74.969063] 7387 pages shared
! m( S1 @  q. A( `% [$ q' g1 J9 F' X[   74.972058] 0 pages swap cached$ X9 @2 O5 f) I
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
! ]& Y& d6 A4 x. s  TCannot mmap = 1 buffer
( i% F6 ~& k" Y8 r" GError in opening capture device for channel 0

' x8 Y2 I2 w% \3 v3 V & u% H/ {; y% m2 O  t# _% U

0 a5 z5 N9 ^+ P9 o这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
" |: P7 T5 X( N% \- C; s. t

本帖子中包含更多资源

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

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" Q/ M  T+ A( }- o) D
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

8 P% T4 H/ m  M+ {我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
, z; N6 ?; S: H2 s第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
5 _& s/ r4 g: d5 m9 U% w
5 C# v  A. `" u1 \' 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
& L# _  T% V% W5 g在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
) D% H9 X' f, T) }
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:- m0 X/ g4 `! r; d
root@tl:~# cat /proc/cmdline
8 }& X5 w9 ], \! v3 [& B& l! ^0 umem=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
/ U8 i' l) U8 O) s
# p: F! t: A$ z" u: |; S
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?# h3 r, C, g4 o3 G
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!- ~1 o) C: E2 Z1 d' M; x

. R) w) d- r9 h" a$ v  Y2 Q以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助$ d) K1 d+ W% _" x, g/ Y
root@tl:~# uname -a1 O: f4 [3 g% U' j) S) b
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

+ q( m( H' A) @$ [1 |: g" h6 Y5 D
) C, m/ z; r5 _ * u! x. s7 l$ x
! E0 |! o8 _0 M+ m# H% S8 o1 \
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
# W, i4 s% i6 p! H  \" L" b# h第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
* k# E9 D5 J: P5 G; N: h第三步,重启板子,然后再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
8 `" r# a) E& L; p" @/ G第一步,确认你的u-boot版本是不是v1.5或以上版本;
* R- |2 g! q+ U" G7 J; r第二步,可以在u-boot里面执行:nand erase 0 20000; ...
+ _. P1 H  _1 |: I0 r+ Z" t
您好,: J2 u# I; ?# [8 \( R' f, B
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf/ I" o: _+ o) _4 ~
请问这个是什么版本的?5 |6 p) D/ i2 N: `  b$ m2 p: C

0 v# r+ F* [" j+ U' G, g9 a另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?7 B* [4 z) W9 w% L6 J; {$ n6 j. Y9 x
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?5 ]+ x7 I6 d2 c+ b0 {% {
! o, ^. H  A8 j0 p  U2 Q% B
还有就是想问一下这个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 的?) h9 f* x8 y  g) l. ?' d) n2 ]2 p: \

8 e# ]* j9 U# a. z/ `$ h问题有点多,希望大神好人做到底,多教教我,谢谢您!
0 V5 R, Z/ B/ H6 Y
  y  t6 L+ [! r2 C) O
回复 支持 反对

使用道具 举报

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;
1 Q5 Q6 J& x8 o( N: o; g( u; D0 \* u) `% c$ f
可以根据环境的光线强度,修改摄像头的亮度参数:
4 R8 F# B$ o+ B9 }% s2 Croot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 4 O; K! m2 S9 w
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
# |2 @- E+ C" {  D! e+ ECloudy ) m! r! p& Y9 R; D( S& N/ d2 p& c3 N

5 U2 U; v& W/ c$ o  o( \; F. [参数说明: : ~; E$ k. `8 N0 j) J( A
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home / I" }# s' p  q
8 ^' t! H% \1 w( [/ M
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
  M3 v9 G! |' _% B; C" |( T% Z% F! e; v4 d5 H
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 11:46 , Processed in 0.046025 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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