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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,* k* R  p- O9 t' p/ B/ z& u0 i
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入+ O& r: k, Q. x0 Z7 l3 |
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
( V+ u4 ]9 z: g) C/ oroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2& V9 e& F' ]2 V& ~% L5 J8 i
CAMERA capture  M& @3 R1 w/ r& O
input_device /dev/video0/ y7 q8 B& {! `1 p! |4 \1 H
Camera-Camera( [  k* l. G! [
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
7 L6 C1 J& B, ^" cfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
& S" F1 h0 ^4 w' Bfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)  \, k5 X- U/ E: x( u
capture_buff_info[0].length = 41472002 m* S, `- n7 r" {% V# D, i
capture_buff_info[0].index = 0( ^. T# N1 t+ u  w
capture_buff_info[0].start = 0xb6bec0008 E' T5 x* r  X0 ^/ a6 Z6 h6 c
capture_buff_info[1].length = 4147200
7 b8 p  u( Q' p, G8 s$ @capture_buff_info[1].index = 1
$ z  _  C9 ?: E3 m1 Z& c( Ucapture_buff_info[1].start = 0xb67f7000, Q# P3 ?1 n+ m6 |+ I4 a8 U
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed! P$ t6 t" h  `, `( Q3 q
Cannot mmap = 2 buffer
, \9 t( z1 ?! ~* I; h0 ?0 X! N  rError in opening capture device for channel 0

  _, U# H5 V4 z( f  w+ M - Q: B% a$ _+ e8 ^9 r
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!0 g, q0 |0 p! ~2 e, h+ 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
4 ]" X8 u: E$ w( L  C您的还是默认的bufsize的,再检查一下配置吧
, R' K( Q3 |8 f6 F" C. V8 e& ]3 C/ z: c

' c( W2 R3 Z8 a7 [* h8 W$ D+ ]2 z# j  o0 X% E5 O0 }9 ^" V
看一下,我把环境变量打印出来了,这样配置是对的吗?
) {5 O! ~5 t  \- A5 L
' f# d% H, n# x$ r8 K! @) u
& H& r- e+ _$ [$ U* g  Groot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
" w1 M( J( p5 j/ w4 kCAMERA capture
  J! A4 P# c6 binput_device /dev/video0
3 L9 a6 I3 S: F, mCamera-Camera9 |- P" L6 `6 h- R8 C, S5 P
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& B; o1 {6 W- P
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752), L8 Q- i+ }& \+ [5 K  ?: E
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000): o3 V" ?! e4 v* `% O* T
capture_buff_info[0].length = 4147200
6 I0 J/ k$ X4 m8 S7 ccapture_buff_info[0].index = 06 a4 X3 a7 h6 t, @+ F, a
capture_buff_info[0].start = 0xb6b40000( m$ X( X. Z5 f
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd00 W1 j5 F' P' ?* U
[   74.323663] Backtrace: & i9 `1 m; \6 K8 P+ c+ V
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)' `( a( Q  n; W: a
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093) a- y  S! C4 ]
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
; O$ N. C' |& z% D1 v9 K[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)0 Z/ f  Z3 Z  V2 j: ?
[   74.406178]  r3:c71fbd1c r2:000000007 o* H4 ]/ K; [. Q8 ?
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0- L  b6 t( ]% n  o! M# O
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)% A4 o. y0 J& g. ]8 [7 f6 {
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
# U# Z+ s4 j' {! h7 o, A[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180), B0 F% @9 Y( D1 U9 d
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0. ^9 m# d  G. m) q2 I8 v1 m
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
1 x. e. q! z% c2 R[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90' Q8 f3 d5 D4 w8 b
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
- d" \2 B' T8 w. W! k[   74.556197]  r5:c7ba8c00 r4:c72b69a0
" ^# R& n* q3 H5 j1 {[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)  v) q2 D  H% |% _; J% C
[   74.587055]  r5:c71fe580 r4:c79c2e00
) V& Z, D0 Z! P/ }* K9 W[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)! H* a/ p6 h) S- v+ a3 \
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584& i" `- I: E8 H" C' ^" D( N6 P2 w
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
7 X. A. J2 c' B  L" |4 Q0 x[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
$ ]) z0 c( c8 G7 B2 s! w% y[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)' K0 g& u" q5 }0 h7 _+ a/ _
[   74.688020] Mem-info:3 A8 E. R# J2 _# H
[   74.690383] DMA per-cpu:
1 y% _6 C2 i; Y, s[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
) @% u/ a3 n/ D8 x[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0( C3 K0 x+ {0 [
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
( U6 Q" f2 H- `; E9 Q4 `! \* ~9 q[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
) K! E: d" Q* J+ R, q" j7 z[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:7399 }0 v' T9 f6 D# J7 T, Z
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
5 ?; Y0 B/ o* C! d8 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# L* a8 h% Y, y( r; N( ?
[   74.846179] lowmem_reserve[]: 0 0 04 ~! r* ?  ?# H: S& L/ r8 |
[   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' P. p7 |: C; o0 C0 }" P. }: A
[   74.871095] 5393 total pagecache pages/ _! p$ y9 W0 l
[   74.874878] 0 pages in swap cache% \( c$ T: z' E, ?
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
& N  r/ s0 a( h( C8 A% Z% ^0 t[   74.901444] Free swap  = 0kB
# }, c: y: P4 X- s[   74.904346] Total swap = 0kB! e7 e: J0 B0 S, [5 z) |' a" G) O
[   74.946799] 49152 pages of RAM
: l' v6 k6 U* o  B& M- I- a4 ^[   74.949901] 25326 free pages# k2 {' Q* ?, X
[   74.952803] 3366 reserved pages; X5 e. D" R8 R1 O9 G0 S
[   74.966186] 2124 slab pages3 ~" B+ F* A  Y( e* K& ?+ P
[   74.969063] 7387 pages shared& F) W- C$ [& }( X9 l
[   74.972058] 0 pages swap cached
9 e9 Z4 q, k& l; s% I5 g/ p[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
3 p' x: v9 g! m1 T: X5 A  WCannot mmap = 1 buffer$ r; L! f. k! H& a. v
Error in opening capture device for channel 0
) |& T, q+ f/ v% |2 o+ g
7 l- u3 @8 k4 x6 o

5 c  {, _& k5 k这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
& a# y4 g$ w. d( }

本帖子中包含更多资源

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

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. R, {) T5 I) Y9 O
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
6 _1 |8 p4 [/ L% P3 h* E
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。( S. T1 J& ]/ C& T$ L$ F% M) k
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
/ T2 O) K7 s1 H2 Y3 t; ^0 v! M/ N# O* B% W+ D
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
# h5 q/ x5 M! s  S2 o- U在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
9 N2 J9 F) ~: l( ^' W" s7 L2 E4 Z% _
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
8 u3 N5 u' S1 [8 _+ Wroot@tl:~# cat /proc/cmdline
% S( B. v2 u, z9 ]+ q7 amem=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

$ `+ H0 w1 K4 A! G) x4 p : Y, p! w' K# S% `4 F0 K
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
. x6 B- S6 L* }! K+ x& L$ \' D那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!. |3 ]# e! q9 I* l
3 g" D3 y. q, e5 i, A
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助' A# d$ W( C7 a/ X  E0 N( r3 R
root@tl:~# uname -a+ k7 _# U0 J, f# ~- p
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

+ _( G1 y: |3 @/ X$ I, I0 D
9 R& n5 i7 {( |( X+ s ' \( q+ x+ u2 v, z  X+ J  V! ]; ?+ Y
/ o% L" W, b5 m* Z" H
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
# o* D8 d$ m3 ]: B第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
) ]2 v  @& o6 B2 F: t第三步,重启板子,然后再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
& B; g: X1 D3 ]; }' K7 H: |第一步,确认你的u-boot版本是不是v1.5或以上版本;
1 f( r* `& ]& s/ o0 a! _8 V5 S第二步,可以在u-boot里面执行:nand erase 0 20000; ...

' e6 N4 ^3 a5 X3 Z* ?( M您好,
0 _- j" A$ s1 c) r6 I! k6 Y4 l我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf% W  _0 S2 W$ K  v4 ~7 q9 n' Z
请问这个是什么版本的?+ K1 K' q) i0 |" O3 I

) L) x! s5 [- h; N, s: ~! ?另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?! K# y2 n4 i( Q
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
! Q, t3 w4 V% c* p# K
9 u9 R( W( Y4 e1 `还有就是想问一下这个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 的?5 g* j+ g% M+ l: G& n

% X) z' @2 \) }! J, W! H& A问题有点多,希望大神好人做到底,多教教我,谢谢您!
! {$ C" |4 B1 X) \  X. _/ T. G 4 I$ D# ~2 m( B% C  E1 p% @
回复 支持 反对

使用道具 举报

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;
( U. y7 Y: @7 o$ w2 j
' F1 e4 v$ J1 X% [' L8 v可以根据环境的光线强度,修改摄像头的亮度参数: $ h# ]# v9 V+ {$ M8 O
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode , w! Z0 y0 Z+ t! L$ _
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
( c; k+ \$ Q' }( |# ?! w* n! SCloudy
0 I6 L- |/ V* K. X; {; |( g1 t# O8 T; l
参数说明: 5 f* A" q+ Z4 Y6 U1 v% y' P# }; P
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home ; Q2 _# T  E4 x; D0 [( l

; a7 |! T; T% G5 J& i  H( T9 G0 T如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c2 I* Q1 I' j! S2 D

2 F1 \: B! N3 v$ F6 }vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 10:43 , Processed in 0.046323 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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