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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
" w: Z5 E! V/ @3 p9 u# u) R4 Q2 I) |    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入+ e7 M' N! K8 ~
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:+ p& z3 i7 K5 U( ~( n$ V
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
. }+ p9 f! b- E" z/ r0 k4 cCAMERA capture
0 b  {8 K" w1 A* S# Hinput_device /dev/video0+ }. r. }9 k% g8 q: h& U
Camera-Camera
) d; l  R" X; {fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
( L  g& U8 V, Zfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
& v3 d" p) t# p/ M( {! Q+ _fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
; H* S. [0 F) ucapture_buff_info[0].length = 4147200
9 J/ j2 A6 f+ f" d- l3 Rcapture_buff_info[0].index = 0
! }, T5 F6 b$ ~% v1 X! F" Fcapture_buff_info[0].start = 0xb6bec0000 A8 f) U2 ?! n; `# R0 G
capture_buff_info[1].length = 4147200
+ E8 s' V, U- W- Ncapture_buff_info[1].index = 1
, x- ?0 T( r, }' ]4 u# Ccapture_buff_info[1].start = 0xb67f70008 t' [: I% K6 j. `0 y9 E
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed/ ], Q" K1 ~) `5 w, W; w4 D
Cannot mmap = 2 buffer
5 k0 i, \# `$ y4 k, }Error in opening capture device for channel 0
  j1 _7 ?( A2 b2 B. [4 o0 m  D

/ R0 Y1 S6 M8 ]/ |2 N1 K我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
8 x# m1 {0 o; u9 {" V# A! M
分享到:  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
% A; q' Z7 f7 ]) l6 o* ]% D您的还是默认的bufsize的,再检查一下配置吧
$ s7 P0 _6 K; ]! }- P3 }& Y

6 {! |4 v4 H- W2 Z9 g0 L. _
3 r7 ~+ @9 D. ]1 Y看一下,我把环境变量打印出来了,这样配置是对的吗?# @6 s/ |8 W2 V- z$ t
. O8 P1 M' H. f, W7 I% r

! {' F, p1 m- s4 ~* g3 i3 Kroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
% N3 q8 b7 L. p+ ]* bCAMERA capture
  A  m* M3 s3 n5 o8 k* U! Ginput_device /dev/video0
1 p& F0 T6 b. C) ^# g: YCamera-Camera! C9 G6 T1 P  e1 r$ ]5 b, C
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
! S2 @: E5 L8 m& U. Z3 W! Afmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
8 v3 }2 w! p0 L! E# mfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
5 h  _0 M8 B' @: t" a# g( W5 _capture_buff_info[0].length = 4147200
: z. X1 v- k- ?3 [3 n9 Q0 vcapture_buff_info[0].index = 02 F8 m9 \$ A: I6 K' a+ |. V
capture_buff_info[0].start = 0xb6b400000 D7 v  u( S$ d( i3 ], M3 D8 D6 I" x
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
5 X" m  K2 B. B8 h( _  l7 E[   74.323663] Backtrace:
3 m1 ^# b1 F+ `3 s& R. W$ X[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
9 z4 L4 c6 `* ~# @5 _5 c[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
  r2 l% t/ ^* O7 o9 M[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
7 _- g% m7 b$ c[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
" p- v# P6 x5 k  p[   74.406178]  r3:c71fbd1c r2:000000005 q! c9 s% x3 h) f
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0+ h7 x. m& k. r% J. d) j2 y
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)2 Q2 y5 |7 N9 E3 K$ J& U$ W
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)0 K+ l, }. c' l) y3 s8 w+ T
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
0 _: o! S" M$ s8 Q9 `2 g[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
( r! D) ?8 X- ~[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
+ V/ z2 B& P6 ]5 e[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90# j$ ?; b& N8 C
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
3 u  L4 j7 N! @( D, S+ q% K3 t[   74.556197]  r5:c7ba8c00 r4:c72b69a0% z! g1 u; ]" r2 v
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)1 l; u% k: H7 ?' _  H( b
[   74.587055]  r5:c71fe580 r4:c79c2e00
8 G! R1 z: [6 G$ k: e' B$ N[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)( B, s4 ?( [( u3 Z2 X0 e: [
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
+ Z) D0 r% ]+ ~2 K[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
* H- D# q4 W8 Y/ i% E$ b5 \9 c[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)( _; B; K! R2 Z" x# t
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
: q' z! T$ P3 `6 ][   74.688020] Mem-info:
% n+ W3 |1 ^" c; O7 o8 W" p1 N[   74.690383] DMA per-cpu:3 _0 C4 K7 ~9 |6 S6 e3 E$ ]6 R
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  174 F1 H% y+ ~; w$ W2 ?5 R9 U0 B* v# s
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
$ s0 B' b$ _- B3 Q+ s5 V[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
2 F3 k% j0 {( F: o[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
  r1 g2 M1 ~& {" z1 B6 v0 T[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739, ?  B, k+ E& `
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0: M& ~7 C( G4 M# ?7 k0 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
% u2 v! h1 B' g% X5 }[   74.846179] lowmem_reserve[]: 0 0 0( d% [0 C8 k2 n) p+ W2 V  `0 S0 {
[   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
. ]" V1 H& U% i" b, P4 k+ e4 {$ h9 H[   74.871095] 5393 total pagecache pages1 b0 i9 F$ @: q$ {! B
[   74.874878] 0 pages in swap cache
. v) T3 t$ x! c3 d- A[   74.896156] Swap cache stats: add 0, delete 0, find 0/0* f) z7 v( [1 i+ [6 [+ V* x
[   74.901444] Free swap  = 0kB7 Q. U, m) ]' c! z2 K8 m* A; R
[   74.904346] Total swap = 0kB
$ v* t% \" B& I2 a6 O[   74.946799] 49152 pages of RAM
$ Y# Y! X) C3 d( W; T[   74.949901] 25326 free pages1 P5 G% v( K- t. u5 P/ E
[   74.952803] 3366 reserved pages4 h& G: F1 Y  h
[   74.966186] 2124 slab pages
+ E8 e1 x9 K% v+ P8 _[   74.969063] 7387 pages shared, D: j' e1 P( d: U$ c- I8 i
[   74.972058] 0 pages swap cached5 a/ q3 ^5 ^. X9 {$ I% f
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
( s, W; ?3 n+ B2 {$ g& hCannot mmap = 1 buffer! U3 d9 E; P0 J6 s7 j
Error in opening capture device for channel 0

, X$ `  h, p( Z" @4 t + y0 L* t) @- q8 z, O! M- P* U# ]

2 C1 x2 B0 V0 Q% T8 @/ q' q这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。+ P- b/ B( i/ ~- o  f: y

本帖子中包含更多资源

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

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:329 N8 o1 ]2 Q2 n$ t
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
4 A" |* a! T# V2 y2 G- _) f( H
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
0 A, ^6 x- ]+ O% e, b: x第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" M) i, N3 h: Y3 ^3 I6 v
6 a2 W& b9 X% v9 H: b2 l# s
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
) M5 g8 u" c3 @2 r/ x! g* i1 `. {在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
6 b) j) A$ v/ w9 \
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
# ?1 p9 f4 @; `( e3 Yroot@tl:~# cat /proc/cmdline
, D* Y( U+ [* v1 i) @2 {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
0 o  R( ~$ y5 z$ @1 D# A
" Q7 d) ]% c) j' L8 s7 W
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
, |' b) [# n) b* b那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!. `; m7 R3 {0 A" Q
% |" `: b6 ^+ |+ q6 I% [* P0 n
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助2 J8 r' r* l6 T
root@tl:~# uname -a  w; N% {0 B8 B1 p7 r" Q* S) r
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

/ l( w) p' B7 P$ q * F7 F' S4 n  X  S5 R7 H
& q9 o! Q( U/ ]' N* Z8 s5 M
4 m9 @8 ~7 Y& v6 `) c
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;9 g% M* h* f" N! p" L9 W+ q
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
3 @8 J. X' E: 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/ X$ D" p6 N3 Z( G8 A
第一步,确认你的u-boot版本是不是v1.5或以上版本;% N: {  Z& g* r+ g- E
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
- H% _8 Q# ^7 C$ }7 J/ y8 a, E! I
您好,
& r! Y3 R- d2 J7 L3 T4 a- s我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf2 f& p2 a2 F) [& l+ |
请问这个是什么版本的?/ V- J) ]6 Z! `3 a$ D" Q

2 ]3 @8 ^0 \2 e5 v( G, A3 T另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
" t  R4 v# O9 {0 \0 o6 n; N我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?: q7 ]$ T- r3 q! t

6 L9 G; j4 [) ?9 Q; z( e: l) j还有就是想问一下这个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 o; s/ L' C9 _/ q6 k/ y7 K

! J* a( i6 K+ x3 ?9 ]. ?问题有点多,希望大神好人做到底,多教教我,谢谢您!: y8 J7 t/ E, B4 c* a  v
. E& s2 \& j" P1 _& k
回复 支持 反对

使用道具 举报

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;; b3 X5 |9 K0 }* j; C

, w. W  q3 j6 U' Z) C" F# e; d+ n可以根据环境的光线强度,修改摄像头的亮度参数:
% C  a$ ^3 T! a& n& X9 troot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
( p- Y* I% `! Oroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode # I2 S5 [8 c1 U9 v
Cloudy
9 Y* S. n) ~5 G) H' k
* N3 K6 Y6 F# m/ c% c  @参数说明:
7 J5 s8 b1 J7 a! r+ a* nlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home 1 k  x' _! \' d  r! H: m. f2 ?* t
# c& a+ X) g' A' ?, a$ J, p& \& @3 p: x
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c  f* E; c1 ^4 n. ^; S/ K* V* s; I
1 d+ r- W1 O+ a1 A0 [) n5 j
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 20:57 , Processed in 0.047438 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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