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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,
6 M2 ~+ ?4 T: W    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入: t* Q. R/ H9 j$ b1 S* c* N% @
"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
3 W* h+ ^4 R3 \1 R- V5 yroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2  V- s/ ~; `  _$ f
CAMERA capture
# Z1 L$ T% Z$ r, w$ N: c; h1 z0 y: Hinput_device /dev/video05 s4 c' n  d% k3 h2 j4 Z. J
Camera-Camera1 m. m  `- Y- v+ x
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000); J$ t9 ?6 e& W1 i& T
fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)! ?  Y$ ?' i: w( X( D
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
. r' E" W1 ]/ J5 Gcapture_buff_info[0].length = 4147200
( H, e$ \# q3 l7 J, P, A5 Jcapture_buff_info[0].index = 0
! }1 q( n$ ]2 E# ^. w" O  Wcapture_buff_info[0].start = 0xb6bec000
% C& `; k: [: L5 P) e- \capture_buff_info[1].length = 4147200
6 f$ J# K* t% a5 ^, A& L  b7 }4 wcapture_buff_info[1].index = 1# d8 \$ k+ v" R
capture_buff_info[1].start = 0xb67f7000
+ R0 \* j+ y/ J5 M8 M[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed
; ~2 E2 R2 ]- m3 w2 y  }1 O& ?% mCannot mmap = 2 buffer; R% D  n0 |: ]4 c7 N
Error in opening capture device for channel 0

( M) ]9 N1 p* i' E# B7 D" w 9 H- N8 x% W/ T5 ~
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
8 r3 z4 Z+ o: p( {
分享到:  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. S; e6 S) q9 g% Q
您的还是默认的bufsize的,再检查一下配置吧
" f* _7 j7 G# Q# s3 R+ C
4 J; O) ^" G: s% m0 {  Y+ w5 q
- G& m& v* o  V8 F& s! K) x
看一下,我把环境变量打印出来了,这样配置是对的吗?  n( a; \$ H# w& q: C0 s3 ^

7 k' c6 e. d. K* A& Q# {& k& t6 |) h( Y& u* L( O' x
root@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 20 \( ^  p0 d* T# W
CAMERA capture1 W( @6 C' t8 G# J8 ]) B. y" \5 d
input_device /dev/video0
& e$ H9 [1 Z& I1 a/ NCamera-Camera' i$ H! i8 M4 b1 {
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
+ f8 x3 w1 u- y* w% q2 Nfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)0 N3 B) f+ p8 C( V
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
* F+ R7 x+ M* b6 Kcapture_buff_info[0].length = 4147200
+ L6 ^1 A# s5 C7 qcapture_buff_info[0].index = 0$ ]! @/ @0 G$ \& a' c3 r1 N" b
capture_buff_info[0].start = 0xb6b40000: z% V3 {/ k* r& Z9 p* V5 V
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0
" P: v8 R" }9 L/ o6 B[   74.323663] Backtrace:
  j2 @0 F+ R3 Z) A( k: m/ u[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
& g) X+ Z" Y" T[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:200000937 m$ ~2 P) V: f8 @0 Q9 C
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
) ~8 H) V5 G2 r7 L. ~# @, N7 x[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)' A6 H) F" m8 [7 p2 ?7 n
[   74.406178]  r3:c71fbd1c r2:00000000% k: K& x* q3 F: ^" f' e/ @
[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d09 o1 P( n4 @8 M8 o6 b
[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)5 u% u4 d, m( E' U
[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)
; v" P3 o7 d: W- y4 l[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
# ^; t8 p1 x: K( s9 }[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0
- f, M6 s0 x2 q; g( y: y) _. }[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)# l4 {) s7 ^* z- d9 V0 v
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90( }' H; ^+ p# H' v
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)
# D5 M* S) i  _5 D, T$ [! X1 H4 n[   74.556197]  r5:c7ba8c00 r4:c72b69a0+ n1 D3 r1 g: w& ]
[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)
  Y2 t- L4 R5 G5 p[   74.587055]  r5:c71fe580 r4:c79c2e00
% ?& W  t  H9 A* N7 _[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
* \/ A5 L$ r8 p: |% U. F& z* y7 f[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
4 V0 K; D/ s$ x& O[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
1 k. {0 d; s# V1 p[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)$ o( a' x0 }* N& w
[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
! B! H% }, b: H; f[   74.688020] Mem-info:
& V4 Y' ^+ w2 N8 F1 p. V' M[   74.690383] DMA per-cpu:
1 A+ v- `+ S1 P* b[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17& A4 I# j5 e7 e# x
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0( Q$ t# o) T$ J9 _3 Y+ U
[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24) y+ u; d, Q: M: ?' ~# ?
[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:09 E7 \  ?- U* C+ ~3 Y! ^
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739( Z2 b3 w- g7 ~, R$ c: C$ B
[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0) z1 x7 G3 h3 }+ U2 n, k
[   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  J7 ]( D0 W0 o6 z& S; p8 k& e
[   74.846179] lowmem_reserve[]: 0 0 0( z: o" O% m& E0 h( q. G5 j
[   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
7 n' w) ~# N3 C- T3 _, \% D[   74.871095] 5393 total pagecache pages2 \/ U5 C- {+ ?, o8 u6 U, @
[   74.874878] 0 pages in swap cache9 ^1 G+ Z( y. @6 ^4 K6 F# }
[   74.896156] Swap cache stats: add 0, delete 0, find 0/0
- P; }6 V. o+ T/ c* u/ K[   74.901444] Free swap  = 0kB; y# S2 D2 Q4 t4 f
[   74.904346] Total swap = 0kB  ~& l1 I, ~- ~. W; N; I& v
[   74.946799] 49152 pages of RAM9 {) G4 k& T+ v) c" B7 r
[   74.949901] 25326 free pages* }# S8 k6 V' E( ~. \9 ~. `
[   74.952803] 3366 reserved pages0 q( ?9 ~- Q4 ]  D/ I( m9 y" R1 N6 a7 H
[   74.966186] 2124 slab pages. O3 S8 Q4 C8 [& Z, f
[   74.969063] 7387 pages shared
+ S9 E, F5 p: D3 G7 l' {$ o5 c/ i[   74.972058] 0 pages swap cached
6 d2 |/ m/ o8 b& ]. D0 ]- [9 l* X[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed( {5 L! J( {/ V; M5 Q
Cannot mmap = 1 buffer
5 ?. ]  u! e' g* d  u: XError in opening capture device for channel 0

7 N% S$ h$ W0 S6 L7 @6 O & [1 Y8 d% B. ~

5 u) z! c0 n3 r' L: k4 o这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。/ ^; [$ s7 P1 D" G  O

本帖子中包含更多资源

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

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:325 t& v5 q2 @  s/ ]
还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...

7 |; f- M2 c+ x) D8 a我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
" F1 ^6 e1 ]) T1 e1 t1 v: D第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
5 |8 ^5 u# O& H: @# N! `% @% O+ u- m+ p$ v% @5 {: d. S$ 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( H, Y2 _! A$ N) A! c1 I) s1 ^
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

! p0 T$ ?6 c3 _1 Q& n& c. W& h谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:7 k" D! R. i' s9 b
root@tl:~# cat /proc/cmdline
* B. i" s& n: a) O  @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
: R% |. n! ^; _& k( x) Y, A

- z7 h4 _7 j# x+ j9 n5 F我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
3 x+ M5 H. e2 L$ e9 F那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!) I8 o. x; M. _" N

  Y$ D0 o, J. x# s4 m以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助4 x& o8 C2 O2 t2 W* Q
root@tl:~# uname -a
5 a* _% L) v- E- A/ J: ?Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

3 `( w' {! G; F ; d4 q  b6 A. S# U1 s7 j

: {; F2 @: j7 j4 c 9 A* L$ r" Q! p$ k$ y8 ?
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;. C8 L) z( `5 @* P/ u
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;8 X/ a( K$ c, V/ R& T& e# _' J* D% ^
第三步,重启板子,然后再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
& i8 z3 I0 _. X  v9 Y第一步,确认你的u-boot版本是不是v1.5或以上版本;
" J$ K' a7 C5 ^, n1 H第二步,可以在u-boot里面执行:nand erase 0 20000; ...
. ^2 W# `! G" k) ]
您好,
6 C6 i* H9 B# W! c8 `0 B我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf
' n* A2 j. q# y" ~5 T& V请问这个是什么版本的?/ V0 R! d; Z" S  d

! n: l7 Y+ n! |0 Z9 ?另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?3 P3 D  P: V7 ]6 r+ a
我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
' Q4 j) ^0 m: H, ?9 ~. c % z$ S" ]# A/ K0 t# ]( s6 n
还有就是想问一下这个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 的?: Z. l9 i5 k1 T6 L6 E

+ J4 Z8 S- f5 _问题有点多,希望大神好人做到底,多教教我,谢谢您!
8 `# V+ J* q. j
1 J1 r+ ~8 R/ \' ]
回复 支持 反对

使用道具 举报

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;
  ]  o! b: I' [- i" J- O
6 c6 v. k" C/ n) S8 _$ m5 x可以根据环境的光线强度,修改摄像头的亮度参数:
. {7 o' O' q6 W* ~( j: M# a- oroot@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode
2 g) a8 |% X% l/ P$ D# vroot@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode . q. ~* L; P9 M- k: a
Cloudy
, ~9 {* |- p: R8 L8 r2 m( \" {+ o, ^" J% ]& |1 x
参数说明:
, Q( z* @- R0 t# z( P2 J; a( Nlight mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home
/ s4 x/ \" l  i6 b. B1 B2 L5 g& B: _. b/ A
如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c3 t( Z. K5 m$ q$ S) c" Y9 X

4 g3 }" ^" R9 Z, zvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 16:38 , Processed in 0.056931 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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