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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
0 f( l9 k" y0 v: G2 ~7 \3 T4 I    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入$ d+ N1 ]: y. x% e. S: U% W, Y
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:3 f- y0 B, x! x$ C2 ]/ ^
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 j9 Y  n/ k& N6 y5 U
CAMERA capture
1 t: @3 t/ n5 Z" @input_device /dev/video05 F/ L* [3 B9 r/ O
Camera-Camera
/ l" g+ |6 `) l; Z3 r3 c' kfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
' f0 L, f4 N9 q7 X' `3 B8 wfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
; @3 W5 P4 K) b0 ?/ \! _fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
+ g7 T/ V# ^% f. Zcapture_buff_info[0].length = 41472009 {  |1 i( D2 Z* }
capture_buff_info[0].index = 0
2 m* x& i2 n; @1 {, Xcapture_buff_info[0].start = 0xb6bec000
/ F5 R7 D5 [- T" Y/ h) bcapture_buff_info[1].length = 41472001 r7 }4 F0 i6 e8 ?6 ~. o0 x
capture_buff_info[1].index = 1
1 [7 s& b7 Q$ g0 C. q, U" d+ Vcapture_buff_info[1].start = 0xb67f7000
/ E! n4 U+ `/ }[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
: [; n! ]' O1 r$ q/ l9 Q8 PCannot mmap = 2 buffer
9 z- }2 m, l' [; `/ XError in opening capture device for channel 0

' ?$ B/ A2 t: x6 Y1 ^, o3 w0 z, `+ C( W 6 {6 l5 j! }8 j/ e  S" O
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
, n0 z+ [( }$ j+ a& B7 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
: i/ c# P/ X9 {+ R$ T' S% r" X您的还是默认的bufsize的,再检查一下配置吧

" v" r5 E* |# H% b5 q% v- |+ h5 j7 Z; b3 h; p0 S1 H
. V% W* T2 v0 ?
看一下,我把环境变量打印出来了,这样配置是对的吗?& V1 n( l/ |) M4 {1 s
$ o* [3 {; [! t$ \$ y

! e  S' n9 \) ^2 Y& ^* q& uroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
4 A1 `/ ~3 i4 A0 _2 ?CAMERA capture
6 y$ z& l! u3 p7 ?4 R6 Binput_device /dev/video00 v" w4 }! u; _! |: d3 s
Camera-Camera# V  X, b2 Y. K+ f0 d
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
' ^7 d- |' E: pfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)% x7 e" G2 m$ ^: \
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)$ [* t9 c$ {% M5 C/ G4 z
capture_buff_info[0].length = 4147200
9 ~7 q& c+ B3 O8 r! R' \capture_buff_info[0].index = 0
  a" S( M# k/ ^/ a$ Z" Ecapture_buff_info[0].start = 0xb6b400002 W2 b3 X0 Y9 ^. W
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
! i& [8 p4 K5 @7 Z$ ~[   74.323663] Backtrace: 4 l9 ~( s) E; h) p0 L% a9 D5 \
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)+ g) w6 N2 ^8 h, ]
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
4 N6 v6 u( }" i. ?% a. w  @# _/ i/ g) b[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
8 r( g) V+ J4 s. ?( a9 A9 B[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
% {. v8 e& t. D" o[   74.406178]  r3:c71fbd1c r2:00000000" C  `& i' ^' ~2 V* e+ _" L% P
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d07 v1 z6 Z  e2 O2 I$ w2 T) N
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)* ~* m( Q( {, B! n; `' c
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
0 {- d4 E; a5 }& _7 \: e[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)( e# C  j5 E$ r; ~7 `: ~  k
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
" V# \# G. U' `4 s* j4 I[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)1 t* B/ z$ f/ Y" a  W4 D9 b0 F
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
9 c' l1 \8 j8 Y, C9 O[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
: D. {9 }0 }' Z. M[   74.556197]  r5:c7ba8c00 r4:c72b69a0
' w7 P4 n! t2 k" }- c$ q" P[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)* T% Q: I. j- M) L# D% y5 J; R
[   74.587055]  r5:c71fe580 r4:c79c2e002 a5 q9 t# T0 v& C0 x0 \- L
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)& `" _, F( {7 u4 A2 k
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584( |7 B3 U: g( r- E1 J
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
8 C% f, o3 `0 {! t) r[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
* O7 _; t0 k+ f" g- d2 s# {[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)( S; ^: o% e( I# m) G
[   74.688020] Mem-info:
* u$ O5 {; O, M+ M4 c, X$ H[   74.690383] DMA per-cpu:+ m/ Y% l' s3 m
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  174 X. [; \5 H& B* T2 Y: N. ^
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0* m  M& q. f8 R& E7 }7 u
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24, F4 F% m" f- U2 F3 {
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:09 O7 c( L5 }4 t1 ^4 K8 E
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
* v* n) h7 X  J) l' F0 @3 s3 s- l" \[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
5 P  X: k- _+ K2 F6 ^8 V[   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? no3 C' W& f  A2 H5 g! ^: Z
[   74.846179] lowmem_reserve[]: 0 0 0
$ G: O/ O  k# k) A- t[   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$ ~' c! U' j% a( ~& U
[   74.871095] 5393 total pagecache pages
9 E9 ^. w/ ?' v2 q2 K& z5 `% t9 ?1 v[   74.874878] 0 pages in swap cache: j" h  s7 g  M) M4 E
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0' v/ G9 u% \# L/ ]- x3 g0 ]8 v: O
[   74.901444] Free swap  = 0kB9 }$ d- m  w0 J1 H9 f
[   74.904346] Total swap = 0kB0 H, N: G+ Y' }  @
[   74.946799] 49152 pages of RAM
: k2 f) ?- {( V5 e5 T9 g[   74.949901] 25326 free pages0 w( ~. ^) |9 \; U9 T
[   74.952803] 3366 reserved pages, H% t2 k: K  e/ v/ y
[   74.966186] 2124 slab pages
# E' k9 @  K$ d( j[   74.969063] 7387 pages shared. \, w2 q' l- j2 K( b6 M1 Q* t% z
[   74.972058] 0 pages swap cached. i% Q; |( i% I& F: G2 ^
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed+ o" w: J  ?6 Y: C; e  ~
Cannot mmap = 1 buffer
, o5 u1 D4 ^+ S3 [5 G" LError in opening capture device for channel 0
# `7 J, z$ v4 N; q
- @. b& y% j1 Q- D
& y( K+ u! J( ^/ i& N
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
8 v1 C- m( h6 u7 ^

本帖子中包含更多资源

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

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
" `0 d! ~. w. n4 O/ `8 w还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
+ g7 e$ N6 |6 }1 g( C# d$ U* |
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。7 }; b& O! n. T
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2: F$ Y- E/ [9 I# |, Z' Z
  U; W$ `, F& R4 l2 z) s' \
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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& i, {, u1 J+ z0 |0 T
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
+ R1 b' W" N& Y$ x2 ?
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:$ G8 i4 b# t+ K1 I/ A
root@tl:~# cat /proc/cmdline
" ]+ H3 l8 N& c! Fmem=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
$ F% U2 m# a# p) Q$ i
1 @& Z4 z" F3 R0 @, K
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?5 k% s5 C( j+ X
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
) Q+ @& W" Y- f ' x* c- |! K6 Q9 Z3 A& `" s
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助8 \% ?+ I1 a( x7 d  v$ x* f
root@tl:~# uname -a6 A5 R  ?: i! m: z  M7 }
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
# S: C& O2 Z9 z& p& E5 y- Y1 D

! j; P; J0 Y, I! P6 D- ]* A( Y * f. H. b- f  u5 K: H+ K
& g! S$ T. J% h
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
& G$ h& u. n6 [7 \第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;( |) k4 L$ z6 s: ^7 g8 G
第三步,重启板子,然后再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: Y3 L) g( `0 L7 Z( q! q3 b8 s1 n
第一步,确认你的u-boot版本是不是v1.5或以上版本;
9 E4 U- m7 A1 M3 ^# c" R& T: e1 a第二步,可以在u-boot里面执行:nand erase 0 20000; ...

; H) S! t3 z. k您好,
- l7 Q' I; b& [我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
3 Z5 f$ i, `! l! S% j请问这个是什么版本的?2 q/ `/ r  o' X$ M" j4 i# d( F

% ^' ]6 f( }: t- }另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?- W5 f( ^2 x8 D
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
/ M: `& k* }0 D6 ]. k: d
0 e( {; }+ l# S还有就是想问一下这个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 的?4 q0 R- }( e' X, B( ?

* C' T& o0 V1 @8 [问题有点多,希望大神好人做到底,多教教我,谢谢您!$ N# V3 [& j' }# b5 ?$ ^: \: R

# |& Y' r+ M8 I0 y8 Y. o- S
回复 支持 反对

使用道具 举报

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;
' g2 B# w( F) B5 S3 U
* P& R7 ^; t+ }& r2 B+ P9 j可以根据环境的光线强度,修改摄像头的亮度参数: 0 T, `0 M3 p( U, O! R
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
+ S1 ~% q+ h: v1 H3 H( b/ }! J4 {root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
% g2 a3 y2 ^" ECloudy
; |* n5 D& O! M2 Q$ u8 m) W
, ]: M% g) V+ L) }参数说明:
- G0 M1 o( e, ^; plight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 4 @( n$ f9 v4 T! N

) g2 Y: g; [# _如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c% x- Q" c  F$ [; S: s) V

# N+ \9 v  `; M0 vvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 23:28 , Processed in 0.043695 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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