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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,6 w! M! N+ K* \+ s! e5 V: ~6 C3 u' W; P
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
9 ?) I! c5 Y0 ^* T" U3 |1 `"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
/ z0 p' G9 I) G) c2 _- d; groot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2+ Q4 b$ u: d: T2 v8 S
CAMERA capture
' [9 u3 p  ^4 ^: p- Finput_device /dev/video0- F2 Q' U5 i% N8 s: i4 t
Camera-Camera; _9 L+ ?3 L5 m/ |
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
, q: t) e( \$ R5 g1 Gfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
4 K: Z1 ~1 s" k2 B2 x. x9 efmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
7 j' F  O1 ]) k$ W* m$ Ccapture_buff_info[0].length = 4147200
- j  g' G2 y5 Q- Zcapture_buff_info[0].index = 0
. w* p/ y5 D. }! }& H; Pcapture_buff_info[0].start = 0xb6bec0007 u, E) I# h* F* u, A1 h" u
capture_buff_info[1].length = 4147200) c/ y8 j+ Z/ S) ^. D; H; y
capture_buff_info[1].index = 1
* U: H; Q, P' z" Qcapture_buff_info[1].start = 0xb67f7000- `7 F# k- t( A0 y
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
  s  S* o6 G- K% J, {2 m8 lCannot mmap = 2 buffer1 N% {4 V5 m1 I9 z  T! ]
Error in opening capture device for channel 0

" ]. ?8 k/ d7 ?% S  w" F
9 ^) D' |5 Y0 Q, q! K& q我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
: M  Y* U, q7 Z# g. p; 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
6 \3 `( Z7 @% |* u2 W您的还是默认的bufsize的,再检查一下配置吧

8 i! t: _) q- h- K5 H: |/ q
0 v1 N8 V+ }( r2 b: ~$ M6 m: g* [2 `2 o$ ~
看一下,我把环境变量打印出来了,这样配置是对的吗?
. u2 j4 ?7 n" F, i1 N2 {7 B3 Z
2 C3 u2 @& a8 A1 b4 N! K8 a+ |* N& A: @8 c
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2# I4 r7 Y* a% p/ n; _4 H
CAMERA capture6 k! q& L. l5 A! o* q$ ]. b. [
input_device /dev/video0
) N2 ?1 a4 |4 K, JCamera-Camera
, _3 p; z) Z& p. I4 `1 y" U- afmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)5 |$ A  R  ~# A* p
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752); k* F- d; t' E: A
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)6 A( t& x% s) u2 `
capture_buff_info[0].length = 4147200
8 `4 i2 W) C  u1 L( x+ E8 p+ M. o/ w+ ~capture_buff_info[0].index = 0$ i+ J  r! O& b' R) g2 v3 M
capture_buff_info[0].start = 0xb6b40000
7 q5 [3 |  n& p- c# h) j4 y% j[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0% x6 ?4 ^; y) U" m7 O( m: E1 M
[   74.323663] Backtrace: 5 a, A/ ^4 r  q) E0 i) C7 B" J
[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
1 k* N# e7 b8 m6 Q$ k[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000935 ^5 |2 K8 Y6 g, F
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)3 J. F' [; g- E7 u$ D* E  a0 w% F
[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)( P4 u* Q% B( b$ i; h# ~8 j
[   74.406178]  r3:c71fbd1c r2:00000000$ b- u% W  y! P1 E9 L" D- K
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
1 P6 J% Z: k/ e[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
1 G9 _9 w9 T2 [$ Y1 k' U. v[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)$ i( R' w  l' f$ d
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
/ S6 i" y/ I: @3 d[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
; }8 m: {, l& F6 V[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)
  ~5 G, T% q$ K) p7 |8 j2 ~[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90
1 e3 W2 W. m$ H0 Q8 d8 e. t  H[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)* z1 w8 R; G2 s; Y) ^
[   74.556197]  r5:c7ba8c00 r4:c72b69a04 ^7 I' Z6 |' \/ v# o7 n1 G
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
8 {3 `" e8 H/ Z6 X4 ]; F# N+ u9 o[   74.587055]  r5:c71fe580 r4:c79c2e00* X( [5 R$ f0 S
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)( t5 w+ Z! f+ E  U( H( `5 B
[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c55845 a2 [1 r+ \& _9 r- A' C+ j; f3 q
[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
2 ]9 w9 H) v( v[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
9 p: ~7 t" u$ Y. f" v* l, }[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)* j3 C1 B% k5 ^5 J) K
[   74.688020] Mem-info:7 u9 d: r4 l/ B
[   74.690383] DMA per-cpu:( ~3 Z/ j6 L. J$ Z# l0 o) g* b  q
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17+ ~- E- O" H3 B+ j% P3 @& h
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
1 g! y# ~* ?0 ]' ~6 j$ A[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24; i1 V) S7 ]8 ~. e" ]5 {
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0, p0 U) R* K. H9 \+ p
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
+ H7 q) x1 {8 F1 d8 l6 q4 U! w[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0
" ?  P2 S+ d% e  ^  f9 H! P$ l9 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
' x. O: x( E4 m9 o[   74.846179] lowmem_reserve[]: 0 0 0
; C8 @: @8 F& H% O& y) |& k- O[   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 = 42616kB9 r/ O" j+ l' _0 s4 h' `
[   74.871095] 5393 total pagecache pages
+ z- d8 x, W( }* G[   74.874878] 0 pages in swap cache  K) i( h$ ]$ V& M5 N$ ~
[   74.896156] Swap cache stats: add 0, delete 0, find 0/00 h( e2 y1 D- m/ H% Z
[   74.901444] Free swap  = 0kB7 _: t% \" l4 y  I  j. c
[   74.904346] Total swap = 0kB
! z1 E0 g6 A* A/ g1 v[   74.946799] 49152 pages of RAM3 I9 x  N$ K; Q/ T$ Y1 q
[   74.949901] 25326 free pages! n6 C4 B4 X7 U+ {; Y1 w5 `
[   74.952803] 3366 reserved pages
0 T3 `6 b& \4 q1 v) o' r. H[   74.966186] 2124 slab pages/ N# \/ b8 T1 x) R
[   74.969063] 7387 pages shared3 i; C2 x! p; V$ \& E6 |  s; N
[   74.972058] 0 pages swap cached
& X7 }, q8 O1 C5 Z[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
- s% t. _& p$ V7 v7 [6 _, ZCannot mmap = 1 buffer
; J5 q& b7 b+ PError in opening capture device for channel 0
9 l$ n4 r# R9 Z+ B3 \- h: G/ A

" C4 C1 Q5 P# Y# N- ?* `+ Y9 {/ N ; o& k/ L' [$ ^# b, K  r9 l9 Z8 @
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
% Z: R& I% `+ H' k  B+ J( e% W

本帖子中包含更多资源

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

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) A# Y. l$ g4 k8 E  X还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

! ?; X" o! w* ?( C! F( N' X我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。! \+ v* W9 V, f
第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 28 X/ s) }: N4 Q/ w0 \
/ a) x) w! b- h
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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) q9 Z( ]' q( o* D! y* O5 l
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...
% B* [: H2 ~: ]3 U- `
谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:  F$ N# X" g% k& i) @
root@tl:~# cat /proc/cmdline
) c' Z% I; y- `! o4 g! Nmem=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

6 [2 _1 s% v, t8 Z& z$ A( P / @4 ~) n2 c8 B
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?4 z/ Y3 z/ j! k0 f- o! c! F
那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
( V5 _- K$ D3 d5 U2 K# o  x4 }8 M5 |
; B3 {/ d; D  U$ o以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
1 O$ X3 U, l# z  k8 Rroot@tl:~# uname -a" r( k, @( P: v5 P1 t
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux
' I  d& ]. }& q3 \3 m, V+ q* ]

& _* U- s; H7 R  P' d
: A9 R7 \+ |9 U, N
5 f! D+ X4 B0 |4 `; ^& `4 O
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;
# ~) N6 u4 I) ?第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;
) @3 |" d3 ]4 y+ E" S6 \第三步,重启板子,然后再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* u  k8 @3 j9 \7 W: p
第一步,确认你的u-boot版本是不是v1.5或以上版本;
* _8 m5 I  i' P) `; S5 G7 `第二步,可以在u-boot里面执行:nand erase 0 20000; ...

1 F; m0 a( e- x您好,
; w6 G  X- a- p0 X% M我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
, a; |+ u) P' y# Y请问这个是什么版本的?1 a/ l5 w, Z2 Z* \( g0 N/ D3 c

- X) U; Y; b* ?" Q) y另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?% b0 n8 J; ^$ K  @# }( {2 c
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
3 N1 e7 D! X1 V% r( {: E1 F  l
8 A$ F1 v1 D% P+ Q3 I6 K; h还有就是想问一下这个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 的?' E" X( I; d! p3 E

9 Z9 ?; _+ X2 `& b问题有点多,希望大神好人做到底,多教教我,谢谢您!
$ j  H' p0 [  u  h" Z8 f  [ ! ?; O9 J! i7 I, M3 v
回复 支持 反对

使用道具 举报

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;
8 t% t- ~+ g1 c( _: Z2 T# P; {, ]8 V- C
' f9 a; M+ r8 g; L可以根据环境的光线强度,修改摄像头的亮度参数: - A1 \* i& `0 X* _4 F
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode - @' f4 H- ~, L) g' O. m1 {6 v
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode : F( A8 o# @* d( R" s8 d, Y
Cloudy & i- ^) `; R9 A, S* K  W

1 j7 G( E6 D& i- C参数说明: % S5 L/ d4 q$ s& {) M
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
9 }, R9 n1 x& M. ^7 R% L, d: {+ w0 F: N7 x2 a& X2 ?
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
, e1 B% J# @+ \. ^
5 f: Q$ }0 h, B- ~, O3 _7 {+ l3 bvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 23:36 , Processed in 0.045475 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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