i.MXプロセッサ ナレッジベース

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX Processors Knowledge Base

ディスカッション

ソート順:
The default BSP release supports sii902x hdmi card via LCDIF in i.MX6 Solo, but doesn't support it via IPU display interface in i.MX6 Dual/Quad/Plus. The patch provides support for the Sii902x HDMI video driver for i.MX6 Dual/Quad/Plus. Useful documents: MCIMXHDMICARD: Schematic for sii902x hdmi card MCIMX6Q-SMART DEVICE PLATFORM: Schematic for i.MX6 Quad Sabre SDP Software version: Linux 3.14.52_1.1.0-ga Verified platform: imx6q-sabresd imx6qp-sabresd Patch: 0001-video-mxc-sii902x-add-sii902x-hdmi-card-driver.patch 0002-arch-arm-boot-dts-add-sii902x-hdmi-card-devicetree-n.patch Features: Support video mode setup via uboot command; Support video mode setup via device tree; Supprt HDMI hot-plug; Support many video modes and a dynamic switching between them; Notes: The default settings( don't add "video=" to bootcmd) are as follows: ---------------------------------------------------------------------------------------- ------------ /sys/class/graphics/fb0 DISP4 BG - DI1 U:1024x768p-60 ldb 2-layer-fb-bg ------------ /sys/class/graphics/fb1 DISP4 FG overlay 2-layer-fb-fg ------------ /sys/class/graphics/fb2 DISP3 BG - DI1 U:1920x1080p-60 hdmi 2-layer-fb-bg ------------ /sys/class/graphics/fb3 DISP3 FG overlay 2-layer-fb-fg ------------ /sys/class/graphics/fb4 DISP3 BG sii902x_hdmi 1-layer-fb ------------ /sys/class/graphics/fb5 DISP4 BG --------------------------------------------------------------------------------------- If you want sii902x_hdmi to be fb0, you can add following arguments to bootcmd: video=mxcfb0:dev=sii902x_hdmi,1920x1080M@60,if=RGB24 video=mxcfb1:off video=mxcfb2:off video=mxcfb2:off consoleblank=0 Risks: Sometimes the sii902x will fail to read hdmi edid information, and the modelist of this framebuffer will be NULL. At this time, the driver will setup a default video mode which has been tuned  on imx6q-sabresd and imx6qp-sabresd. The default video mode is as follows: /* 1080p @ 56 Hz */ 60, 1920, 1080, 7692, 100, 40, 30, 3, 10, 2, 0, FB_VMODE_NONINTERLACED, 0 The user can modify this default setting for their case. Specially, there are some risks to use 1080p@60 video mode for imx6qp-sabresd. The hdmi device will has no valid hdmi signal output in this case. For example, /* 1080p @ 60 Hz */ 60, 1920, 1080, 6734, 148, 88, 36, 4, 44, 4, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, 0 The user sholud set these values according to hareware parameters.
記事全体を表示
CLBlast (https://github.com/CNugteren/CLBlast) is a modern, lightweight, performant and tunable OpenCL BLAS library written in C++11. CLBlast implements BLAS routines: basic linear algebra subprograms operating on vectors and matrices. I enable the library on i.MX8MQ EVK/ i.MX8QXP MEK based on Vivante GPU GC7000L and  i.MX8QM MEK Vivante GPU GC7000XSVX. And I also tune its performance on i.MX8MQ/8QM/8QXP following https://github.com/CNugteren/CLBlast/blob/master/doc/tuning.md. The attached Yocto Recipe bb file base on L4.14.98 GA release.
記事全体を表示
(DEPRECATED. Please check this document for Real Time Streaming) A server can be streaming video and a client, in this case a i.MX6 target, is receiving and decoding it. For example, a server with GStreamer and a web camera connected, can be streaming with the following command: $ # Pipeline 1 $ gst-launch v4l2src ! 'video/x-raw-yuv, format=(fourcc)I420, width=(int)1280, height=(int)800' ! ffenc_mpeg4 ! tcpserversink host=$CLIENT_IP port=$PORT and on the target, the client receives, decodes and display with $ # Pipeline 2 $ gst-launch tcpclientsrc host=$SERVER_IP port=$PORT  ! 'video/mpeg, width=(int)1280, height=(int)800, framerate=(fraction)10/1, mpegversion=(int)4, systemstream=(boolean)false' ! vpudec ! mfw_isink The filter caps between the tcpclientsrc and the decoder (vpudec) depend on the sink caps coming from the server encoder (ffenc_mpeg4), so these may change depending on your needs. Running the above pipelines require the environment variables SERVER_IP, CLIENT_IP and PORT. In case you want the i.MX6 to act as a server, just change the video source (either mfw_v4lsrc of v4l2src) and the encoder (vpuenc), so $ # Pipeline 3 $  gst-launch v4l2src  !  'video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, interlaced=(boolean)false, framerate=(fraction)10/1'  ! vpuenc ! tcpserversink host=$CLIENT_IP port=$PORT For testing purposes, set SERVER_IP=127.0.0.1, CLIENT_IP=127.0.0.1 and PORT=500, and run pipeline 3 and 2 in two different consoles. Check with 'top' the  CPU usage and see that VPU is actually doing most of the work.
記事全体を表示
This example uses the touchscreen that comes with i.MX51 EVK's parallel LCD Download xserver-xorg-input-evtouch (xserver-xorg-input-evtouch_0.8.8-3build1_armel.deb) from https://launchpad.net/ubuntu/lucid/armel/xserver-xorg-input-evtouch/0.8.8-3build1 On i.MX51 EVK board, run “sudo dpkg –i xserver-xorg-input-evtouch_0.8.8-3build1_armel.deb” to install debian package. Remove evdev config file: sudo rm /usr/lib/X11/xorg.conf.d/05-evdev.conf Change the content of 10-evtouch.conf to: sudo vi /usr/lib/X11/xorg.conf.d/10-evtouch.conf Section "InputClass"            Identifier "touchscreen catchall"            MatchIsTouchscreen "on"            Driver "evtouch"            Option "SwapY" "1"            Option "MinX" "32"            Option "MinY" "46"            Option "MaxX" "1001"            Option "MaxY" "967" EndSection   The MinX, MinY, MaxX and MaxY values can be changed to match the exact configuration of your touchscreen Save above configuration and reboot the system.
記事全体を表示
ESAI module in i.MX6D/I.MX6D/I.MX6DL/I.MX6S supports several RESET funtions: Reset ESAI Core, Reset both Transmitter and Receiver, Reset Transmitter individually, Reset Receiver individually, Reset Transmitter FIFO and Reset Receiver FIFO. Below is a simple diagram for these RESET functions, which shows reset object and related register configurations. 1.Reset ESAI Core After setting ESAI_ECT ERST bit to be 1, ESAI core and configuration registers will be reset, but Transmitter and Recevier FIFOs can't be reset by the operation. 2. Reset both Transmitter and Receiver After setting ESAI_PCRC & ESAI_PRRC to be 0x000, Transmitter and Receiver can both be reset, The RESET is also called "Personal Reset" in it's reference manual. About PCRC & PRRC bits functionality, we can see the table: From the table, ESAI_PCRC=0x000 and ESAI_PRRC=0x000 will make ESAI disconnet external ESAI pins, and ESAI's Tranmitter and Receiver can't communicate with external audio codec.  See ESAI_PCRC and ESAI_PRRC register below: ---ESAI_PCRC register ---ESAI_PRRC register There are 12 bits in each register to contorl "DISCONNECTION" OR "CONNECTION" with ESAI pins. So for normal operations of ESAI, these 2 registers can't be changed. 3.Reset Transmitter & Receiver individually By setting ESAI_TCR[TPR]=1, Transmitter can be reset individually, and not affect Receiver. By setting ESAI_RCR[RPR]=1, Receiver can be reset individually, and not affect Transmitter . In reference manual, the reset is called "personal reset / individual reset", actually they means the same thing: --Reset Transmitter individually. --Reset Receiver individually. 4.Reset Transmitter FIFO and Reset Receiver FIFO ---By setting ESAI_TFCR[TFR]=1, Tranmitter FIFIO can be reset. ---By setting ESAI_RFCR[RFR]=1, Receiver FIFO can be reset. The Reset requires ESAI is operational, which means at least one pin is defined as an ESAI pin. NXP TIC team Weidong Sun
記事全体を表示
i.MX6DQ HDMI dongle board uses BCM4330 which is SDIO interface as wireless module. When we try to run Ubuntu oneiric on HDMI dongle board, after correctly insmod bcm4330.ko, we found Ubuntu NetworkManger can't recognize this interface: the /var/log/syslog shows the following error: Jan  1 00:01:08 linaro-ubuntu-desktop NetworkManager[4787]:    SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/wlan0, iface: wlan0) Jan  1 00:01:08 linaro-ubuntu-desktop NetworkManager[4787]:    SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/wlan0, iface: wlan0): no ifupdown configuration found. Jan  1 00:01:08 linaro-ubuntu-desktop NetworkManager[4787]: <warn> /sys/devices/virtual/net/wlan0: couldn't determine device driver; ignoring... After using Google search, we found /sys/devices/virtual/net/wlan0 directory dose not has directory "device", this "device" directory should be exist at network interface, without it, NetworkManager will get error "couldn't determine device driver; ignoring...",  the "device" is just this network interface come from, and it should link to the real device under one hardware bus. While the bcm4330 Linux driver from Broadcom does not setup network interface real "device" so we need add this real "device" before the driver registers a network interface. Refer to the attached diff file for this modification
記事全体を表示
The OpenSSL recipe halts saying it can't find find.pl . How to resolve this problem?   From the blog, linked below : create file find.pl in /etc/perl.   Missing find.pl compiling OE - Kemp's blog    "find.pl" content :   warn "Legacy library @{[(caller(0))[6]]} will be removed from the Perl core distribution in the next major release. Please install it from the CPAN distribution Perl4::CoreLibs. It is being used  at @{[(caller)[1]]}, line @{[(caller)[2]]}.\n";   # This library is deprecated and unmaintained. It is included for # compatibility with Perl 4 scripts which may use it, but it will be # removed in a future version of Perl. Please use the File::Find module # instead.   # Usage: #              require "find.pl"; # #              &find('/foo','/bar'); # #              sub wanted { ... } #                            where wanted does whatever you want. $dir contains the #                            current directory name, and $_ the current filename within #                            that directory. $name contains "$dir/$_". You are cd'ed #                            to $dir when the function is called. The function may #                            set $prune to prune the tree. # # For example, # # find / -name .nfs\* -mtime +7 -exec rm -f {} \; -o -fstype nfs -prune # # corresponds to this # #              sub wanted { #               /^\.nfs.*$/ && #               (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && #               int(-M _) > 7 && #               unlink($_) #               || #               ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) && #               $dev < 0 && #               ($prune = 1); #              } # # Set the variable $dont_use_nlink if you're using AFS, since AFS cheats.   use File::Find ();   *name                            = *File::Find::name; *prune                            = *File::Find::prune; *dir                            = *File::Find::dir; *topdir                            = *File::Find::topdir; *topdev                            = *File::Find::topdev; *topino                            = *File::Find::topino; *topmode              = *File::Find::topmode; *topnlink              = *File::Find::topnlink;   sub find {   &File::Find::find(\&wanted, @_); }   1;
記事全体を表示
Display on LVDS0 or LVDS1 is normal, but some customer need  larger screen and they need the dual LVDS work on the same time. In another word, it is to use the dual 8 connection. Here I give the simple introduction on this. Environment Board: MCIMX6Q-SDP (Or the board customer design) BSP:  Linux or Android BSP provided by Freescale Screen: M190PW01-V8 19(Take this as example) Steps: 1\ Hardware connection Make sure the hardware connection is right. The 4 pairs of difference signals on both LVDS0 and LVDS1 work, but in our reference board MCIMX6Q-SDP only 3 pairs of difference signals work. To make this screen working well the connection must be proper connect. Take the screen M190PW01-V8 19 as a example, the connection is as follow: 2\ Software modify Here we can know the screen works on the RGB24 mode not the RGB666, as the connection is already right. So the next step is to modify the code. As customers use differently screens, they have to porting the screen driver first.  About porting customers need to modify the  ldb.c  according to the datasheet of the screen in BSP. The parameters and timing should be set right.  Also the board.c need to be modified, RGB24 mode should also be set. About the porting Lvds screen steps, details you can refer to the Porting LVDS LCD With Low Resolution to i.MX6  in our community. 3\ Command special in u-boot After porting success the LVDS  and build the BSP. The run the images built on the board then boot up the board. In the u-boot the command should be set, about the display section is : video=mxcfb0:dev=ldb,LDB-1080P60,if=RGB24 ldb=spl0. The default BSP provided by Freescale is support dual LVDS display, but the display mode should be right so it can work well. Hope this can give some help to you.
記事全体を表示
The article has just been published by EDN website, under “Design Center” and “BBS” channels. Here is the coverage: 如何灵活使用飞思卡尔i.MX应用处理器的GPIO http://bbs.ednchina.com/FORUM_POST_30_529551_0.HTM http://www.ednchina.com/ART_8800518371_15_20034_AN_20f46fd3.HTM Title translation: How to easily use the GPIO of Freescale i.MX processors. If you are interested in the post and would like to have reply in English, please contact the owner of this post.
記事全体を表示
Created by prathamrahate  For loading u-boot using JTAG, follow the below steps-- 1. Download DDR stress test tool v.2.52 from NXP website. 2. Boot your board into serial mode, by turning all boot switches off 3. Now connect USB cable from USB OTG port to desktop/Laptop on which you will be running DDR stress test tool. 4. For information on using DDR stress test tool refer to documentation. 5. Once board is detected in DDR stress test tool, use appropriate inc script in the tool and click on download. After successful downloading of script , DDR will be initialised. 6. Now connect JTAG cable , and load u-boot.bin image using load_image command from JTAG to appropriate address, for imx6q sabresd board it is 0x17800000. 7. Once image is downloaded successfully, you can resume from same address using resume command like resume 0x178000000 For custom boards, you can use xls provided by NXP to generate inc file for custom board which can be used for loading into DDR stress test tool to initalise DDR. I am using Arm olimex JTAG debugger for debugging. This document was generated from the following discussion: Loading u-boot.bin unsing JTAG on imx6q-sabresd board
記事全体を表示
Hi, My board is imx6dl_sabreauto and I use android4.4.2 source!The system stop at "Freeing init memory", when the system boot. I found the boot message no have follow message: mmc0: new high speed DDR MMC card at address 0001 mmcblk0: mmc0:0001 SEM08G 7.39 GiB mmcblk0boot0: mmc0:0001 SEM08G partition 1 2.00 MiB mmcblk0boot1: mmc0:0001 SEM08G partition 2 2.00 MiB input: WM8962 Beep Generator as /devices/platform/imx-i2c.0/i2c-0/0-001a/input/input7 mmcblk0: p1 p2 p3 < p5 p6 p7 p8 > p4 mmcblk0: p4 size 13336576 extends beyond EOD, truncated asoc: wm8962 <-> imx-ssi.1 mapping ok input: wm8962-audio DMIC as /devices/platform/soc-audio.5/sound/card0/input8 input: wm8962-audio Headphone Jack as /devices/platform/soc-audio.5/sound/card0/input9 mmcblk0boot1: unknown partition table Please help me! Thank  you!
記事全体を表示
Currently, we meet an issue that some jpeg pictures can't be displayed on  imx53 platform by command "gst-launch filesrc location=JPEGFILE ! jpegdec ! freeze ! mfw_isink", the system will meet application crash. So we did investigation on this, found imx6 aslo has such issue.   We found that the issue happen on specific jpeg pictures, the width & height is not 8 pixels alignment.   After track the code ,  found that the jpeg decoder send the width and height to isink plugin, also it send a outsize calculate by the width and height with algorithm that will do 2 pixels,4 pixles,8pixles alignment(I420_SIZE (width, height)). The isink use a different algorithm to calculate the decoder buffer, this size is always smaller than the size pass down by the jpeg decoder , in later memory copy, the code copy a large memory to smaller memory, it's out of boundery, corrupt the memoryand cause the application fail.   So we make a little change, to malloc the larger size to avoid the out of boundry. Original Attachment has been moved to: fix-8pixels-unalignment-jpeg-display-crash.patch.zip
記事全体を表示
Question: How to enable touch functions on LVDS1/SabreAI base board? what should be soldered in order to connect the signals to i2c what to add in the Linux kernel (board-mx6q_sabreauto.c) BTW.: Why did we leave these disconnected? Is there any conflict on i2c? Answer: You can mount R305 and R306 to support touch on LVDS1, no code modification was needed. The only limitation is that the two LVDS's touch can't be connected to same I2C port, because they are using the same I2C address. Question: How is this working because the touch interrupt signal from LVDS1 called LCD1_TOUCH_INT_B is connected to pin21 on J44 on base board which is left floating (TP1) on CPU card P1A connector? Are both LVDS needed to work in the same time. Answer: That's the problem, the LVDS1 touch interrupt pin hasn't been connected to IMX6 CPU. Maybe you can use the SabreSD board, the two touch are ready on that board.
記事全体を表示
The Linux L4.9.11_1.0.0 RFP(GA) for i.MX6 release files are now available on www.nxp.com    Files available: # Name Description 1 L4.9.11_1.0.0-ga_images_MX6QPDLSOLOX.tar.gz i.MX 6QuadPlus, i.MX 6Quad, i.MX 6DualPlus, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo, i.MX 6Solox Linux Binary Demo Files 2 L4.9.11_1.0.0-ga_images_MX6SLEVK.tar.gz i.MX 6Sololite EVK Linux Binary Demo Files 3 L4.9.11_1.0.0-ga_images_MX6UL7D.tar.gz i.MX 6UltraLite EVK, 7Dual SABRESD, 6ULL EVK Linux Binary Demo Files 4 L4.9.11_1.0.0-ga_images_MX6SLLEVK.tar.gz i.MX 6SLL EVK Linux Binary Demo Files 5 L4.9.11_1.0.0-ga_images_MX7ULPEVK.tar.gz i.MX 7ULP EVK Linux Binary Demo Files  6 L4.9.11_1.0.0-ga_mfg-tools.tar.gz i.MX Manufacturing Toolkit for Linux L4.9.11_1.0.0 BSP 7 L4.9.11_1.0.0-ga_gpu-tools.tar.gz L4.9.11_1.0.0 i.MX VivanteVTK file 8 bcmdhd-1.141.100.6.tar.gz The Broadcom firmware package for i.MX Linux L4.9.11_1.0.0 BSP. 9 imx-aacpcodec-4.2.1.tar.gz Linux AAC Plus Codec for L4.9.11_1.0.0 10 fsl-yocto-L4.9.11_1.0.0.tar.gz L4.9.11_1.0.0 for Linux BSP Documentation. Includes Release Notes, User Guide.   Target boards: i.MX 6QuadPlus SABRE-SD Board and Platform i.MX 6QuadPlus SABRE-AI Board i.MX 6Quad SABRE-SD Board and Platform i.MX 6DualLite SABRE-SD Board i.MX 6Quad SABRE-AI Board i.MX 6DualLite SABRE-AI Board i.MX 6SoloLite EVK Board i.MX 6SoloX SABRE-SD Board i.MX 6SoloX SABRE-AI Board i.MX 7Dual SABRE-SD Board i.MX 6UltraLite EVK Board i.MX 6ULL EVK Board i.MX 6SLL EVK Board i.MX 7ULP EVK Board (Beta Quality)   What’s New/Features: Please consult the Release Notes.   Known issues For known issues and more details please consult the Release Notes.   More information on changes, see: README: https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp/tree/README?h=imx-morty ChangeLog: https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp/tree/ChangeLog?h=imx-morty
記事全体を表示
In case you missed our recent webinar, you can check out the slides and comment below with any questions.
記事全体を表示
[中文翻译版] 见附件   原文链接: https://community.nxp.com/docs/DOC-342729 
記事全体を表示
i work with IMX6q,i find VDI is not work,And the video picture has Horizontal stripe. i want to know how should i make VDI work? FAE tell me enable g_vdi_enable in mxc_v4l2_tvin.c.but i do it already.The VDI don't  still work. please help me, many thanks
記事全体を表示
i.MX28 GPIO pins only support the following IRQ types: IRQ_TYPE_EDGE_RISING, IRQ_TYPE_EDGE_FALLING, IRQ_TYPE_LEVEL_HIGH and IRQ_TYPE_LEVEL_LOW. IRQ_TYPE_EDGE_BOTH is not supported. It application requires interrupt on both rising and falling edges, software can set the IRQ type to level trigger and set the polarity in reverse to the current GPIO input level. Below is the example. value = gpio_get_value(pdata->id_gpio) ? 1 : 0; if (value)     set_irq_type(gpio_to_irq(pdata->id_gpio), IRQ_TYPE_LEVEL_LOW); else     set_irq_type(gpio_to_irq(pdata->id_gpio), IRQ_TYPE_LEVEL_HIGH); ... When GPIO input value is low, set the IRQ type to IRQ_TYPE_LEVEL_HIGH. When the GPIO input value is high, set the IRQ type to IRQ_TYPE_LEVEL_LOW. Do the same checking in the GPIO IRQ handler. In this way, interrupts on both edges can be captured. This document was generated from the following discussion: i.MX28: GPIO interrupt on both rising and falling edges
記事全体を表示
[中文翻译版] 见附件   原文链接: https://community.nxp.com/docs/DOC-343823 
記事全体を表示
This is a HW design checklist for customer's reference. Please read and fill it in carefully before requesting a schematic review. Rev3.1 @2016.10.19 -- 1. Add i.MX6DQP related contents.
記事全体を表示