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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
& ]9 W9 W# b1 ~    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入5 `' R3 D2 o( V# @2 I  v, x, \
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:. s6 Y* D* x7 O, v  P/ ^
root@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 26 w; C- }. d& H6 y  a3 h
CAMERA capture
: M) V' d. B0 H% Tinput_device /dev/video0
3 F6 U& s( D) j; t! C0 e8 T7 hCamera-Camera. B) R! ^4 A6 n; I( m6 _0 q8 k" `1 ^1 P
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
6 I8 d9 u0 S2 [7 j2 @8 mfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)# d5 ?) P: `' L& C7 m: R$ Z9 h
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)9 f9 z  i- H% @3 F& @( J4 C* S7 O; N
capture_buff_info[0].length = 4147200" F5 Y+ {8 s# F' O' r
capture_buff_info[0].index = 0, w$ q6 H6 D# i. u# N. k5 E( l
capture_buff_info[0].start = 0xb6bec000! v4 @' q2 j( U/ m  d% i6 b
capture_buff_info[1].length = 4147200
6 [- s; U" _6 z7 V$ a: Hcapture_buff_info[1].index = 17 M1 v9 W# h  |* z! @  W5 F' s8 t
capture_buff_info[1].start = 0xb67f7000
2 q$ l9 h2 U2 E2 x[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
) N7 J0 B/ z7 c/ o4 ECannot mmap = 2 buffer& a1 H6 ^2 c2 I2 d
Error in opening capture device for channel 0
1 A' W& M% J1 B' c' n7 R! ]" A
! y* e. F0 M; B- m- m/ p
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
5 P3 x" ]8 q0 E$ Y
分享到:  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
# ~2 n( U% ]' O+ [& s您的还是默认的bufsize的,再检查一下配置吧

5 N% U0 Z' J3 ^: P4 }- V8 Q1 Y! \: R) Q

# n" \$ E% w, ^/ h, h: D; F& N* @7 k看一下,我把环境变量打印出来了,这样配置是对的吗?
2 F6 T' v7 S6 H! _/ n% v
  E7 E" `# K5 f* _- u8 T' A5 D+ p7 |/ V5 r) ?+ a: k! z0 k+ Y
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2) s4 X5 a# A- R7 L# T" m0 q
CAMERA capture
1 X- ?& p! z- h% H6 C' v" Vinput_device /dev/video0
1 j& ]3 f- r0 v. ]/ kCamera-Camera  v+ R1 M. p5 \0 o( B/ ?
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)" [9 U, P! |0 }' |7 y! L, T' N5 e
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)6 [2 J& u* A  |8 K' W
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
8 [0 T% ?) E" M: G0 h/ W) A) Ccapture_buff_info[0].length = 41472005 D+ ?, X: z; H7 u
capture_buff_info[0].index = 0- R/ H; {# F8 W/ J" p
capture_buff_info[0].start = 0xb6b40000% ~0 [; y1 m- U* Z! V, g
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0; s7 }) P3 \4 v& y8 k
[   74.323663] Backtrace: 3 m" ?7 ^* K8 G7 Y4 w! y: j
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)2 g! b6 w; N1 m7 E% c9 L/ ]7 K( `. P' ~
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000931 n/ T# O. I9 L
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)! R( E- W( J% H# R& Y
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
$ c8 X4 \2 J+ Y+ z[   74.406178]  r3:c71fbd1c r2:00000000
( o; ?1 }) T* b  ^[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0+ K7 C& |9 l1 n- R& O  K
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)- ^9 o1 B1 o" H( k( a* C6 f
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
( S  {& B* e/ b# d4 n[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
9 C, [4 C7 Q0 O8 |9 K8 y[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
/ o  s) l5 W8 ^8 X[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
/ [+ [. `: w2 S" ^! J[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90* W+ H3 ^1 H. z  B% X0 C
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
- x) ]- w1 f0 I5 A# \! I' E( O[   74.556197]  r5:c7ba8c00 r4:c72b69a0
5 K+ _$ Q0 O* c0 e4 n1 s[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)2 b5 w6 O3 `, _6 @/ w* N( q
[   74.587055]  r5:c71fe580 r4:c79c2e00
8 w3 F+ I& I& D4 n( g" x$ S& `[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)' l5 @% [) K, y5 R" k- w
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
% b0 }$ I% e, k) ?[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
6 B4 o0 S% C6 {% a! ~9 e/ h3 @[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)% n3 E) W# C: g7 p
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)( g, p# _% s0 t1 u7 y! S+ R
[   74.688020] Mem-info:0 Y* i0 |  S3 ~/ b# S1 ]
[   74.690383] DMA per-cpu:
# c# T' u1 y, ]8 q7 v  u) T' [[   74.692955] CPU    0: hi:   18, btch:   3 usd:  171 j1 U8 g) n( O
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0( n' W- X& k1 D9 l
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:249 E# b0 ^7 ^1 W+ Q, y( |- k, y* I
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:08 A; n, U' `+ K; p6 D3 p8 V
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
- j+ u! c  \8 {& t6 S8 |( e' [[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:06 d! x* A# B# z* {3 H4 J
[   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
% V2 q! |- W' v2 j[   74.846179] lowmem_reserve[]: 0 0 0
- S5 b: x4 u! A8 ~5 v[   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
8 o" F, F' L: q! q, M5 K6 Q[   74.871095] 5393 total pagecache pages
* v9 c" R" c' K  g[   74.874878] 0 pages in swap cache
$ f2 v+ q$ @  z: Q[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
9 w. L  Q$ p8 U[   74.901444] Free swap  = 0kB7 z6 c: e& u' f; \
[   74.904346] Total swap = 0kB
- T/ x* \" c  O8 _6 g$ T" e[   74.946799] 49152 pages of RAM) \9 n& m  N/ b: a& M1 W/ Y0 a0 G7 t
[   74.949901] 25326 free pages# ^% C5 W6 e7 F& \; L
[   74.952803] 3366 reserved pages! ~9 c# t: s( P5 h7 t
[   74.966186] 2124 slab pages
8 [  B, |9 ~8 n& x' R  |5 B[   74.969063] 7387 pages shared
9 ]! O- [% B* @! d* c( `[   74.972058] 0 pages swap cached, e6 J3 h- w2 U/ D. E' H
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
3 d; f9 B/ X# r% f+ r2 B8 VCannot mmap = 1 buffer
' `% Q0 v" C( F; ]" ^2 D/ A1 dError in opening capture device for channel 0
2 q) J9 z% ?& J; T( P' D4 l3 \

: w# M! p* Y4 { " F4 z; ]/ e9 C2 Q/ u
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
5 w, U7 e/ K1 _2 A5 i

本帖子中包含更多资源

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

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
- D. ^7 c4 z5 _0 J1 L还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
3 T. D# Y/ H6 B
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
0 s+ r9 E0 {( D! f: [* d" k: X1 A第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
6 A; k" J( l" i
, E+ {7 w5 y0 j- }5 q我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
$ }8 B# ^7 A+ F在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

  W1 i& K# F! V) b4 E2 N谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:
8 U! J3 v* Y- g4 F6 r, broot@tl:~# cat /proc/cmdline
. U; E8 ]4 A% }4 c' lmem=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 w) l8 J0 U  n2 @, r, a
3 s- z. N$ x# Y5 Z2 n7 ]
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?4 j  ?  o/ n3 s
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!) C6 ]' N: q# f, ]7 M4 K

' L8 X' ~/ E. A- l6 n* @( n5 u以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
" o* `7 o+ S8 T# froot@tl:~# uname -a3 S+ B- B9 _' M. @! t9 O# V
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

5 ^4 V8 W) [( B) w5 C ' W5 o- X2 t# ^! l% O

, @- D/ B, i- O4 g9 [2 Z! s3 S! R
" D& r7 a( T& o: }. B+ \  F& @
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;4 E/ i' I9 `' j( `
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;' A, Z: H) ?, w7 C$ f1 j
第三步,重启板子,然后再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:123 o% }: q1 ]! j8 p+ W6 u
第一步,确认你的u-boot版本是不是v1.5或以上版本;5 }# x/ j4 |0 f; e8 r
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
% u$ d8 h/ r/ p- ?
您好,
! c4 H8 _8 a, ?4 _1 N  f6 X我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
  a) g; _! V8 l7 T; A请问这个是什么版本的?
0 c# a4 r' D: N4 ^6 m' J
6 W' @) ?: E% R# P0 h. W3 s另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?: E) Z" D1 y! @3 B8 ~
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?1 F) ^7 P2 {! y1 {  J

. C9 z3 o9 u- o9 o+ @还有就是想问一下这个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 的?: j3 c' O. W$ ^; J

( T$ g! s$ O9 }9 H$ j! u3 ~  M问题有点多,希望大神好人做到底,多教教我,谢谢您!
% v, @* \5 h- r, Q" M1 Z ! r3 ]" ^" r4 U5 O: l5 s/ 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;/ K9 z  Y7 f* ^+ w  o( Q

* S9 m8 z( G- z1 K" M, I: u9 ~可以根据环境的光线强度,修改摄像头的亮度参数: / T  a( Z! l6 Q+ D3 k
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode - e7 S' `# o5 u0 d
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 5 \( A+ q$ j  Y4 ^  P
Cloudy & y4 ^6 s% ]0 r. _* a/ V8 X
0 F# J2 m! g3 g- s; M0 T: n
参数说明: % @  G7 v! |; O
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home / ~3 J; W' e' N  T

5 I4 q1 W6 b! D9 d: S如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
- z3 z' y0 P2 R) [3 s- j+ e5 j6 {. q1 K; D+ \
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 04:01 , Processed in 0.048967 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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