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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

TL2640-COMS摄像头测试 问题

[复制链接]

2

主题

10

帖子

109

积分

注册会员

Rank: 2

积分
109
跳转到指定楼层
楼主
发表于 2016-1-26 14:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位工程师,( B6 n8 J7 {1 l0 O5 E& V/ @- n
    我在用TL138-EVM-A3开发板,摄像头为TL2640,在开发板快速体验中的 TL2640-COMS摄像头测试,不能实现,我用的Linux3.3内核,U-BOOT 环境变量也已经设置好了,在输入
. c$ N) |9 l0 t* ?* i% W0 P& E"vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2" 命令后,出现如下错误提示:
" S* S/ Y: ~1 v' Z! s( Kroot@tl:/home/ip_camera# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 22 `& z- `8 E! c; x# Y
CAMERA capture. d" J, s; Z, {1 P, n. W! Z8 b
input_device /dev/video0
5 L' x5 a7 N& e' J7 q: u" aCamera-Camera
. U" O. X3 N% K# K' a+ A4 T0 Wfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
  O1 Y' L" r& T4 |fmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
$ C9 J0 Y7 P. E4 k" d5 c* B  Ffmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
) \+ B5 t# b' c$ r" @3 V5 }: }capture_buff_info[0].length = 4147200
6 E0 W/ Z# H9 p0 f1 h. ^- e+ icapture_buff_info[0].index = 00 d% \& N' Z) x- F& _, I3 z
capture_buff_info[0].start = 0xb6bec000- ?; Y! _$ Q8 u, T# L
capture_buff_info[1].length = 4147200
; G4 K% D  b7 @3 u; W( rcapture_buff_info[1].index = 1
1 C0 I" C5 W9 p8 a0 M$ lcapture_buff_info[1].start = 0xb67f70008 j$ \; a& p/ ?! C& x
[   19.078114] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed9 |4 @+ T: I, z, [
Cannot mmap = 2 buffer6 u( Z1 m3 {4 e- g
Error in opening capture device for channel 0

7 m& K, U0 X( [1 ~ % U1 d, k# [' |
我是按照开发板快速体验手册操作的,请帮我看看是哪里出了问题,谢谢!
' B5 l9 f- U2 a9 {
分享到:  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
( o: d5 [1 q' @# B" S' }6 Z; E! T您的还是默认的bufsize的,再检查一下配置吧

1 ~# f, n$ a! V- v0 r5 o0 ^3 k- _6 l
. e) V+ i) {. ]4 n- I* r$ B; o5 O# x+ @3 X% ^
看一下,我把环境变量打印出来了,这样配置是对的吗?
6 A( J* ?9 m0 n% I; g. |$ X3 z4 P. N& ~$ Q# e

  I4 F( U' ?; P; T- ]# groot@tl:/home# ./vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
9 V  [7 h0 H9 t$ g. t2 t1 tCAMERA capture& Y+ J1 a4 }2 d# P7 ^( G, u
input_device /dev/video0
7 Q; S- c, M8 qCamera-Camera: ^- V! G1 O, n) v- p, i
fmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)
# |. f0 W1 v. Z$ O  K1 y( S' ]& Xfmt->fmt.pix.pixelformat(50424752),V4L2_PIX_FMT_YUV422P(50323234),V4L2_PIX_FMT_RGB565(50424752)
$ H7 |! U9 N' G. `( q# Zfmt->fmt.pix.bytesperline(1600),fmt->fmt.pix.sizeimage(960000)9 l9 [9 S% u0 e1 \
capture_buff_info[0].length = 4147200- k3 w, s, z2 `, A
capture_buff_info[0].index = 0+ e! s9 y* \/ @5 q( C% I" A' ]
capture_buff_info[0].start = 0xb6b400007 h5 h! z) C( W" h+ Q7 J
[   74.316779] vpif_mmap_loopb: page allocation failure: order:10, mode:0xd0, e, W8 r: w! a! d, W$ d. J
[   74.323663] Backtrace:
# Q/ O' A5 k4 K1 d  x7 J[   74.333553] [<c000c1a8>] (dump_backtrace+0x0/0x110) from [<c0408194>] (dump_stack+0x18/0x1c)
. L* c1 o& J; w* {  J# D1 y[   74.356223]  r6:00000000 r5:000000d0 r4:00000001 r3:20000093$ ?9 ?6 O  x; d  U5 \: h1 T
[   74.362055] [<c040817c>] (dump_stack+0x0/0x1c) from [<c005dc50>] (warn_alloc_failed+0xf4/0x118)
( y$ d6 H! \: {[   74.386451] [<c005db5c>] (warn_alloc_failed+0x0/0x118) from [<c0060764>] (__alloc_pages_nodemask+0x578/0x5d8)% y* F# M! _4 |- {& E: ]
[   74.406178]  r3:c71fbd1c r2:00000000
& R' m8 |/ @0 P[   74.409822]  r7:c05bd478 r6:c71fa000 r5:0000000a r4:000000d0
" ^, n/ w) U( C$ z7 q- M[   74.415828] [<c00601ec>] (__alloc_pages_nodemask+0x0/0x5d8) from [<c000df0c>] (__dma_alloc+0xd8/0x2ec)
% v% {8 F* ]$ K+ Y" L4 Y" q[   74.447742] [<c000de34>] (__dma_alloc+0x0/0x2ec) from [<c000e1b0>] (dma_alloc_coherent+0x5c/0x68)4 o( A8 I7 q! j2 s% L, C
[   74.467181] [<c000e154>] (dma_alloc_coherent+0x0/0x68) from [<c02d5a20>] (__videobuf_mmap_mapper+0xa8/0x180)
) Y* Q$ {( A& a( [/ Z5 \[   74.496167]  r7:c7182920 r6:c7ba8d90 r5:c71feee4 r4:c72b69a0* L9 o: P8 o4 W7 }, {0 K
[   74.502044] [<c02d5978>] (__videobuf_mmap_mapper+0x0/0x180) from [<c02d36c4>] (videobuf_mmap_mapper+0xc0/0x110)" y! G7 |3 {+ D
[   74.527223]  r8:c708d300 r7:b674b000 r6:c72b69a0 r5:c72b69a0 r4:c7ba8d90: @, D9 N7 H( J! e6 D
[   74.534166] [<c02d3604>] (videobuf_mmap_mapper+0x0/0x110) from [<c02de0bc>] (vpif_mmap+0x40/0x50)& P/ {. w# b! x/ n+ n3 F" A
[   74.556197]  r5:c7ba8c00 r4:c72b69a0
- u$ q$ p' P4 @. u( x+ |[   74.559945] [<c02de07c>] (vpif_mmap+0x0/0x50) from [<c02c55f4>] (v4l2_mmap+0x70/0x90)1 ?5 L0 e" `, n) U8 l$ V
[   74.587055]  r5:c71fe580 r4:c79c2e004 T1 W) ~9 D% y( M7 y/ Y2 C3 W
[   74.590771] [<c02c5584>] (v4l2_mmap+0x0/0x90) from [<c007846c>] (mmap_region+0x268/0x4c0)
3 R* v" |; r4 O! ~* E, ?+ U[   74.616153]  r6:c71fe580 r5:000000ff r4:c72b69a0 r3:c02c5584
/ w. ^0 x8 P8 c[   74.621976] [<c0078204>] (mmap_region+0x0/0x4c0) from [<c007897c>] (do_mmap_pgoff+0x2b8/0x318)
1 ~! H" R# V4 Y& P[   74.646297] [<c00786c4>] (do_mmap_pgoff+0x0/0x318) from [<c0078a74>] (sys_mmap_pgoff+0x98/0xd0)
) k5 `/ K) e$ r7 h- [[   74.655109] [<c00789dc>] (sys_mmap_pgoff+0x0/0xd0) from [<c0009440>] (ret_fast_syscall+0x0/0x2c)
6 p3 o4 a* D" z1 _/ P# _# {[   74.688020] Mem-info:
3 L% d# D( W. n1 y1 Y[   74.690383] DMA per-cpu:# s! p& d, W9 d6 `2 X5 \
[   74.692955] CPU    0: hi:   18, btch:   3 usd:  17) @& S: J/ h$ A8 I0 [
[   74.700640] active_anon:3001 inactive_anon:46 isolated_anon:0
/ |. }0 P$ q9 q# e8 r7 w[   74.700664]  active_file:2684 inactive_file:6310 isolated_file:24
7 U! n/ _" n9 r7 ~[   74.700684]  unevictable:0 dirty:67 writeback:0 unstable:0* E) y3 {: W' s; p
[   74.700700]  free:7432 slab_reclaimable:505 slab_unreclaimable:739
4 @8 ~/ r6 {' A[   74.700718]  mapped:2376 shmem:141 pagetables:143 bounce:0# w, h" N2 O" W, g' W* T
[   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 E5 ^( z& n* n6 a3 u$ k[   74.846179] lowmem_reserve[]: 0 0 0
7 m4 |7 `  [4 m/ C/ m" {( N- {" T8 Q  [" s[   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
2 @% y& |; b. B% o! q[   74.871095] 5393 total pagecache pages8 }# P4 x* N2 y0 U! A/ t5 g
[   74.874878] 0 pages in swap cache
$ ?# q. t) ]1 o[   74.896156] Swap cache stats: add 0, delete 0, find 0/01 c) d. T) M. Q9 S- {+ E0 N
[   74.901444] Free swap  = 0kB# G$ I# `* R9 x1 o; M# Q1 u
[   74.904346] Total swap = 0kB) f2 V$ E, r" }5 x: e
[   74.946799] 49152 pages of RAM) w! h7 c$ J0 m# {+ M# j  ?) F5 I
[   74.949901] 25326 free pages( N) s  }$ l# ]' ?
[   74.952803] 3366 reserved pages
2 n0 r7 i5 R$ R$ P[   74.966186] 2124 slab pages
, t& F7 c: n( Y& Z" B[   74.969063] 7387 pages shared
6 ?3 d  \4 h% P3 Y% E[   74.972058] 0 pages swap cached6 T- {6 `9 g$ ?- O7 h, W6 g9 G
[   74.975243] vpif_capture vpif_capture: dma_alloc_coherent size 4149248 failed% ?2 H) Q0 x1 j& {/ X* O' X
Cannot mmap = 1 buffer  A) B6 o+ ?: ?/ s8 e6 ^9 ~
Error in opening capture device for channel 0
( }4 }+ D' S6 [

2 l) `& y* X0 ? 8 v, K4 b# `6 |" C& J& a
这上面是新的错误提示,请再帮我看看是哪里出了问题,谢谢。
0 e8 h. t+ l# r) K" Q" O0 Z

本帖子中包含更多资源

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

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
% p) N8 u1 P. H# b8 U- y  c还是没对的,直接按手册的步骤仔细对一下吧,改后应该是960000,您的还是4147200的 ...
- W/ G" P; x- y- Q& h/ A8 a0 Z
我改了的,你看我的printenv 里面,那里设置就是960000,我是按照手册的步骤做的。第一步,先修改U-BOOT里的环境变量,setenv optargs ${optargs} 'vpif_capture_format=RAW vpif_capture.ch0_bufsize=960000' 保存:saveenv。
3 ^) ^! h( H( N/ @0 p4 [第二步,执行vpif_mmap_loopback_sd -c 2 -d 0 -w 1 -m 2
! u8 {( U9 P9 i# f0 y8 h1 v. t' _: t  @
我这应该没错吧,或者你给我说下正确的步骤,最好把所有要执行的命令也给我发一份过来,谢谢。
回复 支持 反对

使用道具 举报

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$ t0 \7 I2 c& g5 b/ z
在内核里面可以查看u-boot真正传递到内核的参数:使用cat /proc/cmdline,看看设置的参数是否有正常传递给 ...

# r9 U; f8 v$ ~谢谢您的回复,我查看了,确实没有把vpif_capture的参数传递进去,以下是cmdline里的参数:! k# l% Y) x2 u; n/ X* e, [( T5 l$ H- U
root@tl:~# cat /proc/cmdline
  f8 N+ p$ A* n! Q% t  ^. X* _5 gmem=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

  m# K# |& i% v3 U; T6 e; R : n( R# Q' ^. q& ]0 h! M+ l
我是按照手册上设置的环境变量,为什么没有成功传递进去呢?
; J; k( k" Z2 y, @那我现在怎么才能把这个环境变量参数传递进去呢?望大神多指教!
" _. w; b4 L* @- c
7 o) K$ k6 ]9 n) D* D# [3 D4 ~以下是我内核的参数,是按照手册里制作的SD卡系统,希望对解决这个问题有所帮助
4 |" f; Z+ x! y$ I  Q0 Jroot@tl:~# uname -a- _4 g" ?: P# l& T" V' {, R0 y6 `
Linux tl 3.3.0+ #1 g74e120f PREEMPT Fri Mar 13 00:15:15 HKT 2015 armv5tejl GNU/Linux

5 S, c2 F0 m+ E: |& Z# [% D6 l. w
4 Z; Y1 L& X9 `; S " w' ~- E$ T  n2 i' @4 w" b/ q
5 e' l$ q9 r3 d) O! d& a0 p7 n
回复 支持 反对

使用道具 举报

0

主题

161

帖子

1093

积分

创龙

Rank: 8Rank: 8

积分
1093
8#
发表于 2016-2-1 10:12:10 | 只看该作者
第一步,确认你的u-boot版本是不是v1.5或以上版本;) @" J: i- p( e; R; z1 ~; v
第二步,可以在u-boot里面执行:nand erase 0 20000;擦除之前的环境变量;9 T2 Y  F7 j( d4 K5 |9 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! g5 h3 ~3 A* u* z9 M7 `
第一步,确认你的u-boot版本是不是v1.5或以上版本;# o' G3 g+ }& L- l
第二步,可以在u-boot里面执行:nand erase 0 20000; ...

5 p5 D7 ~) n) u$ B7 o% R您好,
) W6 ]% |, {* E/ @1 s( |我不知道怎么查看uboot版本号,百度了一下也没找到方法,这下面是uboot 启动后打印了参数:U-Boot 2012.04.01-00059-g7363edf- }% ]; I4 w. `- e/ n4 u) \
请问这个是什么版本的?
5 k$ h8 H- j- H( e6 ~( m, j
; P: U! @, I# Q9 e1 C另外,为按照您说的把环境全部擦了,然后从新写了一下,现在已经有图像了,但是非常的模糊,我这里也有C6748的核心板,我之前用C6748的调过(修改了ov2640的配置寄存器),很清晰,那我现在想把TL138上面的画面也调清晰一点,请问怎么弄呢?
* n! |* m0 K2 P! e& M8 l  Q我看了vpif_mmap_loopback_sd.c的源码,感觉里面是按v4l2的框架写的,没有找到调节摄像头参数的函数,请问为怎么才可以自己去配置TL2640的参数呢?
/ l# h% a+ q7 t( f( P6 Q
$ q" P6 Z- i' T9 q+ l还有就是想问一下这个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 的?
7 N+ s( M: y8 t+ ^$ I" L
, {' N2 L1 q  y. f( G3 @7 K问题有点多,希望大神好人做到底,多教教我,谢谢您!6 o( V9 t' ^. e" |& H7 t

1 `0 a! a! i) @
回复 支持 反对

使用道具 举报

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;0 v  r+ ^6 z& P- B$ s1 p& v
# j' o" W- _8 c8 o# {5 y, w' D( s4 ?
可以根据环境的光线强度,修改摄像头的亮度参数: 8 C9 N& D( s# e* e1 C. d
root@am180x-evm:~# echo "Cloudy" > /sys/module/ov2640/parameters/lightmode 4 u: Z# W. [) O
root@am180x-evm:~# cat /sys/module/ov2640/parameters/lightmode
1 c3 z  ~% I4 q! t9 ]: _- h4 ~Cloudy   a- j0 R$ m. ^" i2 _9 E

% v* q- g" L- u7 Z) h2 Y4 L' d, {8 C参数说明: & w0 W4 [$ D+ X- l4 e3 S
light mode (default:Cloudy): Auto,Sunny,Cloudy,Office,Home & o" q4 g) S% P: `* q2 ^

$ C9 _" I3 E6 C7 O如果要自己优化参数,需要修改ov2640的驱动程序:drivers/media/video/ov2640.c
6 \3 P% m: w- `, N% z
* B  H1 q" G) \' {! K/ pvpif_mmap_loopback_sd.c可以像你那样编译,如果出错,可以通过错误提示判断具体是什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 15:00 , Processed in 0.046629 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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