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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,0 y: M9 I9 x3 j8 g8 R5 s
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
! u5 N3 E' P2 t# `1 g"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
" g8 D5 i% `5 O: h( x/ W9 i- yroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2# e" ^: K. P" _2 c  T
CAMERA capture9 x0 E$ C8 }) l4 {% E& H9 Q
input_device /dev/video0
: @' b' i5 d" G  G- S3 {5 s4 pCamera-Camera* r! t+ a& m, u, O- V; j5 Z
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
9 {5 J: u9 L' d$ L6 q6 U9 Xfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
% f8 e( ^. Y0 I- y; Qfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
. y( ~) j6 O' y( Y3 S, a% _1 Ocapture_buff_info[0].length = 4147200/ F$ Z- H( s  a: M
capture_buff_info[0].index = 0
1 r  U  ~/ p- z* h0 t5 ccapture_buff_info[0].start = 0xb6bec000
) O" J7 x; x9 V9 Ccapture_buff_info[1].length = 4147200! Z  P' d7 W9 _* K& l4 J
capture_buff_info[1].index = 1% u- D1 M) d) u% D' @, n" [) T
capture_buff_info[1].start = 0xb67f7000
% u; Q2 e: Y. `) W0 W0 u: X[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
3 c/ f2 g" l" W( g+ r/ A: [Cannot mmap = 2 buffer" P& E/ N6 F% K7 b& G( H0 e: A$ Y
Error in opening capture device for channel 0

! H1 T, ?8 q$ t9 P0 Q
: e: J! \, ~, @; D: [7 {我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
! B. L5 F1 _. P, z6 E
分享到:  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
' U4 ]# E9 q) e- g( B2 W! M( I您的还是默认的bufsize的,再检查一下配置吧
/ I, J, m+ J$ L5 j( @" h& V/ b
2 s1 G9 y# E) d  R4 \% U

8 D0 U0 ^  l, n5 e看一下,我把环境变量打印出来了,这样配置是对的吗?
; t5 g. n  d) P; G' a6 D" t" ~& C: n- p
9 J* y" i) O7 C7 _$ R# O7 C) ?
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
; y& T+ u) h$ K# fCAMERA capture
5 U+ R8 |* p$ Kinput_device /dev/video0
# ~% I4 u% b# }3 G. XCamera-Camera- h0 ?7 I) _4 K
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)/ D- }( ?" i+ \
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)% R' S% T7 D7 K
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
! F' j$ z9 ~5 B/ H9 K2 ucapture_buff_info[0].length = 4147200
. d: U; l% x. N' ucapture_buff_info[0].index = 0; `" k8 _% b. Z9 E) `
capture_buff_info[0].start = 0xb6b40000$ E7 [1 [4 f; R# a7 [, n
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0) d( |# i) C- f4 A. I8 J3 ?" p
[   74.323663] Backtrace:
3 i# X: Z7 E4 S7 ^' |& y0 f[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)' u% x) Z- T- g. S% d6 `: d
[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000931 `! K" D* H. t9 `5 y4 J/ N) A
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)+ }0 Y2 i, C' [4 ^' M
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)
5 C; h4 ^- ~! ]+ I0 s! W0 R: V[   74.406178]  r3:c71fbd1c r2:00000000) k. \- a5 H1 ~, y
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d07 V( g1 x. |+ x+ P6 k( [
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)4 q/ C: L; G2 w! x7 X, o: s& ^
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
4 |$ H& ^+ e, N2 T[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)3 [: h' o/ d2 P  d3 X% D
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a01 Y2 Y' J% _8 j# T8 ?
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
5 S6 Z: c$ s) P0 j[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90! {% B$ W. z7 T7 b
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)7 }  O! s  ~+ |" c- m1 M! C
[   74.556197]  r5:c7ba8c00 r4:c72b69a0, e% C. b1 z  b2 N" ]7 }* Z0 M/ }
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
% k" [( n9 z( r% y7 ^[   74.587055]  r5:c71fe580 r4:c79c2e00" t3 o9 c2 m% {: J0 a
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)& p% J% M2 d$ y! `- X% Q3 K
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584$ _  D5 }' ]0 m) i8 U; v: n9 A5 @( f2 e
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)* R' D  q8 _  P* ]
[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)$ _* v6 V0 i7 K2 K
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
0 `- I: }, l* j" g; m' u+ K3 }[   74.688020] Mem-info:
( P9 S$ M: T4 ]4 A8 e2 V% W- G$ i[   74.690383] DMA per-cpu:
2 }5 p1 L3 A, u/ q- q7 T[   74.692955] CPU    0: hi:   18, btch:   3 usd:  170 ?! g  `+ d3 ]2 q1 l
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
( T3 k9 `! E, ]- j; I[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
! Y0 F* \" p& W[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
2 I& k* S( ~' k- K) c! |- _. m& |[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739& \0 T* `0 Y. R5 _7 p0 ^$ [! o$ E  S
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
0 |# i1 Z+ g3 d! X7 V[   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  o/ N: r7 a" z# D+ E& }6 v0 m
[   74.846179] lowmem_reserve[]: 0 0 0
' Q1 y5 P, m3 p. 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' l8 \6 U2 ~6 K. S
[   74.871095] 5393 total pagecache pages
8 }  J+ ]3 a& L7 z, N5 N[   74.874878] 0 pages in swap cache
  [- u! ?  p7 q4 i4 k2 s2 u5 V  o[   74.896156] Swap cache stats: add 0, delete 0, find 0/08 E/ j# t  w% b" a' W/ d
[   74.901444] Free swap  = 0kB5 D% c' d  W. u* C0 S
[   74.904346] Total swap = 0kB
+ z5 C: Z/ g% r) ]. a5 p; i  g& }[   74.946799] 49152 pages of RAM
( Z" \$ f' Z3 B" d[   74.949901] 25326 free pages
& v  H8 [9 h  B. L[   74.952803] 3366 reserved pages  u* Q2 J- U1 ]% s
[   74.966186] 2124 slab pages
0 y' K% t! s, R2 q4 C7 \% ^[   74.969063] 7387 pages shared
1 J8 W: a& H( T2 Q. u. Q; u/ l[   74.972058] 0 pages swap cached
- U4 c7 X% n, J# c[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed7 e' T/ \7 c% l! C: S
Cannot mmap = 1 buffer/ e6 L8 G; z0 L8 L' I; I
Error in opening capture device for channel 0

. g  Q1 ?, R/ C 5 I1 R! K- Z, @1 v! G

5 \1 ]5 |; `* ?8 J3 v9 r& }这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。+ V; e* l9 K- R* z8 [

本帖子中包含更多资源

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

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/ Q& P% G7 @2 }2 l9 J
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

4 M' J% Q; Y$ U. Q8 k8 [我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
& m2 p7 p( @+ K' S) m! [: T: u第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
7 a' M5 j9 l! }
5 a# T9 X4 {3 R) 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
& H4 p5 Q' |+ j0 N在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
; b! u$ X* u2 k4 @
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:3 m, o4 m& h" D! p4 |; e- Q
root@tl:~# cat /proc/cmdline
0 c" y4 e: ~. W' H1 Ymem=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 x5 d# t9 X6 x( O+ X
! N. r  U3 E7 b
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
9 P% e( ]' B4 ~$ u' J7 F- j那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
) \6 z' A, e) h8 B2 L2 o
5 @8 U7 g3 W- o5 P+ V以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助6 T9 r  {# b8 V6 |' X* B/ ?
root@tl:~# uname -a" m6 z5 g* F% Q# {
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

& \" O# j, s6 k8 O3 _# w9 u( { 1 M& t6 k- k: m+ F! M: r3 u

& Z5 [8 z4 m& C' f / ]  t$ }8 J" x- R& [& v% O! C
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;6 e, _* D. ~) g6 F
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
8 I) }5 M8 r( l) V第三步,重启板子,然后再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 }2 ?2 a0 `' f& k# V. p6 K9 C
第一步,确认你的u-boot版本是不是v1.5或以上版本;
; b- h; r! y4 G6 ?5 y7 R第二步,可以在u-boot里面执行:nand erase 0 20000; ...

. V. L, [; R5 ?3 q您好,$ |6 c& {1 x2 f3 m$ P7 J) b
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
% C9 R* t7 h' d9 ?9 B请问这个是什么版本的?9 y: I9 f7 f( x3 T: S; @
' u- i# }" V. y+ d$ n* C2 t9 s
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
5 E7 j# [5 }3 ^/ X我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
& z* o; j& k/ y # _) @- e  t2 W0 B" |
还有就是想问一下这个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 的?
3 H8 f6 C- p3 Q+ P7 K
( ?2 q. I4 r% K7 ~. }问题有点多,希望大神好人做到底,多教教我,谢谢您!+ y' k2 u) D; P* r

/ E1 ^: a2 ~8 V, j" ~1 G2 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;
7 i/ `* H, F0 r8 v9 {8 `% L3 f. R) N# D) R3 [
可以根据环境的光线强度,修改摄像头的亮度参数:
7 I) h* V' ?, M2 zroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode - `. d4 i) q. i% g2 O* ?2 N8 b, T% T  a
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode ) m1 j; }/ B2 B& A; f" p
Cloudy
* M. y! }' v  c
4 H4 h+ D! |, S' g. P. V+ g% {1 W1 l参数说明:
7 ^9 v: D( S  Q2 z% |light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home / h% c; |1 F  k: Y$ s
/ A% f# e, C. \  H/ S3 ~. P! |+ @
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
. E7 X# N% e6 l% z1 f& x7 N9 h5 p2 q5 R- s
vpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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