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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,% |6 M6 F( r9 n; l/ E5 [% {6 h
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
: C& ^( v# [5 C"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:0 E5 r: @8 e/ Q
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 D" R& N, O0 F/ ]. Q
CAMERA capture, W* H' y) I0 @# U& G* H. m
input_device /dev/video0/ d% c* {3 ?: }" J& X
Camera-Camera
& r! y% c4 b' ]" J/ j( ufmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
; x5 j# }" K0 U. k: r+ d# a* C0 H* Sfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)/ H, g- S- f7 b" ?: f( A9 ~4 S
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& D' x4 B( q/ j( k
capture_buff_info[0].length = 4147200
; E+ b. C  }' r5 m# f: q3 T% E& J4 W5 ycapture_buff_info[0].index = 0
9 S! h0 R2 M" U/ K3 j( vcapture_buff_info[0].start = 0xb6bec0008 C7 }$ f5 \/ z; t9 w; z/ x% P
capture_buff_info[1].length = 4147200
/ D5 \7 ]4 O9 }) C5 q8 ecapture_buff_info[1].index = 1$ R3 n/ ^- t6 c* a# T: o
capture_buff_info[1].start = 0xb67f7000
& L, r" R" K5 g: s& {[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
; J2 ~0 E, p8 T: r7 v6 RCannot mmap = 2 buffer
' K' I/ t7 ^; y7 }Error in opening capture device for channel 0

" @8 G: Q" n( n, P) T# P, ~; I
. O$ Y9 l8 R# m5 [/ M. e2 j+ s- B2 U我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
' @( d) d' D3 x  Y4 i
分享到:  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
8 u$ M( L$ `8 R5 l您的还是默认的bufsize的,再检查一下配置吧

% {8 ^- I3 s5 G0 y% h: F
/ \4 M5 l  U2 _
4 C' w* @" O7 A1 \, b& b$ j  X4 j看一下,我把环境变量打印出来了,这样配置是对的吗?
( q4 j! V2 k' ~7 ]% t' E. o9 c+ H" }6 c4 ~% l3 n( g. W) \

% ^+ a- Y) A/ j- u  a& oroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2/ y7 t5 Q# X: u: j
CAMERA capture
7 y5 M5 g! q' t: Uinput_device /dev/video0% @1 O3 ^; ~5 W3 K( U
Camera-Camera0 N2 c; S0 a$ n- x% B
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)  M( |. h5 a9 F2 w, D- m
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
/ t! X8 X( T+ i5 mfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
. n  `' ~- ]  gcapture_buff_info[0].length = 4147200
+ X3 f% z( F( R& Lcapture_buff_info[0].index = 0
: r, D1 v  q/ y' a+ R1 ^2 w+ u7 e5 _capture_buff_info[0].start = 0xb6b40000
# g  I# j# c0 t( I[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0% N  _7 X6 F0 @) C# L% f' U
[   74.323663] Backtrace: 6 c5 \% h+ ~0 _" e  z- S5 A8 ^. C
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
- z! b6 k1 }- R[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
7 |  ?5 ^: B/ g+ k3 b  ?[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
2 Q' }4 x% k4 }; x[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
2 A1 r, N- A3 Y1 [[   74.406178]  r3:c71fbd1c r2:00000000) B: F  ~+ a/ l# `6 }. I2 d$ ^* ~9 V, F
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
* a: S1 l9 l/ n/ g[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
$ z2 [. C3 `' R; D- Q[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)$ _2 B/ J, J1 X+ i, g2 u6 e5 K
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
- y1 o& c% K& H: X& E0 J2 T[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
& O$ k6 Z9 g6 i2 g: {6 z6 l9 _1 r3 u[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110). G" }/ e" i: h8 D1 Z6 _6 g- |
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
' `1 W* v9 {3 h& f[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
# q2 d( r; ?9 p2 [' d[   74.556197]  r5:c7ba8c00 r4:c72b69a0
5 h8 E4 C6 |# Z[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
9 Z2 b6 T' i, f. v1 O& u[   74.587055]  r5:c71fe580 r4:c79c2e00' \; _! a; r0 P0 |
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)$ z4 O' C5 E/ t2 W  F( `& D) B
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
! [, a6 ~) g& v" Z6 ]0 |) @% j4 \[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
( f& Z4 F& M1 \& n[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0), I# x$ i- y% d+ V7 Z/ R* O
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c); K: q2 K* L$ r, k/ X! x
[   74.688020] Mem-info:
! c) s$ @) d' ]* K2 }[   74.690383] DMA per-cpu:
& [: `5 g% Q0 }5 i" W[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17# j0 B) e0 d% L+ q: C, v+ i2 Z  g
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
8 {- P/ P# E! |9 z[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24" g; H# T  n5 w3 E* Y# R2 [' P% i
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
+ }1 `; H7 t% q6 ]: Y1 k; i% G[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
0 X* n/ A9 O# U  _5 d[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
3 H( F9 v; D7 d  |2 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
/ [( z: D$ q: D8 `: m[   74.846179] lowmem_reserve[]: 0 0 0! I; I5 \* ]% {
[   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
* F$ p8 d* o1 U! S4 B$ b5 k[   74.871095] 5393 total pagecache pages1 V& E# X; b" t9 G* P* ?) j
[   74.874878] 0 pages in swap cache) e  t5 |4 G4 K) h; W5 }
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
7 i7 D2 a. R" x4 x! }) Q[   74.901444] Free swap  = 0kB
7 H5 S+ \: R  a[   74.904346] Total swap = 0kB
: O5 [& W) o, g$ E6 e' V/ r) u[   74.946799] 49152 pages of RAM4 Z7 A0 C% q2 A/ u! i8 q5 F. @* k
[   74.949901] 25326 free pages
* x$ {1 Q( t# p) o7 Y2 e* M[   74.952803] 3366 reserved pages- T) |, c% Y; ~1 M- n& j
[   74.966186] 2124 slab pages! G' s- j! z6 ^1 B9 N* g/ V9 n4 k
[   74.969063] 7387 pages shared3 b$ w! k2 W  ?7 h% R2 ~; k
[   74.972058] 0 pages swap cached
9 E9 F) [+ {8 S6 @% Q1 _; Y[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed  {5 t8 d3 F! D: L; L
Cannot mmap = 1 buffer
/ U  i, u1 R$ ]4 P$ r+ @  sError in opening capture device for channel 0
9 d' X5 j5 v$ W; \' H4 @

+ c4 [, I; ]& _/ a& D5 E3 a2 d 6 L, ]! O8 [: a: J9 O; i
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。, f$ A6 B0 j/ a6 z- R

本帖子中包含更多资源

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

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  \9 e; e, d5 {6 ^
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

  S* I% c1 q5 H! q+ O8 V5 E我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
' v# p+ J) [  K& W" p第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2% G  j7 O: O- A. V
) V' U1 A( J9 K* I9 G+ ^, i
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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% j% j( h- X( p7 E, z7 M' h
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

: l) R6 j/ S) `$ h$ i谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:" ?6 t) `" V- w4 h5 L" z
root@tl:~# cat /proc/cmdline 6 {5 g  ]- u* I0 Z1 f
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
' X1 E$ g" j. h; E
0 r; \, `% j# B  `
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
/ F& a. c2 L9 w1 x; j那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!! y# W7 }% C6 A" x0 W9 I, h' J
3 P) h$ W% W3 i  B2 G
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助1 e6 g: t% a* @: ~% g; Y( l
root@tl:~# uname -a* A/ [7 O% U9 I
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

4 f$ O: f: C! L; k4 P1 {
7 u8 V5 s. a# i' I  r
; `1 k; p6 I/ B% D5 x
1 V, D. _0 O% n0 d& ^
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
7 g6 O) {: ]' I! o. ~5 j第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
( r8 l% j  X, f2 Y第三步,重启板子,然后再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( M' U$ X9 S, ^' o
第一步,确认你的u-boot版本是不是v1.5或以上版本;0 ~( v4 B# a! U
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
3 d" e- T9 ~0 l3 B5 |+ ^
您好,& T) U$ G, t2 ]
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
  D, Q, S* H- @4 P& [' M4 ^请问这个是什么版本的?: M4 e5 @% p! k) g( [& J; N

% D, ~8 L5 x7 O0 h* A% q- v另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
6 q6 @' B+ V  g& a$ w我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?7 N! ?& W3 Y: X7 U2 \5 Y

# P  D' D- d8 u9 [4 I还有就是想问一下这个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 的?
6 b  k, p; g& Y
- r- c. r4 \" w' ]问题有点多,希望大神好人做到底,多教教我,谢谢您!
9 x6 @+ _2 M' c% S7 ` 8 M% h8 K& g, g3 O3 \% _3 H9 Q
回复 支持 反对

使用道具 举报

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;
0 c1 c) @% I& w( l
0 S5 N) T4 [6 t% Z' {' k8 M+ o可以根据环境的光线强度,修改摄像头的亮度参数: ) k. I1 \8 G# e
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
( r4 c6 o; ^$ N( j& `; d% `/ h: kroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
! `; u) b. v$ @7 C! o: GCloudy
/ t# \  @; ]  N* J& s$ }% u* [$ W# ]
: O+ ^5 f+ |' X4 v2 Y% I# e, L参数说明:
* U* N! b2 j; l0 _- blight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 9 ?+ O% Z5 g* w2 o* V

, w- b4 b, U* b8 i+ i- t' A如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c! L- K0 D+ M! n. j
' e- X8 ~% j8 q( D; l2 _/ V# {8 w6 k1 G
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 13:58 , Processed in 0.044603 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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