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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
# r  R  W# _. s( E7 L. I    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
+ Q, ?% B" {7 |( ?: X+ K2 f. y"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
; [+ `( O# |' x( |6 i6 wroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
3 f( T, o( W% k$ z: \! H$ k& s: aCAMERA capture
5 m$ x8 k" L& U% U  sinput_device /dev/video01 G9 w; K- p: [; k. j. Z3 @
Camera-Camera  y! p# \( v7 U! T3 k2 P/ ^
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
( F* y! I! {4 w, z1 _* Y4 tfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)8 r1 S* E! a2 m' F1 o6 [
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
0 o' F  f* ]" j4 E! G/ [* Lcapture_buff_info[0].length = 4147200) ]% ?; {. |1 y  E* I) G1 d
capture_buff_info[0].index = 0- @4 O3 [  N( q/ B
capture_buff_info[0].start = 0xb6bec000! q( z% L0 [" h+ }" E! r
capture_buff_info[1].length = 41472003 P' \: n  B2 k& P
capture_buff_info[1].index = 1
( h! j; Q- O0 h  `* D8 b7 Wcapture_buff_info[1].start = 0xb67f7000
% L) U0 \8 ^0 Q. k8 D, o[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed! \# v+ G! e: a( u. E
Cannot mmap = 2 buffer
- \# ~9 H3 i3 tError in opening capture device for channel 0

/ @  ^- E* \6 t. U9 X
( m9 T& T+ }' R9 `+ z1 ?& A) i我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!6 l& o9 p% W8 t" \; _
分享到:  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 F4 b) Y, F* t9 `0 r2 b) U您的还是默认的bufsize的,再检查一下配置吧
8 b/ ^! o( C6 D& j$ `9 }4 l% `# f, U- K
6 |2 k" Q6 @( v, `

9 M/ g2 n% D* U. Q" Y0 s看一下,我把环境变量打印出来了,这样配置是对的吗?% B" |/ ~) ^/ H: ~- Q

( g; l  k- _: D; s8 f6 L2 B
- V; X0 n' H, j. g) y( z/ Croot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
1 N6 O3 F6 a0 b+ ?! {CAMERA capture
1 ~, V1 f6 M! }! f0 S/ S  p. Jinput_device /dev/video01 y# [5 e8 U- {+ r
Camera-Camera
( y' @9 f8 O' `; P9 jfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000), j) A  A& }3 x7 u4 d
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)( x' r" a$ s3 N) @' V
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 p7 J% u4 z' n3 d& ~9 a
capture_buff_info[0].length = 41472005 N) J0 v. B' n/ R+ v( N
capture_buff_info[0].index = 0% _5 z% w$ y8 y5 I! S0 W" B0 M
capture_buff_info[0].start = 0xb6b40000) x* C' q4 W4 d, W# T
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd03 ~, f9 b  ?" v6 ]/ F: L
[   74.323663] Backtrace: , H. V, t) s) Y  R6 s/ e9 q
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
" l) C6 p0 ]4 }3 ?1 s! f[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093* }  }+ h% ^9 @9 P6 E, o
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
# D4 F$ Y8 s" w! B[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)4 u  n8 ~0 f2 k" w' i9 l! H1 ?
[   74.406178]  r3:c71fbd1c r2:00000000
% n  G6 g' k- h& m$ A[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d04 g; v' m6 t4 R1 Y
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
* ~3 X  B6 U) ~1 t6 F; q0 {, `1 P. o[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)4 G1 p/ a! C/ h
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
' _- I7 ~6 c( J) Q& P[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a01 }5 U- X$ j2 t& L! E% A
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
7 z/ }* v" S9 \4 U[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d905 }& R4 S& H7 `# v+ I2 ]
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
0 M( o3 R2 `# p2 F' M9 N[   74.556197]  r5:c7ba8c00 r4:c72b69a0
( w9 X# B9 J1 g. x  y[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)$ x4 Z& C1 d2 V" [1 f# H, L4 ^, ^
[   74.587055]  r5:c71fe580 r4:c79c2e00( `8 J$ m3 e) w# r
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
' a% z5 S! c5 `[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
4 S; k4 u6 \) `[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
# B, q+ Y6 E) C0 V[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0); M! S$ r0 a) Z& T. q
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
  n" [  }# ~! a1 t[   74.688020] Mem-info:
$ g3 P/ u7 g4 i. F8 `[   74.690383] DMA per-cpu:9 h% G' ?% Z3 @: _7 H7 r% H
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17# n' ]# z- ?3 F3 [
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0# J/ D2 H7 E8 W# M& K
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
3 u+ }& }. R! z% P+ e# K* |+ p6 Y& E[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
6 f# U; u* w1 J' R' }4 v- O[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
, [; _# L! ], q: |' \[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:08 |- F& U$ Z' U( P7 f& T
[   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
4 w& p; R  r/ c8 H[   74.846179] lowmem_reserve[]: 0 0 0
9 }' C3 t$ W1 R) `[   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
0 v; o0 o6 I; L* Z- ]% X1 n[   74.871095] 5393 total pagecache pages8 Z1 m. y: ]2 w; p% n, W
[   74.874878] 0 pages in swap cache# O! M+ ^4 h- F( e0 O
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
/ |4 B4 h, l0 P& L$ z9 J[   74.901444] Free swap  = 0kB
) T- n2 \7 G. O' L# s, m[   74.904346] Total swap = 0kB
8 p8 K) b( C: I[   74.946799] 49152 pages of RAM
8 L( k# j- d8 _+ H' \( {[   74.949901] 25326 free pages
) i  \. f1 a  i& j( x  C, K1 @: Y[   74.952803] 3366 reserved pages
3 b$ k7 p# P% _8 D+ V[   74.966186] 2124 slab pages
) w8 C/ f( e; ^8 L3 n6 g$ U[   74.969063] 7387 pages shared
1 Q) J, t2 g- V# q" M[   74.972058] 0 pages swap cached# o. D. U% v& B6 G+ k, M
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed+ O, G% b$ Q; g
Cannot mmap = 1 buffer
% l) W" c7 \/ G5 d: nError in opening capture device for channel 0
" T0 R8 g8 t$ d2 X
: D( g: e) b) c4 z! e/ l, l+ \6 z- z- T7 q

0 @; j7 Q1 A+ p. o6 w) \这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。" L4 |& A7 S' Q1 X: |/ a% J7 Z2 j

本帖子中包含更多资源

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

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:325 D' k, Q) M3 p& A% v! H
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

: `. ?) j! x# e7 b% Y我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。6 i: x# \  d6 m+ v) ]: J/ d' n
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 27 m  ^  [3 g! A  k: B3 ~# l
, M9 h" T1 ?( F
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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, B# r* b0 a  Z, c: G& L3 @6 V
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

& K. Y  {  d/ i$ s3 H谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:: Z6 V( F& U/ x& Z! b
root@tl:~# cat /proc/cmdline 3 o5 G/ I% I8 {( U9 m6 J  Z! d
mem=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

" W1 o4 e0 i$ f9 X7 S4 ?/ l! L5 ]' W
2 X6 }9 V) `; I我是按照手册上设置的环境变量,为什么没有成功传递进去呢?  Q& S. n; K- M' s. ~  i$ D- T) y4 ]
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!! V0 `. w/ t: m
! Y6 F0 j1 v& F7 c6 g3 P
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
# g+ c1 U) {7 f" E) groot@tl:~# uname -a
9 o2 K. C5 S5 KLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

) t! N+ W( ^: g* X9 L6 O) z8 P) ~
' H+ j' S2 N2 \; ^ 4 @, c2 V, \# i+ x! r0 G

; {6 A  w7 ]% ?; T6 Y
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
* w4 `  l7 z5 e, B第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;1 ^7 D9 }# B: c# f6 J
第三步,重启板子,然后再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* V1 ]" j" @  X# K: f* `0 F
第一步,确认你的u-boot版本是不是v1.5或以上版本;/ _1 ]2 O* A6 M7 Z+ J& o! N9 n
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
  Y- L& p4 K0 Z
您好,
5 k# g# ^; ~6 p9 ]我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
6 h5 o: |3 j& g  a9 @& n请问这个是什么版本的?: G/ l4 v/ B  r" y- u# v
6 }3 J! m* U$ a* f
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
" J0 ]2 O+ e8 [  [% C5 t我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?  S+ v" d7 N5 |* t  c. ^4 n
* ?  V! X9 M3 A; 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 的?
$ y1 ^" f2 s9 t: i" k 6 N9 a; s$ _: Z/ c
问题有点多,希望大神好人做到底,多教教我,谢谢您!
( w% n7 J" {: d# ~- V- N+ ^: _ + D  {: S, y- N
回复 支持 反对

使用道具 举报

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;5 E9 A( n, K' E8 ^
# i" P4 p) A$ R; B  H. D' Y
可以根据环境的光线强度,修改摄像头的亮度参数: ) p, K& m9 o. X; u3 p2 S/ x, \
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode ) j& Y  E* m2 `; Y; r# X2 |9 W# c- S
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
/ L2 N. ]& D. r7 w3 U0 KCloudy 6 ~6 p; x; N( ~, b) w; x! [9 e
; {5 c- z0 ?1 W5 x
参数说明: ! @% W4 |& `+ a  n1 G/ Q: x0 P: I0 v
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
  u+ Y) l' k5 d
- l3 ]- D$ W8 H; R  f, r如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c, u. Z* p1 @4 X) D( p0 A6 t, C
7 W; m5 w: p/ h1 M8 M$ }7 r4 G# g
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 18:38 , Processed in 0.045527 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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