Yep. You ask a good question. It would be nice to coalesce around a specific
kernel, but there are different requirements. What do you want to do with
Wandboard?
For kernels, there are at least three options now, and probably more:
1) The default kernel for Wandboard which is maintained by Wandboard.org. This
is based on the Freescale Android kernel tree (3.0.35). This is the one that
ends up in the Android and Ubuntu images available for download on the
Wandboard.org site.
2) The mainline kernel (3.11+), for which Wandboard support is being worked on
by members of this group and others. This kernel does not support GPU/VPU as
far as I know, but has support for most of the other peripherals. One nice
thing that I've seen is that mainline includes the ability for the Broadcom
BCM4329 to work as an access point, which is not supported in the 3.0.35 kernel
I'm maintaining or the orignal Wandboard kernel.
3) The kernel that I'm currently maintaining with the help of others such as
Stephan Rafin. This is based on the Freescale 3.0.35_4.0.0 kernel and we work
to closely track it. This is the default kernel used in the wandboard machines
in Yocto. I also believe that this is the kernel Stephan is using in his XMBC
images. We invite anyone to submit patches for this, but otherwise we're just
working on it, incorporating fixes for the things we are doing with it, and
trying to stay on top of changes to the FSL kernel as we go.
On 8/5/13 10:04 PM, Dave McMordie wrote:
> Any chance MIPI CSI capture has been tested and works with this kernel? I see a
> bunch of fixes related to this, but I am not clear on whether it is fully
> working or not.
I have a working prototype of a 5MP camera using MIPI-CSI on Wandboard, so it
works. The commits to the kernel concerning MIPI are all about getting that
working. As far as I know, these have not been pulled into any of the other
kernels. I'm looking into ways of making this module available to the mass
market.
Kernel dist |
Notes |
VPU |
HDMI |
Wifi |
Video capture |
Sound |
SATA |
Source |
Freescale LTIB |
Limited wandboard support |
? |
? |
? |
? |
? |
? |
|
Robert Nelson |
No new dev—> mainline |
Y |
Y |
Y |
N |
Y |
Y |
|
Yocto (John Weber) |
|
Y |
Y |
Y |
Y |
Y |
? |
|
Wandboard official |
|
Y |
N |
Y |
N |
Y |
? |
http://repo.or.cz/w/wandboard.git/shortlog/refs/heads/wandboard |
Mainline Linux |
|
Y |
? |
Y |
Y |
Y |
Y |
Kernel dist |
Notes |
VPU |
HDMI |
Wifi |
Video capture |
Sound |
SATA |
Source |
Linux 3.0.35� (John Weber) |
Non Android/Linux use |
Y |
Y |
Y |
Y |
Y |
Should work, needs comment |
https://github.com/johnweber/linux.git
|
Android 3.0.35 |
Android use ideally |
Y |
Y |
Y |
N |
Y |
Should work, needs comment |
http://repo.or.cz/w/wandboard.git/shortlog/refs/heads/wandboard�
|
Mainline Linux |
The bleeding edge |
N |
Y |
Y |
N |
Y |
Y |
Great, thanks. �Kernel is building now; I may start another thread once I have results either working or not.
I've put together a small grid to reflect my incomplete understanding of the kernel comparison. �Please feel free to edit/correct so that others have a better reference on this:
Kernel dist
Notes
VPU
HDMI
Wifi
Video capture
Sound
SATA
Source
Freescale LTIB
Limited wandboard support
?
?
?
?
?
?
�
Robert Nelson
No new dev�> mainline
Y
Y
Y
N
Y
Y
Yocto� (John Weber)
�
Y
Y
Y
Y
Y
�?
Wandboard official
�
Y
N
Y
N
Y
�?
http://repo.or.cz/w/wandboard.git/shortlog/refs/heads/wandboard�
Mainline Linux
�
Y
?
Y
Y
Y
Y
--
You received this message because you are subscribed to the Google Groups "Wandboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to wandboard+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
Hi Dave,
Sata should work on my kernel. I haven't personally tested though.
Freescale LTIB is not a kernel. I would take it off this list.
Wandboard official HDMI works, but there is some question about EDID/DDC and the use of HDMI to DVI converters. The EDID/DDC question pervades all the kernels, as far as I know. SATA probably works there as well, but I don't use this kernel.
I don't know of anyone doing Video capture in Mainline, but it shouldn't be an issue. The main problem there is the backend drivers for sensors and using the VPU/IPU.
This looks like the start of a useful wiki page for wiki.wandboard.org. A lot more columns need to be added.
Kernel dist
Notes
VPU
HDMI
Wifi
Video capture
Sound
SATA
Source
Linux 3.0.35 (John Weber)
Non Android/Linux use
Used in Yocto and XMBC
Y
Y
(EDID?)
Y
Y
Y
Should work, needs comment
https://github.com/johnweber/linux.git
Branch: wandboard_imx_3.0.35_3.0.0
Android 3.0.35
(Wandboard official)Android use ideally
Y
Y
(EDID?)
Y
N
Y
Should work, needs comment
http://repo.or.cz/w/wandboard.git/shortlog/refs/heads/wandboard
Mainline Linux
The bleeding edge
N
Y
(EDID?)
Y
N
Y
Y
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
+
John
--
You received this message because you are subscribed to the Google Groups "Wandboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to wandboard+unsubscribe@googlegroups.com.
On 8/6/13 9:04 AM, Dave McMordie wrote:
> Some questions about the MIPI support.
dependencies are setup right. In Yocto, I just modprobe mxc_v4l2_capture and
that brings in all of the ipu modules. I have the mxc_mipi_csi2 driver built-in
to the kernel. The ov5640 module loads automatically (with the
camera_sensor_clock module) when the platform data is set up correctly (i.e. the
board_wand.c file).
What root filesystem and build system are you using?
>
> dmesg -c
>
> Next I load my driver:
>
> insmod ov5647_mipi.ko
Cool! If you want to contribute it, let me know.
>
> Then I check that the device nodes have appeared (in my case video1, since
> there is a UVC device on video0).
>
> Next I run VLC and try to load /dev/video1 as a V4L2 device.
>
> What steps do you do to load the camera and capture?
I first used mxc_v4l2_capture.out in the /unit_tests directory. That gave me a
raw image file that I could inspect using GIMP (although that needed a good bit
of tweaking to see if I could get a useful image). Once I was reasonably
confident that what I was seeing was good image data, I started using gstreamer.
gst-launch -v mfw_v4lsrc fps-n=30 capture-mode=4 ! vpuenc codec=6
bitrate=4000000 ! rtph264pay ssrc=1 timestamp-offset=0 seqnum-offset=0 !
udpsink host=192.168.0.125 port=5000
In this case, I was streaming the video over a network using RTP. This could
probably be modified to view the image data on the HDMI display.
Thanks very much for your help.
My driver now loads correctly, though it will do nothing useful until I set up the registers.
For the de-bayer, the reference manual lists Raw (Bayer) as supported input format. If you see red flags suggesting this won't work or will be tough, please let me know. I literally have no experience writing Linux drivers, but it doesn't look too tough from where I sit.
On 8/6/13 9:04 AM, Dave McMordie wrote:
> Some questions about the MIPI support.
dependencies are setup right. In Yocto, I just modprobe mxc_v4l2_capture and
that brings in all of the ipu modules. I have the mxc_mipi_csi2 driver built-in
to the kernel. The ov5640 module loads automatically (with the
camera_sensor_clock module) when the platform data is set up correctly (i.e. the
board_wand.c file).
I grabbed the modules.dep from a Yocto build-- I couldn't figure out how to get the kernel build system to generate it (I am building on the device with make ARCH=arm -j5).
What root filesystem and build system are you using?
Linaro Ubuntu 12.04. It seems to be lacking a bunch of things (like hw video acceleration), but it gives me a useful desktop environment to do dev on. I find cross compiling a hassle, and the device is fast enough with -j5.
>
> dmesg -c
>
> Next I load my driver:
>
> insmod ov5647_mipi.ko
Cool! If you want to contribute it, let me know.
When it is up and running I'll send it your way for inclusion.>
> Then I check that the device nodes have appeared (in my case video1, since
> there is a UVC device on video0).
>
> Next I run VLC and try to load /dev/video1 as a V4L2 device.
>
> What steps do you do to load the camera and capture?
I first used mxc_v4l2_capture.out in the /unit_tests directory. That gave me a
raw image file that I could inspect using GIMP (although that needed a good bit
of tweaking to see if I could get a useful image). Once I was reasonably
confident that what I was seeing was good image data, I started using gstreamer.
gst-launch -v mfw_v4lsrc fps-n=30 capture-mode=4 ! vpuenc codec=6
bitrate=4000000 ! rtph264pay ssrc=1 timestamp-offset=0 seqnum-offset=0 !
udpsink host=192.168.0.125 port=5000
In this case, I was streaming the video over a network using RTP. This could
probably be modified to view the image data on the HDMI display.
Thanks again for all your help.
--
You received this message because you are subscribed to the Google Groups "Wandboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to wandboard+...@googlegroups.com.
/* For MX6Q:
--
Hi Dave,No. That is setting bit 19 to 0 which routes mipi to the IPU. I made that change to get the ov5640 working on Quad.
You may be right. I tried using an on-board clock oscillator as well, and I don't think I was ever able to get it to work with it, but there were lots of things changing at the time. Ultimately I wanted to use the 24Mhz source from the processor due to cost, so as soon as I got that working I pulled the oscillator off.
case V4L2_PIX_FMT_SBGGR10:
size = f->fmt.pix.width * f->fmt.pix.height * 2;
bytesperline = f->fmt.pix.width * 2;
break;
However, this, and correctly declaring the image format (as opposed to faking it as UYVY) doesn't seem to make any difference to the frame timeout issue.
On the scope, I don't see anything recognizable as clock on the clock lane, but I do see tons of what looks like noise over a 0.5 V flatline. My scope is a 5 GS/s Tektronix with 1.5 GHz probes. I have no experience probing this kind of bus and have a feeling it could be working fine despite what I see (due to the noise immunity of the bus, and I may also simply be missing the frames). Also, it I touch the lines while it is coming up it fails to get the clock (suggesting that when it says it is working it is indeed working). Were you able to successfully probe clock/data lines on your sensor board?
The fact that the mipi registers are claiming the clock is stable (error1 != 0x200) and data is coming (error1 != 0x0)-- does that suggest to you that all is good, or could this indeed be a signal integrity problem?
Hi again John,
On Wednesday, August 7, 2013 11:39:53 AM UTC-4, John Weber wrote:You may be right. I tried using an on-board clock oscillator as well, and I don't think I was ever able to get it to work with it, but there were lots of things changing at the time. Ultimately I wanted to use the 24Mhz source from the processor due to cost, so as soon as I got that working I pulled the oscillator off.
As soon as I switched to the processor generated clock, it syncs every time.
However I am not getting frames. (ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0).
VLC is able to open the dev node, get all kinds of info and start pre-buffering without errors. It just times out waiting for the actual frames. I am starting to thing this is because the IPU is not comfortable with the V4L2_PIX_FMT_SBGGR10 format. Based on input from this thread (https://community.freescale.com/message/312336#312336), I have added the following code to mxc_v4l_capture to make sure the frame buffers are adequate for what will be 16 bit data:
case V4L2_PIX_FMT_SBGGR10:
size = f->fmt.pix.width * f->fmt.pix.height * 2;
bytesperline = f->fmt.pix.width * 2;
break;
However, this, and correctly declaring the image format (as opposed to faking it as UYVY) doesn't seem to make any difference to the frame timeout issue.
On the scope, I don't see anything recognizable as clock on the clock lane, but I do see tons of what looks like noise over a 0.5 V flatline. My scope is a 5 GS/s Tektronix with 1.5 GHz probes. I have no experience probing this kind of bus and have a feeling it could be working fine despite what I see (due to the noise immunity of the bus, and I may also simply be missing the frames). Also, it I touch the lines while it is coming up it fails to get the clock (suggesting that when it says it is working it is indeed working). Were you able to successfully probe clock/data lines on your sensor board?
The fact that the mipi registers are claiming the clock is stable (error1 != 0x200) and data is coming (error1 != 0x0)-- does that suggest to you that all is good, or could this indeed be a signal integrity problem?
If this is not a signal integrity issue, can you think of anything special I should look at which would help me identify why I am not getting frames? I am going through the mxc_v4l2_capture code now to turn on tracing wherever I can.
Thanks again for your help with this. I am hoping this discussion will help others integrate more sensors into this platform.
Dave
Crap. But this is the error I saw before I changed the internal routing from the CSI to the IPU. It seems like v4L2 is waiting for a buffer from the capture driver, and when it doesn't get one, it times out. There are two IPUs on the Quad. I wonder if you could be listening on the wrong one? Can you share the mods you have done to the board_wand.c file? A patch would be perfect.
I didn't have to dig this far to get the OV5640 working. It could still be SI, but that seems doubtful.
I suspect that you're running into something with the internal CSI to IPU routing or as you suspected it could be an image format problem.
No problem. I would push this to the Freescale Community now though, since it seems that we are the only folks talking here and there could be more knowledgeable people on that forum. If you do that, send me a message with the URL and I'll go follow it.Thanks again for your help with this. I am hoping this discussion will help others integrate more sensors into this platform.
I have got this worked.
when i set the AXI_CLK_ROOT clock to 528Mhz,(default 264Mhz),
2560x1440@30fps is worked fine.
So it seems that the "ccm_pixel_clk" is not enough in CSI2IPU moudle or MIPI core
.ipu_id = 0,.csi_id = 0,
.v_channel = 0,
sorry for my english,thank you so much.
Hi Mr Dave,My camera is connected to VC0, IPU0, CSI0, and I edited in kernel like at here https://github.com/mcmordie/linux/compare/johnweber:wandboard_imx_3.0.35_4.0.0...wandboard_imx_3.0.35_4.0.0, but preview is as attach file and i received a warring " IPU1_INT_STAT_5=0x00000001", my camera has clock 880MHZ, 2 lanes, and i had configure as below:.mclk = 24000000,.mclk_source = 0,.csi = 0,.io_init = mx6q_mipi_sensor_io_init,.pwdn = mx6q_mipi_powerdown,{.csi = 0,.ipu = 0,.mclk_source = 0,.is_mipi = 1,},.ipu_id = 0,.csi_id = 0,.v_channel = 2,.lanes = 2,.dphy_clk = "mipi_pllref_clk",.pixel_clk = "emi_clk",
/* For MX6Q:
in file mxc_mipi_csi2.c i edit :mipi_csi2_write(info, 0x00000034, CSI2_PHY_TST_CTRL1);//34 880mhzRegister DPHY is 0x330, ERR1 and ERR2 are 0x00. I found on internet, in this thread,Gao Jianzhong also has a same problem, he was solve that problem as below:I have got this worked.
when i set the AXI_CLK_ROOT clock to 528Mhz,(default 264Mhz),
2560...@30fps is worked fine.
So it seems that the "ccm_pixel_clk" is not enough in CSI2IPU moudle or MIPI core
if (ov12830_data.pix.pixelformat == V4L2_PIX_FMT_SBGGR10)
{
mipi_csi2_set_datatype(mipi_csi2_info, MIPI_DT_RAW10);
}
else
pr_err("currently this sensor format can not be supported!\n");