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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,+ u, X1 o3 I0 S( F1 }0 y5 e
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入1 }% l4 }5 _7 r( O' \$ u
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:  J0 @9 o9 I: _, I- l
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
# Z/ A3 V& L, }CAMERA capture/ o7 o. F8 K/ K8 c/ e: F/ r' g
input_device /dev/video0
* T* D4 k- {: Y5 t1 \* a- dCamera-Camera% o+ P& W$ c& l$ P9 b' |5 `
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
) I) k( D: `$ O% Y$ i# Xfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)9 u& |3 h" L7 c8 [  B6 x3 T
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
- f  r5 S1 P4 `  j1 }( J5 Ucapture_buff_info[0].length = 4147200& M/ d( a# q3 D( J
capture_buff_info[0].index = 0. _3 V2 y' A7 f! T4 j; o
capture_buff_info[0].start = 0xb6bec000& q% n. g7 n9 w* z9 I: P( M# z
capture_buff_info[1].length = 41472002 H" ~. r" L3 Y& d
capture_buff_info[1].index = 1
2 p# x+ p, z# Q$ o6 Rcapture_buff_info[1].start = 0xb67f7000
5 F; N0 v, z% d, H[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
, [; F( S4 x3 n+ W. n, d6 }Cannot mmap = 2 buffer! i& i# A5 w8 w1 H* ], Y
Error in opening capture device for channel 0
7 J# P! ?! m' p; ^

5 N! e! k, v/ L我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
0 Z6 Z% j1 n* l8 t" V& [; z# o
分享到:  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
5 n8 H6 p2 C! O) C+ q您的还是默认的bufsize的,再检查一下配置吧

% h+ {* H( N/ _( {2 A' i* N. I
8 ~. j  g6 i, K; L. |; O5 w* V; J. p
看一下,我把环境变量打印出来了,这样配置是对的吗?* s$ x+ V3 W& S  z: O$ O# e
6 |7 w/ ~+ Q/ ?, @

# W) ^5 Y2 o; L: }: ~4 j1 `. K5 n, v" Proot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 25 _+ h" M2 a5 O" L' x5 H
CAMERA capture
& h0 z) `5 `* \$ _' Z3 W5 P) kinput_device /dev/video0
2 g7 F+ X2 u, mCamera-Camera
& Y( {6 r; X) I, @: {fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 P9 p! p6 ]5 u0 x* O. H" p9 S
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)6 r+ o# H: W, o& L: R
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
" S  {! m4 ]. \2 f( _( ^8 v5 o  ~capture_buff_info[0].length = 4147200
; N. ^% H7 @& K4 u: b1 W4 n8 scapture_buff_info[0].index = 0  S7 [+ Z3 f+ z5 L5 i% A6 `; H
capture_buff_info[0].start = 0xb6b400000 N! X) W) }# I; T  E
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd01 W2 q2 F/ y) P; S! z  T
[   74.323663] Backtrace:
: q0 t+ L9 b) P& f[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
1 ]! ~/ {$ u% H+ C; }[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
# i( o( h" n( s5 b9 ][   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118): L' n1 M2 h( b8 n/ ]
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)" Z. W( T  _  z/ K( x, t) K0 y- V
[   74.406178]  r3:c71fbd1c r2:00000000
4 ]9 z5 X. g0 F6 D7 M/ }* l) a4 i[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
: B4 |6 G# v& a" U5 {2 z[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
) f3 |3 a$ f" [- Z6 b( m; q[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
* x0 t8 t/ C3 _[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)# {  W- l1 E& b' _
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0* H$ J- R1 d# G1 _) f* O! T
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)7 `( n( Q$ E( P' K$ i
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
% a0 C: d. E2 e1 V2 e[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
6 I) m7 W7 ~' E& S& w/ c$ X[   74.556197]  r5:c7ba8c00 r4:c72b69a0# t) e' f4 n/ C( D; x
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
* O! ~# B9 ]; e  M6 A+ J/ D/ h[   74.587055]  r5:c71fe580 r4:c79c2e00
) o+ z! B8 Y, a8 ?% K4 t[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)- h7 \7 D7 A+ s$ Q1 _2 k
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584$ O- X  g+ P) m) l
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
# r( u6 \* R$ A: ^: n[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
- K9 V# U( s+ [1 i: Y; B9 C7 F[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)% b  z& D, }1 [% u+ X* g. s& e
[   74.688020] Mem-info:
* T; T2 N! z1 f: e[   74.690383] DMA per-cpu:
' `: |- p$ Q. _& D+ ~[   74.692955] CPU    0: hi:   18, btch:   3 usd:  170 O& d, d* |! L+ A' S3 W. H# B$ A
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
  i5 P, ]' N) \! M- d# Y  ~[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
) ]" W$ V8 v1 |* J1 b[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:08 [5 Q' \# G! T0 s( l. Z
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
" x% V$ m& o% f* `- E+ ?[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0% n" y$ i% L% G8 u1 j3 y
[   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( k) p" F4 L3 b% a' X
[   74.846179] lowmem_reserve[]: 0 0 0  ~; _/ `& P3 x5 l" K4 w
[   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
1 U2 W2 A2 ^3 `* |4 y. u( x[   74.871095] 5393 total pagecache pages
& I; w0 t: {2 h  x$ T& `3 m, T[   74.874878] 0 pages in swap cache
& ~. U" \3 r! A[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
+ N" ]7 H! C, L0 T& t' z[   74.901444] Free swap  = 0kB) a: r! Z1 `6 o! T" F
[   74.904346] Total swap = 0kB; [/ U, M0 z( A* I* y- k
[   74.946799] 49152 pages of RAM! g( N8 c& h' l9 t' J/ f7 S8 Z8 ~
[   74.949901] 25326 free pages! v% U' w) h4 d. U1 n2 {: w" p
[   74.952803] 3366 reserved pages
% x& U  Q0 u& J3 g0 a2 |3 ?' v8 ^9 d: ^[   74.966186] 2124 slab pages
2 Z5 Y8 @1 c7 o- W+ f[   74.969063] 7387 pages shared
- d0 L2 H1 G5 X+ Z[   74.972058] 0 pages swap cached
, b# D1 V+ F2 C) Q& F1 ~$ Y* s[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed' d3 M. C. \( ?# r& m0 w5 z
Cannot mmap = 1 buffer8 N# k4 D/ B4 H& Y2 {& v3 s
Error in opening capture device for channel 0

; N& N3 ]/ f4 X# q 2 Q. b: b% g+ k, r$ `

, A& J" w) j* u9 v4 H  C9 u9 l4 x这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
& e3 b* G( F+ F: P+ I) v

本帖子中包含更多资源

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

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 f$ \9 |0 G8 ~4 g还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
% o( z! w4 g" Z9 J+ c+ s
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
$ k! F" o5 E8 E# {  v第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2: ?. \2 |& w( u2 z. g6 `
  h8 u% y7 `" K
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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' X& i* r% M9 e3 Z" x
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

/ e4 N7 [9 g$ E: n# o谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:( k* R3 Z* O- t- \
root@tl:~# cat /proc/cmdline ( k6 X( K* l$ b% X. x. s% 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

+ [$ E# B2 f  F3 } + _  C- T8 d! ~
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?! h2 B! _" \7 `
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!  |5 ~1 T% W+ n# z2 w
$ i$ X( t3 x, w/ \# m7 c3 f/ x
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
, l$ N. P# ]' M$ u& hroot@tl:~# uname -a) C% P  v7 g8 I2 z$ z
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

% G4 T% V8 E4 T# E7 {7 b
* t' S. X7 _8 E 7 z; b& Y8 T7 r
- r+ B5 \3 s. \- L# a
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;, Q% `' @( A5 ^8 J0 s% w1 Y7 h+ c
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;8 W1 v/ `) t) p
第三步,重启板子,然后再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
: G+ X6 ?' X9 c) y% M* Y* M/ L第一步,确认你的u-boot版本是不是v1.5或以上版本;
+ M9 z8 y+ K+ N+ {第二步,可以在u-boot里面执行:nand erase 0 20000; ...

! J, I- H# L6 w' v1 p您好,: T: u- x$ S% \4 k2 v0 ?
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf" \% I9 N" e" v6 S3 M! ]
请问这个是什么版本的?7 j1 C5 }# H3 \; h% `3 \. U

( @: z+ u- S& o. t- S; Q5 |* S: j另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
* Z3 i/ D. ~% C/ n' }$ c我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?2 c: l" @; N. I
: B. B0 T/ u) ?
还有就是想问一下这个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 的?# K# I- u* _9 s" V, D/ U% h

0 i9 X; J& j7 Q) S2 V+ O/ M问题有点多,希望大神好人做到底,多教教我,谢谢您!4 c7 b2 U& Q+ g3 r# x

4 c* k5 T, J% {! H
回复 支持 反对

使用道具 举报

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;
4 b- _* Q! Q/ F& U. ]% W$ J" m2 X& f- k! f
可以根据环境的光线强度,修改摄像头的亮度参数: , c' K3 ?% G0 i5 N0 ?
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode * z0 q4 b# K' u8 m9 M8 Z4 N
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode   ]0 x; Z2 }% s* |) G8 [/ {
Cloudy 8 k& ?4 P$ X$ O' U- @

  r2 N$ b- `6 ?. x1 P/ Y! p  F8 p参数说明:
: Y2 {4 @3 I# V% H; Q0 Zlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
& g3 C6 J- M  b" A- ?* b* b4 R/ i) K* l8 L+ ?8 G& m; ?
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
* U* _$ G2 A" q( x" Q
: B$ G8 d9 `0 G! y1 rvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 06:50 , Processed in 0.044159 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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