TL2640-COMS摄像头测试 问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,% B" u1 [" ~* k& H5 h: g
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
% v1 e# y. J& e6 S- L# ["vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
* L& L7 ^  [6 Y4 X- Xroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
$ K( r& K% O: u" D9 H. d$ kCAMERA capture2 ^; e, t* h4 H* l7 C# }6 i) X
input_device /dev/video04 P* u$ Q/ y& |) X" A
Camera-Camera4 }* S# o- o9 O# [: L
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)1 L( @5 x, ?% K/ p1 B) X. i
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)4 @( v5 P+ i; ^* }1 `/ w
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# s" B2 X3 T  i6 _7 D' F# E- ~capture_buff_info[0].length = 4147200
; P0 s# f9 D7 v5 g" F& |+ a2 q& z  ucapture_buff_info[0].index = 0
5 G. I3 ?5 E0 n4 x* B  q4 d; Ocapture_buff_info[0].start = 0xb6bec000; f' d3 {' K4 @2 S
capture_buff_info[1].length = 4147200$ [! m) \, [) d6 `- Y
capture_buff_info[1].index = 1
) G% B3 J% p; M; `5 x! lcapture_buff_info[1].start = 0xb67f7000- ?) c4 r- j- Y, c4 G
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed/ h& t$ _0 k: ]1 |, m
Cannot mmap = 2 buffer
. n, g' |1 V/ r# `Error in opening capture device for channel 0

3 o: l, T& Q, w4 B6 I5 K; R+ M! C
( u9 d, K9 Y' e) z- `/ [我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
  _3 F2 v8 {$ O0 z- R# g- q
分享到:  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:469 B, c7 i$ E6 j8 k' x, q! D/ m$ Y
您的还是默认的bufsize的,再检查一下配置吧
, X4 {0 T* I1 u9 F: C$ {( G" r" I

, V2 o3 K9 Z% f( O: x% f' z: ~
+ m% R. m- U- \看一下,我把环境变量打印出来了,这样配置是对的吗?% P" V4 t: h3 ~1 c1 g& F2 ]  u

% b$ n: G9 [' v  M' e" h# n7 K
3 W( N2 Q- k: X! Q, Droot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2$ Y$ S8 l; b3 O- v
CAMERA capture
9 `: C# j' Q& K$ m  i$ }8 ?, J4 Ginput_device /dev/video0
: C7 D" x& i! O1 {1 iCamera-Camera
* s1 @  }( z; ^( u) C, U! V9 Xfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
6 @; r5 Y- v: c" j/ C- x6 A5 ~fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)( z, f2 V* |) A
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)7 C3 r  m% r' s7 ~/ U) c
capture_buff_info[0].length = 4147200
0 J( M& O. I* P. bcapture_buff_info[0].index = 02 n7 R( Y' p/ g6 P
capture_buff_info[0].start = 0xb6b40000$ ~' n5 t0 q9 P* m) d
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0+ D" f" K( `& p+ u$ T) f
[   74.323663] Backtrace: ' f& G* e8 e7 M* V3 ~4 }
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)' F5 y; c  M  z9 `' F9 |; ^) j+ P
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093/ g1 g5 P9 m2 M. [
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
4 @+ |% s; E" i5 Y[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)1 u3 e6 B8 {) j: S6 @
[   74.406178]  r3:c71fbd1c r2:00000000/ L# W; [+ D) v4 x4 t& Q
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
* A4 i: l& V1 ]4 t: K' m& `[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
: N3 w, C* \, W8 N[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)2 D. g% S" j0 M8 D' v
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)4 \5 [* L, h  e( _6 K0 H6 g2 l) U% K* E
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
2 v, H, M. x4 R$ h  v[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
) `7 ^* x+ a5 \9 ]1 R" }5 R[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
* V( e3 f5 C: }3 t1 b[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
* I0 n' F% N* a' k2 J+ b8 D  }[   74.556197]  r5:c7ba8c00 r4:c72b69a0
" g1 }5 d6 I7 j, F9 {4 ?( Q' W[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)0 j7 P9 V. S2 L. a& E
[   74.587055]  r5:c71fe580 r4:c79c2e00
% A2 V8 ^9 K) C6 s9 |[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0); ^- J. \' n7 g/ u: f6 X! X* |. P
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c55845 }' D" n* \" m) K
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
' e1 T3 p6 a* s. ?[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
5 A% f! f9 b/ O5 n[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)6 ~% w- A4 S+ Z6 j6 v
[   74.688020] Mem-info:/ f7 o& n# U6 Q7 p* t5 q
[   74.690383] DMA per-cpu:3 d) R: {; s4 c5 k
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17" F( w, ^2 r1 o! J: I
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
! o8 X9 F8 @6 f4 ~/ A! L9 c# R[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:247 b, `; Y9 ~" I( f  M& @
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:01 z- _% s4 @3 g# F" J, A
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739! F* s! m; U8 O$ b; ~3 ^
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0* ?3 v2 b) U: [) R9 w9 q8 ]% n" {
[   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
7 P5 o8 ]1 }1 A) Q& n/ P' n[   74.846179] lowmem_reserve[]: 0 0 02 g; k7 j: W* S/ w! f' J
[   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 = 42616kB8 J' {6 e" h4 o( M
[   74.871095] 5393 total pagecache pages+ n' I/ ?4 I8 S; _- P
[   74.874878] 0 pages in swap cache% v( W8 Y% J5 E
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0, x% p' L$ f; j  I# a
[   74.901444] Free swap  = 0kB
" j$ @* {& o7 l/ C[   74.904346] Total swap = 0kB
0 Q0 \. H; z& H4 y, D- ^[   74.946799] 49152 pages of RAM& k; n# O8 C7 d8 z' l
[   74.949901] 25326 free pages0 s) @# Y( z, S. \+ M$ C9 V
[   74.952803] 3366 reserved pages
- t1 ^3 j% ]& `6 _$ T[   74.966186] 2124 slab pages* j; w4 @, M* \0 |2 c% |
[   74.969063] 7387 pages shared# c7 n4 B5 D% u/ l
[   74.972058] 0 pages swap cached
$ v% S5 G" ~9 W6 G$ s: U7 H[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
' r) a6 K1 y1 b/ v7 K! z: tCannot mmap = 1 buffer5 a5 E1 A7 ]& J- r. l) Z% \
Error in opening capture device for channel 0
4 R4 d, j5 o1 `

5 p. S4 {) e! L% Q+ X2 ]% ]
  i2 [/ w7 c. n  Q这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。, ~& ?. G- b' n1 [

本帖子中包含更多资源

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

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
+ t/ z& M7 i0 r6 o% |; j) c' k还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
6 Z; Y. c+ r* m9 i
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
1 R" c2 r0 Z( H5 }' _& \第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 23 u8 n* y! A( t' U3 \

8 c* m$ t& O9 T" z' z我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
' ?9 H: ?, a* q, n" n+ m; [! p在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
. f0 N" m3 [/ g
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
0 P; N- d0 z1 E5 z6 qroot@tl:~# cat /proc/cmdline ) h/ H5 R( C, S' r# A9 J+ S$ _
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
/ a+ G( |" @  ?" V/ j

; O  _- @/ b4 u# D2 t8 L0 c我是按照手册上设置的环境变量,为什么没有成功传递进去呢?" y: d' g+ v* c1 V  H7 O* Y
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!9 U9 B+ l1 T6 `, ~
2 y/ h- r% u/ l; M
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
) _; m5 B$ G4 k8 P. N' m. y" Broot@tl:~# uname -a
* R  U1 K7 Z3 e: E% D5 Z; \Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

% h. l1 W4 M0 p9 M  H - I$ K& {" R: K% }8 m# ^& P
! {) y0 `, p6 `# h  ~! h
) r# _% t) \) p2 N& @
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
' i. h! U) _+ f第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;- E8 q0 i  [( X; I6 _: d
第三步,重启板子,然后再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: L3 k, X+ w; ~2 E" S3 v4 s3 U
第一步,确认你的u-boot版本是不是v1.5或以上版本;  h3 y1 ^& p. s) s" \$ @
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
, f1 I  Q5 M2 b2 m
您好,
3 Q6 Y2 @% H' _' i9 Q我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
, N" O9 _0 i0 ~% i6 d7 H3 G# M请问这个是什么版本的?
( y; ~. _' F! [
3 E/ C# {" {. N. w" }7 D3 Q; S另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
: V& }* F# [  N$ M) U5 u我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?0 R/ Z! c4 i- Q

* {$ Q; b7 ~4 f6 D* ?( z还有就是想问一下这个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 z7 K. P3 S7 Q  a% |& j& N( S
* M! e4 E% i3 Y" G$ D% ^
问题有点多,希望大神好人做到底,多教教我,谢谢您!+ \( h  W# w4 L5 W  q
9 C& V- W9 D3 B3 N# C: 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;
: J# e& _  ^4 a  y' G) e3 F6 e: u9 f& @7 J6 M+ i0 a$ ~8 O! w4 K
可以根据环境的光线强度,修改摄像头的亮度参数:
& o- H- C4 s, [/ U4 `: Kroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode & ]8 t% [4 Z% C) Z( V
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 2 q/ Z0 q+ _4 D/ j. }
Cloudy ' a2 ~2 k$ S8 L5 H# Y2 V# d

) B- p" I# u! A% c: g- _参数说明:
0 d9 ~! v+ J8 a& w& N* Jlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
4 \& d, Y( r2 t; S, b) r0 x
# O$ r; {" T! _, ?+ C' ^如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c* K/ }( B3 n8 I8 a6 `+ m
4 y8 N7 W4 A$ @0 P
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-17 02:31 , Processed in 0.048758 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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