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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师," N$ H! S; v) M5 E3 m$ C
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
4 m, w# f" W' ]"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
" ?6 s# F7 R6 k0 H0 Troot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2; H3 z4 m( U/ {. x
CAMERA capture
3 P# S; W0 R2 rinput_device /dev/video0
3 m2 `9 {( B# G8 `# F, t6 a  u1 H# JCamera-Camera% a8 |, z* `: l  l' D/ `$ N
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
6 S* [: B# t- t" T' ?fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
" z0 C; r3 k5 f6 n6 E) pfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)) _! ?6 G3 Y8 r
capture_buff_info[0].length = 4147200
: d. q  c& i* E9 W. ^+ fcapture_buff_info[0].index = 0
/ w5 U! ]' x. R9 M( w' o4 D, T5 ocapture_buff_info[0].start = 0xb6bec000: E6 B; P* a0 o* y
capture_buff_info[1].length = 4147200
" N0 V* ]! B% S  ?capture_buff_info[1].index = 1' L! F* {/ V5 o1 x. U! D
capture_buff_info[1].start = 0xb67f7000# ?% ]( `$ D7 ^
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed+ Q3 V5 h4 d2 d+ V* t. v4 `
Cannot mmap = 2 buffer. S( p) o# P# G2 c* _$ r
Error in opening capture device for channel 0

/ h* M. c2 H( s3 N   D# j6 q3 C7 z( H' G
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
2 e9 H7 F$ q3 k, h2 N: 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$ y9 h8 g$ Y$ ^- G- _0 x, B8 j
您的还是默认的bufsize的,再检查一下配置吧

$ _9 J0 I# i- k. ]* G8 k0 U' K% a3 J' g2 ?0 c% b+ w, m, @' p1 E6 u

2 [; V; g; n6 ]' }6 U看一下,我把环境变量打印出来了,这样配置是对的吗?
; b; S' D/ ?5 ~- `1 R8 X+ P: e6 O7 Q8 X6 M6 K# S+ Z( I

7 V6 P; s/ g; z0 F& Q3 i2 Jroot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2. y- `) d# D" b5 }' L. Z( E- P1 f
CAMERA capture
2 g$ `  U& p$ Z  |/ Binput_device /dev/video09 @3 _% B, j- z0 ?: Q' b
Camera-Camera
5 K4 m8 _8 P: N. K# Nfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)1 Y: O6 |$ W5 z
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
8 T* \+ k7 V, f" r/ ^1 L9 Nfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
4 n5 o' |- S& W3 X7 O2 M: Qcapture_buff_info[0].length = 4147200" H# y+ F( V$ @
capture_buff_info[0].index = 0
( @1 @: g$ l2 e. f% Y/ v& Qcapture_buff_info[0].start = 0xb6b40000
1 b) A" W5 d/ O; S8 M7 U% i[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0: f5 \3 I0 q$ L# Z
[   74.323663] Backtrace: $ E0 V" i' P3 [' R5 O6 u
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
, W. S) s8 Y% i+ n4 {[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
- ]( L8 u: W5 g, b& T[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
7 w6 ?/ Q# s0 r  e[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)& {& K% Q$ `5 M5 j$ R4 ^) A3 {4 d! L
[   74.406178]  r3:c71fbd1c r2:00000000
! b! O4 }; L1 O[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
( ], n1 H/ ]$ t+ P6 B( Z[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)% W8 |  P! a% v% a' X* ?
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)* X1 v% F: ^1 H+ t; Q. d
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)! @& C% {; C  q" q2 C$ \9 l' D. ?) R
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0/ }. H1 [4 N9 ~2 G6 g
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110). j, d2 A7 y0 Z3 v6 v  S7 j
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
9 x1 I2 G; e6 v, M' u1 j5 f$ ^[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)0 m' J* C( ^) S! v: L& r
[   74.556197]  r5:c7ba8c00 r4:c72b69a0/ k: [8 B. J! j2 t' i
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
( {4 Y/ n' m# |6 a/ I[   74.587055]  r5:c71fe580 r4:c79c2e00
2 v1 r& a5 ]) p% X- u' M[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
* U! V) y7 A( E[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584. K& G5 a$ m' N
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
  p7 q; t3 C8 G+ Y* ?/ f5 k[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)# @! b+ p% d: }, a/ `" p
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c); M, [1 @- O# o
[   74.688020] Mem-info:' m3 e! H8 v7 }  e1 ]% T: u+ [
[   74.690383] DMA per-cpu:: v" @# S4 [) U3 y
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
. a' c0 C; X( v* A1 n: f4 D4 w' L[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0, Y% T+ f+ ^- Q$ O
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
( a1 k8 B/ r+ y! D* a! W3 p3 ^[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
3 r9 [* L/ I: W' V- w0 k) }5 \[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
4 q$ n8 ~  R" V9 u[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
0 M/ F7 G2 D7 P8 ~+ a' Q9 O[   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$ `* r! x$ |! T# P: G) B* J9 {# e; f
[   74.846179] lowmem_reserve[]: 0 0 0/ n% c: t. U$ X3 K. |# g8 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% c0 q- r) x8 Q9 v) l( L
[   74.871095] 5393 total pagecache pages9 y& F5 v& H' l. ?) q: x) P
[   74.874878] 0 pages in swap cache
; n: P: g9 i0 f2 |- {[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
0 X% M& H+ ?# q% l) b4 g& s* o$ v# r[   74.901444] Free swap  = 0kB
) r* Y9 v6 m4 ^$ n3 `2 T[   74.904346] Total swap = 0kB- B; N9 x4 ~9 K3 b) V* w
[   74.946799] 49152 pages of RAM' t6 ?( e) a: E
[   74.949901] 25326 free pages
; U+ N% ^2 z0 Q" R$ G5 Q9 j[   74.952803] 3366 reserved pages3 r* F' \0 }% ~) X# v% c, K
[   74.966186] 2124 slab pages
  c# ]! s( y" E$ F: F- ^3 U[   74.969063] 7387 pages shared, D9 Z4 {& f! C  f0 o  j
[   74.972058] 0 pages swap cached; L' Y" K: o! D1 m
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed* T6 `$ v, |  O5 F- [
Cannot mmap = 1 buffer" G. `: L& o6 c9 `, ]' p
Error in opening capture device for channel 0

8 j, F' J8 A% ]( H
- y& g9 o+ `$ I" v' H+ a$ b
1 `6 M  R9 Z9 {1 W这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
. `4 _/ g# E0 e. n8 x. f  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! _! Y9 q9 e7 x* J2 B7 w, W% y# h
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

. g3 W5 l/ B9 r4 K5 K  h+ g我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。" Z; E* {5 V* F7 @. K2 Q
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
0 y0 O. Q0 s& V: L& e0 q7 S6 }/ A* N* L5 |5 k7 ~
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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+ k1 q. `2 K& ?" Y5 i. ?
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
- K* @, d$ r4 t
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:9 U+ v/ M* L6 V) v
root@tl:~# cat /proc/cmdline
1 E3 n- [1 N( p$ ]- e, L/ G4 _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

2 I/ \' B+ M$ i/ d
. Q2 c- D# |, R' ]+ u  K+ P我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
6 [# a6 {* g7 X! J, S那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!( l, v2 ]3 D0 x6 M0 `

& e" ?6 ?) q" t3 C* K- J以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
  o. q# {1 B4 T" h+ lroot@tl:~# uname -a( y$ p3 a: N7 q
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

, H( R. o) }( B, z8 h. l   {5 t2 x9 b- t5 M- c" c
( ]8 @( J* Q" G4 z: L

" c, E# v' M- d: S: S. l+ x+ A
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
+ q6 V) D5 t3 g, r/ V) v第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;* k7 e& w! p6 p+ J4 o$ h4 Z
第三步,重启板子,然后再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% M8 f  ~  e5 X, M5 X& ?" V
第一步,确认你的u-boot版本是不是v1.5或以上版本;; p5 P5 [8 K+ g3 J" L5 n
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

6 f2 V9 e* v! Y3 O/ E- o( M您好,# J* N0 h9 \- |& v2 c3 O2 p
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
) y! H$ u+ Q# e3 y% @( V. X- m% c请问这个是什么版本的?
+ G/ R2 T1 }* C$ n
8 _/ ]2 {5 L: b) G另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?9 S) w( n; {: W/ Y
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
. q$ I# @; }, N$ @" ] ! p; _/ e- a0 ^/ D# ?1 H7 O+ l4 Q- r
还有就是想问一下这个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 的?4 k8 a# O( Q) C/ N. L6 T

7 j8 U# g! l( h1 t问题有点多,希望大神好人做到底,多教教我,谢谢您!& W9 X8 F. o: P
5 A. L2 o. n/ K, `% v2 V, s
回复 支持 反对

使用道具 举报

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;# ]5 R% x. r6 c; N/ v

, M! j$ D, o; @; M* k# m# B可以根据环境的光线强度,修改摄像头的亮度参数: 3 Q* ?7 Q6 Z5 I+ L  K# c
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
) P' t- A! _7 ^( S1 O( I2 Nroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode 1 g3 e0 a+ t  X, Z- e/ U6 a
Cloudy 7 e. l; ?5 o0 X2 k" E2 q8 @/ F

  [! N3 X4 g; Q8 T2 |5 y" }& ]5 Z参数说明: $ g% m( g' `1 Y: U4 n) @- f1 ]
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
& v% Q; ]" v, Y4 R% }$ ^  V/ {' ?2 X" L$ U1 e& s2 u
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
/ q7 U) `+ {  i# c8 F  u& H2 x9 ?1 o0 M9 e1 U; ~7 }% j6 V$ |
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 02:13 , Processed in 0.050469 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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