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

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

i.MX Processors Knowledge Base

ディスカッション

ソート順:
The Register Programming Aid (RPA) provides a default DRAM PLL setting (DRAM frequency) based on the default setting supported in u-boot.  It is highly recommended to use the default DRAM frequency settings in the RPA for ease of use and to align with u-boot.  Otherwise, in addition to updating the RPA for the new DRAM frequency, the u-boot SPL code itself will need to be manually updated with the new DRAM PLL setting.   Should the user wish to change the DRAM frequency, the following steps are required:   First, the user needs to update the RPA Register Configuration worksheet tab Device Information table “Clock Cycle Freq (MHz)“ setting to the desired DRAM frequency       2. Next, in the RPA DDR stress test file worksheet tab search for “memory set 0x30360054”.  The address “0x30360054” is for the DRAM PLL register address and its setting needs to be updated to the desired frequency.        Note that there is another place where the DRAM frequency is also updated “freq0 set 0x30360054” but it is automatically updated based on the setting above.    Below is a table of various frequencies to choose from.  For frequencies not listed in the table below, it is up to the user to calculate a new register setting based on the formula:     (24MHz x m)/(p x 2^s)   Where “m” represents the PLL_MAIN_DIV, “p” represents the PLL_PRE_DIV, and “s” represents the PLL_POST_DIV.  NOTE:  The DRAM frequency is double the DRAM PLL frequency DRAM_freq = DRAM_PLL x 2   The DRAM PLL register and bit settings are shown below:          The following table provides examples of the various settings to create the desired frequency:       For example, in the i.MX 8M Mini LPDDR4 RPA where the default DRAM frequency is 1500MHz, let’s assume that the user instead wants 1200MHz.    First, the user changes the RPA Register Configuration worksheet tab Device Information table “Clock Cycle Freq (MHz)“ setting to 1200.   Next, in the RPA DDR stress test file worksheet tab search for “memory set 0x30360054” and replace “0xFA080” (original setting from DRAM frequency 1500MHz) with “0x000C8022” (updated for DRAM frequency 1200MHz).  Note that for a DRAM frequency of 1200MHz, the DRAM PLL is configured for 600MHz, as the DRAM frequency is double the DRAM_PLL.   The steps outlined above are sufficient in order to create a DDR script for use with the DDR stress test tool to run the calibration and execute the DDR stress test.  However, to deploy the generated code in SPL, more steps are needed as the u-boot SPL DDR driver does not automatically change the DRAM PLL according to the generated code. Hence the user will need to manually modify related code in u-boot.  It is highly recommended to work with a software engineer familiar with u-boot when making the following modifications.    3. Modify DRAM PLL configuration in uboot-imx/drivers/ddr/imx8m.c, specifically the code highlighted below (function call dram_pll_init).  Note that the files and file paths in u-boot change frequently, so if this particular file (or file path) does not exist in the current u-boot, simply search for dram_pll_init or ddr_init.   void ddr_init(struct dram_timing_info *dram_timing) { ……    debug("DDRINFO: cfg clk\n");      if (is_imx8mq())           dram_pll_init(DRAM_PLL_OUT_800M);      else          dram_pll_init(DRAM_PLL_OUT_750M); ……  }   In the above code, the user should update the macro “DRAM_PLL_OUT_750M” with the new DRAM PLL value.  Note that the default DRAM_PLL_OUT_750M results in the DRAM frequency of 1500MHz, where the DRAM frequency is double the DRAM PLL (as previously stated above).   For example, if the user desires to run the DRAM at 1200MHz, they would change the above to: dram_pll_init(DRAM_PLL_OUT_600M);   Note that DRAM_PLL_OUT_600M is a supported macro in the dram_pll_init() API.  If the desired DRAM PLL configuration does not exist in dram_pll_init(), you will need to add support in uboot-imx/arch/arm/mach-imx/imx8m.c  (as stated above, if this file path does not exist in the current u-boot simply search for dram_pll_init):   void dram_pll_init(enum dram_pll_out_val pll_val) { …… }   Related Links i.MX8 MSCALE SERIES DDR Tool Release (V3.10) 
記事全体を表示
1. Description     1) Support HDMI interlaced display mode, the followed format had been verified.         CEA format 5: 1920x1080i @60Hz         CEA format 6&7: 720(1440)x480i @60Hz         CEA format 20: 1920x1080i @50Hz         CEA format 21&22: 720(1440)x576i @50Hz     2) Support LCD interface for interlaced display mode, 1920x1080i @50Hz(CEA format 20)        had been verified. 2. File List -- 0001-IPUv3-support-interlaced-display-mode.patch    Patch to support interlaced display output for iMX6 ipuv3. -- 0002-iMX6-HDMI-support-interlaced-display-mode.patch    Patch to support interlaced display mode for iMX6 HDMI driver. -- 0003-iMX6-LCD-interface-supports-1920x1080i50-mode.patch    Patch to support interlaced display mode for iMX6 LCD interface driver.    -- readme.txt    this file, please refer to it before use the patches 3. Requirement - iMX6 SabreSD board. - L3.0.35_4.1.0_GA_iMX6DQ kernel. 4. How to use -- Copy the patch files to kernel folder.     $ cd ~/ltib/rpm/BUILD/linux-3.0.35/     $ git apply ./0001-IPUv3-support-interlaced-display-mode.patch     $ git apply ./0002-iMX6-HDMI-support-interlaced-display-mode.patch     $ git apply ./0003-iMX6-LCD-interface-supports-1920x1080i50-mode.patch -- Build the new kernel image:     $ cd ~/ltib/rpm/BUILD/linux-3.0.35     $ export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-     $ export ARCH=arm     $ make imx6_defconfig     $ make uImage -- Uboot parameters for video mode    Output 1080i50 display mode on HDMI:       "video=mxcfb0:dev=hdmi,1920x1080Mi@25,if=RGB24,bpp=32"    Output 1080i60 display mode on HDMI:       "video=mxcfb0:dev=hdmi,1920x1080Mi@30,if=RGB24,bpp=32"    Output 576i50 display mode on HDMI:       "video=mxcfb0:dev=hdmi,1440x576Mi@25,if=RGB24,bpp=32"    Output 480i60 display mode on HDMI:       "video=mxcfb0:dev=hdmi,1440x480Mi@30,if=RGB24,bpp=32"    Output 1080i50 display mode on LCD interface:       "video=mxcfb0:dev=lcd,LCD-1080I50,if=RGB565,bpp=32"       -- Switch HDMI interlaced mode    $ echo S:1920x1080i-50 > /sys/class/graphics/fb0/mode    $ echo S:1920x1080i-60 > /sys/class/graphics/fb0/mode    $ echo S:1440x480i-50 > /sys/class/graphics/fb0/mode    $ echo S:1440x576i-60 > /sys/class/graphics/fb0/mode 5. Know issue     1) When the interlaced display and another display work on same IPU,        blank and unblank the interlaced display will get the followed IPU        warning, but the display still works due to IPU can revover from the error.     imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_5 = 0x00800000     imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_10 = 0x00080000 2015-05-13 update: Replace the fourth patch to make interlace display mode follow CEA-861-specification The patch "0004-IPU-fine-tuning-the-interlace-display-timing-for-CEA.patch" was fine tuned for CEA-861-D specification on interlaced mode display. Please use this patch to replace the old 0004 patch. 2016-05-20 Update: For 3.0.35 BSP, add patch 0005-IPU-update-interlaced-video-mode-parameters-to-align.patch      Align the interlaced video mode parameters to progressive mode. 0006-IPU-update-IDMAC-setting-for-interlaced-display-mode.patch      Udate the IDMAC setting for interlaced display mode, output odd field data from memory first, it aligns with IPU DI timing, odd field first. For 3.14.52 BSP, created the new patch L3.14.52_1.1.0_GA_HDMI_Interlaced_Mode_Patch_2016_05_20.zip.
記事全体を表示
Setting up your machine Exporting variables Edit your ~/.bashrc and add these 2 lines export ARCH=arm export CROSS_COMPILE=/opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- To build and debug android you will need to install some packages and services in the host machine,this how-to assumes that you are using Ubuntu 9.04 or greater. Installing packages sudo apt-get install nfs-kernel-server patch g++ rpm zlib1g-dev m4 bison libncurses5-dev gettext build-essential tcl intltool libxml2-dev minicom tftpd  xinetd For a complete list, depending on system type, refer to Installing required packages Set serial port Setting TFTP Setting NFS Compile Android Download the SDK from our internal repository cd /opt wget http://android.maxtrack.com.br/imx-android-r6.tar.gz tar xvfz imx-android-r6.tar.gz cd imx-android-r6/code tar xzvf R6.tar.gz cd ~ mkdir myandroid cd myandroid curl http://android.git.kernel.org/repo > ./repo chmod a+x ./repo ./repo init -u git://android.git.kernel.org/platform/manifest.git -b donut * If you are behind a firewall or proxy try this one:./repo init -u http://android.git.kernel.org/platform/manifest.git -b donut cp /opt/imx-android-r6/code/R6/default.xml .repo/manifests/default.xml ./repo sync Preparing cross compiling tools cd /opt/imx-android-r6/tool tar xzvf gcc-4.1.2-glibc-2.5-nptl-3.tar.gz -C /opt export ARCH=arm export CROSS_COMPILE=/opt/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- Download the kernel source git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.28.y.git kernel_imx Download U-Boot cd bootable/bootloader git clone git://git.denx.de/u-boot.git uboot-imx       Patching the environment Previously we decompressed the SDK at "/opt/imx-android-r6/code/R6" there we can find all the patches needed to iMX51 cd ~/myandroid . /opt/imx-android-r6/code/R6/and_patch.sh c_patch /opt/imx-android-r6/code/R6 imx_R6 Build Uboot cd ~/myandroid/bootable/bootloader/uboot-imx make mx51_bbg_android_config make Build Android cd ~/myandroid make PRODUCT-imx51_BBG-eng 2>&1 | tee build_imx51_BBG_android.log For i.MX51 BBG build, it will generate the compiled environment under myandroid/out/target/product/imx51_BBG. These 4 folders can be used to create your Android file system for NFS mounting, i.e., "root/" -> "/", "system/" -> "/system", "data/" -> "/data" root/ : root file system (including init, init.rc, etc). Will be mounted at "/" system/:  Android system binary/libraries. Will be mounted at "/system" data/: Android data area. Will be mounted at "/data" recovery/: root file system when booting in "recovery" mode. Not directly used. Image files to use with SD cards ramdisk.img: Ramdisk image generated from "root/". Not directly used. system.img: EXT3 image generated from "system/". Can be programmed to "SYSTEM" partition on SD card with "dd" userdata.img: EXT3 image generated from "data/". recovery.img: EXT3 image generated from "recovery/". Can be programmed to "RECOVERY" partition on SD card with "dd" Build uRamdisk Assuming that you had already built uboot, "mkimage" was generated under myandroid//bootable/bootloader/uboot-imx/tools/ cd ~/myandroid/out/target/product/imx51_BBG ~/myandroid/bootable/bootloader/uboot-imx/tools/mkimage -A arm -O linux -T ramdisk -C none -a 0x90308000 -n "Android Root Filesystem" -d ./ramdisk.img ./uramdisk.img Build Kernel Image If you want to run Android via NFS or from SD, you can build kernel with default configuration now: cd ~/myandroid/kernel_imx       make imx51_android_defconfig      make uImage After compiling the image can be found at ~/myandroid/kernel_imx/arch/arm/boot/uImage. Since we are using Uboot we will need to do this step: cd myandroid/kernel_imx/arch/arm/boot ~/myandroid/bootable/bootloader/uboot-imx/tools/mkimage -A arm -O linux -T kernel -C none -a 0x90008000 -e 0x90008000 -n "Android Linux Kernel" -d ./zImage ./uImage Boot FS from SDcard Partioning the SD Card Insert your SD card/cardreader to the Linux PC (you need root privileges for programming SD), you can use dmesg to check the SD device, in our how-to we will consider that the sdcard is detected as /dev/sdb, so be careful to not mess up your own file system. To boot the entire FS from SDcard you must follow this partition schema: File:Pt.png To achieve this, we are going to use fdisk to create the partition table: # sudo fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x1787490d. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Listing the partition talbe (in our example the SDcard does not have a partition schema): Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytesDisk identifier: 0x1787490d    Device Boot      Start         End      Blocks   Id  System If you have any previous partition, please delete it using the "d" command. Pay attention that each sdcard block has 3872768 bytes (this size usually changes for each type of sdcard) so the first step is to jump at least 8 MB to store uboot, kernel and ramdisk ( as shown in the partition schema ) With that advice in mind, create a 10 MB primary partition that will store the media (/sdcards): Command (m for help): nCommand action    e   extended    p   primary partition (1-4) pPartition number (1-4): 1First cylinder (1-1023, default 1): +8MLast cylinder, +cylinders or +size{K,M,G} (2-1023, default 1023): +10M List the partition table to check if the partition was correctly created: Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d     Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128   83  Linux Note that the first partition does not start in the first cylinder; the first cylinder and the second one will store uboot, kernel and ramdisk. Now we need to change the partition label to vfat: Command (m for help): tSelected partition 1 Hex code (type L to list codes): bChanged system type of partition 1 to b (W95 FAT32) Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d     Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128    b  W95 FAT32 Create another 80 MB primary partition with 80 MB storage capacity; this partition will store the system's files. This partition must start in the cylinder that follows the last cylinder of the former partition. Command (m for help): nCommand action    e   extended    p   primary partition (1-4) p Partition number (1-4): 2First cylinder (1-1023, default 1): 6Last cylinder, +cylinders or +size{K,M,G} (6-1023, default 1023): +80M Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d    Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128    b  W95 FAT32 /dev/sdb2               6          28       86986   83  Linux Now you must create an extended partition big enough to store other 2 logic partitions ( DATA partition with 20 MegaBytes and CACHE partition with 10 MB): Command (m for help): nCommand action    e   extended    p   primary partition (1-4) ePartition number (1-4): 3First cylinder (1-1023, default 1): 29Last cylinder, +cylinders or +size{K,M,G} (29-1023, default 1023): +30M Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d     Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128    b  W95 FAT32 /dev/sdb2               6          28       86986   83  Linux /dev/sdb3              29          37       34038    5  Extended Now create the logic partitions: Command (m for help): nCommand action    l   logical (5 or over)    p   primary partition (1-4) lFirst cylinder (29-37, default 29): Using default value 29 Last cylinder, +cylinders or +size{K,M,G} (29-37, default 37): +20M Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d     Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128    b  W95 FAT32 /dev/sdb2               6          28       86986   83  Linux /dev/sdb3              29          37       34038    5  Extended /dev/sdb5              29          34       22661   83  Linux Command (m for help): nCommand action    l   logical (5 or over)    p   primary partition (1-4) lFirst cylinder (35-37, default 35): Using default value 35 Last cylinder, +cylinders or +size{K,M,G} (35-37, default 37): Using default value 37 At last, you must create a primary partition to store the /recovery: Command (m for help): nCommand action    l   logical (5 or over)    p   primary partition (1-4) pSelected partition 4 First cylinder (1-1023, default 1): 38 Last cylinder, +cylinders or +size{K,M,G} (38-1023, default 1023): +10M Command (m for help): p Disk /dev/sdb: 3965 MB, 3965190144 bytes 122 heads, 62 sectors/track, 1023 cylinders Units = cylinders of 7564 * 512 = 3872768 bytes Disk identifier: 0x1787490d     Device Boot      Start         End      Blocks   Id  System /dev/sdb1               2           5       15128    b  W95 FAT32 /dev/sdb2               6          28       86986   83  Linux /dev/sdb3              29          37       34038    5  Extended /dev/sdb4              38          41       15128   83  Linux /dev/sdb5              29          34       22661   83  Linux /dev/sdb6              35          37       11315   83  Linux Saving the partition table: Command (m for help): wThe partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. Now you are ready to start flashing the SDcard: Flashing SDcard Flashing Uboot cd ~/myandroid/bootable/bootloader/uboot-imx sudo dd if=your_bootloader_binfile of=/dev/sdb bs=1K seek=1 Usually we use this no-padding uboot image in SD card, i.e. program this no-padding uboot image into 1KB offset of SD card so that we will NOT overwrite the MBR (including partition table) within 1st 512B on SD card. Formatting the SD Do not copy and paste the commands; wait for the complete output. sudo mkfs.vfat /dev/sdb1 sudo mkfs.ext3 /dev/sdb2 sudo mkfs.ext3 /dev/sdb4 sudo mkfs.ext3 /dev/sdb5 sudo mkfs.ext3 /dev/sdb6 Flashing Kernel cd ~/myandroid/kernel_imx/arch/arm/boot sudo dd if=uImage of=/dev/sdb bs=1M seek=1 Flashing FS cd ~/myandroid/out/target/product/imx51_BBG sudo dd if=uramdisk.img of=/dev/sdb bs=4M seek=1 sudo dd if=system.img of=/dev/sdb2  (Program system.img into SYSTEM partition which will be mounted as "/system") sudo dd if=recovery.img of=/dev/sdb4 (Program recovery.img into RECOVERY partition which will mounted as "/" in recovery mode) Configure Uboot After inserting the SD card in the board (the slot is located at the inferior portion of the board), plugging in the serial cable and start a configured minicom session, you should turn on the iMX51 board and see in your console something like this: U-Boot 2009.08-00046-gf91e287 (Jan 18 2010 - 12:32:32) CPU:   Freescale i.MX51 family 2.5V at 400 MHz mx51 pll1: 800MHz mx51 pll2: 665MHz mx51 pll3: 216MHz ipg clock     : 66500000Hz ipg per clock : 665000000Hz uart clock    : 66500000Hz cspi clock    : 54000000Hz Board: MX51 BABBAGE 3.0 [POR] Boot Device: MMC DRAM:  512 MB MMC:   FSL_ESDHC: 0 In:    serial Out:   serial Err:   serial Press home + power to enter recovery mode ... Net:   FEC0 [PRIME] Hit any key to stop autoboot:  0 BBG U-Boot > Copy and paste these configurations, line by line: setenv bootcmd 'run bootcmd_SD1 bootcmd_SD2' setenv bootcmd_SD1 'run bootargs_base bootargs_android bootargs_SD' setenv bootcmd_SD2 'mmc read 0 ${loadaddr} 0x800 0x1280;mmc read 0 ${rd_loadaddr} 0x2000 0x258;bootm ${loadaddr} ${rd_loadaddr}' setenv bootargs_base 'setenv bootargs console=ttymxc0,115200' setenv bootargs_SD 'setenv bootargs ${bootargs}' setenv bootargs_android 'setenv bootargs ${bootargs} init=/init androidboot.console=ttymxc0 wvga calibration' setenv loadaddr 0x90800000 setenv rd_loadaddr 0x90B00000 saveenv Reboot the board: reset Additional Resources All Board Android ADB All Board Android Getevent All Board Android logcat All Board Android Without Ramdisk All Boards Debugging Android [Android] Fatal exception happens when preview size does not match video snapshot size Android Data Partition Encryption on i.MX6 Android GDB for Native Code Android Graphic UI with GPU hardware acceleration Android HTML5 Video Android Memory Usage Tool: Procrank Build Android 4.0 ICS under Ubuntu 11.10 Build Linphone Android for i.MX6 How to find the crash point: Android Native crash How to debug memory leakage in media server in Android How to Enable LDO Bypass Based on i.MX6 Android ICS How to Enable PCIe WiFi into i.MX6 Android Release? How to Install Android on SD Card How to play a file with 2 audio tracks: DTS & AC3 on i.MX6/Android How to play a media file/stream from console in Android How to port new audio codec into Android.docx How to Print Function Caller Stack in Android Log File How to Support New WiFi Card in Android How to Use Proxy to Access Network in Android i.MX6 Android 13.4.1.03 Patch Release i.MX6 Android R13.4.1.04 patch release i.MX6 D/Q and i.MX6 DL/S Android JB4.2.2_1.0.0-GA release iMX6QD How to Add 24-bit LVDS Support in Android i.MX6 Android R13.4-GA.03 patch release IoT Solutions: Cloud Connector for Android Memory Management on i.MX6 Android New Android SD Card Demo Image for the i.MX6Q SABRE Board for Smart Devices New Android SD Card Demo Image for the i.MX6Q SABRE Platform for Smart Devices Sabre-l Setup Memo Video - Bye-Bye Standby Power - Ubiquitous QuickBoot with Android on NetWalker Video - Efika MX Smartbook Android Flash
記事全体を表示
Description about VPU & IPU usage in Android R13.4 GA release for i.MX6DQ
記事全体を表示
           This application note shows how to get i.MX6X development resources from Freescale website. Contents           We can enter Freescale i.MX website by the follow link http://www.freescale.com/imx, and after we input it into the IE address, it will remap to the new address of http://www.freescale.com/webapp/sps/site/homepage.jsp?code=IMX_HOME&tid=vanIMX. And the website page will have all the i.MX chipsets access web link like the follows:       And if we enter the i.MX6 serials Processors web link http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=IMX6X_SERIES , we will get the page like the follows:        Which have all the i.MX6 serials processors feature lists and website links. 1       i.MX6Q/D website guide. We enter the i.MX6D/Q web link http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&webpageId=129226228141673454B24A&nodeId=018rH3ZrDRB24A&fromPage=tax its main page as follows:    The Documentation and Software&Tools items is very important to get the design resource, and the Buy/Parametrics item will have the development board and chipset order information 1.1    i.MX6Q/D Documentation      We enter the Documentation item link: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Documentation_Tab, which will have our documentation materials include the Datasheet, Errata, Application Notes, Reference manual, User guides, Fact Sheets and related supporting information. 1.1.1  i.MX6Q/D DataSheet          We have i.MX6Q/D datasheets of automotive, consumer and industrial, the datasheet will have the chipset mark number, electrical, thermal and package information. IMX6DQAEC i.MX 6Dual/6Quad Automotive and Infotainment Applications Processors IMX6DQCEC i.MX 6Dual/6Quad Applications Processors for Consumer Products IMX6DQIEC i.MX 6Dual/6Quad Applications Processors for Industrial Products 1.1.2  i.MX6Q/D Errata       Chipset Errata will show us our current version chipset bugs and rework method. IMX6DQCE Chip Errata for the i.MX 6Dual/6Quad 1.1.3  i.MX6Q/D  Application Notes AN4724 i.MX 6Dual/6Quad Product Usage Lifetime Estimates AN4629 Fast Image Processing with i.MX 6 Series AN4671 i.MX 6 Series HDMI Test Method for Eye Pattern and Electrical Characteristics AN4397      //all the i.MX6 Serial can use the same PCB, this doc descript the hardware design difference Common Hardware Design for i.MX 6Dual/6Quad and i.MX 6Solo/6DualLite AN4581 Secure Boot on i.MX50, i.MX53, and i.MX 6 Series using HABv4 AN4509   //explan the i.MX6D/Q power consumption in every working features. i.MX 6Dual/6Quad Power Consumption Measurement AN4589 Configuring USB on i.MX 6 Series Processors AN4553 Using Open Source Debugging Tools for Linux on i.MX Processors AN4467 //explain the ddr calibration method, need check with FSL FAE for DDR test calibration tools i.MX 6 Series DDR Calibration AN4579 // explain the thermal design i.MX 6 Series Thermal Management Guidelines 1.1.4  i.MX6Q/D Chipset reference manual IMX6DQRM //i.MX6DQ reference manual for all the internal module description and registers define. i.MX 6Dual/6Quad Applications Processor Reference Manual IMX6DQ6SDLSRM   // i.MX6DQ security related reference manual, need NDA approve. Security Reference Manual for i.MX 6 1.1.5  i.MX6Q/D User guide IMX6DQ6SDLHDG //i.MX6DQ hardware design user guide, include the schematic layout check points, hardware bring up… Hardware Development Guide for i.MX 6Quad, 6Dual, 6DualLite, 6Solo Families of Applications EB792 i.MX 6 Series Standardized Signal Name Map EB793 MISRA Compliance in Freescale Automotive C Language Header Files - Engineering Bulletin 1.1.6  i.MX6Q/D Fact Sheet IMX6SRSFS i.MX 6 Series of Applications Processors - Fact Sheet 1.1.7  i.MX6Q/D BSP/Codec Software Document L3.0.35_4.0.0_LINUX_DOCS   i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux BSP Documentation. Includes Release Notes, Reference Manual,... MX6 folder include the BSP release notes, reference manual, user guide and other APIs doc. L3.0.35_4.0.0_LINUX_MMDOCS   i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Multimedia Codecs Documentation. Includes CODECs Release... IMX6_JB422_100_ANDROID_DOCS   i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP Documentation. Includes Release Notes, User's... 1.1.8  i.MX6Q/D InfoCTR IMX_INFOCTR //TIC support center i.MX Infocenter—Online Documentation 1.2    i.MX6Q/D  Software&Tools We enter into the Software&Tools item page: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Design_Tools_Tab 1.2.1  i.MX6Q/D  Reference Designs SABRE Platform for Smart Devices Based on the i.MX 6 Series  The Smart Application Blueprint for Rapid Engineering (SABRE) platform for smart devices allows you to hold in your hands and evaluate the full multimedia performance capabilities of i.MX 6 series applications processors based on ARM® Cortex™-A9 technology.  Targeted for any device ... Enter it: Press Buy: SABRE Board for Smart Devices Based on the i.MX 6 Series  Freescale's Smart Application Blueprint for Rapid Engineering (SABRE) board for smart devices introduces developers to quad-core processing, low-power consumption and leading-edge multimedia and graphics applications on the i.MX 6Quad ARM ® Cortex™ -A9 applications processor. The SABRE board for smart devices ... Enter it: Press Buy:   SDB board share the same PCB with SDP, but have no camera, LVDS and GPS moduel. SABRE for Automotive Infotainment Based on the i.MX 6 Series  The Smart Application Blueprint for Rapid Engineering (SABRE) for automotive infotainment offers a solid foundation for next-generation converged telematics and infotainment platform designs. Based on i.MX 6 series of applications processors, Freescale's most scalable implementation of the ARM® Cortex™-A9 CPU ... Enter it: Press Buy:    Which have the CPU board and automotive base board, And if need the automotive board LVDS display panel, we can enter the i.MX53 automotive board link to get the order name. SABRE Lite Development Kit: The SABRE Lite Development Kit includes one SABRE Lite board, one 5V power adapter, one customized serial cable, one cross serial cable (DB9-DB9), one USB cable, one net cable and one 4GByte micro SD... Format: html    Saber Lite board a mini system board which use the separate power design, which launch by 3 rd party. 1.2.2  i.MX6Q/D  PCB and Schematic i.MX6_SABRE_AI_DESIGNFILES   : Design files, including hardware schematics, layout files and BOM. Size (K): 39164 Format: zip Rev #: 1.0.2 Modified: 2/27/2013 i.MX6_SABRE_SDP_DESIGNFILES   : Design files, including hardware schematics, Gerbers, and OrCAD files.. Size (K): 11631 Format: zip Rev #: C3 Modified: 3/21/2013 iMX6_SABRE_SDB_DESIGNFILES   : Design files, including hardware schematics, Gerbers, and OrCAD files.. Size (K): 9541 Format: zip Rev #: C3 Modified: 3/21/2013 1.2.3  i.MX6Q/D  Programmers Tools IMX_6DQ_MFG_TOOL   : Tool and documentation for downloading OS images to the i.MX 6Quad and i.MX6Dual. Size (K): 69444 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 IMX_MFG_TOOL_V2_SOURCE   : Source Code for the i.MX manufacturing tool used for downloading OS images to the i.MX 6 Processors. Size (K): 955 Format: zip Rev #: 2.1.1 Modified: 12/19/2012 1.2.4  i.MX6Q/D  Software IMX_6D_Q_VIVANTE_VDK_145_TOOLS   : Set of applications for the Linux L3.0.35_4.0.0 BSP, designed to be used by graphics application developers to rapidly develop and port graphics applications. Includes applications, GPU Driver with vprofiler enabled and documentation.. Size (K): 40113 Format: zip Rev #: 1.4.5 Modified: 5/13/2013 IMX6_GPU_SDK   : i.MX6 Graphics SDK – Includes sample, demo code, and documentation for working with the i.MX6X family graphics cores. Includes OpenVG, OpenGL ES, and GAL2D reference files. Size (K): 21065 Format: gz Rev #: 1.0.0 Modified: 1/25/2013 i.MX 6Series Platform SDK   : Bare-metal SDK for the i.MX 6 series, including reusable drivers and tests for many peripherals, and much example code. Also includes register definition headers files, and register definitions for debuggers. BSD open source license. Size (K): 29865 Format: tgz Rev #: 1.1 Modified: 2/11/2013      A non-OS i.MX6X driver test codes.  1.2.5  i.MX6Q/D  Tools IMX_CST_TOOL   : Freescale Code Signing Tool for the High Assurance Boot library. Provides software code signing support designed for use with i.MX processors that integrate the HAB library in the internal boot ROM. Size (K): 3855 Format: tgz Rev #: 2.0 Modified: 11/16/2012      Please still refer the document of i.MX6Q/D security RM and HAB application notes. IMX6_IOMUX_TOOL   : Interactive i.MX Pin Mux Tool.. Size (K): 5313 Format: zip Rev #: 3.4.0.3 Modified: 2/14/2013      Please still refer the document of i.MX6Q/D iomux table. 1.2.6  i.MX6Q/D  BSDL IMX6_DQ_BSDL   : i.MX 6Quad and i.MX 6Dual BSDL File. Size (K): 64 Format: zip Rev #: 2 Modified: 1/15/2013        A Boundary scan file for manufacture ICT test. 1.2.7  i.MX6Q/D  IBIS IMX6_DQ_IBIS   : i.MX 6Quad and i.MX 6Dual IBIS File. Size (K): 19173 Format: zip Rev #: 1 Modified: 11/9/2012       Use for signals simulation. 1.2.8  i.MX6Q/D  BSP IMX6_DQ_SABRE_AI_SD_DEMO_IMAGE   : Demo Image Flashed on the i.MX 6Quad SABRE AI SD Cards. Size (K): 1789607 Format: exe Rev #: L3.0.35_1.1.1 Modified: 4/23/2013 IMX6_DQ_SDB_SD_DEMO_IMAGE   : Demo Image Flashed on the i.MX 6Quad SDB SD Cards. Size (K): 1670416 Format: exe Rev #: R13.4.1 Modified: 4/24/2013 IMX6_DQ_SDP_SD_DEMO_IMAGE   : Demo Image Flashed on the i.MX 6Quad SDP SD Cards. Size (K): 1670892 Format: exe Rev #: R13.4.1 Modified: 4/24/2013 L3.0.35_4.0.0_DEMO_IMAGE   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Binary Demo Files. Size (K): 359441 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 IMX6_JB422_100_ANDROID_DEMO   : i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP Binary Demo Files. Size (K): 836432 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/8/2013 Demo image for customer to evaluate on Freescale’s board. IMX6_JB422_100_ANDROID_SOURCE   : i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP, Documentation and Source Code for BSP and Codecs.. Size (K): 235533 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/9/2013 Android JB422 source codes, still have the R13.41 android source codes in the same web folder. L3.0.35_4.0.0_ER_SOURCE   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux BSP Source Code Files. Size (K): 1064236 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 Linux LTIB source codes package. L3.0.35_4.0.0_UBUNTU_RFS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux File System for the Ubuntu Images. Size (K): 820076 Format: tgz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 Ubuntu rootfs working on our linux BSP. 1.2.9  i.MX6Q/D  Software Codecs IMX6_JB422_100_AACP_CODEC   : AAC Plus Codec for i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0. Size (K): 84 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/15/2013    Android have no codec package except AACP, have include in the BSP release codes. L3.0.35_4.0.0_AACP_CODECS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux AAC Plus Codec. Size (K): 1377 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 L3.0.35_4.0.0_MM_CODECS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Multimedia Codecs Sources. Size (K): 79197 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013    Linux have MM codec package. 1.2.10              i.MX6Q/D  Updates and Patches   Which have the older patch on L3.0.35 elder version, and Android R13.4/13.4.1. 2       i.MX6DL/S website guide. We enter the i.MX6DL/S web link http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6DL&webpageId=129226228141673454B24A&nodeId=018rH3ZrDRB24A&fromPage=tax    its main page as follows: 2.1    i.MX6DL/S Documentation http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6DL&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Documentation_Tab 2.1.1  i.MX6DL/S DataSheet IMX6SDLAEC i.MX 6Solo/6DualLite Automotive and Infotainment Applications Processors IMX6SDLCEC i.MX 6Solo/6DualLite Applications Processors for Consumer Products IMX6SDLIEC i.MX 6Solo/6DualLite Applications Processors for Industrial Products 2.1.2  i.MX6DL/S Errata IMX6SDLCE Chip Errata for the i.MX 6Solo/6DualLite 2.1.3  i.MX6DL/S D  Application Notes IMX6SDLIEC i.MX 6Solo/6DualLite Applications Processors for Industrial Products AN4576 i.MX 6DualLite Power Consumption Measurement 2.1.4  i.MX6DL/S Chipset reference manual IMX6SDLRM i.MX 6Solo/6DualLite Applications Processor Reference Manual IMX6DQ6SDLSRM   Security Reference Manual for i.MX 6 2.1.5  i.MX6DL/S User Guide IMX6DQ6SDLHDG Hardware Development Guide for i.MX 6Quad, 6Dual, 6DualLite, 6Solo Families of Applications EB793 MISRA Compliance in Freescale Automotive C Language Header Files - Engineering Bulletin 2.1.6  i.MX6DL/S Fact Sheet IMX6SRSFS i.MX 6 Series of Applications Processors - Fact Sheet 2.1.7  i.MX6DL/S BSP/Codec Software Document L3.0.35_4.0.0_LINUX_DOCS   i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux BSP Documentation. Includes Release Notes, Reference Manual,... L3.0.35_4.0.0_LINUX_MMDOCS   i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Multimedia Codecs Documentation. Includes CODECs Release... IMX6_JB422_100_ANDROID_DOCS   i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP Documentation. Includes Release Notes, User's... 2.1.8  i.MX6DL/S InfoCTR IMX_INFOCTR i.MX Infocenter—Online Documentation 2.2    i.MX6DL/S Software&Tools http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6DL&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Design_Tools_Tab 2.2.1  i.MX6DL/S Reference Designs SABRE Platform for Smart Devices Based on the i.MX 6 Series  The Smart Application Blueprint for Rapid Engineering (SABRE) platform for smart devices allows you to hold in your hands and evaluate the full multimedia performance capabilities of i.MX 6 series applications processors based on ARM® Cortex™-A9 technology.  Targeted for any device ... SABRE for Automotive Infotainment Based on the i.MX 6 Series  The Smart Application Blueprint for Rapid Engineering (SABRE) for automotive infotainment offers a solid foundation for next-generation converged telematics and infotainment platform designs. Based on i.MX 6 series of applications processors, Freescale's most scalable implementation of the ARM® Cortex™-A9 CPU ... 2.2.2  i.MX6DL/S PCB and Schematic i.MX6_SABRE_AI_DESIGNFILES   : Design files, including hardware schematics, layout files and BOM. Size (K): 39164 Format: zip Rev #: 1.0.2 Modified: 2/27/2013 I.MX_6DL_S_VIVANTE_VDK_TOOLS   : i.MX6DL and i.MX6S Vivante VDK Tools. Size (K): 39752 Format: zip Rev #: 1.4.1 Modified: 1/4/2013 i.MX 6Series Platform SDK   : Bare-metal SDK for the i.MX 6 series, including reusable drivers and tests for many peripherals, and much example code. Also includes register definition headers files, and register definitions for debuggers. BSD open source license. Size (K): 29865 Format: tgz Rev #: 1.1 Modified: 2/11/2013 2.2.3  i.MX6DL/S Programmers Tools IMX_6DL_6S_MFG_TOOL   : Tool and documentation for downloading OS images to the i.MX 6DualLite and i.MX6Solo. Size (K): 67584 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 2.2.4  i.MX6DL/S  Software 2.2.5  i.MX6DL/S BSDL IMX6_DL_S_BSDL   : i.MX 6DualLite and i.MX 6Solo BSDL File. Size (K): 81 Format: html Rev #: 1 Modified: 11/9/2012 2.2.6  i.MX6DL/S IBIS IMX6_DL_S_IBIS   : i.MX 6DualLIte and i.MX 6Solo IBIS File. Size (K): 15450 Format: zip Rev #: 1 Modified: 11/9/2012 2.2.7  i.MX6DL/S BSP IMX6_DL_SDP_SD_DEMO_IMAGE   : Demo Image Flashed on the i.MX 6DualLiteSDP SD Cards. Size (K): 367806 Format: zip Rev #: R13.4.1 Modified: 12/10/2012 IMX6_JB422_100_ANDROID_DEMO   : i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP Binary Demo Files. Size (K): 836432 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/8/2013 L3.0.35_4.0.0_DEMO_IMAGE   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Binary Demo Files. Size (K): 359441 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 IMX6_JB422_100_ANDROID_SOURCE   : i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0 BSP, Documentation and Source Code for BSP and Codecs.. Size (K): 235533 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/9/2013 L3.0.35_4.0.0_ER_SOURCE   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux BSP Source Code Files. Size (K): 1064236 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 L3.0.35_4.0.0_UBUNTU_RFS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux File System for the Ubuntu Images. Size (K): 820076 Format: tgz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 2.2.8  i.MX6DL/S Software Codecs IMX6_JB422_100_AACP_CODEC   : AAC Plus Codec for i.MX 6Quad, i.MX 6Dual, and i.MX 6DualLite Android jb4.2.2_1.0.0. Size (K): 84 Format: gz Rev #: jb4.2.2_1.0.0 Modified: 5/15/2013 L3.0.35_4.0.0_AACP_CODECS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux AAC Plus Codec. Size (K): 1377 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 L3.0.35_4.0.0_MM_CODECS   : i.MX 6Quad, i.MX 6Dual, i.MX 6DualLite and i.MX 6Solo Linux Multimedia Codecs Sources. Size (K): 79197 Format: gz Rev #: L3.0.35_4.0.0 Modified: 5/13/2013 2.2.9  i.MX6Q/D  Updates and Patches Which have the older patch on L3.0.35 elder version, and Android R13.4/13.4.1. 3       i.MX6SL website guide. http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6SL&webpageId=129226228141673454B24A&nodeId=018rH3ZrDRB24A&fromPage=tax 3.1    i.MX6SL Documentation http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6SL&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Documentation_Tab 3.1.1  i.MX6SL DataSheet IMX6SLCEC i.MX 6SoloLite Applications Processors for Consumer Products 3.1.2  i.MX6SL Errata IMX6SLCE Chip Errata for the i.MX 6SoloLite 3.1.3  i.MX6SL Application Notes AN4726 i.MX 6SoloLite Product Usage Lifetime Estimates AN4580 i.MX 6SoloLite Power Consumption Measurement 3.1.4  i.MX6SL Chipset reference manual IMX6SLRM i.MX 6SoloLite Applications Processor Reference Manual 3.1.5  i.MX6SL User guide IMX6SLHDG Hardware Development Guide for i.MX 6SoloLite Applications Processors - User Guide 3.1.6  i.MX6SL Fact  Sheet IMX6SRSFS i.MX 6 Series of Applications Processors - Fact Sheet IMX6SLEVKFS i.MX 6SoloLite Evaluation Kit - Fact Sheet 3.1.7  i.MX6SL BSP/Codec Software Document L3.0.35_2.1.0_LINUX_DOCS   i.MX 6SoloLite Linux BSP Documentation. Includes Release Notes, Reference Manual, User guide. API Documentation L3.0.35_2.1.0_LINUX_MMDOCS   i.MX 6SoloLite Linux Multimedia Codecs Documentation. Includes CODECs Release Notes and User's Guide IMX6_R13.5_ANDROID_DOCS_BUNDLE   i.MX 6 Sololite Android GA BSP Documentation. 3.1.8  i.MX6SL INFOCTR IMX_INFOCTR i.MX Infocenter—Online Documentation 3.2    i.MX6SL Software&Tools http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6SL&nodeId=018rH3ZrDRB24A&fpsp=1&tab=Design_Tools_Tab 3.2.1  i.MX6SL Reference Designs IMX6SLEVK: i.MX 6SoloLite Evaluation Kit. Freescale delivers the next installment in a line of highly-flexible, market-focused development tools with an Evaluation Kit (EVK) based on the i.MX 6SoloLite applications processor. The i.MX 6SoloLite is the first... Format: html Modified: 6/4/2013 3.2.2  i.MX6SL PCB and Schematics iMX6SL_EVK_DESIGNFILES   : Design files, including hardware schematics, Gerbers, and OrCAD files.. Size (K): 6034 Format: zip Rev #: 1 Modified: 11/12/2012 3.2.3  i.MX6SL Programmers Tools IMX_6SL_MFG_TOOL   : Tool and documentation for downloading OS images to the i.MX 6SoloLite. Size (K): 46502 Format: gz Rev #: L3.0.35_2.1.0 Modified: 5/24/2013 3.2.4  i.MX6SL Tools IMX_CST_TOOL   : Freescale Code Signing Tool for the High Assurance Boot library. Provides software code signing support designed for use with i.MX processors that integrate the HAB library in the internal boot ROM. Size (K): 3855 Format: tgz Rev #: 2.0 Modified: 11/16/2012 IMX6_IOMUX_TOOL   : Interactive i.MX Pin Mux Tool.. Size (K): 5313 Format: zip Rev #: 3.4.0.3 Modified: 2/14/2013 3.2.5  i.MX6SL Software i.MX 6Series Platform SDK   : Bare-metal SDK for the i.MX 6 series, including reusable drivers and tests for many peripherals, and much example code. Also includes register definition headers files, and register definitions for debuggers. BSD open source license. Size (K): 29865 Format: tgz Rev #: 1.1 Modified: 2/11/2013 3.2.6  i.MX6SL BSDL IMX6_SL_BSDL   : i.MX 6SoloLite BSDL File. Size (K): 54 Format: html Rev #: 1 Modified: 11/9/2012 3.2.7  i.MX6SL IBIS IMX6_SL_IBIS   : i.MX 6SoloLite IBIS File. Size (K): 25706 Format: zip Rev #: 1 Modified: 11/9/2012 3.2.8  i.MX6SL BSP IMX6_R13.5_ANDROID_DEMO_IMAGE   : i.MX 6Sololite GA BSP Binary Demo Files. Size (K): 372634 Format: gz Rev #: R13.5 Modified: 11/16/2012 L3.0.35_12.10.02_DEMO_IMAGE   : Linux Binary Demo Files for i.MX 6SoloLite Linux GA BSP. Size (K): 434356 Format: gz Rev #: 12.10.02 Modified: 11/9/2012 L3.0.35_2.1.0_DEMO_IMAGE   : i.MX 6SoloLite Linux Binary Demo Files. Size (K): 464844 Format: gz Rev #: L3.0.35_2.1.0. Modified: 6/4/2013 IMX6_R13.5_ANDROID_SOURCE_CODE   : i.MX 6 Sololite Android GA BSP Documentation and Source Code for BSP and Codecs.. Size (K): 100683 Format: gz Rev #: R13.5 Modified: 11/16/2012 L3.0.35_12.10.02_ER_SOURCE   : i.MX 6SoloLite Linux GA BSP 3.0.35 Source Code Files.. Size (K): 872027 Format: gz Rev #: 12.10.02 Modified: 11/9/2012 L3.0.35_12.10.02_UBUNTU_RFS   : File System for the Ubuntu Imagea for i.MX 6SoloLite Linux GA BSP. Size (K): 810816 Format: tgz Rev #: 12.10.02 Modified: 11/9/2012 L3.0.35_2.1.0_ER_SOURCE   : i.MX 6SoloLite Linux BSP Source Code Files. Size (K): 1064541 Format: gz Rev #: L3.0.35_2.1.0. Modified: 6/4/2013 3.2.9  i.MX6SL Software Codecs L3.0.35_2.1.0_AACP_CODECS   : i.MX 6SoloLite Linux AAC Plus Codec. Size (K): 1374 Format: gz Rev #: L3.0.35_2.1.0 Modified: 5/24/2013 L3.0.35_2.1.0_MM_CODECS   : i.MX 6SoloLite Linux Multimedia Codecs Sources. Size (K): 45883 Format: gz Rev #: L3.0.35_2.1.0 Modified: 5/24/2013 3.2.10              i.MX6SL Updates and Patches IMX6_R13.5_01_ANDROID_PATCHES   : Android 13.5.0-GA.01 patch release. It adds camera support (USB and CSI camera), provides some bug fixes, and includes some regular updates. The 13.5.0-GA.01 patch release is based on 13.5.0-GA.. Size (K): 186882 Format: gz Rev #: R13.5-GA.01 Modified: 1/4/2013 Which have the older patch on L3.0.35 elder version, and Android R13.5.         
記事全体を表示
1. Follow all instructions from Freescale's github repo except the last bitbake command 2. Run hob under the build folder build$ hob & 3. On the GUI, select machine and image, then build 4. In case you need to flash an SD Card, hob does not produce an .sdcard image, so as a workaround, close hob and on the same console run build$ bitbake <image>     where image must be the same as the one you choose with hob 5. Flash your SD card build$ sudo dd if=tmp/deploy/images/fsl-image-gui-imx6qsabresd.sdcard of=/dev/sdX bs=4M NOTES: In case of building issues, please follow this link In case of booting issues, make sure: 1. board DIP switches are set correctly 2. you have chosen the correct machine before baking If issues persist, report it to the community
記事全体を表示
Fast GPU Image Processing in the i.MX 6x by Guillermo Hernandez, Freescale Introduction Color tracking is useful as a base for complex image processing use cases, like determining what parts of an image belong to skin is very important for face detection or hand gesture applications. In this example we will present a method that is robust enough to take some noise and blur, and different lighting conditions thanks to the use of OpenGL ES 2.0 shaders running in the i.MX 6X  multimedia processor. Prerequisites This how-to assumes that the reader is an experienced i.mx developer and is familiar with the tools and techniques around this technology, also this paper assumes the reader has intermediate graphics knowledge and experience such as the RGBA structure of pictures and video frames and programming OpenGL based applications, as we will not dig in the details of the basic setup. Scope Within this paper, we will see how to implement a very fast color tracking application that uses the GPU instead of the CPU using OpenGL ES 2.0 shaders. Step 1: Gather all the components For this example we will use: 1.      i.MX6q ARD platform 2.      Linux ER5 3.      Oneric rootfs with ER5 release packages 4.      Open CV 2.0.0 source Step 2: building everything you need Refer to ER5 User´s Guide and Release notes on how to build and boot the board with the Ubuntu Oneric rootfs. After you are done, you will need to build the Open CV 2.0.0 source in the board, or you could add it to the ltib and have it built for you. NOTE: We will be using open CV only for convenience purposes, we will not use any if its advanced math or image processing  features (because everything happens on the CPU and that is what we are trying to avoid), but rather to have an easy way of grabbing and managing  frames from the USB camera. Step 3: Application setup Make sure that at this point you have a basic OpenGL Es 2.0 application running, a simple plane with a texture mapped to it should be enough to start. (Please refer to Freescale GPU examples). Step 4: OpenCV auxiliary code The basic idea of the workflow is as follows: a)      Get the live feed from the USB camera using openCV function cvCapture() and store into IplImage structure. b)      Create an OpenGL  texture that reads the IplImage buffer every frame and map it to a plane in OpenGL ES 2.0. c)      Use the Fragment Shader to perform fast image processing calculations, in this example we will examine the Sobel Filter and Binary Images that are the foundations for many complex Image Processing algorithms. d)      If necessary, perform multi-pass rendering to chain several image processing shaders  and get an end result. First we must import our openCV relevant headers: #include "opencv/cv.h" #include "opencv/cxcore.h" #include "opencv/cvaux.h" #include "opencv/highgui.h" Then we should define a texture size, for this example we will be using 320x240, but this can be easily changed to 640 x 480 #define TEXTURE_W 320 #define TEXTURE_H 240 We need to create an OpenCV capture device to enable its V4L camera and get the live feed: CvCapture *capture; capture = cvCreateCameraCapture (0); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH,  TEXTURE_W); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, TEXTURE_H); Note: when we are done, remember to close the camera stream: cvReleaseCapture (&capture); OpenCV has a very convenient structure used for storing pixel arrays (a.k.a. images) called IplImage IplImage *bgr_img1; IplImage *frame1; bgr_img1 = cvCreateImage (cvSize (TEXTURE_W, TEXTURE_H), 8, 4); OpenCV has a very convenient function for capturing a frame from the camera and storing it into a IplImage frame2 = cvQueryFrame(capture2); Then we will want to separate the camera capture process from the pos-processing filters and final rendering; hence, we should create a thread to exclusively handle the camera: #include <pthread.h> pthread_t camera_thread1; pthread_create (&camera_thread1, NULL, UpdateTextureFromCamera1,(void *)&thread_id); Your UpdateTextureFromCamera() function should be something like this: void *UpdateTextureFromCamera2 (void *ptr) {       while(1)       {             frame2 = cvQueryFrame(capture);             //cvFlip (frame2, frame2, 1);  // mirrored image             cvCvtColor(frame2, bgr_img2, CV_BGR2BGRA);       }       return NULL;    } Finally, the rendering loop should be something like this: while (! window->Kbhit ())       {                         tt = (double)cvGetTickCount();             Render ();             tt = (double)cvGetTickCount() - tt;             value = tt/(cvGetTickFrequency()*1000.);             printf( "\ntime = %gms --- %.2lf FPS", value, 1000.0 / value);             //key = cvWaitKey (30);       }       Step 5: Map the camera image to a GL Texture As you can see, you need a Render function call every frame, this white paper will not cover in detail the basic OpenGL  or EGL setup of the application, but we would rather focus on the ES 2.0 shaders. GLuint _texture; GLeglImageOES g_imgHandle; IplImage *_texture_data; The function to map the texture from our stored pixels in IplImage is quite simple: we just need to get the image data, that is basically a pixel array void GLCVPlane::PlaneSetTex (IplImage *texture_data) {       cvCvtColor (texture_data, _texture_data, CV_BGR2RGB);       glBindTexture(GL_TEXTURE_2D, _texture);       glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, _texture_w, _texture_h, 0, GL_RGB, GL_UNSIGNED_BYTE, _texture_data->imageData); } This function should be called inside our render loop: void Render (void) {   glClearColor (0.0f, 0.0f, 0.0f, 0.0f);   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   PlaneSetTex(bgr_img1); } At this point the OpenGL texture is ready to be used as a sampler in our Fragment Shader  mapped to a 3D plane Lastly,  when you are ready to draw your plane with the texture in it: // Set the shader program glUseProgram (_shader_program); … // Binds this texture handle so we can load the data into it /* Select Our Texture */ glActiveTexture(GL_TEXTURE0); //Select eglImage glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, g_imgHandle); glDrawArrays (GL_TRIANGLES, 0, 6); Step 6: Use the GPU to do Image Processing First we need to make sure we have the correct Vertex Shader and Fragment shader, we will  focus only in the Fragment Shader, this is where we will process our image from the camera. Below you will find the most simple fragment shader, this one only colors pixels from the sample texture const char *planefrag_shader_src =       "#ifdef GL_FRAGMENT_PRECISION_HIGH                    \n"       "  precision highp float;                            \n"       "#else                                          \n"       "  precision mediump float;                    \n"       "#endif                                        \n"       "                                              \n"       "uniform sampler2D s_texture;                  \n"       "varying  vec3      g_vVSColor;                      \n"       "varying  vec2 g_vVSTexCoord;                        \n"       "                                              \n"       "void main()                                    \n"       "{                                              \n"       "    gl_FragColor = texture2D(s_texture,g_vVSTexCoord);    \n"       "}                                              \n"; Binary Image The most Simple Image Filter is the Binary Image, this one converts a source image to a black/white output, to decide if a color should be black or white we need a threshold,  everything below that threshold will be black, and any color above should be white.               The shader code is as follows: const char* g_strRGBtoBlackWhiteShader =     #ifdef GL_FRAGMENT_PRECISION_HIGH                            precision highp float;                            #else                                            precision mediump float;                          #endif                                            varying  vec2 g_vVSTexCoord;                  uniform sampler2D s_texture;                    uniform float threshold;                                                                        void main() {                                    vec3 current_Color = texture2D(s_texture,g_vVSTexCoord).xyz;         float luminance = dot (vec3(0.299,0.587,0.114),current_Color);         if(luminance>threshold)                      \n"             gl_FragColor = vec4(1.0);                \n"           else                                  \n"                          gl_FragColor = vec4(0.0);                \n"       }                                        \n"; You can notice that the main operation is to get a luminance value of the pixel, in order to achieve that we have to multiply a known vector (obtained empirically) by the current pixel, then we simply compare that luminance value with a threshold. Anything below that threshold will be black, and anything above that threshold will be considered a white pixel. SOBEL Operator Sobel is a very common filter, since it is used as a foundation for many complex Image Processing processes, particularly in edge detection algorithms. The sobel operator is based in convolutions, the convolution is made of a particular mask, often called a kernel (on common therms, usually a 3x3 matrix). The sobel operator calculates the gradient of the image at each pixel, so it tells us how it changes from the pixels surrounding the current pixel , meaning how it increases or decreases (darker to brighter values).           The shader is a bit long, since several operations must be performed, we shall discuss each of its parts below: First we need to get the texture coordinates from the Vertex Shader: const char* plane_sobel_filter_shader_src = #ifdef GL_FRAGMENT_PRECISION_HIGH                    precision highp float;                          #else                                    precision mediump float;                        #endif                                          varying  vec2 g_vVSTexCoord;                  uniform sampler2D s_texture;                    Then we should define our kernel, as stated before, a 3x3 matrix should be enough, and the following values have been tested with good results: mat3 kernel1 = mat3 (-1.0, -2.0, -1.0,                                          0.0, 0.0, 0.0,                                              1.0, 2.0, 1.0);    We also need a convenient way to convert to grayscale, since we only need grayscale information for the Sobel operator, remember that to convert to grayscale you only need an average of the three colors: float toGrayscale(vec3 source) {                    float average = (source.x+source.y+source.z)/3.0;        return average;              } Now we go to the important part, to actually perform the convolutions. Remember that by the OpenGL ES 2.0 spec, nor recursion nor dynamic indexing is supported, so we need to do our operations the hard way: by defining vectors and multiplying them. See the following code:   float doConvolution(mat3 kernel) {                              float sum = 0.0;                                    float current_pixelColor = toGrayscale(texture2D(s_texture,g_vVSTexCoord).xyz); float xOffset = float(1)/1024.0;                    float yOffset = float(1)/768.0; float new_pixel00 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-  xOffset,g_vVSTexCoord.y-yOffset)).xyz); float new_pixel01 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x,g_vVSTexCoord.y-yOffset)).xyz); float new_pixel02 = toGrayscale(texture2D(s_texture,  vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y-yOffset)).xyz); vec3 pixelRow0 = vec3(new_pixel00,new_pixel01,new_pixel02); float new_pixel10 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-xOffset,g_vVSTexCoord.y)).xyz);\n" float new_pixel11 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x,g_vVSTexCoord.y)).xyz); float new_pixel12 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y)).xyz); vec3 pixelRow1 = vec3(new_pixel10,new_pixel11,new_pixel12); float new_pixel20 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-xOffset,g_vVSTexCoord.y+yOffset)).xyz); float new_pixel21 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x,g_vVSTexCoord.y+yOffset)).xyz); float new_pixel22 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y+yOffset)).xyz); vec3 pixelRow2 = vec3(new_pixel20,new_pixel21,new_pixel22); vec3 mult1 = (kernel[0]*pixelRow0);                  vec3 mult2 = (kernel[1]*pixelRow1);                  vec3 mult3 = (kernel[2]*pixelRow2);                  sum= mult1.x+mult1.y+mult1.z+mult2.x+mult2.y+mult2.z+mult3.x+     mult3.y+mult3.z;\n"     return sum;                                      } If you see the last part of our function, you can notice that we are adding the multiplication values to a sum, with this sum we will see the variation of each pixel regarding its neighbors. The last part of the shader is where we will use all our previous functions, it is worth to notice that the convolution needs to be applied horizontally and vertically for this technique to be complete: void main() {                                    float horizontalSum = 0.0;                            float verticalSum = 0.0;                        float averageSum = 0.0;                        horizontalSum = doConvolution(kernel1);        verticalSum = doConvolution(kernel2);            if( (verticalSum > 0.2)|| (horizontalSum >0.2)||(verticalSum < -0.2)|| (horizontalSum <-0.2))                        averageSum = 0.0;                      else                                                    averageSum = 1.0;                    gl_FragColor = vec4(averageSum,averageSum,averageSum,1.0);                }    Conclusions and future work At this point, if you have your application up and running, you can notice that Image Processing can be done quite fast, even with images larger than 640 480. This approach can be expanded to a variety of techniques like Tracking, Feature detection and Face detection. However, these techniques are out of scope for now, because this algorithms need multiple rendering passes (like face detection), where we need to perform an operation, then write the result to an offscreen buffer and use that buffer as an input for the next shader and so on.  But Freescale is planning to release an Application Note in Q4 2012 that will expand this white paper and cover these techniques in detail.
記事全体を表示
Hardware connection: there are two board-to-board connectors on E-INK daughter card IMXEBOOKDC4, while there is only one on i.MX7D Sabre board, as the picture below. This might be a bit confusing to connect the two: Checked with internal, the original design was trying to wire both eLCDIF and EPDC bus out to one daughter card, add the flexibility to have different configurations on one display daughter card(LCD/EPD). On i.MX7D Sabre board, only one connector is available for EPDC bus. Here is how we connect i.MX7D Sabre and IMXEBOOKDC4: Software setup: here we use pre-build L3.14.38_6UL7D_Beta Linux as our boot-image, steps to setup/boot/test EPDC: 1. download and decompress BSP pre-build image package "L3.14.38_beta_images_MX6UL7D.tar.gz", you should be able to find the SD image in it -- "fsl-image-gui-x11-imx7dsabresd.sdcard" 2. program the SD image on your SD card(>800 MBytes) with command(I'm running this in Ubuntu): "dd if=fsl-image-gui-x11-imx7dsabresd.sdcard of=/dev/sdb;sync" 3. insert SD card to the slot(J6) on i.MX7D Sabre board, connect debug-UART and power-on the board 4. modify the u-boot environment variables as below:      a.) setenv fdt_file imx7d-sdb-epdc.dtb           (originally this is "fdt_file=imx7d-sdb.dtb")      b.) setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} epdc video=mxcepdcfb:E060SCM,bpp=16'           (originally this is "mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}") 5. boot into Linux kernel, run unit-test: "/unit_tests/mxc_epdc_fb_test.out", should be able to have test patterns running on EPD.
記事全体を表示
Overview i.MX6Dual/Quad supports using internal LDO or bypass internal LDO. LDO bypass is helpful to save power consumption and reduce thermal under high loading use cases because the power consumption on internal LDO can be saved. The purpose of this document is to introduce how to enable LDO bypass based on i.MX6 R13.4.1 release on i.MX6Dual/Quad SabreSD board. Constraint LDO Bypass solution currently can only be applied to i.MX6Dual/Quad 1GHz. LDO bypass function will force disabled on i.MX6Dual/Quad 1.2GHz, but customer can estimate this function through limit the max ARM frequency to 1GHz by command line 'arm_freq=1000' on i.MX6Dual/Quad 1.2GHz . Hardware Voltage Settings The following table lists the voltage settings in each working CPU frequency and VPU frequency with LDO bypass solution: VPU Frequency ARM Frequency VDDARM_IN (V) VDDSOC_IN (V) 0 to 352MHz 996MHz 1.25 1.25 264-> 352MHz 702MHz 1.15 1.25 0 to 264MHz 792MHz 1.15 1.175 264->352MHz 396MHz 0.95 1.25 <264MHz 396MHz 0.95 1.175 VDDARM_IN and VDDSOC_IN voltage setting should be within the voltage range, considering the ripple: VDDARM_IN - ripple>VDDARM_INmin VDDARM_IN + ripple<VDDARM_Inmax For the Min/Max value, refer to the i.MX6Dual/Quad data sheet. The above list is based on SabreSD PFuse-100. Software Changes Please apply the patches into Android-13.4.1-LDO_BYPASS-pathes.tar.gz.gz based on R13.4.1. The change lists: uboot-imx: move LDO bypass code and one PFUZE1.0 workaround code to kernel. Remove CONFIG_MX6_INTER_LDO_BYPASS in u-boot. kernel: A set of patches are used to support LDO bypass enable/disable by command option. How to Enable/Disable LDO Bypass After applying for above patches, you can add command option into boot command line to enable or disable LDO: Command option “ldo_active=off”: Enable LDO bypass mode Command option “ldo_active=on”: Enable LDO active
記事全体を表示
目录 1 i.MX8Mmini 板级开发包镜像结构 ............................... 2 2 创建 i.MX8Mmini Linux 4.14.78_ga 板级开发包编译环境 3 2.1 下载板级开发包 ...................................................... 3 2.2 创建yocto编译环境: ................................................ 4 2.3 编译sdk及安装 ........................................................ 7 2.4 独立编译 ................................................................. 8 3 DDR配置,测试与输出 ............................................ 13 4 i.MX8Mmini ATF ...................................................... 15 5 FSL Uboot SPL 定制 ............................................... 17 5.1 SPL的编译............................................................ 17 5.2 SPL的启动流程 .................................................... 26 5.3 SPL的定制............................................................ 33 6 FSL Uboot 定制 ....................................................... 39 6.1 FDT支持 ............................................................... 40 6.2 DM(driver model)支持 .......................................... 45 6.3 Uboot目录 结构 .................................................... 59 6.4 Uboot编译 ............................................................ 61 6.5 Uboot初始化流程 .................................................. 62 6.6 uboot 定制 ............................................................ 72 6.7 uboot debug信息 .................................................. 78
記事全体を表示
Here is a quick summary at booting a Linux system on the i.MX 6 Sabre SD platform, through USB. This assumes you have a "working" Linux development environment at hand (e.g. Debian), and that your are able to build a working Linux system with buildroot already, as explained in this post. You will also need libusb-1.0 development files (headers and libraries), as well as root/sudo permissions to access USB peripherals. Also, we will use the fine imx_usb_loader tool that the nice folks at Boundary Devices have developed for their i.MX 5/6 boards, as it works fine for Sabre sd as well. Get buildroot sources We will use git to fetch buildroot sources: $ git clone git://git.busybox.net/buildroot This should create a buildroot directory with all the latest sources (after a while). Note that for more stability you might want to checkout a release instead of the latest version; to do so, list the available release tags with e.g. git tag -l '201*', and git checkout <the-desired-tag>. Compile buildroot The beauty of buildroot is that it will take care of everything for you, including preparing a cross compiler. You can configure buildroot for Sabre SD by doing: $ cd buildroot $ make freescale_imx6sabresd_defconfig By default this would generate binaries suitable for booting with an SD card, so we need to tweak a few settings to obtain a ramdisk, which u-boot will like. Summon the configuration menu with the following command: $ make menuconfig Descend into the "Filesystem images" submenu, and select the following buildroot options: cpio the root filesystem (for use as an initial RAM filesystem) Compression method (gzip) Create U-Boot image of the root filesystem Exit, saving your configuration. You might want to verify that you have indeed the the correct options in your .config: $ grep '^BR2_TARGET_ROOTFS_CPIO' .config This should return the following: BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_GZIP=y BR2_TARGET_ROOTFS_CPIO_UIMAGE=y You may then proceed with the build: $ make This should download and build everything, so it will take a while. Note that, as bryanthomas pointed out, there are no files for the sabre sd in the boards folder. This is because no patches or custom kernel configurations are needed outside of what is defined in the defconfig. So the only place the sabre sd board lives in buildroot is in the configs directory. At the time of writing we still need a small final hack to have Linux boot on /init instead of its default /linuxrc for proper boot on ramdisk, though. Hopefully this should be addressed in a future buildroot version, and a patch is on his way, but for now we change the boot script in our target filesystem with: $ cd output/target $ ln -svf init linuxrc $ cd ../.. $ make All build results will fall under the output/images folder. We are most interested in the following pieces: output/images/ +- imx6q-sabresq.dtb +- rootfs.cpio.uboot +- u-boot.imx `- uImage Get imx_usb_loader sources We will use git to fetch imx_usb_loader sources: $ git clone git://github.com/boundarydevices/imx_usb_loader.git This should create an imx_usb_loader directory with all the latest sources. Compile imx_usb_loader Assuming your Linux development environment has the necessary libusb-1.0 headers and libraries, you can simply build by doing: $ cd imx_usb_loader $ make This should compile an imx_usb tool in the current folder. Prepare your payload and configuration First, copy all the necessary buildroot generated items to the imx_usb_loader directory. You will need: u-boot.imx uImage imx6q-sabresd.dtb rootfs.cpio.uboot Now we need to explain to imx_usb what we want to download to the i.MX romcode through USB. Add the following lines in the end of the mx6_usb_work.conf: ... u-boot.imx:dcd,plug uImage:load 0x12000000 rootfs.cpio.uboot:load 0x12C00000 imx6q-sabresd.dtb:load 0x18000000 u-boot.imx:clear_dcd,jump header The first line with dcd, plug uses u-boot header to configure the DDR3 memory, allowing us to download contents to the Sabre SD memory. This is exactly what the three subsequent lines with load directives do. The last line re-uses u-boot one more time to find out the address where to jump (jump header directive), but not touching the DDR configuration any more thanks to the clear_dcd directive (thanks jeanmariepons-b46892 for the tips) . Look at the comments in mx6_usb_work.conf for (a bit) more details on the various directives available. Also, note that all the absolute addresses mentioned above are what u-boot needed at the time of writing. Hopefully this should be fairly stable. Boot through USB! We are all set for booting now. Connect to the USB to UART port with a serial terminal set to 115200 baud, no parity, 8bit data. Connect also your PC to the USB OTG port of the Sabre SD, and make sure you have no SD card inserted and power up the platform. The Sabre SD should not boot into an operating system, but rather wait for a payload to download through USB. You might want to verify that it is indeed waiting with the following command: $ lsusb In the resulting output, there should be a line like the following: Bus 001 Device 098: ID 15a2:0054 Freescale Semiconductor, Inc. i.MX 6Dual/6Quad SystemOnChip in RecoveryMode On your PC, start the download of our "payload" to your Sabre SD with: $ sudo ./imx_usb (Note that you need proper permissions to do that.) After download of all the pieces, u-boot should start in its "mfgtools mode", as reflected by the following messages on UART: ... Boot from USB for mfgtools Use default environment for mfgtools Run bootcmd_mfg: run mfgtool_args;bootm ${loadaddr} ${initrd_addr} ${fdt_addr}; ... The Linux kernel should then start, and your buildroot system should reach a prompt: ... Welcome to Buildroot buildroot login: From there you may login as root. Enjoy! See also... This post details the buildroot steps a bit more. This post explains how to build a ramdisk for i.MX6 with busybox directly. AdeneoEmbedded - Whitepaper on USB loader for i.MX6 platforms imx_usb_loader README on github Buildroot: making embedded Linux easy
記事全体を表示
Most engineers should incorporate the following fundamental methodology when designing and bringing up a new board design: 1. Review the schematics and layout to ensure proper connectivity of all devices 2. Once the board returns from the manufacturer, measure and document all of the voltage rails of each IC on the board (especially the SoC and DRAM) 3. Ensure JTAG debugger connectivity (due to the complexity of systems today, every new board design should have some “hooks” to allow JTAG connectivity, even if these are simply test points) 4. Bring up and ensure proper DRAM functionality; it is imperative the first three steps are precisely accomplished – often times, DRAM instability or non functionality is due to improper connection (including not being connected to the voltage net) or poor layout. Once these four steps are completed, the board can then proceed to a more broad based checkout of other peripherals using some type of compiled test code executed from DRAM. More often than not, the end user’s board will differ from Freescale reference design boards either in how the DRAMs are connected or simply by using a different DRAM vendor.  As such, tools were created to aid in the development of DRAM initialization scripts.  The resulting script, though targeted for the RealView development system (aka include files), can be easily ported to another debugger’s command syntax or to assembly code for use in boot loaders.  These tools are Excel spread sheet based and include a “How To Use” tab, making the tool usage relatively self-explanatory.  Each tool is unique to a specific i.MX processor and to the DRAM technology used with each processor.  This attached files are tools available for the following i.MX SoCs:
記事全体を表示
Hi All, The new Android kk4.4.2_1.0.0 GA release is now available on www.freescale.com ·         Files available                Description IMX6_KK442_100_ANDROID_DOCS i.MX   6Quad, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo and i.MX 6Sololite Android   KK4.4.2_1.0.0 BSP Documentation. Includes Release Notes, User's Guide, QSG   and FAQ Sheet. IMX6_KK442_100_ANDROID_SOURCE_BSP i.MX   6Quad, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo and i.MX 6Sololite Android   KK4.4.2_1.0.0 BSP, Source Code for BSP and Codecs. IMX6_SABRE_AI_KK442_100_ANDROID_DEMO_BSP i.MX   6Quad, i.MX 6Dual, i.MX 6DualLite,  and   i.MX 6Solo  Android KK4.4.2_1.0.0 BSP   Binary Demo Files for the SABRE for Automotive Infotainment IMX6SL_EVK_KK442_100_ANDROID_DEMO_BSP i.MX 6Sololite Android KK4.4.2_1.0.0  BSP Binary Demo Files for the i.MX   6SoloLite Evaluation Kit IMX6_SABRE_SD_KK442_100_ANDROID_DEMO_BSP i.MX   6Quad, i.MX 6Dual, i.MX 6DualLite,  and   i.MX 6Solo  Android KK4.4.2_1.0.0 BSP   Binary Demo Files for the SABRE Platform and SABRE Board for Smart Devices IMX6_KK442_100_AACP_CODEC_CODA AAC Plus Codec for i.MX 6Quad, i.MX 6Dual, i.MX   6DualLite, i.MX 6Solo and i.MX 6Sololite Android KK4.4.2_1.0.0 BSP IMX6_MFG_kk4.4.2_1.0.0_TOOL i.MX 6Family Manufacturing Toolkit for kk4.4.2_1.0.0. ·         Target HW boards o   i.MX6DL  SABRE SD board o   i.MX6Q  SABRE SD board o   i.MX6DQ SABRE AI board o   i.MX6DL SABRE AI board o   i.MX6SL EVK board ·         Release Description i.MX Android kk4.4.2_1.0.0 is GA release for Android 4.4.2 Kitkat(KK) on Freescale's i.MX 6Quad, i.MX 6Dual,i.MX 6DualLite, i.MX 6Solo and i.MX 6SoloLite applications processors. i.MX Android kk4.4.2_1.0.0 release includes all necessary codes, documents and tools to assist users in building and running Android 4.4.2 on the i.MX 6Quad, i.MX 6DualLite and i.MX6SoloLite hardware board from the scratch. The prebuilt images are also included for a quick trial on Freescale i.MX 6Quad and i.MX 6DualLite SABRE-SD Board and Platform, i.MX 6Quad and i.MX 6DualLite SABRE-AI Board and Platforms and i.MX6SoloLite EVK Board and Platforms. This release includes all Freescale porting and enhancements based on Android open source code. ·         What's in this release        Android Source Code Patch android_kk4.4.2_1.0.0-ga_core_source.tar.gz:   Freescale i.MX specific patches (apply to Google Android repo) to enable   Android on i.MX based boards. For   example, Hardware Abstraction Layer implementation, hardware codec   acceleration, etc. Documents The   following documents are included in android_kk4.4.x_1.0.0-ga_docs.tar.gz •   Android Quick Start Guide: A manual that explains how to run Android on an i.MX   board by using prebuilt images. •   Android User's Guide: A detailed manual for this release package. •   Android Frequently Asked Questions: A document that contains Frequently Asked   Questions (FAQs). •   Android Release Notes: A document that introduces key updates and known   issues in this release. •   i.MX 6 G2D API User Guide: A document that introduces the G2D API usages. Tools Tools   in android_kk4.4.2_1.0.0-ga_tools.tar.gz •   MFGTool: Manufacturing tools for i.MX platform. •   tool/tetherxp.inf: USB tethering windows .inf driver configuration file. Prebuilt Images You   can test Android with a prebuilt image on i.MX reference board before   building any code: •   android_kk4.4.2_1.0.0-ga_core_image_6qsabresd.tar.gz: Prebuilt images with   default android features for the SABRE-SD board. •   android_kk4.4.2_1.0.0-ga_core_image_6qsabreauto.tar.gz: Prebuilt images with   default android features for the SABRE-AI board. •   android_kk4.4.2_1.0.0-ga_core_image_6slevk.tar.gz: Prebuilt images with   default android features for the 6SoloLite EVK platform. •   android_kk4.4.2_1.0.0-ga_full_image_6qsabresd.tar.gz: Prebuilt images with   Freescale Extended Multimedia features for the SABRE-SD board •   android_kk4.4.2_1.0.0-ga_full_image_6qsabreauto.tar.gz: Prebuilt images with   Freescale Extended Multimedia features for the SABRE-AI board. ·         Known issues For known issues and limitations please consult the release notes
記事全体を表示
INTRODUCTION REQUIREMENTS DEVICE TREE BOOTING LINUX 1. INTRODUCTION     This document explains how to use the yocto images and tailor the source code for a different board. The board used in this document is the Udoo board that features an iMX6Q. In this document U-Boot Migration Example the U-boot changes are covered and it must be followed before this one. The below steps will cover the next board changes:     Ethernet PHY     SD card     Debug UART 2. REQUIREMENTS A functional Yocto environment (Images generated for your target, core-image-minimal). The images generated must be chosen for the imx6q, which is the one explained in this document. Toolchain. The meta-toolchain is used in this document. L3.14.38 is used in this document. Build Kernel using meta-toolchain A SD card with the core-image-minimal image. NOTE: Follow the next training that explains in detail the steps to cover the requirements. Yocto Training - HOME 3. DEVICE TREE        In previous Linux versions 3.0.35 backwards, the kernel contained hardcoded structures in C language used for board and platform specific configurations. Thanks to the device tree, the same kernel image can be used for different boards and the description of the platform and board is defined in a different file. Therefore the same kernel used by the SABRE-SD or SABRE-AI board can be used for the Udoo board and only  a new Device Tree file has to be generated. 3.1 ADDING A NEW DEVICE TREE After you have chosen the configuration of the corresponding board (imx_v7_defconfig), exported the needed environment variables like ARCH, CROSS_COMPILE; the new .dts file must be added. In the linux source folder arch/arm/boot/dts create a file named imx6q-udoo-doc.dts. This is the .dts file that contains the hardware description. $ touch imx6q-udoo-doc.dts Add the new dts file in the Makefile found in arch/arm/boot/dts. The file must be inside the precomipler directive $(CONFIG_ARCH_MXC) 3.2 DEVICE TREE CONTENT Using your prefered text editor, add the dts version at the top of the file /dts-v1/; There is already a dtsi file that describes  the imx6q device named imx6q.dtsi. Include this file in the new dts . #include "imx6q.dtsi" Add the root node, model and compatible property. The udoo,imx6q-udoo property does not exist in the DT_MACHINE structure, but fsl,imx6q does. / {         model = "Udoo i.MX6 Quad Board";         compatible = "udoo,imx6q-udoo", "fsl,imx6q"; }; Add the memory region. memory{           reg = <0x10000000 0x40000000>; }; Add the pinctrl configurations for the nodes you want to add. UART2_TXD and UART2_RXD are the pins used for the serial debug console. The pin description must be placed in the iomuxc node. &iomuxc{      imx6q-udoo{           pinctrl_uart2: uart2grp{                fsl,pins = <                          MX6QDL_PAD_EIM_D26__UART2_TX_DATA          0x1b0b1                          MX6QDL_PAD_EIM_D27__UART2_RX_DATA          0x1b0b1                           >;                };          };      }; The RGMII connection and SD characteristics are the same as iMX6Q SABRE-SD . pinctrl_usdhc3: usdhc3grp {                         fsl,pins = <                                MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059                                MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059                                MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059                                MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059                                MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059                                MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059                         >;                 }; pinctrl_enet: enetgrp {                         fsl,pins = <                                                  MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0                                MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0                                MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0                                MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0                                MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0                                MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0                                MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0                                MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0                                MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0                                MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0                                MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0                                MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0                                MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0                                MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0                                MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0                                MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8                         >;                      }; The fec, uart2 and usdhc3 nodes must be added. These nodes exist already in the imx6q.dtsi but the status property, pinctrl  among others must be added. &fec {         pinctrl-names = "default";         pinctrl-0 = <&pinctrl_enet>;         phy-mode = "rgmii";             status = "okay";        };                                                      &uart2 {         pinctrl-names = "default";         pinctrl-0 = <&pinctrl_uart2>;         status = "okay";        };                                                                                                                                              &usdhc3 {                                        pinctrl-names = "default";               pinctrl-0 = <&pinctrl_usdhc3>;         non-removable;                  status = "okay"; }; Below is the simple dts file resulting from the above points. /dts-v1/; #include "imx6q.dtsi" / {         model = "Udoo i.MX6 Quad Board";         compatible = "udoo,imx6q-udo", "fsl,imx6q";         memory {                 reg = <0x10000000 0x80000000>;         }; }; &fec {         pinctrl-names = "default";         pinctrl-0 = <&pinctrl_enet>;         phy-mode = "rgmii";         status = "okay"; }; &uart2 {         pinctrl-names = "default";         pinctrl-0 = <&pinctrl_uart2>;         status = "okay"; }; &usdhc3 {         pinctrl-names = "default";         pinctrl-0 = <&pinctrl_usdhc3>;         non-removable;         status = "okay"; }; &iomuxc {         imx6q-udoo {                 pinctrl_enet: enetgrp {                         fsl,pins = <                                 MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b0b0                                 MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b0b0                                 MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b0b0                                 MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b0b0                                 MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b0b0                                 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b0b0                                 MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b0b0                                 MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b0b0                                 MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b0b0                                 MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b0b0                                 MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b0b0                                 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b0b0                                 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x1b0b0                                 MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0                                 MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0                                 MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0a8                         >;                 };                 pinctrl_uart2: uart2grp {                         fsl,pins = <                                 MX6QDL_PAD_EIM_D26__UART2_TX_DATA       0x1b0b1                                 MX6QDL_PAD_EIM_D27__UART2_RX_DATA       0x1b0b1                         >;                 };                 pinctrl_usdhc3: usdhc3grp {                         fsl,pins = <                                 MX6QDL_PAD_SD3_CMD__SD3_CMD             0x17059                                 MX6QDL_PAD_SD3_CLK__SD3_CLK             0x10059                                 MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x17059                                 MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x17059                                 MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x17059                                 MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x17059                         >;                 };         }; }; 3.3 COMPILING DEVICE TREE Compiling the .dts will generate a .dtb file that is the binary file the kernel needs. make ARCH=arm dtbs A file named imx6q-udoo-doc.dtb is the file used by our board. It is found in  arch/arm/boot/dts folder. If you have a SD with a working image, place this file in the FAT partition. You may need to change the file name first, in this case for imx6q-udoo.dtb. 4. BOOTING THE IMAGE After this you should have a simple and functional linux system. Just plug-in your SD card and power-up the board.  You should get an output in the serial console like the one below: I hope you find this basic document helpful.
記事全体を表示
INTRODUCTION REQUIREMENTS CREATE A NEW PROJECT GPU EXAMPLE GSTREAMER EXAMPLE 1. INTRODUCTION:      The below steps show how to create different application examples using Elipse IDE. 2. REQUIREMENTS:      A fully working image and meta-toolchain generated in Yocto . You can follow the  next training: Yocto Training - HOME      Install and configure the Yocto Eclipse Plug-in. For more details about this requirement please refer to Setting up the Eclipse IDE for Yocto Application Development         To demonstrate the steps, L3.14.28  BSP, fsl-image-qt5 image and i.MX6Q SABRE-SDP board were used. 3. CREATE A NEW PROJECT      Follow the section Creating a Hello World Project of this document Setting up the Eclipse IDE for Yocto Application Development 4. GPU EXAMPLE           For this project we use the source code found in the fsl-gpu-sdk that can be downloaded from:      https://www.freescale.com/webapp/Download?colCode=IMX6_GPU_SDK&location=null&Parent_nodeId=1337637154535695831062&Parent…      Follow section 3 and create a new project named gputest.      From the IMX6_GPU_SDK choose one of the examples of GLES2.0 folder. In this case the 01_SimpleTriangle is chosen.      Copy the .c and .h files to the src directory of the gputest project. The Project Explorer window should look like this:              Add the needed files and libraries to compile and link in the Makefile.am file found in the ´src´ folder. The Makefile.am file should have the below content:          bin_PROGRAMS = gputest          gputest_SOURCES = gputest.c fsl_egl.c fslutil.c          AM_CFLAGS = @gputest_CFLAGS@          AM_LDFLAGS = @gputest_LIBS@ -lstdc++ -lm -lGLESv2 -lEGL -lX11 -ldl          CLEANFILES = *~ ​    Add the PATH to CFLAGS where the compiler will look for the headers at Project->Properties->Autotools->configure:           In this project there is no need to add extra PATHs for the headers. Apply the changes by clicking on Reconfigure Project. Build the project To test the file you can send the executable to the board with:           $ scp gputest root@<board_ip>:/home/root      $./gputest      You should get the next output in the display: 5. GSTREAMER EXAMPLE      For this project we use the source code found at Basic tutorial 1: Hello world! - GStreamer SDK documentation - GStreamer SDK documentation    Follow section 3 and create a new project named Gstreamer.    Copy the code of the basic tutorial to your Gstreamer.c file.    Add the needed files and libraries to compile and link in the Makefile.am file found in the ´src´ folder. The Makefile.am file should have the below content:                           bin_PROGRAMS = Gstreamer      Gstreamer_SOURCES = Gstreamer.c      AM_CFLAGS = @Gstreamer_CFLAGS@      AM_LDFLAGS = @Gstreamer_LIBS@ -lstdc++  -lVDK -lm -lGLESv2 -lGAL -lEGL  -ldl -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0      CLEANFILES = *~         ​    Add the PATH to CFLAGS where the compiler will look for the headers at Project->Properties->Autotools->configure:           For this example the next lines are added             -I${Sysroot}/usr/include/gstreamer-1.0        -I${Sysroot}/usr/include/glib-2.0        -I${Sysroot}/usr/include/libxml2        -I${Sysroot}/usr/lib/glib-2.0/include      Apply the changes by clicking on Reconfigure Project. Build the project To test the file you can send the executable to the board with:           $ scp Gstreamer root@<board_ip>:/home/root To execute the application on the board:      $./Gstreamer The board should have internet access and the application should play the video found at http://docs.gstreamer.com/media/sintel_trailer-480p.webm
記事全体を表示
i.MX8 VPU hardware decoder support below video codec: H.265 HEVC Main Profile 4Kp60 Level 5.1 H.264 AVC Constrained Baseline, Main and High profile H.264 MVC WMV9 / VC-1 Simple, Main and Advanced Profile MPEG 1 and 2 Main Profile at High Level AVS Jizhun Profile (JP) MJPEG4.2 ASP, H.263, Sorenson Spark Divx 3.11, with Global Motion Compensation (GMC) ON2/Google VP6/VP8 RealVideo 8/9/10 JPEG and MJPEG A/B Baseline   i.MX8 VPU Linux driver is implemented based on V4L2 standard. Chromium beside software video decoding, it also support hardware video decoder(VideoDecodeAccelerator),  there are some kind of VideoDecodeAccelerator, one of them is V4L2VDA. Please note V4L2VDA is using V4l2 api, so it is possible that change V4L2VDA to enable Chromium hardware video playback on i.MX8.   This doc share patch to add chromium video decode accelerate by using i.MX8QM/i.MX8QXP VPU. It will support chromium H.264, H.265, VP8 hardware video decode. H.264 and H.265 need use mp4 container. VP8 use webm container.   HW: i.MX8QM/i.MX8QXP MEK board, 1080P HDMI display, mouse, keyboard SW: i.MX8 5.10.72_2.2.2 yocto bsp release(which included chromium 91.0), and patch in this doc   Patch description: imx8-5.10.72-vpudrv-update.diff, update i.MX8  5.10.72_2.2.2 kernel vpu driver to https://source.codeaurora.org/external/imx/linux-imx/commit/drivers/mxc/vpu_malone?h=lf-5.15.y&id=fa7c67e2c9ed4fb8392fa258f931d6996339a17a chromium-ozone-wayland_91.0.4472.114.bb.diff, change meta-browser/meta-chromium/recipes-browser/chromium/chromium-ozone-wayland_91.0.4472.114.bb for adding some compile flags, etc. 5.10.72-merge.patch, this patch change chromium source code to add video decode accelerate by using i.MX8 VPU.   Build steps: 1>Download i.MX8 5.10.72_2.2.2 yocto release from nxp.com 2>apply chromium-ozone-wayland_91.0.4472.114.bb.diff to change meta-browser/meta-chromium/recipes-browser/chromium/chromium-ozone-wayland_91.0.4472.114.bb 3>put 5.10.72-merge.patch to folder path_of_yocto-5.10.72-2.2.2/sources/meta-browser/meta-chromium/recipes-browser/chromium/files/ 3>apply imx8-5.10.72-vpudrv-update.diff to i.MX8 5.10.72_2.2.2 kernel 4>under the yocto image build folder, add "CORE_IMAGE_EXTRA_INSTALL += "chromium-ozone-wayland" to file path_of_yocto-5.10.72-2.2.2/folder-of-bld/conf/local.conf 5>run bitbake to build rootfs image   Test steps: After system boot up, put some video clip under /home/root/video then run below cmd (do not run chromium without any parameter, as that will start chromium with some other setting, you can check /usr/lib/chromium/chromium-wrapper) "/usr/lib/chromium/chromium-bin   --no-sandbox --ozone-platform=wayland --enable-features=VaapiVideoDecoder  --enable-accelerated-video-decode   --enable-clear-hevc-for-testing --ignore-gpu-blacklist --window-size=1920,1180  /home/root/video" then use mouse to click video clip and will start playback.   Reference: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-processors:IMX8-SERIES https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX https://www.chromium.org/audio-video/#:~:text=codec%20and%20container%20support https://github.com/igel-oss/meta-browser-hwdecode/blob/master/recipes-chromium/chromium/files/0001-Add-support-for-V4L2VDA-on-Linux.patch      
記事全体を表示
1. Set up HDMI Set up your kernel to use HDMI adding the following code to bootargs on u-boot: video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 2. Test raw audio In order to test only raw audio, use the following command: aplay -D hw:1,0 Kaleidoscope.wav 3. Make HDMI audio the default output In order to configure audio output over HDMI, please, replace content of file ~/.asoundrc to the following one pcm.dmix_48000{      type dmix      ipc_key 5678293      ipc_key_add_uid yes      slave{           pcm "hw:1,0"           period_time 0           period_size 2048           buffer_size 24576           format S16_LE           rate 48000      } } pcm.!dsnoop_44100{      type dsnoop      ipc_key 5778293      ipc_key_add_uid yes      slave{           pcm "hw:0,0"           period_time 0           period_size 2048           buffer_size 24576           format S16_LE           rate 44100      } } pcm.!dsnoop_48000{      type dsnoop      ipc_key 5778293      ipc_key_add_uid yes      slave{           pcm "hw:1,0"           period_time 0           period_size 2048           buffer_size 24576           format S16_LE           rate 48000      } } pcm.asymed{      type asym      playback.pcm "dmix_48000"      capture.pcm "dsnoop_44100" } pcm.dsp0{      type plug      slave.pcm "asymed" } pcm.!default{      type plug      route_policy "average"      slave.pcm "asymed" } ctl.mixer0{      type hw      card 0 } This will configure alsa to use sound card hw:1,0. Please, pay attention to use the proper audio card name for your device. In order to see available sound cards on board: root@imx53qsb:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: imx3stack [imx-3stack], device 0: SGTL5000 SGTL5000-0 []   Subdevices: 1/1   Subdevice #0: subdevice #0 card 1: imx3stackspdif [imx-3stack-spdif], device 0: IMX SPDIF mxc spdif-0 []   Subdevices: 1/1   Subdevice #0: subdevice #0 For detail on how to create asound.conf, please see alsa-lib configuration introduction. 4. Encoded audio For encoded (i.e. AC3, DTS) audio, you can use, for example, ac3dec, an utility provided by alsa-tools with the following command line: ac3dec -D hw:1,0 -C test.ac3 This would work for both HDMI audio and SPDIF audio. Double check your hardware and/or schematic in order to know which one to use.
記事全体を表示
Hello everyone, this document will explain on how to create and run a custom script for UUU (Universal Update Utility) tool Requirements: I.MX 8M Mini EVK Linux Binary Demo Files - i.MX 8MMini EVK (L5.10.35) UUU Serial console emulator (tera term or putty) Text editor (Notepad++, nano, etc) UUU is a pretty flexible tool since it uses the Fastboot protocol through uboot to flash the desired images, this will make possible to create a custom script to add many uboot commands to customize further the boot settings. In this example I will create a custom script which will flash uboot and Linux rootfs and write a Cortex-M binary to the FAT partition of the eMMC. At the same time I’ll create and modify a set of environmental variables, this variables will have a set of uboot commands that will load to the TCM this same binary before the device starts booting into Linux.   Creating the script For this document I'll be using Notepad++ but any text editor may be used instead, since the scripts used by UUU are written in plain text. The very first line of the script must be the version number which will represent the minimum UUU version that UUU can parse this script. For this case that version is 1.2.39 After it, we will add all standard commands to flash uboot and filesystem into the eMMC. Note: This may be also copied from the uuu.auto script inside the Demo files. Please note that the UUU commands format is PROTOCOL: CMD, for this example we will be using mainly SDP and FB protocols which corresponds to the serial download protocol and Fastboot respectively. For a list of all supported UUU protocols and commands please refer to the UUU documentation here: https://github.com/NXPmicro/mfgtools/releases/download/uuu_1.4.165/UUU.pdf Now add the following commands to the script, this will download and write into eMMC FAT partition, which was created when flashing the .wic image, the Cortex-M binary.   FB: ucmd setenv fastboot_buffer ${loadaddr} FB: download -f hello_world_test.bin FB[-t 20000]: ucmd fatwrite mmc ${emmc_dev}:1 ${fastboot_buffer} hello_world_test.bin ${fastboot_bytes}   #fatwrite write file into a dos filesystem "<interface> <dev[:part]> <addr> <filename> [<bytes> [<offset>]] - write file 'filename' from the address 'addr' in RAM  to 'dev' on 'interface' Note: The Cortex-M binary was named as hello_world_test.bin, but any example name may be used. At this point, in the script we will be using only uboot commands as seen above, in this case was fatwrite. The script will look as following: If the script is run now uboot (imx-boot-imx8mmevk-sd.bin-flash_evk), rootfs (imx-image-multimedia-imx8mmevk.wic) will be flashed and the Cortex-M binary (hello_world_test.bin) written to the FAT partition of the eMMC. To add environmental variables to modify uboot boot settings, i.e. overwrite the dtb variable so the EVK will select the RPMSG dtb, this in case the Cortex-M example needs to be run at the same time as Cortex-A. FB: ucmd setenv fdtfile imx8mm-evk-rpmsg.dtb Next add to the UUU script the set of uboot commands in form of environmental variables that will load to the TCM the Cortex-M binary   FB: ucmd setenv loadm4image "fatload mmc ${emmc_dev}:1 0x48000000 hello_world_test.bin; cp.b 0x48000000 0x7e0000 0x20000" FB: ucmd setenv m4boot "run loadm4image; bootaux 0x48000000" Note: This can be changed to load it to different targets not only TCM, for example DRAM. Now for the set of environmental variable to run when uboot starts booting into Linux we may add it to the variable mmcboot. Also adding the command to save the environmental variables set so the settings persist after reboot, this by adding the following commands to the script:   FB: ucmd setenv mmcboot "run m4boot; $mmcboot" FB: ucmd saveenv The resulting script will be the following: Now just save the script and name it as you see fit, for this example the name will be custom_script.auto.   Running the script To run a UUU script is pretty simple, just make sure that the files used in the script are in the same folder as the script. Windows > .\uuu.exe  custom_script.auto Linux $ sudo ./uuu custom_script.auto   Wait till it finish, turn the board off, set it to boot from eMMC and turn it on, the EVK will boot into Linux automatically and will launch the Cortex-M core automatically. We may also, double check that the environmental variables were written correctly by stopping at uboot and using the printenv command For this test I have used the Prebuilt image which includes sample Cortex-M4 examples for the EVK   further flexibility UUU scripts can be customized even more, for example using macros, so the script can take input arguments so it may be possible to select the uboot, rootfs, Cortex-M binary and dtb to be used when booting, and to be used for other i.MX chips as well. The resulting script will be as following: Note: Here is assumed that the dtb file is already at the FAT partition, if not same procedure may be added as the Cortex-M binary. To run a script which expect to have input arguments is as follow: Windows > .\uuu.exe -b uuu_cortexM_loader.auto imx-boot-imx8mmevk-sd.bin-flash_evk imx-image-multimedia-imx8mmevk.wic hello_world_test.bin imx8mm-evk-rpmsg.dtb Linux $ sudo ./uuu -b uuu_cortexM_loader.auto imx-boot-imx8mmevk-sd.bin-flash_evk imx-image-multimedia-imx8mmevk.wic hello_world_test.bin imx8mm-evk-rpmsg.dtb Please find both UUU scripts attached and feel free to use them. Hope this helps everyone to better understand how this tool works and the capabilities it have.
記事全体を表示
1. HW Environment:     IMX8mm-evk board.     ITE6122 mipi dsi to lvds bridge board.     B101UAN02.1 1920x1200 LVDS panel   2. SW Environment:     IMX YOCTO 4.14.98-2.0.0ga release.   3. Patch operation:     a. git clone https://source.codeaurora.org/external/imx/linux-imx.git     b. git checkout -b  imx_4.14.98_2.0.0_ga remotes/origin/imx_4.14.98_2.0.0_ga     c. patch -p1 < ../ite6122_imx8mm_4.14.98ga_18c3fd8837fc3c6_0512.patch   4. Tested on imx8mm-evk board:   5. Attached doc list:      i.MX8MM(MN)_IT6122FN_ user guide_V0.20.pdf ------  ite6122 bridge board HW guide      i.MX8MM(MN)_IT6122FN_V11_20200513.pdf  ------  ite6122 bridge board SCH      ite6122_imx8mm_4.14.98ga_18c3fd8837fc3c6_0512.patch  ------  Linux kernel driver patch      B101UAN02.1_Ver1.0.pdf -------  panel spec              2020/10/30: 6122-hw-version-2010-10-30.zip ------ updated new HW design.        
記事全体を表示
This article introduces the overall functionality of i.MX8X security. Simulate the process of i.MX8X signature through OpenSSL provides readers with a deeper understanding of this process.   Because lots of limitation for attachments. Have to do following.  1. download                       T4549-i.MX8X security overview and AHAB deep dive.zip.001.zip                      T4549-i.MX8X security overview and AHAB deep dive.zip.002.zip                      T4549-i.MX8X security overview and AHAB deep dive.zip.003.zip 2. decompress                T4549-i.MX8X security overview and AHAB deep dive.zip.001.zip                T4549-i.MX8X security overview and AHAB deep dive.zip.002.zip                T4549-i.MX8X security overview and AHAB deep dive.zip.003.zip 3. Put together and decompress         T4549-i.MX8X security overview and AHAB deep dive.zip.001    T4549-i.MX8X security overview and AHAB deep dive.zip.002    T4549-i.MX8X security overview and AHAB deep dive.zip.003  
記事全体を表示