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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
2 u  z5 r5 u3 T+ r: z    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入. _* B. J& H: x$ Z: M% ^; x+ D. g
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
/ e' |" C0 j! I, Sroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
! ~+ I1 z0 W* y! vCAMERA capture8 l/ `5 y) E7 H3 }
input_device /dev/video0& Q1 C! F( @4 w* I+ a' E
Camera-Camera
2 x3 `- b6 t- ^0 F3 \  Z' ^2 {  ]fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)* @$ [4 J& f2 L- r
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752); p8 N: g$ c! ?% ?2 v& w, f
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)  B' {* J  f" g1 b0 A0 S9 `  {) F4 U
capture_buff_info[0].length = 4147200
: O! t3 b/ H* ^4 Dcapture_buff_info[0].index = 01 L& e6 n! a  `- a, b
capture_buff_info[0].start = 0xb6bec0000 l: ]! j  g, O- N
capture_buff_info[1].length = 4147200- ^: ?+ p% F' g& d% F
capture_buff_info[1].index = 11 ^3 ]! _9 Q8 r4 u) Y
capture_buff_info[1].start = 0xb67f7000! e4 B2 F+ ~% z9 x
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
9 X) O6 ^; o5 L' c) P/ g/ i' `; yCannot mmap = 2 buffer4 U! I! j' w: I; |
Error in opening capture device for channel 0

. R( `. u9 j* _) Z8 D
! {, G2 D1 Q1 i1 N  M) m. v" T我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!( h( V2 i( o7 v( w7 k
分享到:  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
% S4 y5 o; ^' ]; \7 R! _; h您的还是默认的bufsize的,再检查一下配置吧

+ n. r1 E+ t, [0 ^6 O
- H* \' N: p+ \( a8 v. A5 @$ Q- m  G# X1 r
看一下,我把环境变量打印出来了,这样配置是对的吗?) `3 b* m- h; |) E1 R

/ n7 f& |8 @8 R# R6 j/ V8 Z# ^6 t
3 Z% K/ V8 q; l5 [* Y' Hroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2/ X' `/ L+ Z% d( I+ B. W
CAMERA capture
5 t+ j, _- R6 \& U) ^& Linput_device /dev/video0! S- F; T/ l' U; \
Camera-Camera" ~% J/ ~! H$ p& G1 j
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
( J( t) Q3 H4 w5 R, a. i! O8 ^: `: ofmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)$ G. ^2 o' k; E" q
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)9 b* o( e9 H2 q( M
capture_buff_info[0].length = 4147200
) i2 E  F: Z/ D; Mcapture_buff_info[0].index = 0
# G! h& Q. C- W3 \( W- Ncapture_buff_info[0].start = 0xb6b400000 G- A# w$ U" }( E7 w. L$ D% {
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0& m* w* Q9 i% o) n0 x: s7 U
[   74.323663] Backtrace:
" J1 K- A& z! _, M8 o+ R+ D[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
* I9 T: @' T8 c' z& e[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
0 J- J. d* g: [8 Q" f! {) p[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
. H) C( h( N4 d7 _9 Q* }; B0 s[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
, b* h  [( Q6 G+ ^0 [( I[   74.406178]  r3:c71fbd1c r2:00000000
  @. X$ m/ M6 {4 r( e[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
/ D9 M3 R$ R  \. z, m1 E7 F) K[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)8 S" Y! ?% H$ r6 Z# @$ }4 h
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)% k* r9 T% z- D2 A! Q
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
# a! Z3 S; n8 z/ w[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
* _) n+ L' B; \& @" z[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
" d; j" h+ h- N! p4 j[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d905 B1 f2 e4 i. I1 t7 Z6 M
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
. a6 n# a* ]" n% J. L[   74.556197]  r5:c7ba8c00 r4:c72b69a0
, `% N% U6 _; s; x$ M( w' C[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
& ~. ^- g- W/ D3 c[   74.587055]  r5:c71fe580 r4:c79c2e008 C' A1 d* n6 V
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)' @2 I" f5 O8 Z( `! ~
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584! m2 o# g0 J& k6 j$ J2 v
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)5 I( r' i( L7 Z3 J# b
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)6 {3 t& K  S* s1 B1 I: D. i4 ^: U
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
& a) R+ f, A/ m3 G. u& ^* l4 A[   74.688020] Mem-info:6 R3 S: ]+ A: _9 Z
[   74.690383] DMA per-cpu:& J2 I' y  r$ a$ G( ^( c" ?
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  176 U- s3 C9 S/ ?  _
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0% [$ W% }" x) ?; F4 c) P
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
8 D) a1 Y; f2 W1 e& D; V: f5 U[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
& N# c% s- f: C: G' }; ][   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739/ }, u! f1 |8 Y# X5 [1 V
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
- c7 S0 F' g* |- G[   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
2 D1 ~3 t! Y% o6 o' m[   74.846179] lowmem_reserve[]: 0 0 0$ b2 u, V5 K; o# p
[   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
5 a$ M2 J7 J+ ][   74.871095] 5393 total pagecache pages
# n3 u. A: X( V, }6 t[   74.874878] 0 pages in swap cache  D1 i! s9 q. D
[   74.896156] Swap cache stats: add 0, delete 0, find 0/03 a4 K# R' e, u0 M2 g, u' j
[   74.901444] Free swap  = 0kB/ v  n7 V  c9 I4 p- ?6 k, v0 g
[   74.904346] Total swap = 0kB
, `: `+ |2 j4 O4 [7 K5 K[   74.946799] 49152 pages of RAM+ C$ U; h2 ^( K2 q3 ~
[   74.949901] 25326 free pages
  h  u; M& D4 o% ]' ~[   74.952803] 3366 reserved pages; w! d! X' C* O! z
[   74.966186] 2124 slab pages6 X6 N5 q  C2 V8 @7 m
[   74.969063] 7387 pages shared
2 _1 I5 @5 K0 n% k6 _! ?  ][   74.972058] 0 pages swap cached: c, C/ y1 _" U; I3 ]$ V
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
  X. P% A  |- l) [Cannot mmap = 1 buffer
, _! D$ m3 N( Z+ }' E; Z7 EError in opening capture device for channel 0

# t. Y& k' T9 y1 [/ Y7 r8 |
; N# g1 J. ^. |2 H4 p& _ 9 }: i) m; a( \  T: A0 E) j# v6 ?
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
' t4 L9 L4 y9 C

本帖子中包含更多资源

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

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( @/ G( V0 e/ f  s$ v
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
3 ^! n7 X/ y4 R/ {2 c: \! X
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
' e( K* @, t  |7 Q& a; X第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
' c- x3 y7 ]' N5 H0 w& C8 N
2 ?5 k1 @3 I: ~" {8 x我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
% Y: v! _# |4 ?在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
( L+ F' l8 Q1 F& m) g" a( p
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
& W9 N, n5 X, Uroot@tl:~# cat /proc/cmdline
8 V4 V+ y9 S; P0 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

7 e2 Q+ {5 |' G1 y & L+ }0 \' }% v( Z) l
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
* h6 M! p7 r7 [- |那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!) K2 l; L1 h# |3 u% t6 D$ @

0 h: c  |$ |! w% i* R3 @$ F7 u: w2 ?以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
8 p. C# @/ y' H! iroot@tl:~# uname -a
. _5 {+ E; n8 y) b, _0 F" GLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
1 }) ~5 {; `6 V  Z# f

, I* ^) L! `' Z8 ^1 b , q. L' x  ^- ~! _, ]0 a
+ q3 D: g, R; k" Y  _# y
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
2 A, E6 w" _' P- q1 i  ]* e: {9 W第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
. N; S' {  ]! N- m: A3 S第三步,重启板子,然后再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, g7 A% |$ Q* h0 d) H+ S第一步,确认你的u-boot版本是不是v1.5或以上版本;7 k& I# r9 s- a, V3 c' O7 H
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

- c; j: E8 ]/ w0 E* F; \/ T  m2 I& I您好,
- h8 y; U1 N5 E  R9 N/ a我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
( U* ^( Q5 P: K请问这个是什么版本的?: r, ~% o+ f7 {

' R1 R+ m) g; ]! [/ C另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?! O4 g! E6 n! a0 z4 \! O
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?* r  Y8 c" d4 W' Y" |
2 P, I, o* F) ~: Y7 g
还有就是想问一下这个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 的?+ h1 K) Q; c; a

; V3 l8 [% a/ A. r问题有点多,希望大神好人做到底,多教教我,谢谢您!& [; W: b  L( q

6 L& ^  t6 ]) S' h+ w" T
回复 支持 反对

使用道具 举报

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;# V2 F# q! U+ H5 U
% y+ d- E# }8 E7 E8 a/ I7 r- {4 @
可以根据环境的光线强度,修改摄像头的亮度参数: 3 w6 o8 e8 R+ d: `$ _+ }
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
0 C9 P9 H* d# s8 j! J5 z( Iroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
7 l( q, S+ o, l3 R! _' YCloudy
" F, p, k% A$ k6 v3 ]4 X0 o6 u! Q/ Z' ]3 e
参数说明: , a2 `- }6 N6 R- M2 f
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
9 a' \. C' H- k* F6 o
4 i9 L2 s+ z# }, n  X4 a如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
) E  d' t" a4 ^" U) C  Z, S8 M0 L$ Y% y% V1 i+ `) u2 n& s
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 06:09 , Processed in 0.045769 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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