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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
" e2 Y% X6 w* @7 H! g% {$ r    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
( O# f& r) V  ?+ b"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:6 Y; S3 v/ `3 p# `9 t
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
/ r) m7 `# h1 G9 w& T0 v. u" DCAMERA capture* Q" L7 t* q0 ]' R
input_device /dev/video0; b3 {- z5 ~$ V* T$ Z3 d
Camera-Camera5 k- y# s/ A; d+ h* i) F& R. K
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& \- W5 I, O- {5 S4 |3 g# y1 ]- h
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)7 u* w) v+ [1 [* U; X# q) ?& {. I! Z
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)+ d8 n: z% E6 }2 r) h6 v! M8 u
capture_buff_info[0].length = 4147200$ a: {8 R  p2 Y5 ?4 N. c; a7 }
capture_buff_info[0].index = 0
: y3 `% L! E( fcapture_buff_info[0].start = 0xb6bec000/ [  d8 Y' H/ b6 W1 \
capture_buff_info[1].length = 41472003 ^# E4 e* t$ R( ]
capture_buff_info[1].index = 1
2 @. O7 J8 H% m. V* p9 L1 ocapture_buff_info[1].start = 0xb67f7000
+ s5 g& d. G& [2 `[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
( z  P/ N% m+ z/ ^$ \Cannot mmap = 2 buffer4 t/ `( y! r8 [9 x) k& U2 [2 |
Error in opening capture device for channel 0

0 }* \6 n2 _' i: h. L# l* t/ c% e & H& V: L: w0 C# A3 l. g  i# ?
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
9 I. L3 M5 t- o0 J: {* [* M
分享到:  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( c+ O' M5 q1 m+ O  }, u
您的还是默认的bufsize的,再检查一下配置吧
: r; v& M9 O7 a+ W
" X1 d. y# ]( Y" R

* L& P: k' v& `  `" x9 |' w4 O- }/ H看一下,我把环境变量打印出来了,这样配置是对的吗?
4 i: V+ |: f" C# \( N& s" a9 i; B4 x& q; N
* k8 ~! L1 Y, N9 d" d
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2: L  p- a; u. O. v* |9 V
CAMERA capture
" d. p4 ~& f/ Cinput_device /dev/video0/ d" z4 l% s/ B$ U2 ~
Camera-Camera
6 V( v. f: |1 c# cfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
* o& e& D% s0 L# e7 [4 I% `7 Ufmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)+ a4 L* }$ [, z1 L
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# F3 |; K  ^, |: o3 P: Rcapture_buff_info[0].length = 4147200" ~1 w) |- D3 Q- j8 {
capture_buff_info[0].index = 0
3 N' k3 `3 J* O7 m1 d4 @- Ecapture_buff_info[0].start = 0xb6b40000
( v7 q4 |! F1 o' a+ b: g[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
- A% D9 k: n$ L& e$ X$ K, Q[   74.323663] Backtrace: 0 ~& M; F/ c) y+ ?$ N8 s
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
- Z: S, B5 u& m  @% h. w$ E[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
% f: M# ]# ^0 n[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
- }, i' b# @. |8 ^! B[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
/ f  x! S/ W0 j* J" o[   74.406178]  r3:c71fbd1c r2:00000000
- ?( v$ }3 K( e5 P! _! z[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0+ Q/ w. w; n. j
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
9 k9 Z' [5 V+ t9 j* L, R' r[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
- f6 l; R" [; V' m[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
5 `% W8 s7 Y9 |/ ?8 \5 H' y[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0/ e( n3 H  t: F' X- Q; m
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
) s; ?. z$ ~+ |7 T0 r6 \[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
0 v. S0 W5 J# T" [3 H[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
. J8 ?% C, D4 s6 @: t" y[   74.556197]  r5:c7ba8c00 r4:c72b69a07 U  D6 P7 J- Z8 A
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
, T1 J4 j# s* A2 v% l  o2 R[   74.587055]  r5:c71fe580 r4:c79c2e00. M3 T  `+ l2 Z+ g/ W# M' \& y
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
2 G9 z1 u: r! G  ~[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
5 e  w% D- g' v) i[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)  @. N. {8 u- {' D& k1 n( ?
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
. K! v" |# |7 G& Z- C0 r* B[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)9 E" o$ A, X* a
[   74.688020] Mem-info:( B2 ?5 k2 y+ n& x4 M( ^
[   74.690383] DMA per-cpu:
" ?, e+ N) ?8 w% ]  f& h[   74.692955] CPU    0: hi:   18, btch:   3 usd:  174 v: f2 V& t+ V, S
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0& v. m5 L- i" r+ @) M" e
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24+ i# w0 F9 B# I. o: G  |% U( G
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
/ ?+ L: i: g% u5 T5 V2 E: y[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
, E" F" `" m- Q: V( s[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0, D' n9 `; p1 w- z5 u1 S- i/ d
[   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
# D; m. q1 F/ D1 Q[   74.846179] lowmem_reserve[]: 0 0 0, ^" o# p8 U% m) |4 N' 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) e* M+ e& A# ]1 O1 Y" r/ K" Z
[   74.871095] 5393 total pagecache pages! q* ]; C0 Y  u5 \
[   74.874878] 0 pages in swap cache% D- P& h6 M) `9 G$ g
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0; ?0 s" j- q( w& n8 b
[   74.901444] Free swap  = 0kB
. x, m1 c6 k" T& T[   74.904346] Total swap = 0kB9 a" V( N6 O  x, q" O( |" R
[   74.946799] 49152 pages of RAM3 H0 {1 B; A( u
[   74.949901] 25326 free pages
/ d- ?- E8 Q! D5 d9 I* w; }[   74.952803] 3366 reserved pages- D) I5 }$ u8 u' W8 H
[   74.966186] 2124 slab pages1 ^) d8 v' h6 P6 a/ N
[   74.969063] 7387 pages shared; A  s3 a6 c: A% i
[   74.972058] 0 pages swap cached2 a2 _2 e) D' `+ V
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed& I7 D4 w# E3 l5 x0 }
Cannot mmap = 1 buffer0 D  Z! H2 o' l& ~& C, v; U
Error in opening capture device for channel 0
+ ^% _1 x! w5 C6 K, S

; a5 x6 ^1 X$ G6 w* N' b) ~1 Q 4 d5 ?8 q  K* k/ b4 I
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
5 {$ l; y2 b# l# O5 q: 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' ^: Y: b. `/ |& y# Z( {& w5 u
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
# D' G  i4 @1 h
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。6 M0 \. l6 Y) l3 O/ F1 a8 R
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 28 `  d! K. l/ @

% B) J# \6 z/ M  Y7 K: p我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
0 q6 [: r3 X" O- ~+ Y" W. g在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

4 p4 y1 S5 w' }# D5 v谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
& i  l* H# }8 C; l/ t/ U/ sroot@tl:~# cat /proc/cmdline
9 o6 r( a% W; ^) k; N* Tmem=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
; Q9 C' z% p) R2 R2 E/ E

7 ~8 m! A4 T: U* u我是按照手册上设置的环境变量,为什么没有成功传递进去呢?& I. W" Y; y) m7 p) X
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!3 ^! `+ c; v+ x* ?. C! I
) I2 x! }2 M( E( Q& c- ~
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助9 @* d7 U. e# o+ `7 F7 Z& J5 A, I
root@tl:~# uname -a- U2 M1 X1 A+ Y$ D
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

* b% z. L- Z. G2 q# Z& R5 a
% G8 q0 t# c9 D, n( @2 s
' ~0 o+ R' Z! m- M % I4 h: |0 l' K2 [. i/ E+ o' o
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
  \" r7 Z* j3 t  B0 e. n* Y第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
6 y9 k- P5 m' Z* c$ E1 h; e0 E第三步,重启板子,然后再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
# Q% M5 K* g6 Y+ K6 ]2 f7 X' z第一步,确认你的u-boot版本是不是v1.5或以上版本;8 C$ x+ a, ]. [6 {, u2 a! w
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
3 O2 B( q2 [6 r: G* `' w
您好,
' c) \% N# `3 n/ ]3 M( o& U; P我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
, g. C! h# M. S请问这个是什么版本的?" g" @7 {- {, T& B) n5 a, ^

1 ~# A1 X6 u/ y6 {* u7 M4 N& _另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
9 X) w+ c1 m; ^6 u我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?. B" J2 R. I4 _8 ^; k3 W* l

2 m( e6 ]7 ]- x6 u- p( \0 S: 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 的?
8 \8 @. U. b) M, d" |' M
- S6 Y8 q+ ^9 B0 B* t6 I4 Y5 M* j( P, ^问题有点多,希望大神好人做到底,多教教我,谢谢您!
$ F' S- N# U5 I3 z4 I& }9 E
+ ]& K) h: ]1 M* E+ v
回复 支持 反对

使用道具 举报

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;2 q; t- c7 \" J$ N; _9 I

# N5 f6 u, z$ B+ d. W" [5 s. e可以根据环境的光线强度,修改摄像头的亮度参数: / t' \' Q  J$ o4 ]: f- W+ C2 W! k
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
7 i2 y4 [! n% xroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
! |/ H% f: G& K. h! i( I7 K9 ACloudy # x; a- j% D6 y& S

* ]) o! V0 _" j  G7 @* l参数说明:
9 ~7 Q' Q6 s/ S4 q4 [light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home ; [9 s- l+ m+ M0 I/ v: H

) p/ |& r* j- y如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c" e) A+ l% t) e- F  I( k5 w
9 w9 ?  J; d* o+ F2 G' _. e, j
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 16:37 , Processed in 0.070855 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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