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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,: m9 Z& g$ m8 j1 ?9 S
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
6 d% T+ j$ F" C) p* X$ V5 i"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
7 r4 z3 k0 a2 G7 Groot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2& Y/ T; `3 Y1 k- g' ]& ?
CAMERA capture
9 r9 ?, `! M+ \input_device /dev/video0
5 d6 U. r1 f9 Y8 Z+ `* W4 y# p) HCamera-Camera2 W( g$ M; S5 T; M7 w
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)& P# l( O7 `' ]; {2 c2 i
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)3 a- U0 b0 f+ p4 L( y% v) c9 r4 G
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)" v( h9 u& f" ^6 j( H3 c* N" K
capture_buff_info[0].length = 4147200
3 O. Z, O' y! q4 ?6 {( wcapture_buff_info[0].index = 0
: ^- H9 x( `9 l4 Q9 `capture_buff_info[0].start = 0xb6bec000; r# R6 d7 h5 N$ D8 |% t
capture_buff_info[1].length = 4147200
" G9 F9 M/ T% r# J, E! fcapture_buff_info[1].index = 1) E8 D1 v1 }+ B! ?& i0 q0 Z0 S! E
capture_buff_info[1].start = 0xb67f7000) P; X# ~3 W8 }) N
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
3 F, B; N7 F' x, M7 u! i2 ^& ZCannot mmap = 2 buffer
5 ?5 r  h" J" [) h+ V; UError in opening capture device for channel 0

1 c9 t; i1 E! l2 _$ C ' `" E: P3 R: K6 S. |, {; B) w+ [) x
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
- ?+ _$ w% h. u" n' j& I
分享到:  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
* z: S6 m6 z/ r" o" P/ H您的还是默认的bufsize的,再检查一下配置吧

, M: n/ K+ a2 U, U* B2 d
7 G( b9 `( n- A, |
0 n, h; f5 K4 b% ?) ?看一下,我把环境变量打印出来了,这样配置是对的吗?5 F. R5 y, r; \! d* g4 ?
+ h3 O+ D/ B' q' d! b
1 B- x( @9 f% @, q, I" @
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 21 G+ _' \" @7 O8 `# B
CAMERA capture
) |. x7 g9 |, j/ R. H, P- R" Y" Cinput_device /dev/video00 i" I% k, q7 P9 m3 x' A. X
Camera-Camera% V" i- {4 A' p5 M
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)) U& u9 ?  j4 I: J# {3 ~4 r
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
# {' b8 D: P5 c; ]; i$ Q3 Z" x( Afmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# \* ]; C; ]/ l+ |2 t+ n! C  ucapture_buff_info[0].length = 41472007 X6 g% @3 b. ]! w! X
capture_buff_info[0].index = 0+ O: s+ O" ]) }: W
capture_buff_info[0].start = 0xb6b40000
4 Z, f5 U0 V4 Y# f4 A[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
2 R6 `# n0 n3 f4 O+ h7 E5 _- j[   74.323663] Backtrace: 7 E! D$ U" q2 D& Y  z& W
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
1 K' g  _" P$ l- n! ]' g[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093
( S9 ]( V, Q: p3 I[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
8 }( N, W; I$ P% U% A6 O[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)2 a- W1 ~. b  m7 ]
[   74.406178]  r3:c71fbd1c r2:00000000  S& f) d3 Y( z7 c6 p7 I
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d01 w! P& Q" W4 ~% X* F
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)/ I7 }- q! B/ B
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
: T; ]" m4 M% a[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)4 a. ?4 e6 A; s4 U6 G; [2 [) w
[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a09 O* m* E* s8 s, _( q' j
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)! {1 O$ L% W2 A
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d908 a1 X2 y- j- r( n
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
5 ?1 }% n+ y4 b, M[   74.556197]  r5:c7ba8c00 r4:c72b69a0; S; K2 {* I- q3 z
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
) I& ^0 a+ {8 v0 G+ x7 l[   74.587055]  r5:c71fe580 r4:c79c2e009 C; L) g7 |8 ?8 X6 v3 Q; {1 ~& h! s& B
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
) U* e0 \# Z- c1 u; @" {9 ?0 D[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584' H' I; h! K# {  c. J
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
4 I, T4 E3 E- N3 v6 h" W[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
* g9 u, n, v2 M: v5 }; L[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
5 o* j! L4 D3 m/ E4 _[   74.688020] Mem-info:
" X' s3 A4 w# d$ O  G[   74.690383] DMA per-cpu:
  S" a/ i  R- E/ y$ X[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17
4 l  Z4 ]7 r3 D& I: c9 X8 d" a[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:00 I* ~; k/ _  D1 C# X4 e4 K9 f1 ^
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
3 H' s; }- ]% X  b2 @1 I* y[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0
$ s, f# G* Q; d, g! v2 \[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:7398 J! p. K* G6 q: ^
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0$ r) Z: q, T( K$ w6 r
[   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
3 j7 j6 \3 m3 m' ~& ]9 z[   74.846179] lowmem_reserve[]: 0 0 0' D$ S: q( z) W( |4 ?7 O9 X4 ~
[   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 = 42616kB7 H% W8 J3 v9 F+ h$ S2 ?5 t3 c' X
[   74.871095] 5393 total pagecache pages
( s" r* I% ?9 C/ b5 Q0 j1 M5 H; Z  O[   74.874878] 0 pages in swap cache
; H. I: ?2 R; `% d) c. C$ d[   74.896156] Swap cache stats: add 0, delete 0, find 0/06 b. h! @# T: f0 A; V+ \- X& `
[   74.901444] Free swap  = 0kB
$ `: C; o# P( V1 n$ R6 C, J[   74.904346] Total swap = 0kB) [) w: Y0 Z9 _, }0 n  j( Q
[   74.946799] 49152 pages of RAM
# T6 D" d$ V: B6 p- W$ g+ }: p[   74.949901] 25326 free pages
3 `2 N/ f* _3 M5 k+ o[   74.952803] 3366 reserved pages
1 Z- d6 ~- ~3 H[   74.966186] 2124 slab pages
6 A7 j8 u% d8 \/ l0 l[   74.969063] 7387 pages shared
2 B2 `7 `0 j1 g9 ^[   74.972058] 0 pages swap cached) B& s) }( K; ?, X# c( M: O9 h- k
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed6 f, w3 X- O8 W8 a8 }
Cannot mmap = 1 buffer
1 W. u: C; o  z* P9 j" @: r. ?Error in opening capture device for channel 0
& \+ w; _) K6 x( ~/ {
6 `2 a& d. c6 a. A( d, v1 U. v

1 ~- l3 w! j& z( a+ M: y这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。" m* K' p0 P( ~

本帖子中包含更多资源

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

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# F& ?4 m0 Y9 U. Q7 p  D- O& ]
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

- T. w* h# R1 @! n" [我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
" k/ X5 u% }) P: h" [- w* b第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
5 t8 o3 ~9 s& ~9 n: k# a3 K5 k2 D9 A  x
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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
& O$ w  P% s; R& D% r) n( S& ~在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

* @! L! s) R! F% [8 T谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:8 \, ]7 Z% Z1 d+ i
root@tl:~# cat /proc/cmdline ' p$ W# Q% ^9 R
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 E3 ?' Q# [8 F/ d
; }# B# \8 a* V& `  G我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
5 n1 B* N8 H' K" L5 P. W3 V那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
7 T; e0 k9 I4 d% \ 0 q' p% O" @7 u! @% |
以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
4 F; g- m- J: sroot@tl:~# uname -a
, L! f$ v( d  W, [# _( A' dLinux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
$ f5 \' T" x' X$ P/ p% c# F$ `

8 O+ |% j6 \3 A% Y, s / p" l3 b: @; `; b# [

  ^9 g0 P0 k0 h1 _
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;3 k! R$ L7 k' f8 ~0 a" `6 u
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;# x) f8 P0 U% }5 g8 }  F
第三步,重启板子,然后再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/ p& A( S/ _0 s% h% o
第一步,确认你的u-boot版本是不是v1.5或以上版本;; W1 o  S6 r7 k. ~
第二步,可以在u-boot里面执行:nand erase 0 20000; ...
4 m; {( p/ v. L% A% w8 S5 b7 P
您好," t4 U9 \' @( \" a: I+ t5 m4 W# W
我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf/ y2 b- T% t! E7 q/ L  I
请问这个是什么版本的?4 q5 V$ ~: H2 r. B8 d
- n  s" Z5 ]* D8 [
另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?: O* g+ [, u* y6 g: e
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
" R- B- b6 b+ l. g6 b
  w+ D6 ~! M( V1 a1 w9 g! W5 @, 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 的?% O7 G9 i# j+ k" N2 I& |+ U

) s  A) \4 L3 @. W5 N问题有点多,希望大神好人做到底,多教教我,谢谢您!7 x$ H+ w) h" S* D  n2 @+ Q
4 i1 x$ Z+ E" ]
回复 支持 反对

使用道具 举报

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;
) y% N5 p( ]/ P- v% Z8 l  [" }, x4 S3 r& i. t& z, G# \$ |
可以根据环境的光线强度,修改摄像头的亮度参数: " B1 G0 o& J; G4 D, d9 I* y/ F
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 0 q2 n, m$ m9 `: B+ `
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode & \1 k. i4 H6 k. w! S3 k, O( d
Cloudy
# c; f4 V4 L( ~6 G5 |# i7 G! \- u: c2 H/ z5 u
参数说明:
7 T( X  D$ S! u5 W" a3 Z  Vlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
# y$ c0 _* S5 h9 o$ F8 f2 `# d+ |# F3 R$ K
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c8 ]$ e; e6 M; G* \  o

# ^% V5 L" ]# f. y# G! p( Z3 t" z5 W3 bvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 22:08 , Processed in 0.046092 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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