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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
- o! T' V) h" q7 Z5 a2 c. V! D    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
  D) h1 w! e+ q' c. s"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:0 q" ]/ u) X) r$ x' C
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
9 f" F- T/ B! J4 P% k+ FCAMERA capture* o8 Q( R0 w3 o  k" o8 `& b4 B
input_device /dev/video0
  J* J' ?$ v; M. F( h. RCamera-Camera- |, R4 \0 @. t/ j, e( f
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)9 t% A: M! q7 a  x: j3 {
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752), T/ K/ q! m" c" ]+ I$ V
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)2 |! I. ?, [/ V7 z. m5 x; N
capture_buff_info[0].length = 4147200
) ~+ k: W. J9 y  z) m/ Kcapture_buff_info[0].index = 05 J) s* t# z$ @- }# u) t! c4 ]3 y6 P
capture_buff_info[0].start = 0xb6bec000
# ?5 |; A5 Y; o3 ?capture_buff_info[1].length = 41472003 P* `+ e8 x8 o" K6 R# {' b' E
capture_buff_info[1].index = 1" O' G% Y  a2 ^0 U$ W
capture_buff_info[1].start = 0xb67f7000
7 H% `6 }0 }. o+ \1 l  A[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed- r* D0 z$ r/ U* p* P) @/ I
Cannot mmap = 2 buffer
# G: g7 I5 D2 @% u% _Error in opening capture device for channel 0
. H5 ^' x. ?+ H2 E3 l1 i

0 y8 I/ ^4 I- V9 f我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!- Q0 |8 V2 T; h1 d& i$ a7 V
分享到:  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:464 h0 v- i7 o/ t1 o
您的还是默认的bufsize的,再检查一下配置吧
9 i. R6 b8 }1 J* S/ A
2 M, ?+ {1 a2 T4 f
0 ^1 y' ?, s  Q2 [; {* y
看一下,我把环境变量打印出来了,这样配置是对的吗?- w3 q; c9 `7 G
: R7 C/ r- D# l& g# Z. A2 I5 x- Z
; ]  _- Z2 n# J% Z) H; k# D
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
0 S# }( A* X! w4 g( qCAMERA capture% C0 {! r1 h( }. F4 c4 J; Q
input_device /dev/video0
" Y3 ]! ]" a% q% r9 ~' O( dCamera-Camera
3 j: b1 T1 L# |/ n2 Mfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)7 t3 \$ i; a7 }0 }* B
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
" z9 H5 C% y4 d; D/ |! o* mfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)% G$ X  A9 x  a$ r: a
capture_buff_info[0].length = 4147200" w$ |! I- W& s; b+ }
capture_buff_info[0].index = 0% F: B7 F- Q& u4 G$ N
capture_buff_info[0].start = 0xb6b40000
" W4 M. n) B$ e9 \. n[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd00 H8 Y  u0 a3 R4 x0 D0 D. I, m
[   74.323663] Backtrace:
2 C# F  m* `4 u; L, i  k. n- Y7 R[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c); @; p# t" _# a) n1 I
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
5 @+ n$ o: d+ q0 f1 D5 U[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
! @2 S0 D3 e7 O& p[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
* F9 d7 d& A  x$ D# }- C[   74.406178]  r3:c71fbd1c r2:00000000
$ K9 E" @( P7 o- R, z, Q[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
) z9 J# Y( }7 b5 e( N[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
, |& Q0 g9 j$ }2 k[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
. Z9 }5 h1 `% c6 J0 j  e$ F+ f[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)# W$ z- ?0 G' }" ?  a1 d
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
$ M5 w; j3 J2 A[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
( S* I+ [3 M6 X' S! N' v[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
' H  a! @$ L9 K. m/ M/ o[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)9 U0 ], m3 ^3 Y- y) |
[   74.556197]  r5:c7ba8c00 r4:c72b69a0& Z" \7 a7 A1 }( x6 W) W7 S: E
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)! A( z. f5 {0 w% y- C" Q
[   74.587055]  r5:c71fe580 r4:c79c2e00
4 |2 Y4 h: N+ X. M& B[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0); R. n, n% X. k0 f7 W5 p
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
# [# }0 r8 u* l5 [9 O5 U, P[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)1 G' i$ e+ ?: J  K" m. E; |
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)1 M; y& {, S2 }/ D
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)4 ?1 K# B# _& Y  `) n8 E
[   74.688020] Mem-info:0 U2 l+ }: C: [  H
[   74.690383] DMA per-cpu:
' u# ]9 E7 Q$ ^5 u: y  v+ g' o[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17; I; W; w8 F  [7 w" _
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0- |$ N4 F& x" [
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
! l1 `' h) k) ~; ^' |[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:00 d/ Z% T8 }' ?& ]- Z$ D
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
- `( D- g- V8 R$ J5 U0 M8 Y[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
: s5 u- H$ |) y/ G  [. v[   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
6 K) N% P; Q! e" d6 x[   74.846179] lowmem_reserve[]: 0 0 0
# e+ |2 V/ a( }( j# [; y$ c[   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! I. N6 p% @8 B; y
[   74.871095] 5393 total pagecache pages
1 c4 o  D9 f+ p* L5 f; ^& s[   74.874878] 0 pages in swap cache9 i* ?: A. ^# I1 F5 n2 B1 g3 r
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
: n1 G3 @' S# ~0 m[   74.901444] Free swap  = 0kB
6 Y& z6 n2 D  I* T[   74.904346] Total swap = 0kB8 ?$ n+ B- o. S8 \
[   74.946799] 49152 pages of RAM9 d: ~' b! S4 t  q6 S& `* s# @
[   74.949901] 25326 free pages! q9 m2 ?1 c6 F8 X( R9 E
[   74.952803] 3366 reserved pages* H* N6 P- [5 P
[   74.966186] 2124 slab pages: c  P% r3 G, _! e5 j
[   74.969063] 7387 pages shared' e; m+ d2 y: J" G
[   74.972058] 0 pages swap cached) Y3 y8 ~* j1 q
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
2 c: s3 M0 C" y. Y$ {0 S2 @Cannot mmap = 1 buffer
- u# }2 |8 w7 o/ YError in opening capture device for channel 0

8 g9 }/ W/ E6 h 6 z: t+ ]8 g( j) a
3 @1 H3 g- y& ^7 U/ k2 j
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
) ]- M3 c. L6 H" g* f

本帖子中包含更多资源

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

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: j' N; u" ^5 V0 R: S
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

/ S1 x: @: M) a: t, b我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
1 N3 y; R. D5 n1 [7 R第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2% I, {* e/ S( b/ H8 A2 s9 J

2 d1 Q- l" u4 e) m8 A我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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( ~. f" x+ t+ B. Z+ E* S1 u
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

; O2 _  }) I; E) h8 b谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
: C$ M. {7 _8 x9 [root@tl:~# cat /proc/cmdline
0 e- P% @- U! u/ J; I. G. ~& imem=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

! G9 V/ E( i# ]% q
+ C$ n. ~) r& R我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
0 m, ]7 P7 R  F7 c( y" y+ ?, X那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
0 `0 Z3 n5 P/ i, ^ " K- ]# x( q/ y+ d5 e
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助7 V, B6 `2 E' R/ b) B- R* H
root@tl:~# uname -a
! f( Q$ }5 R! g$ p6 v  [Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
) B+ a# ~: \8 G4 r& ]. \' ?+ G

/ a6 l/ d$ X. }" Q8 o  p - E0 B$ o# r3 i' x& U( s% t
3 `! y+ }. c; r' T0 I- N- y
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
/ c6 s' n) D( g: \1 w第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;8 ]% A# ~6 X. e; c0 q, f" L, v4 s1 b7 a
第三步,重启板子,然后再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
9 X, z% I6 A4 C9 l! G( e7 H第一步,确认你的u-boot版本是不是v1.5或以上版本;* o$ Q  |( M$ q$ p2 _
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

! \' C0 k9 `! i* e! ^9 q9 [您好,
  s  r0 s, D) f( _$ B* b9 U: y9 T' i$ z我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf" w7 @1 F1 @! p+ \7 H- @
请问这个是什么版本的?
3 ~  T" D: Z7 Z! v ! ?2 U3 H+ c: X7 R# F0 j0 I3 S
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?. R  M! }+ Q, k
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?2 e5 ?# [/ [/ d4 n

3 T2 c. I: w% M) E: e) d/ `还有就是想问一下这个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 W; s8 n* {' g5 `7 r
" d" X! J: j& V( B& v: ?问题有点多,希望大神好人做到底,多教教我,谢谢您!
8 W: t2 A* n+ q* F7 u * \& T* t+ t* Y7 b7 A% k6 u
回复 支持 反对

使用道具 举报

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;# p  I6 ]$ ~+ k# S$ T+ [. m% s
: ^. Q* Z& p2 m* e
可以根据环境的光线强度,修改摄像头的亮度参数:
$ F$ Z+ {% w9 ]8 b- U0 v8 E) \root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 4 [- l8 h0 \5 Z. }5 W5 w/ V
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 3 i& @; p' h( d# H6 ]# B; i+ }" w
Cloudy
. ^0 q0 T3 f  t! ^4 P6 x% M+ D' x$ T( y( I6 y$ N
参数说明: 7 X3 o% E9 L+ _" i4 Q
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
: y& A: _' D2 y) B2 h$ ]4 P
$ ^2 ]6 X- T2 G6 q, C如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c* J  f) i/ i% `, o, ?" l  j' u8 k
' J* P1 A, D& t" t
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 07:58 , Processed in 0.051248 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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