i.MX Processors Knowledge Base

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX Processors Knowledge Base

Discussions

Sort by:
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.
View full article
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
View full article
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
View full article
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.
View full article
In case you missed our recent webinar, you can check out the slides and comment below with any questions.
View full article
[中文翻译版] 见附件   原文链接: https://community.nxp.com/docs/DOC-342729 
View full article
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
View full article
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
View full article
[中文翻译版] 见附件   原文链接: https://community.nxp.com/docs/DOC-343823 
View full article
For early i.MX 8QuadXPlus MEK boards with C0 chips, power on the board when the board is connected to the PC with USB Type-C cable may cause the PC to shut down directly. This is a hardware known issue. another type of TCPC PHY chip will be used in later boards to fix this issue. If you have this kind of i.MX 8QuadXPlus MEK boards with c0 chips already, you can take below way to avoid this issue: 1. change the boot switch to "serial download mode", firstly power on the board, then connect the board to PC with Type-C cable. 2. download the attached files, uncompress this two files and put them in the same folder. 3. open the command window, change the working directory to the one contains the files just downloaded, and execute "uuu uuu_change_DRP_to_DFP.auto-imx8qxpc0mek" on command window. After the command being successfuley executed, the board can be powerwed up when the board is connected to PC with type-C cable.
View full article
To copy the screen (framebuffer) execute on i.MX 31 PDK terminal: dd if=/dev/fb0 of=screen.raw bs=1280 count=480 Where: the value 1280 means 640 * 2 bytes (16bpp) and the value 480 is equal the screen width. Copy this raw file to your Linux host and execute it to convert to png image: fbgrab -f screen.raw -w 480 -h 640 -b 16 screen.png To install fbgrab on Debian/Ubuntu execute: apt-get install fbgrab
View full article
i.MX6UL OBDS test image
View full article
On power-up of a system, the bootloader performs initial hardware configuration, and is responsible for loading the Linux kernel in memory. Several bootloaders are available which support i.MX SoCs: Barebox (http://www.barebox.org/) RedBoot (http://ecos.sourceware.org/redboot/) U-Boot (http://www.denx.de/wiki/U-Boot/) Qi (http://wiki.openmoko.org/wiki/Qi)
View full article
In recovery mode, recovery may update /boot or /system, but it never overwrite itself. The update of /recovery is in the normal bootup. When system boot up, it will execute init.rc which will call install-recovery.sh. The install-recovery.sh is in update.zip. when the system is in recovery mode, updater-script will  unzip update.zip, and the install-recovery.sh will be unzip into /system/etc/. So if you update your image through recovery mode, the install-recovery.sh will be unzip to /system/etc/ automatically. If your update.zip do not include install-recovery.sh. You can edit it and copy it to /system/etc. the below is content in install-recovery.sh. #!/system/bin/sh if ! applypatch -c EMMC:/dev/block/mmcblk3p2:7762488:374c3807940a38d9497a4c5ef64a069e553bc218; then   log -t recovery "Installing new recovery image"   applypatch -b EMMC:/dev/block/mmcblk3p1:7203059:238a297e7e3c7197b2f5af646d0e7e49cef0fd9f EMMC:/dev/block/mmcblk3p2  374c3807940a38d9497a4c5ef64a069e553bc218 7762488 c3c9482c8616805ea4c071ee9184240936f260e5:/system/recovery-from-boot.p else   log -t recovery "Recovery image already installed" fi Explain of the install-recovery.sh: 1、 judge whether the recovery-imx6q.img’s sha1 is the same with mmcblk3p2 on board. 374c3807940a38d9497a4c5ef64a069e553bc218 is the new recovery-imx6q.img’s sha1. 7762488 is the length of recovery-imx6q.img. 2、 if not the same , that mean it was a new recovery-imx6q.img. make a new recovery-imx6q.img through patch recovery-from-boot.p on boot.img. 7203059 and 238a297e7e3c7197b2f5af646d0e7e49cef0fd9f is the length and sha1 of boot.img.     src-file EMMC:/dev/block/mmcblk3p2 is the recovery partition.      tgt-file c3c9482c8616805ea4c071ee9184240936f260e5 is the sha1 of recovery-from-boot.p which is in update.zip. Note: 1、 recovery-from-boot.p is in update.zip. And it is unzip into /system. It is the patch of boot-imx6q.img and recovery-imx6q.img. 2、 for EMMC:/dev/block/mmcblk3p2 is the partition, you can check ./out/target/product/sabresd_6dq/recovery/root/etc/recovery.fstab to see detail partition. Check whether recovery is updated, there are two ways to check: 1、 you can write printf() in file bootable/recovery/recovery.cpp. On the board you can check the file /cache/recovery/last_log. You can find what you printf if the recovery.img was updated. 2、 Also you can use the adb the pull the recovery file system to check whether the recovery was updated.
View full article
1. Register to the meta-freescale maillist 2. Follow just the install and download steps indicated on the Freescale's github repo. Make sure you local code is in sync (repo sync) 3. Create a local branch using the repo command fs-community-bsp $ repo start <branch_name> --all      Where <branch_name> can be any name you want for your contribution (either a fix or a implementation) 4. Modify the files you want under the Freescale source folders (e.g. meta-fsl-arm) 5. Create a commit (follow the recommendations from Commit Patch Message Guidelines - Openembedded.org ) meta-fsl-arm $ git add <modified file 1> meta-fsl-arm $ git add <modified file 2> . . meta-fsl-arm $ git commit -m '<recipe name>: <my contribution>' 6. Create a patch file meta-fsl-arm $ git format-patch -s --subject-prefix='meta-fsl-arm][PATCH' -1 7. Configure ~./gitconfig so you are able to send e-mails through git, e.g. [sendemail]   smtpencryption = tls   smtpserver = smtp.gmail.com   smtpuser = [email protected]   smtpserverport = 587 8.Send the patch file to the community git send-email --to [email protected] <generated patch> 9. Check your patch's progress on meta-freescale mailing list. 10. In case you need to rework your patch, make sure you add v2 (version 2 of the patch) when creating the patch meta-fsl-arm $ git format-patch -s --subject-prefix='meta-fsl-arm][PATCH v2' -1
View full article
For more information verify the U-Boot Manual[1]. You need the "lrzsz" package to add support on minicom to transfer over serial: aptitude install lrzsz Open Minicom and power-on the board. When the U-Boot prompt appears: => Type the command to transfer the u-boot.bin binary: => loady Then press the combination keys: Ctrl+a s Then select the option: ymodem A text mode "file explorer" will appear. Select the desired binary (u-boot.bin) pressing "Space" key. The file transfer will start. To execute the uploaded file just issue: => go 0x100000 Replace 0x100000 with your TEXT_BASE address.
View full article
Why reset EPDC When TCE underrun occurs repeatedly, EPDC might lock up and the signal to panel continues. There is chance to cause panel damage. The attached patch provides a way to reset EPDC to cut the signal out and recover EPDC from lockup. The patch is based on L4.1.15. As for TCE underrun, QoS patch has obvious improvement. https://community.nxp.com/docs/DOC-343599
View full article
NXP i.MX 8 series of application processors support running ArmV8a 64-bit and ArmV7a 32-bit user space programs.  A Hello World program that prints the size of a long int is cross-compiled as 32-bit and as 64-bit from an Ubuntu host and then each is copied to MCIMX8MQ-EVK and run. Resources: Ubuntu 18.04 LTS Host i.MX 8M Evaluation Kit|NXP  MCIMX8MQ-EVK Linux Binary Demo Files - i.MX 8MQuad EVK L4.9.88_2.0.0_GA release Source Code: Create a file with contents below using your favorite editor, example name hello-sizeInt.c. #include <stdio.h> int main (int argc, char **argv) { printf ("Hello World, size of long int: %zd\n", sizeof (long int)); return 0; }‍‍‍‍‍‍‍ Ubuntu host packages: $ sudo apt-get install -y gcc-arm-linux-gnueabihf $ sudo apt-get install -y gcc-aarch64-linux-gnu‍‍‍‍ Line 1 installs the ArmV7a cross-compile tools: arm-linux-gnueabihf-gcc is used to cross compile on Ubuntu host Line 2 install the ArmV8a cross-compile tools: aarch64-linux-gnu-gcc is used to cross compile on Ubuntu host Create Linux User Space Applications Build each application and use the static option to gcc to include run time libraries. Build ArmV7a 32-bit application: $ arm-linux-gnueabihf-gcc -static hello-sizeInt.c -o hello-armv7a‍-static‍‍ Build ArmV8a 64-bit application: $ aarch64-linux-gnu-gcc -static  hello-sizeInt.c -o hello-armv8a‍-static‍‍ Copy Hello applications from Ubuntu host and run on MCIMX8MQ-EVK Using a SDCARD written with images from L4.9.88_2.0.0 Linux release (see resources for image link), power on EVK with Ethernet connected to network and Serial Console port which was connected to a windows 10 PC. Launched a terminal client (TeraTerm) to access console port. Login credentials: root and no password needed. Since Ethernet was connected a DHCP IP address was acquired, 192.168.1.241 on the EVK.  On the Ubuntu host, secure copy the hello applications to EVK: $ scp hello-armv7a-static [email protected]:~/ hello-armv7a-static                           100%  389KB   4.0MB/s   00:00    $ scp hello-armv8a-static [email protected]:~/ hello-armv8a-static                           100%  605KB   4.7MB/s   00:00 ‍‍‍‍‍‍‍‍‍‍ Run: root@imx8mqevk:~# ./hello-armv8a-static Hello World, sizeof long int: 8 root@imx8mqevk:~# ./hello-armv7a-static Hello World, sizeof long int: 4‍‍‍‍‍‍‍‍
View full article
The document is a master page for learning i.MX6Q SABRE. It contains several parts as following. The pdf files listed below(item 0, 1, 2) are contained in the NXP official website and others are in the community links. 0. i.MX6 SMART DEVICE SYSTEM(Schematics): SPF-27516_C5.pdf(in the iMX6Q_SABRE_SDB_DESIGNFILES) i.MX 6Quad SABRE Development Board|NXP  1. How to build an image for an i.MX NXP board by using a Yocto Project build environment: Freescale_Yocto_Project_User's_Guide.pdf(in the L4.1.15_1.1.0_LINUX_DOCS) i.MX 6Quad SABRE Development Board|NXP  2. How to build and install the NXP Linux OS BSP: i.MX_Linux_User's_Guide.pdf (in the L4.1.15_1.1.0_LINUX_DOCS) i.MX 6Quad SABRE Development Board|NXP  3. How to Use Trace32 to Run U-boot in the i.MX6Q SABRE Platform: How to Use Trace32 to Run U-boot in the i.MX6Q SABRE Platform  4. Bootloader Boot Procedure for linux OS in i.MX6Q: Bootloader Boot Procedure for linux OS in i.MX6Q  5. Kernel Loading Procedure for Linux OS in i.MX6Q: Kernel Loading Procedure for Linux OS in i.MX6Q 
View full article
A discussion of random hangs and other issues using Windows Embedded Compact on Freescale i.MX6 application processor and how they were solved. This white paper is about the investigation and shares some of our discoveries. All information in this document applies to Windows Embedded Compact 7 and 2013 as well as all variants of the i.MX6.    
View full article