i.MX Processors Knowledge Base

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

i.MX Processors Knowledge Base

Discussions

Sort by:
Hello all. This document shows how to play the puzzle game “2048” on the RIoTboard running Ubuntu. The RIoTboard is an open source platform featuring the powerful i.MX 6Solo, a multimedia application processor with ARM Cortex-A9 core at 1 GHz.For complete information regarding RIoTboard characteristics and its user manual, you could refer to the following links: RIoTboard wepage: http://riotboard.org/ User Manual: http://www.element14.com/community/servlet/JiveServlet/previewBody/65502-102-2-288206/RIOT_Board_User_Manual_v1.1.pdf Flashing the Ubuntu image to RioTboard. First, we need to get the Ubuntu image and Mfg Tool from the following page: http://www.element14.com/community/docs/DOC-68442/l/riotboard-bsp-images-and-tools-download--android-and-linux Once getting the software, it is required to configure the Boot Configuration Select switches (SW1) for Serial Downloader Mode as shown below: After completing the download of the software, it is requiered to configure the switches for booting from eMMC, as shown below: For additional details regarding Boot modes, you could refer to chapter 4 of the RioTboard User Manual. How to connect EVBUSB2SER to RIoT board for debug terminal. By default, the Debug serial port of the RioTboard is routed to the J18 header (labeled as “Debug”), so, if you have a EVBUSB2SER board, you could use it to access to this serial port by USB. In order to avoid damages between boards, please ensure of the following (on the EVBUSB2SER board): Switch SW1 is in the 3.3V position. Jumper J3 (which enables the level-shifter IC) is removed, as it won’t be requiered. Finally, the connections between EVBUSB2SER and RioTboard should be as follows: Pin Number on EVBUSB2SER header P1 Pin Number on RIoTboard header J18 7 (RXD) <-----> 1 (UART2_TXD) 8 (TXD) <-----> 2 (UART2_RXD) 9 (GND) <-----> 3 (GND) The following image shows both board connected as mentioned: How to change the HDMI display resolution using bootargs. With the serial console connected, you could see the boot log, and stop the boot process for enter to U-Boot for changing the HDMI display resolution (enviroment variable “bootargs”). If you want to know the default vales, you could call the following command:    printenv bootargs So, for changing the resolution to 1920x1080 and then booting, you should do the following: setenv bootargs console=ttymxc1,115200 nosmp video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off saveenv boot Getting the source code of 2048 game and compiling it. On the following webpage you could find the source code of a working 2048 game on a single C file: https://github.com/mevdschee/2048.c On the same page are included the instructions for downloading and compiling it, which are the shown below (using either Serial Debug console or a Terminal window). The Ubuntu image should already include the gcc compiler: wget https://raw.githubusercontent.com/mevdschee/2048.c/master/2048.c gcc -o 2048 2048.c If you want to visualize the source code you could try: cat 2048.c Play! Either using Serial Debug console or a Terminal window (or both) you could now launch the 2048 game my simply launching the compiled executable:    ./2048 Below you can find screen captures of the game running on both scenarios: Hope this will be useful and funny for you. Best regards! /Carlos
View full article
    On latest iMX8QXP MEK board, the hardware connected the SCU_GPIO0_00 and SCU_GPIO0_01 pins for SCU debug UART, and customer can enable "#define ALT_DEBUG_SCU_UART" from "imx-scfw-porting-kit-1.1/src/scfw_export_mx8qx_b0/platform/board/mx8qx_mek/board.c" to open the SCFW debug UART for early board bring up.     And if customer enabled "#define ALT_DEBUG_UART" from board.c, then SCFW will use ADC_IN2 and ADC_IN3 pins for debug UART.     In this document, it is another choice, SCFW can also use UART0_RX and UART0_TX pins as SCU debug UART for early board bring up. It is based on released "imx-scfw-porting-kit-1.1.tar.gz".     That means on early MEK boards and customer boards which haven't reserved debug UART for SCU, they can also check the SCFW boot log from UART0 port. "scfw-porting-kit-1.1-sc_uart-on-uart0.patch" is the reference patch for such modification. Enable "#define ALT_DEBUG_SCU_UART_ON_UART0" to make it work. Note: since UART0 pins had been used in SCFW, they can't be used in UBoot and linux kernel at the same time, so when debuging UBoot and Linux kernel, you need disable "ALT_DEBUG_SCU_UART_ON_UART0" in SCFW, or you can use other UART port and pins.
View full article
This document is a simple guide on one of the ways in which 3D models can be loaded and displayed using OpenGL.   Requirements - Blender (open source) or a similar program that allows to export 3D models in the .obj format. We’ll be using Blender to export the .obj file with the essential information to draw the 3D model, without information on textures, for example. https://www.blender.org/   - i.MX6 Linux BSP image with X11 support – For this document we’ll use the L3.10.31 BSP, which is compiled using Yocto 1.6.You may use a newer BSP. We’ll use the fsl-image-gui. You may use a Qt5 image with X11 from newer BSPs. - GCC Toolchain -You may either cross compile on a Host or compile on the same board by providing the necessary libraries and toolchain. On the L3.10.31 you need to manually add GCC to your baked image. In newer releases this may not necessary. For adding the GCC package to a Yocto image and compiling within the board itself please add the following line to the conf/local.conf file inside your build directory. IMAGE_INSTALL_append += " gcc libgcc" If you wish to cross compile from your host and then run on your board you first will need to extract the toolchain from the BSP, which can be done by following the instructions of the next document: https://community.nxp.com/docs/DOC-95122  - FreeGLUT – FreeGLUT is an open source alternative to the OpenGL Utility Toolkit (GLUT), a window system independent toolkit for writing OpenGL programs. It implements a simple windowing application programming interface (API) for OpenGL. This is not necessary for drawing the model on the window but foes allow for functions such as rotating it. You may install it on your host with the following command: $ sudo apt-get install freeglut3-dev For additional information and downloads of FreeGLUT please refer to the projects website: http://freeglut.sourceforge.net/   - i.MX6D/Q/DL/S/SX GPU Demo Framework SDK – We’ll use the GPU Test examples which are available at the following link. Source code for this document implementation is attached but for more examples of OpenGL ES please refer to this SDK. (Please note that you may need to login in order to download this file) https://www.nxp.com/webapp/Download?colCode=FSL_GPU_SDK_2.3&appType=license&location=null&fpsp=1&WT_TYPE=Software%20Development%20Kits&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&fileExt=.zip&Parent_nodeId=1337637154535695831062&Parent_pageType=product   - i.MX6Q Board – For this example we will be using the i.MX6Q SABRE Board, but you may run OpenGL ES on any i.MX6Q board provided that you provide the necessary packages to support OpenGL ES.   Brief introduction to OpenGL ES? OpenGL is a software interface to hardware accelerated graphics. The API of this interface consists of about 150 distinct commands that allow you to specify objects and perform operations on them in order to produce interactive three-dimensional applications. OpenGL ES is the OpenGL implementation for Embedded Systems. Somei.MX6 Processors like the i.MX6Q possess a Vivante GPU module that runs on OpenGL ES. When using OpenGL or OpenGL ES all 3D objects are descripted as a series of triangles. This is important to mention as it will make the instructions we will need for describing our model make more sense.   Step 1 - Exporting a model as .obj You may import a 3D model from other sources or make your own simple 3D model in blender. For this example we’ll make a simple 3D NXP logo and export it. Once you have your model ready, select the object in objet mode with a right click. Once selected select File > Export > Wavefront (.obj) You may now select where and with what name to export the object file. On the left panel you will have the export options. It’s important to leave all options unchecked except for: Write Normals Include UVs Triangulate Faces (You may change the scale of your model and it won’t negatively affect the process)     The .obj model may be opened with a text editor and we’ll see that it basically describes the object as a series of parameters that may include vertex data, free-form curve/surface attributes, elements, free-form curve/surface body statements, connectivity between free-form surfaces, grouping and display/render attribute information. For our example we’ll be using a simple file that just contains: - List of geometric vertices, with (x,y,z) coordinates v 0.292475 0.017345 -0.152653 - List of vertex normals in (x,y,z) form vn 0.0000 1.0000 -0.0000 - Polygonal face element f 3//1 113//1 4//1   Step 2- Converting .obj to OpenGL compatible information We’ll be using the following program that allows to convert from .obj format to a format compatible with OpenGL as the conversion from one format to the other is not part of the scope of this document. https://fr.jeffprod.com/obj-to-opengl.php This program does more than just changing the format on the file and do perform some operations to translate the parameters of the .obj file to the following OpenGL ES information: static GLfloat v_triangles[] static GLfloat vt_triangles[] static GLfloat vn_triangles[] We’ll be using these variables and also the number of triangles which for this example is 1440. This can be found at the end of the file on the following line which effectively draws the complete triangle array: glDrawArrays(GL_TRIANGLES, 0, 1440);   Step 3 – Loading the model arrays to the .C program. You will need to copy the three GLfloat arrays to your OpenGL ES .C code. (You may alternatively use an include to have it more neatly organized but this is outside the scope of this document) In our example we’ll copy them inside void render (). Inside this function we’ll find the Draw Array instruction in which we must specify the number of triangles in our array. You may just replace your model information AND also change the number of triangles, otherwise you will receive an error when running the program.   glDrawArrays(GL_TRIANGLES,0,1440); We are using a simple rotation using glRotate and incrementing the value of rotation with each flush of the screen.     glRotatef(rlogo, 2.0f, 1.0f, 1.0f); The variable rlogo gets increased each time the screen is drawn. Depending on your model you may need to change the view in order to be able to see your model. This example uses a very small model so we have a viewpoint just 1.25 units away from the screen (Z axis). Depending on your model you may need to be further away in order to see the model on the screen. glTranslatef(0.0f, 0.0f, -1.25f);    Step 4- Compiling the OpenGL example For this simple example we will be using the examples from the GPU  as base an add the information of the model we have just exported. We’ll use the two attached files for this: Makefile.x11 – A make file with the dependencies and attributes necessary to compile our C file. NXPlogo.c – C file with the information of the model and instructions on to draw it on the screen. You can compile using the following commands to first clean in case you built before and then compiling the code. make –f Makefile.x11 clean make Makefile.x11 Once the program has compiled you can run it from the command prompt by using: export DISPLAY=:0.0 ./NXPlogo The result will be as follows, where the 3D model is rotating,     Additional Resources 2D and 3D Graphics in NXP Devices http://www.nxp.com/files/training/doc/dwf/DWF13_AMF_CON_T1025.pdf   i.MX6D/Q/DL/S/SX GPU Demo Framework SDK – Which provides the source code for the demo in which this example was built upon and also contains good documentation for those interested in OpenGL ES. https://www.nxp.com/webapp/Download?colCode=FSL_GPU_SDK_2.3&appType=license&location=null&fpsp=1&WT_TYPE=Software%20Development%20Kits&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=zip&WT_ASSET=Downloads&fileExt=.zip&Parent_nodeId=1337637154535695831062&Parent_pageType=product    OpenGL Redbook – Which is the most comprehensive book documenting and explaining the OpenGL API. http://www.opengl-redbook.com/
View full article
Hardware:​  Soc: NXP i.MX 93 11x11 EVK FPGA:​ Lattice ECP5 Evaluation Board   Deploy the driver of FlexSPI and Test​​ Apply below patch into Linux kernel and compile. (6.1.55-2.2.0 is tested)​ git apply 0001-Added-flexspi-fpga-module-support-of-i.MX93.patch​ make imx_v8_defconfig​ make –j8​ Copy the generated imx93-11x11-evk-flexspi-m2-fpga.dtb to the boot partition​ Set the dtb in uboot​ setenv fdtfile imx93-11x11-evk-flexspi-m2-fpga.dtb ​ saveenv​ boot​ Copy the generated imx93_flexspi_fpga.ko and the test app source file flexspi_fpga_latency_test.c to home directory Run blow command to do the test​ gcc flexspi_fpga_latency_test.c​ ./a.out 128​ ​ About driver and test app​ ​The driver can be installed in test app automatically. Insmod command is called in test app as below.​ insmod imx93_flexspi_fpga.ko mux=1 div=30​ The parameter mux can be set to 0,1,2,3. Means 24MHz, 1000MHz, 800MHz, 625MHz root clock. And div is the divider. In default, 1000/30 = 33MHz is applied. More details of hardware connection: Since the adapter board is not on NXP website and it is just for test, there are two options. Use fly-wire to connect flexspi and lattice fpga instead of the adapter card. Use M.2 adapter card but need be produced by customer themselves.  If M.2 adapter is not used, fly-wire can be applied to connect i.MX93 to FPGA. The column of Pads is a pad list that can bring out signal lines from the bottom layer of i.MX93 EVK. i.MX 93 Pads of imx93 FPGA ECP5 SD3_CLK TP912 B10 SD3_CMD TP913 A9 SD3_DATA0 TP914 D8 SD3_DATA1 TP915 E8 SD3_DATA2 TP916 C7 SD3_DATA3 TP917 C6 GND   GND J1003-2 1V8   VCCIO0 Remove JP10 Jumper   It is also possible that the customer would choose M.2 adapter card solution. The adapter card is simple and cheap. It can be redesigned easily with attached schematic as reference. Make sure the board thickness is 0.8mm. And recommend to apply GND copper to improve signal quality. The schematic is attached. To get the information about the demo from Lattice perspective, please check the link below. Lattice QSPI to NXP MPU Reference Design | Lattice Reference Design  
View full article
In FSL i.MX53 reference design, it is configured as: static struct mxc_audio_platform_data sgtl5000_data = { .ssi_num = 1, .src_port = 2, .ext_port = 5, .hp_irq = gpio_to_irq(HEADPHONE_DEC_B), .hp_status = headphone_det_status, .init = mxc_sgtl5000_init, .ext_ram_rx = 1, }; by default. If change the configuration to be : static struct mxc_audio_platform_data sgtl5000_data = { .ssi_num = 0, .src_port = 1, .ext_port = 5, .hp_irq = gpio_to_irq(HEADPHONE_DEC_B), .hp_status = headphone_det_status, .init = mxc_sgtl5000_init, .ext_ram_rx = 1, }; There will prompt "imx_ssi_irq mxc_ssi SISR 8003a3 SIER 180100 fifo_errs=XXXX"  constantly, and audio is greatly distorted. The root cause of this issue is that SSI1/3 use SDMA, and also use IPMUX, but there is not the clock dependency between SDMA and IPMUX, so sometimes IPMUX clock is closed automatically. The attached patch may fix this issue. NOTE: If use SSI2 .ssi_num = 1,             .src_port = 2, If use SSI1 .ssi_num = 0,             .src_port = 1,
View full article
Platform: i.MX8QXP/8QM OS: Linux Supported Camera Modules: Max9286 + Max9271 + OV10635, Default BSP Max9286 + Max96705 + AR0144, patch Max9286 + Max96705 + OV9284, patch Max9286 + Max96705 + AP0101 + AR0132, patch NVP6324 + NVP2431 + IMX225, patch TP2855 + TP3812 + IMX307, patch ISL7998x + NTSC/PAL Sensor, patch adv7180 + NTSC/PAL Sensor, patch Detailed description in the attachment.
View full article
Following docs(English or Chinese version) are also can be referred as a hand on guide. Freescale i.MX6 DRAM Port Application Guide-DDR3  飞思卡尔i.MX6平台DRAM接口高阶应用指导-DDR3篇    Please find i.Mx6DQSDL LPDDR2 Script Aid through below link. i.Mx6DQSDL LPDDR2 Script Aid  Please find i.Mx6DQSDL DDR3 Script Aid through below link. i.MX6DQSDL DDR3 Script Aid  Please find i.MX6SX DDR3 Script Aid through below link. i.MX6SX DDR3 Script Aid  Please find i.MX6SL LPDDR2 Script Aid through below link. i.MX6SL LPDDR2 Script Aid  Please find i.MX6UL DDR3 Script Aid through below link.. https://community.nxp.com/docs/DOC-329899  Please find i.MX6UL LPDDR2 Script Aid through below link. i.MX6UL_LPDDR2_Script_Aid  Please find i.MX6ULL DDR3 Script Aid through below link. i.MX6ULL_DDR3_Script_Aid 
View full article
LTIB Creating Uimage Uboot Configuration file for fw_(printenv/saveenv) utility Add new i.MX5x board on LTIB LTIB Creating Uimage Uboot U-boot expects uImage format for the kernel image. In order to LTIB generate a uImage file: $ export SYSCFG_KTARG=uImage $ ./ltib -p kernel Setup in U-Boot the kernel bootargs: u-boot> setenv bootargs noinitrd console=ttymxc0,115200 init=/linuxrc root=/dev/nfs nfsroot=10.29.244.27:/tftpboot/rootfs ip=dhcp Change 10.29.244.27 to your host IP. The procedure above is needed when default bootloader used by ltib was redboot. In some ltib releases (before 2010) default bootloader is u-boot. In this case, ltib will create uImage by default Configuration file for fw_(printenv/saveenv) utility # Configuration file for fw_(printenv/saveenv) utility. # Up to two entries are valid, in this case the redundant # environment sector is assumed present. # Notice, that the "Number of sectors" is ignored on NOR.               # MTD device name Device offset Env. size Flash sector size Number of sectors #/dev/mtd1 0x0000 0x4000 0x4000 #/dev/mtd2 0x0000 0x4000 0x4000 # NAND example /dev/mtd0 0x80000 0x40000 0x20000 2 Add new i.MX5x board on LTIB After porting u-boot to your i.MX5x board you might want add it on LTIB menu, "Choose your board for u-boot" section. For this, edit ltib/config/platform/imx/main.lkc to add your board: Enter board on menu: comment "Choose your board for u-boot" choice prompt "board" default BOARD_MX51_BBG depends on PLATFORM = "imx51" help This menu will let you choose the board you use. ... + config BOARD_MX53_MYBOARD + bool "mx53_myboard" ... endchoice Add the "mx53_myboard_config" that matches your board configuration on the u-boot Makefile to PKG_U_BOOT_CONFIG_TYPE: config PKG_U_BOOT_CONFIG_TYPE   string   ... + default "mx53_myboard_config" if ( PLATFORM = "imx51" && BOARD_MX53_MYBOARD && !PKG_KERNEL_UPDATER )   ...
View full article
Dear IMX community, We usingiMX6 Quad processor and run Android 13.4, After below log file and android handup, We also run DDR stress test without problems found, Can anyone give a suggestions on this issue Best Regards, Jim ================================ U-Boot 2009.08-00008-g5f5b708-dirty (Mar 18 2013 - 17:23:58) CPU: Freescale i.MX6 family TO1.2 at 792 MHz Temperature:   52 C, calibration data 0x5b051d69 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg clock     : 66000000Hz ipg per clock : 66000000Hz uart clock    : 80000000Hz cspi clock    : 60000000Hz ahb clock     : 132000000Hz axi clock   : 264000000Hz emi_slow clock: 29333333Hz ddr clock     : 528000000Hz usdhc1 clock  : 198000000Hz usdhc2 clock  : 198000000Hz usdhc3 clock  : 198000000Hz usdhc4 clock  : 198000000Hz nfc clock     : 24000000Hz Board: MX6Q-SABRELITE:[ POR] Boot Device: I2C I2C:   ready DRAM:   1 GB MMC:   FSL_USDHC: 0,FSL_USDHC: 1 JEDEC ID: 0x20:0x20:0x16 *** Warning - bad CRC, using default environment In:    serial Out:   serial Err:   serial Net:   got MAC address from IIM: 00:00:00:00:00:00 FEC0 [PRIME] Hit any key to stop autoboot:  0 mmc0(part 0) is current device reading /6q_bootscript 353 bytes read ## Executing script at 10008000 reading uimage 4016476 bytes read reading uramdisk.img 212592 bytes read ## Booting kernel from Legacy Image at 10800000 ...    Image Name:   Linux-3.0.35    Image Type:   ARM Linux Kernel Image (uncompressed)    Data Size:    4016412 Bytes =  3.8 MB    Load Address: 10008000    Entry Point:  10008000    Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 12800000 ...    Image Name:   Android Root Filesystem    Image Type:   ARM Linux RAMDisk Image (uncompressed)    Data Size:    212528 Bytes = 207.5 kB    Load Address: 12800000    Entry Point:  12800000    Verifying Checksum ... OK    Loading Kernel Image ... OK OK Starting kernel ... Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version 3.0.35 (leo@pluto) (gcc version 4.6.2 20120613 (release) [ARM/embedded-4_6-bra                                 nch revision 188521] (GNU Tools for ARM Embedded Processors) ) #10 SMP PREEMPT Tue Mar 19 11                                 :34:02 CST 2013 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Freescale i.MX 6Quad Sabre-Lite Board Memory policy: ECC disabled, Data cache writealloc CPU identified as i.MX6Q, silicon rev 1.2 PERCPU: Embedded 7 pages/cpu @c1119000 s5760 r8192 d14720 u32768 Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 210944 Kernel command line: arm_freq=1000 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24 video=mxcfb1                                 :off console=ttymxc0,115200 init=/init rw no_console_suspend androidboot.console=ttymxc0 vma                                 lloc=400M PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 576MB 256MB = 832MB total Memory: 833728k/833728k available, 214848k reserved, 442368K highmem Virtual kernel memory layout:     vector  : 0xffff0000 - 0xffff1000   (   4 kB)     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)     DMA     : 0xfbe00000 - 0xffe00000   (  64 MB)     vmalloc : 0xd9800000 - 0xf2000000   ( 392 MB)     lowmem  : 0xc0000000 - 0xd9000000   ( 400 MB)     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)     modules : 0xbf000000 - 0xbfe00000   (  14 MB)       .init : 0xc0008000 - 0xc0041000   ( 228 kB)       .text : 0xc0041000 - 0xc0770fb0   (7360 kB)       .data : 0xc0772000 - 0xc07e0da0   ( 444 kB)        .bss : 0xc07e0dc4 - 0xc090f7d0   (1211 kB) Preemptible hierarchical RCU implementation. NR_IRQS:496 MXC GPIO hardware sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms MXC_Early serial console at MMIO 0x2020000 (options '115200') bootconsole [ttymxc0] enabled Calibrating delay loop... 1581.05 BogoMIPS (lpj=7905280) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 Initializing cgroup subsys cpuacct CPU: Testing write buffer coherency: ok hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available CPU1: Booted secondary processor CPU2: Booted secondary processor CPU3: Booted secondary processor Brought up 4 CPUs SMP: Total of 4 processors activated (6324.22 BogoMIPS). print_constraints: dummy: NET: Registered protocol family 16 print_constraints: vddpu: 725 <--> 1300 mV at 1150 mV fast normal print_constraints: vddcore: 725 <--> 1300 mV at 1150 mV fast normal print_constraints: vddsoc: 725 <--> 1300 mV at 1200 mV fast normal print_constraints: vdd2p5: 2000 <--> 2775 mV at 2400 mV fast normal print_constraints: vdd1p1: 800 <--> 1400 mV at 1100 mV fast normal print_constraints: vdd3p0: 2800 <--> 3150 mV at 3000 mV fast normal ------------ Board type Sabre Lite Flexcan NXP tja1040 hw-breakpoint: found 6 breakpoint and 1 watchpoint registers. hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step. hw-breakpoint: maximum watchpoint size is 4 bytes. L310 cache controller enabled l2x0: 16 ways, CACHE_ID 0x410000c7, AUX_CTRL 0x02070000, Cache size: 1048576 B IMX usb wakeup probe bio: create slab <bio-0> at 0 print_constraints: VDDA: 2500 mV print_constraints: VDDIO: 3300 mV machine_constraints_voltage: VDDD: unsupportable voltage constraints reg-fixed-voltage reg-fixed-voltage.2: Failed to register regulator: -22 reg-fixed-voltage: probe of reg-fixed-voltage.2 failed with error -22 print_constraints: vmmc: 3300 mV SCSI subsystem initialized spi_imx imx6q-ecspi.0: probed usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb Freescale USB OTG Driver loaded, $Revision: 1.55 $ add wake up source irq 75 i2c i2c-0: Invalid 7-bit I2C address 0x00 i2c i2c-0: Can't create device at 0x00 imx-ipuv3 imx-ipuv3.0: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7) imx-ipuv3 imx-ipuv3.1: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7) mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 driver probed mxc_mipi_csi2 mxc_mipi_csi2: i.MX MIPI CSI2 dphy version is 0x3130302a MIPI CSI2 driver module loaded Advanced Linux Sound Architecture Driver Version 1.0.24. Bluetooth: Core ver 2.16 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized Bluetooth: SCO socket layer initialized i2c-core: driver [max17135] using legacy suspend method i2c-core: driver [max17135] using legacy resume method Switching to clocksource mxc_timer1 NET: Registered protocol family 2 IP route cache hash table entries: 16384 (order: 4, 65536 bytes) TCP established hash table entries: 65536 (order: 7, 524288 bytes) TCP bind hash table entries: 65536 (order: 7, 786432 bytes) TCP: Hash tables configured (established 65536 bind 65536) TCP reno registered UDP hash table entries: 256 (order: 1, 8192 bytes) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Unpacking initramfs... Freeing initrd memory: 204K Static Power Management for Freescale i.MX6 wait mode is enabled for i.MX6 cpaddr = d9880000 suspend_iram_base=d98fc000 PM driver module loaded IMX usb wakeup probe i.MXC CPU frequency driver highmem bounce pool size: 64 pages ashmem: initialized JFFS2 version 2.2. (NAND) ? 2001-2006 Red Hat, Inc. msgmni has been set to 764 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) MIPI DSI driver module loaded mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver hdmi mxc_hdmi mxc_hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1 fbcvt: 1920x1080@60: CVT Name - 2.073M9 imx-ipuv3 imx-ipuv3.0: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7) mxc_sdc_fb mxc_sdc_fb.1: Can't get fb option for mxcfb1! mxc_sdc_fb mxc_sdc_fb.2: register mxc display driver ldb _regulator_get: get() with no identifier mxc_sdc_fb mxc_sdc_fb.3: register mxc display driver ldb mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 0(VIC 16): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 1(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 2(VIC 1): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 3(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 4(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 5(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 6(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 7(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 8(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 9(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 10(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 11(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 12(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 13(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 14(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 15(VIC 0): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 16(VIC 16): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 18(VIC 1): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 19(VIC 2): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 20(VIC 3): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 21(VIC 4): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 22(VIC 31): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 23(VIC 19): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 24(VIC 17): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 25(VIC 18): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 29(VIC 16): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 30(VIC 3): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 31(VIC 4): mxc_hdmi mxc_hdmi: mxc_hdmi_edid_rebuild_modelist: Added mode 32(VIC 18): fbcvt: 1920x1080@60: CVT Name - 2.073M9 imx-sdma imx-sdma: loaded firmware 1.1 imx-sdma imx-sdma: initialized Serial: IMX driver imx-uart.0: ttymxc0 at MMIO 0x2020000 (irq = 58) is a IMX console [ttymxc0] enabled, bootconsole disabled console [ttymxc0] enabled, bootconsole disabled imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX loop: module loaded m25p80 spi0.0: m25p32 (4096 Kbytes) Creating 3 MTD partitions on "m25p80": 0x000000000000-0x0000000c0000 : "bootloader" 0x0000000c0000-0x0000000c2000 : "ubparams" mtd: partition "ubparams" doesn't end on an erase block -- force read-only 0x0000000c2000-0x000000400000 : "unused" mtd: partition "unused" doesn't start on an erase block boundary -- force read-only vcan: Virtual CAN interface driver CAN device driver interface flexcan netdevice driver flexcan imx6q-flexcan.0: device registered (reg_base=d9970000, irq=142) FEC Ethernet Driver fec_enet_mii_bus: probed PPP generic driver version 2.4.2 PPP Deflate Compression module registered PPP BSD Compression module registered PPP MPPE Compression module registered NET: Registered protocol family 24 PPTP driver version 0.8.5 tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <[email protected]> ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1 fsl-ehci fsl-ehci.0: irq 75, io base 0x02184000 fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected add wake up source irq 72 fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2 fsl-ehci fsl-ehci.1: irq 72, io base 0x02184200 fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00 hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected usbcore: registered new interface driver cdc_acm cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. usbcore: registered new interface driver usbserial usbserial: USB Serial Driver core USB Serial support registered for GSM modem (1-port) usbcore: registered new interface driver option option: v0.7.2:USB Driver for GSM modems USB Serial support registered for Qualcomm USB modem usbcore: registered new interface driver qcserial ARC USBOTG Device Controller driver (1 August 2005) android_usb gadget: Mass Storage Function, version: 2009/09/11 android_usb gadget: Number of LUNs=1 lun0: LUN: removable file: (no medium) Gadget Android: controller 'fsl-usb2-udc' not recognized android_usb gadget: android_usb ready Suspend udc for OTG auto detect fsl-usb2-udc: bind to driver android_usb mousedev: PS/2 mouse device common for all mice input: gpio-keys as /devices/platform/gpio-keys/input/input0 egalax_ts 2-0004: egalax_ts: failed to read firmware version egalax_ts: probe of 2-0004 failed with error -5 input: ak4183ts as /devices/platform/imx-i2c.1/i2c-1/1-0048/input/input1 i2c-core: driver [isl29023] using legacy suspend method i2c-core: driver [isl29023] using legacy resume method using rtc device, snvs_rtc, for alarms snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc0 i2c /dev entries driver Linux video capture interface: v2.00 ov5640_read_reg:write reg error:reg=300a ov5640_probe:cannot find camera mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video18 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video19 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video20 usbcore: registered new interface driver uvcvideo USB Video Class driver (v1.1.0) i2c-core: driver [mag3110] using legacy suspend method i2c-core: driver [mag3110] using legacy resume method usb 2-1: new high speed USB device number 2 using fsl-ehci imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1) device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: [email protected] Bluetooth: Virtual HCI driver ver 1.3 Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCIATH3K protocol initialized Bluetooth: Generic Bluetooth USB driver ver 0.6 usbcore: registered new interface driver btusb sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA sdhci sdhci-esdhc-imx.3: no write-protect pin available! mmc1: SDHCI controller on platform [sdhci-esdhc-imx.3] using DMA mxc_vdoa mxc_vdoa: i.MX Video Data Order Adapter(VDOA) driver probed VPU initialized mxc_asrc registered revserved_memory_account:viv_gpu registerd Thermal calibration data is 0x5b051d69 anatop_thermal_counting_ratio: raw25c=1456 raw_hot=1309 hot_temp=105 Anatop Thermal registered as thermal_zone0 anatop_thermal_probe: default cooling device is cpufreq! usbcore: registered new interface driver usbhid usbhid: USB HID core driver logger: created 256K log 'log_main' logger: created 256K log 'log_events' hub 2-1:1.0: USB hub found logger: created 256K log 'log_radio' logger: created 256K log 'log_system' usbcore: registered new interface driver snd-usb-audio mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio Cirrus Logic CS42888 ALSA SoC Codec Driver i2c-core: driver [cs42888] using legacy suspend method i2c-core: driver [cs42888] using legacy resume method hub 2-1:1.0: 4 ports detected mmc0: new high speed MMC card at address 0001 mmcblk0: mmc0:0001 eMMC   3.71 GiB mmcblk0boot0: mmc0:0001 eMMC   partition 1 2.00 MiB mmcblk0boot1: mmc0:0001 eMMC   partition 2 2.00 MiB mmcblk0: p1 p2 p3 < p5 p6 p7 p8 p9 > p4 mmcblk0boot1: unknown partition table mmcblk0boot0: unknown partition table asoc: sgtl5000 <-> imx-ssi.1 mapping ok imx_3stack asoc driver asoc: mxc-hdmi-soc <-> imx-hdmi-soc-dai.0 mapping ok ALSA device list:   #0: sgtl5000-audio   #1: imx-hdmi-soc Netfilter messages via NETLINK v0.30. nf_conntrack version 0.5.0 (13030 buckets, 52120 max) ctnetlink v0.93: registering with nfnetlink. NF_TPROXY: Transparent proxy support initialized, version 4.1.0 NF_TPROXY: Copyright (c) 2006-2007 BalaBit IT Ltd. xt_time: kernel timezone is -0000 IPv4 over IPv4 tunneling driver GRE over IPv4 demultiplexor driver ip_tables: (C) 2000-2006 Netfilter Core Team arp_tables: (C) 2002 David S. Miller TCP cubic registered NET: Registered protocol family 10 ip6_tables: (C) 2000-2006 Netfilter Core Team IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 NET: Registered protocol family 15 can: controller area network core (rev 20090105 abi 😎 NET: Registered protocol family 29 can: raw protocol (rev 20090105) can: broadcast manager protocol (rev 20090105 t) Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM ver 1.11 Bluetooth: BNEP (Ethernet Emulation) ver 1.3 Bluetooth: BNEP filters: protocol multicast Bluetooth: HIDP (Human Interface Emulation) ver 1.2 L2TP core driver, V2.0 PPPoL2TP kernel driver, V2.0 L2TP IP encapsulation support (L2TPv3) L2TP netlink interface L2TP ethernet pseudowire support (L2TPv3) lib80211: common routines for IEEE802.11 drivers VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 Bus freq driver module loaded Bus freq driver Enabled mxc_dvfs_core_probe DVFS driver module loaded regulator_init_complete: VDDIO: incomplete constraints, leaving on regulator_init_complete: VDDA: incomplete constraints, leaving on regulator_init_complete: vddpu: incomplete constraints, leaving on snvs_rtc snvs_rtc.0: setting system clock to 1970-01-02 00:04:27 UTC (86667) Freeing init memory: 228K usb 2-1.4: new low speed USB device number 3 using fsl-ehci init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead. input: HID 04d9:0499 as /devices/platform/fsl-ehci.1/usb2/2-1/2-1.4/2-1.4:1.0/input/input2 generic-usb 0003:04D9:0499.0001: input,hidraw0: USB HID v1.10 Mouse [HID 04d9:0499] on usb-f                                 sl-ehci.1-1.4/input0 EXT4-fs (mmcblk0p5): recovery complete EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: (null) EXT4-fs (mmcblk0p7): recovery complete EXT4-fs (mmcblk0p7): mounted filesystem with ordered data mode. Opts: noauto_da_alloc,errors                                 =panic EXT4-fs (mmcblk0p6): warning: mounting unchecked fs, running e2fsck is recommended EXT4-fs (mmcblk0p6): mounted filesystem without journal. Opts: (null) init: cannot find '/system/bin/gpu_init.sh', disabling 'gpu_init' init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery' android_usb: already disabled adb_open mtp_bind_config adb_bind_config warning: `rild' uses 32-bit capabilities (legacy support in use) root@android:/ # ERROR: v4l2 capture: slave not found! ERROR: v4l2 capture: slave not found! request_suspend_state: wakeup (3->0) at 20324699670 (1970-01-02 00:04:45.205101336 UTC) eth0: Freescale FEC PHY driver [Micrel KSZ9021 Gigabit PHY] (mii_bus:phy_addr=1:07, irq=284) ADDRCONF(NETDEV_UP): eth0: link is not ready acc_open acc_release PHY: 1:07 - Link is Up - 100/Full ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready CPU3: shutdown CPU2: shutdown Unable to handle kernel paging request at virtual address f40c4010 pgd = d3e04000 [f40c4010] *pgd=02011452(bad) Internal error: Oops: 2d [#1] PREEMPT SMP Modules linked in: CPU: 0    Not tainted  (3.0.35 #10) PC is at _clk_arm_get_rate+0xc/0x28 LR is at clk_get_rate+0x40/0x50 pc : [<c005ac7c>]    lr : [<c006650c>]    psr: a0000193 sp : d3e51db0  ip : c004c6b0  fp : d3ceae00 r10: 00100100  r9 : c111a588  r8 : 00200200 r7 : 010da000  r6 : 00000001  r5 : d6f15e8c  r4 : c07e1040 r3 : f40c4000  r2 : d3e51dd8  r1 : 00000000  r0 : c0790430 Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user Control: 10c53c7d  Table: 23e0404a  DAC: 00000015 PC: 0xc005abfc: abfc  1affffdc eaffffee c078f07c c07e1654 c078f0d0 e92d4010 e59f304c e5900028 ac1c  e1500003 0a000007 e59f3040 e1500003 13a04001 0a000003 eb002e24 e1a01004 ac3c  eb076b36 e8bd8010 e3a03901 e34f340c e5934014 eb002e1d e7e24dd4 e2844001 ac5c  e1a01004 eb076b2d e8bd8010 c078f124 c078e260 e3a03901 e34f240c e92d4010 ac7c  e5934010 e5900028 eb002e10 e2041007 e2811001 eb076b21 e8bd8010 e92d4038 ac9c  e1a05001 e5900028 eb002e08 e1a01005 e1a04000 eb076b19 e2501000 03a01001 acbc  0a000001 e3510040 23a01040 e1a00004 eb076b12 e8bd8038 e92d40f8 e1a05001 acdc  e5900028 eb002df9 e1a01005 e1a07000 eb076b0a e2504000 01a06004 03a04001 LR: 0xc006648c: 648c  c07e1684 c0574908 c06a6f80 e59f3010 e3500000 e593000c 1a000000 ea000167 64ac  ea000189 c07e15fc e3500000 012fff1e e3700a01 91d003d0 83a00000 e12fff1e 64cc  e3500000 e92d4008 08bd8008 e3700a01 83a00000 9a000005 e8bd8008 e5900028 64ec  e3500000 0a000006 e3700a01 8a000005 e590303c e3530000 0afffff7 e12fff33 650c  e8bd8008 e8bd8008 e3a00000 e8bd8008 e92d4008 e2503000 01a00003 08bd8008 652c  e3730a01 83a00000 88bd8008 e5933044 e3530000 0a000001 e12fff33 e8bd8008 654c  e1a00003 e8bd8008 e3500000 012fff1e e3700a01 95900028 83a00000 e12fff1e 656c  e3500000 e92d4010 e1a04001 1a000003 ea00000d e5900028 e3500000 0a00000a SP: 0xd3e51d30: 1d30  c111a040 c1119040 00000006 00000003 00000006 c1119040 00000000 393f7476 1d50  00000006 0000040f 0000000d 00000001 010da000 c00469d0 c0790430 00000000 1d70  d3e51dd8 f40c4000 c07e1040 d6f15e8c 00000001 010da000 00200200 c111a588 1d90  00100100 d3ceae00 c004c6b0 d3e51db0 c006650c c005ac7c a0000193 ffffffff 1db0  c07e1040 c006650c c0059e84 c0059e90 c0059e84 c006650c c004c6d8 c004c6ec 1dd0  d3e51dd8 c00a799c d3e51dd8 d3e51dd8 c0783cd0 d3e50000 c003fc18 00000000 1df0  00000000 d3e51e20 d6085a00 c00412c0 ffffffff f2a00100 00000405 00000001 1e10  00000000 d3e50000 d6085a00 c0046a4c 00000000 010da000 00000000 d3e50000 IP: 0xc004c630: c630  e59f3018 e1a0000c e5933004 e12fff33 e28dd014 e8bd8000 c078b1c8 c004c16c c650  c0783a2c e3510003 e1a0c00d e3cc2d7f 93a03000 83a03001 e3510001 03833001 c670  e3c2203f e3530000 e5922014 1a000009 e3520003 ca000007 e2822008 e7d0c002 c690  e20cc0fc e18c1001 e6ef1071 e7c01002 e1a00003 e12fff1e e3e03015 eafffffb c6b0  e3013040 e34c307e e1a01000 e3a00000 e5933000 e5932008 e5831004 e3822001 c6d0  e5832008 e12fff1e e92d4010 e3014040 e34c407e e5940004 eb006777 e1a0300d c6f0  e3c3cd7f e3032cd0 e3ccc03f e34c2078 e594300c e59cc014 e792210c e1a01000 c710  e5840008 e7930002 e8bd4010 ea015288 e59f304c e593000c e3500000 012fff1e FP: 0xd3cead80: ad80  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ada0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 adc0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ade0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ae00  c10d5580 00000001 00000000 00000000 00000000 00000000 c10d5580 00000001 ae20  00000000 00000000 00000000 00000000 c10d5580 00000001 00000000 00000000 ae40  00000000 00000000 c10d5580 00000001 00000000 00000000 00000000 00000000 ae60  c10d5580 00000001 00000000 00000000 00000000 00000000 c10d5580 00000001 R0: 0xc07903b0: 03b0  c06a7998 c078f9ac c07903cc c07903a4 c06a79a4 c06a9e14 c0791738 c07903e0 03d0  c07903b8 c06a79b4 c06a9e14 c079178c c07903f4 c07903cc c06a79c4 c06a9e14 03f0  c07917e0 c0790408 c07903e0 00000000 c06a79d4 c07906d0 c079041c c07903f4 0410  00000000 c06a79e0 c078f568 c07cd698 c0790408 00000000 c06a79ec c078f5bc 0430  5f757063 006b6c63 00000000 00000000 00000000 00000000 00000000 00000000 0450  d40a0228 00000000 c078f4c0 00000000 00000001 00000000 00000000 c005ac70 0470  c005bc28 00000000 00000000 00000000 00000000 61746173 6b6c635f 00000000 0490  00000000 00000000 00000000 00000000 00000000 d4044aa8 00000000 c078f370 R2: 0xd3e51d58: 1d58  0000000d 00000001 010da000 c00469d0 c0790430 00000000 d3e51dd8 f40c4000 1d78  c07e1040 d6f15e8c 00000001 010da000 00200200 c111a588 00100100 d3ceae00 1d98  c004c6b0 d3e51db0 c006650c c005ac7c a0000193 ffffffff c07e1040 c006650c 1db8  c0059e84 c0059e90 c0059e84 c006650c c004c6d8 c004c6ec d3e51dd8 c00a799c 1dd8  d3e51dd8 d3e51dd8 c0783cd0 d3e50000 c003fc18 00000000 00000000 d3e51e20 1df8  d6085a00 c00412c0 ffffffff f2a00100 00000405 00000001 00000000 d3e50000 1e18  d6085a00 c0046a4c 00000000 010da000 00000000 d3e50000 d67c9c60 0000002a 1e38  00000001 00000001 c10d5580 00000000 d6085a00 d3ceae00 00000000 d3e51e68 R3: 0xf40c3f80: 3f80  ******** ******** ******** ******** ******** ******** ******** ******** 3fa0  ******** ******** ******** ******** ******** ******** ******** ******** 3fc0  ******** ******** ******** ******** ******** ******** ******** ******** 3fe0  ******** ******** ******** ******** ******** ******** ******** ******** 4000  ******** ******** ******** ******** ******** ******** ******** ******** 4020  ******** ******** ******** ******** ******** ******** ******** ******** 4040  ******** ******** ******** ******** ******** ******** ******** ******** 4060  ******** ******** ******** ******** ******** ******** ******** ******** R4: 0xc07e0fc0: 0fc0  412fc09a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0fe0  c07a0b20 c07ccc64 00000000 00000000 00000000 c0798518 00000001 00000000 1000  00000001 00000000 00000000 d8fff000 00000000 c0067230 c00542e0 00000000 1020  10004000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1040  d9800600 c0790874 0bcd3d80 c0043028 00000000 00000000 00030000 00000005 1060  00000001 00000001 00000004 00000000 00000000 c078c518 00000000 00000000 1080  00000000 00000000 00000000 d60e8000 d60e9000 d60ea000 d60eb000 d60ec000 10a0  d60ed000 d60ee000 d60ef000 d60f0000 d60f1000 d60f2000 d60f3000 d60f4000 R5: 0xd6f15e0c: 5e0c  00000002 00000001 c0046a4c c0574e78 00000005 f2a01000 00000001 d6f15e8c 5e2c  c111a580 00000000 c111a580 010da000 c111a588 00000001 c0574f04 00000000 5e4c  d6f15e60 c004bbac c00a708c 20000113 ffffffff d6f14000 00000000 c004c6d8 5e6c  00000001 c0574f00 c0783cd0 d6f15f3c c00a71c0 c0041eb0 d6134600 80002001 5e8c  00100100 00200200 c004c6d8 00000000 00000001 00018d00 ffffffff c07ccdcc 5eac  00000000 d6f15f3c 00000001 d6f15f3c c004c850 c004c808 c0098c2c c07ff7fc 5ecc  c07ff7e4 00000000 00000001 ffffffff c0098d80 00000000 001312d0 00000000 5eec  d6f15f3c d63128e0 00000000 c0783ac4 00000004 c0783b00 c0098db4 00000000 R9: 0xc111a508: a508  00008288 00000000 2b85e900 00000006 00000000 00000000 0008f4da 00000000 a528  ffff968e ffffffe5 d6f93800 00000000 00000000 00000000 00000000 00000000 a548  00000000 00000000 00000000 00000000 00000000 00000000 c07740e0 00200200 a568  c00972ac 00000000 00000000 00000000 00000000 00000000 c111a580 c111a580 a588  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 a5a8  00000000 00000000 00000000 00000000 00000000 00000000 00000000 c111a5c0 a5c8  c111a5c8 c111a5c8 00000000 c111a5d4 c111a5d4 00000000 00000000 00000000 a5e8  00000084 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Process WindowManagerPo (pid: 2301, stack limit = 0xd3e502f0) Stack: (0xd3e51db0 to 0xd3e52000) 1da0:                                     c07e1040 c006650c c0059e84 c0059e90 1dc0: c0059e84 c006650c c004c6d8 c004c6ec d3e51dd8 c00a799c d3e51dd8 d3e51dd8 1de0: c0783cd0 d3e50000 c003fc18 00000000 00000000 d3e51e20 d6085a00 c00412c0 1e00: ffffffff f2a00100 00000405 00000001 00000000 d3e50000 d6085a00 c0046a4c 1e20: 00000000 010da000 00000000 d3e50000 d67c9c60 0000002a 00000001 00000001 1e40: c10d5580 00000000 d6085a00 d3ceae00 00000000 d3e51e68 c0103478 c0114ba8 1e60: 60000013 ffffffff c0103478 c0114b38 60000013 c0103478 00000000 00000001 1e80: d3e51f40 00000001 00000001 0000000e d3e50000 d4288e7c ffffffff fffffdee 1ea0: d6085a00 00000000 00000000 d3e51f80 d3e50000 00000000 5c66e6f4 c00fb338 1ec0: 00000000 00000000 d61e0f8c 00000000 00000000 00000001 ffffffff d6085a00 1ee0: 00000000 00000000 00000000 00000000 d6f93be0 c0047184 00000000 00000000 1f00: 00000000 00000000 d3e51f08 d3e51f08 00000001 d3e50000 00000001 d624ea48 1f20: d6ee11a0 00000001 00000001 00000000 00000000 00000000 5eacafff d624ea48 1f40: 4007a0e4 00000000 d6085a00 00000001 4007a0e3 d3e51f80 00000001 c00fba3c 1f60: 00000000 c00fd050 d6085a00 4007a0e3 00000000 00000000 00000001 c00fbcac 1f80: 00000000 00000000 006ae0fc 00000001 4007a0e3 006ae0e8 00000000 00000004 1fa0: c0047184 c0047000 4007a0e3 006ae0e8 0000005d 4007a0e3 00000001 5bc63d90 1fc0: 4007a0e3 006ae0e8 00000000 00000004 5c66e6e0 5bc63d38 00000000 5c66e6f4 1fe0: 4007d058 5c66e6b8 40075d1b 400c5474 20000010 0000005d 00000000 00000000 [<c005ac7c>] (_clk_arm_get_rate+0xc/0x28) from [<c006650c>] (clk_get_rate+0x40/0x50) [<c006650c>] (clk_get_rate+0x40/0x50) from [<c0059e90>] (_clk_twd_get_rate+0xc/0x14) [<c0059e90>] (_clk_twd_get_rate+0xc/0x14) from [<c006650c>] (clk_get_rate+0x40/0x50) [<c006650c>] (clk_get_rate+0x40/0x50) from [<c004c6ec>] (twd_update_frequency+0x14/0x48) [<c004c6ec>] (twd_update_frequency+0x14/0x48) from [<c00a799c>] (generic_smp_call_function_s                                 ingle_interrupt+0xd0/0x130) [<c00a799c>] (generic_smp_call_function_single_interrupt+0xd0/0x130) from [<c00412c0>] (do_I                                 PI+0xec/0x208) [<c00412c0>] (do_IPI+0xec/0x208) from [<c0046a4c>] (__irq_svc+0x4c/0xe8) Exception stack(0xd3e51e20 to 0xd3e51e68) 1e20: 00000000 010da000 00000000 d3e50000 d67c9c60 0000002a 00000001 00000001 1e40: c10d5580 00000000 d6085a00 d3ceae00 00000000 d3e51e68 c0103478 c0114ba8 1e60: 60000013 ffffffff [<c0046a4c>] (__irq_svc+0x4c/0xe8) from [<c0114ba8>] (mnt_drop_write+0x70/0xa4) [<c0114ba8>] (mnt_drop_write+0x70/0xa4) from [<c0103478>] (pipe_write+0x26c/0x510) [<c0103478>] (pipe_write+0x26c/0x510) from [<c00fb338>] (do_sync_write+0xa4/0xe4) [<c00fb338>] (do_sync_write+0xa4/0xe4) from [<c00fba3c>] (vfs_write+0xa8/0x138) [<c00fba3c>] (vfs_write+0xa8/0x138) from [<c00fbcac>] (sys_write+0x40/0x6c) [<c00fbcac>] (sys_write+0x40/0x6c) from [<c0047000>] (ret_fast_syscall+0x0/0x30) Code: c078e260 e3a03901 e34f240c e92d4010 (e5934010) ---[ end trace dcbcbc34e4f8c36f ]--- Kernel panic - not syncing: Fatal exception in interrupt [<c004cdb0>] (unwind_backtrace+0x0/0xf8) from [<c056c398>] (panic+0x74/0x18c) [<c056c398>] (panic+0x74/0x18c) from [<c004aad4>] (die+0x220/0x284) [<c004aad4>] (die+0x220/0x284) from [<c056c1a8>] (__do_kernel_fault.part.3+0x54/0x74) [<c056c1a8>] (__do_kernel_fault.part.3+0x54/0x74) from [<c0050ae0>] (do_translation_fault+0x                                 0/0xa0) [<c0050ae0>] (do_translation_fault+0x0/0xa0) from [<f40c4010>] (0xf40c4010) CPU1: stopping [<c004cdb0>] (unwind_backtrace+0x0/0xf8) from [<c00413a8>] (do_IPI+0x1d4/0x208) [<c00413a8>] (do_IPI+0x1d4/0x208) from [<c0046a4c>] (__irq_svc+0x4c/0xe8) Exception stack(0xd6f15e18 to 0xd6f15e60) 5e00:                                                       c0574e78 00000005 5e20: f2a01000 00000001 d6f15e8c c111a580 00000000 c111a580 010da000 c111a588 5e40: 00000001 c0574f04 00000000 d6f15e60 c004bbac c00a7088 20000113 ffffffff [<c0046a4c>] (__irq_svc+0x4c/0xe8) from [<c00a7088>] (generic_exec_single+0x70/0x90) [<c00a7088>] (generic_exec_single+0x70/0x90) from [<c00a71c0>] (smp_call_function_single+0x1                                 18/0x1d0) [<c00a71c0>] (smp_call_function_single+0x118/0x1d0) from [<c004c850>] (twd_cpufreq_transitio                                 n+0x48/0x58) [<c004c850>] (twd_cpufreq_transition+0x48/0x58) from [<c0098c2c>] (notifier_call_chain+0x44/                                 0x84) [<c0098c2c>] (notifier_call_chain+0x44/0x84) from [<c0098d80>] (__srcu_notifier_call_chain+0                                 x44/0x60) [<c0098d80>] (__srcu_notifier_call_chain+0x44/0x60) from [<c0098db4>] (srcu_notifier_call_ch                                 ain+0x18/0x20) [<c0098db4>] (srcu_notifier_call_chain+0x18/0x20) from [<c037e508>] (cpufreq_notify_transiti                                 on+0xa0/0xe0) [<c037e508>] (cpufreq_notify_transition+0xa0/0xe0) from [<c006959c>] (mxc_set_target+0x194/0                                 x220) [<c006959c>] (mxc_set_target+0x194/0x220) from [<c037dcc4>] (__cpufreq_driver_target+0x50/0x                                 64) [<c037dcc4>] (__cpufreq_driver_target+0x50/0x64) from [<c0382aa8>] (cpufreq_interactive_up_t                                 ask+0x168/0x1b4) [<c0382aa8>] (cpufreq_interactive_up_task+0x168/0x1b4) from [<c00939b0>] (kthread+0x80/0x88) [<c00939b0>] (kthread+0x80/0x88) from [<c0047ae4>] (kernel_thread_exit+0x0/0x8)
View full article
The Linux L4.9.11_1.0.0 RFP(GA) for i.MX6 release files are now available on www.nxp.com    Files available: # Name Description 1 L4.9.11_1.0.0-ga_images_MX6QPDLSOLOX.tar.gz i.MX 6QuadPlus, i.MX 6Quad, i.MX 6DualPlus, i.MX 6Dual, i.MX 6DualLite, i.MX 6Solo, i.MX 6Solox Linux Binary Demo Files 2 L4.9.11_1.0.0-ga_images_MX6SLEVK.tar.gz i.MX 6Sololite EVK Linux Binary Demo Files 3 L4.9.11_1.0.0-ga_images_MX6UL7D.tar.gz i.MX 6UltraLite EVK, 7Dual SABRESD, 6ULL EVK Linux Binary Demo Files 4 L4.9.11_1.0.0-ga_images_MX6SLLEVK.tar.gz i.MX 6SLL EVK Linux Binary Demo Files 5 L4.9.11_1.0.0-ga_images_MX7ULPEVK.tar.gz i.MX 7ULP EVK Linux Binary Demo Files  6 L4.9.11_1.0.0-ga_mfg-tools.tar.gz i.MX Manufacturing Toolkit for Linux L4.9.11_1.0.0 BSP 7 L4.9.11_1.0.0-ga_gpu-tools.tar.gz L4.9.11_1.0.0 i.MX VivanteVTK file 8 bcmdhd-1.141.100.6.tar.gz The Broadcom firmware package for i.MX Linux L4.9.11_1.0.0 BSP. 9 imx-aacpcodec-4.2.1.tar.gz Linux AAC Plus Codec for L4.9.11_1.0.0 10 fsl-yocto-L4.9.11_1.0.0.tar.gz L4.9.11_1.0.0 for Linux BSP Documentation. Includes Release Notes, User Guide.   Target boards: i.MX 6QuadPlus SABRE-SD Board and Platform i.MX 6QuadPlus SABRE-AI Board i.MX 6Quad SABRE-SD Board and Platform i.MX 6DualLite SABRE-SD Board i.MX 6Quad SABRE-AI Board i.MX 6DualLite SABRE-AI Board i.MX 6SoloLite EVK Board i.MX 6SoloX SABRE-SD Board i.MX 6SoloX SABRE-AI Board i.MX 7Dual SABRE-SD Board i.MX 6UltraLite EVK Board i.MX 6ULL EVK Board i.MX 6SLL EVK Board i.MX 7ULP EVK Board (Beta Quality)   What’s New/Features: Please consult the Release Notes.   Known issues For known issues and more details please consult the Release Notes.   More information on changes, see: README: https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp/tree/README?h=imx-morty ChangeLog: https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp/tree/ChangeLog?h=imx-morty
View full article
  When considering EIM bursts (performance, burst length, etc) we should take into account, that some parameters (maximum burst length, which defines length in clocks of back-to-back EIM access) depend on master, which performs the access (EIM always service as slave). The EIM can split a master burst in order to meet own settings, but the EIM cannot join two master accesses. So, the maximum  burst length is defined by master.  Usually three options are applied for EIM burst accesses : - ARM block copy instructions (LDM / STM) ; - ARM NEON copy instructions (VLDM / VSTM) ; - i.MX SDMA.   Below are some details regarding these options.   1. ARM. ARM provide recommendations below about the fastest way to copy memory on a Cortex-A8. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka13544.html   According to section 8.1.2 (Supported AXI transfers) of ARM Cortex-A9 Technical Reference Manual, it is possible to get maximum 64 bytes (16 beats x 4 bytes) burst for read and 8 bytes burst for write. “INCR N (N:1-16) 32-bit read transfers INCR N (N:1-2) for 32-bit write transfers” http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388i/DDI0388I_cortex_a9_r4p1_trm.pdf 2. SDMA.   According to section 55.4.3.1 (Burst DMA Unit) of the i.MX6 DQ RM : “Perform up to 8-beat read and write bursts to the ARM platform memory, which optimizes throughput when accessing SDRAM-type devices because of an internal, 36-byte FIFO”. This means, that burst length of the SDMA cannot be greater than 32 bytes (8 beat x 4 bytes). As for performance and implementation of SDMA approach, please look at the following : “Measure SDMA Memory To Memory Copy Performance on i.MX6Q” https://community.freescale.com/docs/DOC-103127
View full article
    Some customer will use NAND flash as the storage device, also in auto application field,  the fast boot is also necessary,  so how to make the read speed faster is a question. FSL provide some patches for fast boot, they’re also suitable for NAND fast boot. These patch mainly enable the MMU and SDMA in uboot, some part of the patches is special for MMC.        0001-Merge-from-12.0.4-fastboot.patch     0002-Add-fsclmmcdma-code.patch    Some NAND flash support the EDO feature, according to the device feature mode, the NAND flash can be set different clock frequency.  Here will describe how to calculate the NAND working clock.    The NAND clock is divider from the GPMI source clock, can be program in setup_gpmi_nand().  The  divider was configured in register GPMI_TIMING0, the NAND clock can get from the following:           NANDCLK=GPMICLK/(DATA_HOLD+DATA_SETUP)    NAND Clock will affect the speed a lot, for the NAND chipsets which support the EDO, the nand speed will be set automatically. For those doesn’t support EDO NAND chip, the usr should take care those setting manually. There is also a patch for enable EDO mode and set NAND clock automatically.               0008-NAND-configure-as-EDO-mode-5.patch     Besides above, there are two other patches to improve the speed about 30%, 0009-For-nand-page-align-read-include-read-offset-and-siz.patch enabled the cache read(Note: please make sure the NAND chipset support cache read), it will reduce the unnecessary command transfer between the CPU and NAND, 0010-If-possible-directly-use-user-buffer-as-BCH-nand-buf.patch remove some unnecessary memcpy.
View full article
A new version of the Pins Tool for i.MX Application Processors has been released and is available for download as desktop tool from Pins Tool for i.MX Application Processors|NXP. The pins Tool for i.MX Application Processors is used for pin routing configuration, validation and code generation, including pin functional/electrical properties, power rails, run-time configurations, with the following main features: Desktop application Muxing and pin configuration with consistency checking Multicore support ANSI-C initialization code Graphical processor package view Multiple configuration blocks/functions Easy-to-use device configuration Selection of Pins and Peripherals Package with IP blocks Routed pins with electrical characteristics Registers with configured and reset values Power Groups with assigned voltage levels Source code for C/C++ applications Documented and easy to understand source code CSV Report and Device Tree File Localized for English and Simplified Chinese Mostly Connected: On-Demand device data download Integrates with any compiler and IDE What's New Added Label support to give signals a name Added ‘Log’ and ‘Problems’ view to report conflicts between settings Added support for templates to store user configurations as starting point for new configurations Added ability to download and share data for devices, especially for off-network host machines i.MX header files are now automatically part of the device data Import of legacy Processor Expert .pe files Export of register defines Various bug fixes and documentation improvements The release notes of the desktop application are attached to this article. Import Processor Expert Files A new importer has been added to import legacy Processor Expert for i.MX files: Labels Signals can now have user defined labels: Templates, Kits, Boards and Processors When creating a new configuration, it offers Templates, Boards and Processors. Custom configurations can be stored as templates and then used for new configurations. Board Specific Functions With the provided board and kit configurations, there are now pre-configured initialization functions for major blocks on the board: Export Data To simplify downloading the device specific data for the desktop tool, the 'Export' function can be used to download and export the data. The data can be copied that way to another machine or all data for a set of devices can be loaded. Export Registers With the Export command the registers can be exported as text/source: This is used to store the register values: /*FUNCTION********************************************************************** * * Function Name : init_audmux_pins * Description   : Configures pin routing and optionally pin electrical features. * *END**************************************************************************/ #define INIT_AUDMUX_PINS_IOMUXC_AUD5_INPUT_DA_AMX_SELECT_INPUT_VALUE            0x00000000   /*!< Register name: IOMUXC_AUD5_INPUT_DA_AMX_SELECT_INPUT */ #define INIT_AUDMUX_PINS_IOMUXC_AUD5_INPUT_TXCLK_AMX_SELECT_INPUT_VALUE         0x00000000   /*!< Register name: IOMUXC_AUD5_INPUT_TXCLK_AMX_SELECT_INPUT */ #define INIT_AUDMUX_PINS_IOMUXC_AUD5_INPUT_TXFS_AMX_SELECT_INPUT_VALUE          0x00000000   /*!< Register name: IOMUXC_AUD5_INPUT_TXFS_AMX_SELECT_INPUT */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DI0_PIN02_VALUE                  0x00000002   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DI0_PIN02 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DI0_PIN03_VALUE                  0x00000002   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DI0_PIN03 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DI0_PIN04_VALUE                  0x00000002   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DI0_PIN04 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DI0_PIN15_VALUE                  0x00000002   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DI0_PIN15 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA16_VALUE               0x00000003   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA16 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA18_VALUE               0x00000003   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA18 */ #define INIT_AUDMUX_PINS_IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA19_VALUE               0x00000003   /*!< Register name: IOMUXC_SW_MUX_CTL_PAD_DISP0_DATA19 */ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ We hope you will find this new release useful. Thanks for designing with NXP! 
View full article
  Some customers want to expose their i3c device on the /dev, In order to develop their i3c APP or operation the i3c device like I2C. But in our default BSP code, we do not support this feature for I3C device, This article will introduce how to make the i3c device expose to the user space. Board : i.MX 93 EVK BSP Version : lf-6.1.55-2.2.0 I3C device : LSM6DSOXTR Step 1 : Rework the i.MX93 EVK Board, Install the R1010.      Step 2 : Apply the add_i3c_device_to_dev.patch file to the linux kernel code              Command : git apply add_i3c_device_to_dev.patch Step 3 : Re-compile the kernel Image file.              Command : make imx_v8_defconfig                                  make Step 4 : Boot your board with "imx93-11x11-evk-i3c.dtb" file and see if you can see the I3C device on the /dev directory. Result : We can see the i3c device is appeared in /dev directory, The i2c-8 is an i2c device mounted to the i3c bus. The i3c is backward compatible with i2c device. It will simulate the I2C signal loading i2c device.                 PS : You can also use the i2ctool detect i2c-8 device. As shown in the following picture:   Note : If you need the patch file, Please contact me any time for free.
View full article
Hello, here Jorge. On this post I will explain how to configure, record and play audio using an i.MX 8MIC-RPI-MX8 Board. Requirements: I.MX 8M Mini EVK Linux Binary Demo Files - i.MX 8MMini EVK (L5.15.52_2.1.0) i.MX 8MIC-RPI-MX8 Board Serial console emulator (Tera Term, Putty, etc.) Headphones/speakers The 8MIC-RPI-MX8 accessory board is designed for voice enabled application prototyping and development on the i.MX 8M family. The board plugs directly into the 40-pin expansion connector on the i.MX 8M Mini and Nano EVK’s. Some features about this board are: 8 PDM Microphones 8 monochrome LEDs 4 multi-color LEDs 2 status LEDs 4 pushbuttons Microphone Mute Switch Microphone geometry switch Connecting the i.MX 8MIC-RPI-MX8 Board. The i.MX 8MIC-RPI-MX8 Board has a 40-pin expansion connector that you can plug it directly to the EVK board. Ensure that pin 1 of the 8MIC-RPI-MX8 is aligned with pin 1 on the EVK J1001 as is showed on the next figure:  Selecting the device tree on the board. Once the pre-compiled image is flashed on the board (Flashing Linux BSP using UUU) and you connected the 8MIC-RPI-MX8 it is necessary to select the correct device tree to handle 8MIC board. On U-boot check the available .dtb files on the BSP using the next command: u-boot=> fatls mmc 2:1 And you will get the corresponding list of .dbt files:  On this case we are working with an I.MX 8M Mini EVK and the corresponding .dtb file is: imx8mm-evk-8mic-revE.dtb To select it you need to set the environment variable and save it with: u-boot=> setenv fdtfile imx8mm-evk-8mic-revE.dtb u-boot=> saveenv Doble check it using: u-boot=> printenv fdtfile   Now it is time to boot Linux using the next command: u-boot=> boot Recording audio with the i.MX 8MIC-RPI-MX8 Board. The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system. ALSA has the following significant features: Efficient support for all types of audio interfaces, from consumer sound cards to professional multichannel audio interfaces. Fully modularized sound drivers. SMP and thread-safe design. User space library (alsa-lib) to simplify application programming and provide higher level functionality. Support for the older Open Sound System (OSS) API, providing binary compatibility for most OSS programs. Once we are on Linux, we can check our audio codecs detected on the board using: arecord -l   Now, to record audio we need to use the ALSA arecord command to start recording with IMX8 boards, there are different options that you can check on the next link. On this case we are going to use the next: arecord -D hw:imxaudiomicfil -c8 -f s16_le -r48000 -d10 sample.wav -D: selects the device. -c: selects the number of channels on the recording. -f: selects the format. -r: selects the sample rate. -d: determinate the duration recording time in seconds. sample.wav: Is the name of the resulting audio file. Running the last command, we started to record audio. It is time to make some noise and record it!   Playing audio from IMX8 boards. Now it is time to connect our headphones or speakers to the jack.   Also, as on arecord command you can check the devices where you can play audio from the board using the next command: aplay -l And you will get all the codecs to play audio:   To play our recordings we need to use the ALSA aplay command, it is important to select the correct audio codec to hear the audio from the jack on the board: aplay -Dplughw:3,0 sample.wav -D: selects the device. sample.wav: Is the name of audio file to play   Hope this will helpful for people who wants to record audio using PDM microphones and playing audio from IMX8 boards. Best regards.
View full article
The Android P9.0.0_2.0.0 GA (4.14.98 kernel) is now available on IMX software landing page. Overview -> i.MX BSP Updates and Releases -> Android -> Android P9.0.0_2.0.0 (4.14.98 kernel)    Files available:   # Name Description 1 android_p9.0.0_2.0.0-ga_docs.zip Android P9.0.0_2.0.0 Documentation 2 imx-p9.0.0_2.0.0-ga.tar.gz i.MX Android proprietary surce code for Android P9.0.0_2.0.0 3 android_p9.0.0_2.0.0-ga_image_8mmevk.tar.gz Prebuilt images with NXP extended features for the i.MX 8M Mini EVK 4 android_p9.0.0_2.0.0-ga_image_8mqevk.tar.gz Prebuilt images with NXP extended features for the i.MX 8M Quad EVK 5 android_p9.0.0_2.0.0-ga_image_8qmek.tar.gz Prebuilt images with NXP extended features for the i.MX8QMax and 8QXPlus MEK 6 fsl_aacp_dec_p9.0.0_2.0.0-ga.tar.gz AAC Plus Codec for P9.0.0_2.0.0_GA   Supported boards: i.MX 8MMini MEK Board i.MX 8MQuad EVK Board i.MX 8QuadMax MEK i.MX 8QuadXPlus MEK   Features and Known issues For features and known issues, please consult the Release Notes in detail.  ======================================================================================= The Android P9.0.0_2.1.0_AUTO GA (4.14.98 kernel) is now available on IMX software landing page. Overview -> i.MX BSP Updates and Releases -> Android AUTO-> Android P9.0.0_2.1.0_AUTO   Files available:   # Name Description 1 android_p9.0.0_2.1.0-auto-ga_docs.zip Android P9.0.0_2.1.0_AUTO  Documentation 2 imx-p9.0.0_2.1.0-auto-ga.tar.gz i.MX Android Automotive proprietary source code for Android P9.0.0_2.1.0_AUTO 3 android_p9.0.0_2.1.0-auto-ga_image_8qmek.tar.gz Prebuilt images with NXP extended features with the EVS function enabled in the Cortex-M4 CPU core for the i.MX 8QuadMax/8QuadXPlus MEK 4 android_p9.0.0_2.1.0-auto-ga_image_8qmek2.tar.gz Prebuilt images with NXP extended features for the i.MX8QMax and 8QXPlus MEK, without the EVS in M4 Core.   Supported boards: i.MX 8QuadMax MEK i.MX 8QuadXPlus MEK   Features and Known issues For features and known issues, please consult the Release Notes in detail.
View full article
1. Making information easier for our members to find, and make the community more effective: If you submit a discussion and it is a question, check the “Mark this discussion as a question” box when you are creating the discussion. This will highlight the discussion as a request for help. Acknowledge a reply as “Answer” when it answers your question, or identify it as “Helpful” if a reply was helpful. This will recognize the members who are taking the time to help other members. Select applicable categories when entering your discussions. This makes it easy to filter on and view related content in the “Content” tab. Tag everything. This helps surface the most relevant search results and it helps to bring appropriate content to your “What Matters” Activity stream. 2. Getting FSL help: Even though you can have and use multiple accounts in the community, It is generally good practice to use a single account.  Furthermore, it behooves community members to use your primary Freescale.com account when submitting community questions.  This allows Freescale support to see more information about you that you may not expose in your community profile, such as your company name and location.  This information helps us to assign the proper support resources to your issue.
View full article
One of the new feature of  the i.MX8 family is to support CAN FD. Fortunately the MEK board has a TJA1043 supporting CAN FD. The following document show you how to do simple CAN (FD) test under Linux. First of all let configure the CAN0 to be at 500kps in CAN, and 4Mbps in CAN FD: ip link set can0 up type can bitrate 500000 sample-point 0.75 dbitrate 4000000 dsample-point 0.8 fd on ‍‍‍‍‍‍‍ Let's do the same for CAN1: ip link set can1 up type can bitrate 500000 sample-point 0.75 dbitrate 4000000 dsample-point 0.8 fd on‍‍‍‍ Now you can do a bridge between CAN0 and CAN1 on the board. The easiest way is to put simple wires (pin 2 to pin 2 a,d pin 7 to pin 7), normally you have to twist your wires, but as it is on your desk, you can get rid of it): You can check the configurations of your FlexCAN: root@imx8qxpmek:~# ip -details link show can0 3: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10 link/can promiscuity 0 can <FD> state ERROR-WARNING (berr-counter tx 0 rx 0) restart-ms 0 bitrate 500000 sample-point 0.750 tq 25 prop-seg 29 phase-seg1 30 phase-seg2 20 sjw 1 flexcan: tseg1 2..64 tseg2 1..32 sjw 1..32 brp 1..1024 brp-inc 1 dbitrate 4000000 dsample-point 0.800 dtq 25 dprop-seg 3 dphase-seg1 4 dphase-seg2 2 dsjw 1 flexcan: dtseg1 1..39 dtseg2 1..8 dsjw 1..8 dbrp 1..1024 dbrp-inc 1 clock 40000000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 root@imx8qxpmek:~# ip -details link show can1 4: can1: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10 link/can promiscuity 0 can <FD> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0 bitrate 500000 sample-point 0.750 tq 25 prop-seg 29 phase-seg1 30 phase-seg2 20 sjw 1 flexcan: tseg1 2..64 tseg2 1..32 sjw 1..32 brp 1..1024 brp-inc 1 dbitrate 4000000 dsample-point 0.800 dtq 25 dprop-seg 3 dphase-seg1 4 dphase-seg2 2 dsjw 1 flexcan: dtseg1 1..39 dtseg2 1..8 dsjw 1..8 dbrp 1..1024 dbrp-inc 1 clock 40000000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 root@imx8qxpmek:~#‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Now a simple test can be to send random CAN FD messages, for that use "cangen" to send random CAN FD messages (read "cangen" documentation: https://manpages.debian.org/stretch-backports/can-utils/cangen.1.en.html 😞 root@imx8qxpmek:~# cangen can0 -v -b -g 20 can1 3E6 [00] can1 735 [20] F9 ED 40 53 AC CF 48 34 F9 ED 40 53 AC CF 48 34 F9 ED 40 53 can1 513 [20] 92 D2 E7 32 48 E6 EA 39 92 D2 E7 32 48 E6 EA 39 92 D2 E7 32 can1 03B [12] 6D 34 2F 11 52 8A 52 50 6D 34 2F 11 can1 47D [24] 72 08 88 0D E0 04 F7 09 72 08 88 0D E0 04 F7 09 72 08 88 0D E0 04 F7 09 can1 245 [00] can1 6F6 [48] B9 82 A1 49 4E ED BA 06 B9 82 A1 49 4E ED BA 06 B9 82 A1 49 4E ED BA 06 B9 82 A1 49 4E ED BA 06 B9 82 A1 49 4E ED BA 06 B9 82 A1 49 4E ED BA 06 can1 1F4 [16] 03 5B 7C 00 DA E5 FA 03 03 5B 7C 00 DA E5 FA 03 can1 38A [48] 71 CE A3 1A C0 8A 4F 20 71 CE A3 1A C0 8A 4F 20 71 CE A3 1A C0 8A 4F 20 71 CE A3 1A C0 8A 4F 20 71 CE A3 1A C0 8A 4F 20 71 CE A3 1A C0 8A 4F 20 can1 4C9 [20] 6C 5A 98 54 DD D1 CB 09 6C 5A 98 54 DD D1 CB 09 6C 5A 98 54 can1 536 [48] 25 B8 B6 43 71 CD 54 71 25 B8 B6 43 71 CD 54 71 25 B8 B6 43 71 CD 54 71 25 B8 B6 43 71 CD 54 71 25 B8 B6 43 71 CD 54 71 25 B8 B6 43 71 CD 54 71 can1 308 [02] C3 57 can1 33E [05] 65 8C 7B 21 83 can1 3F5 [05] EA E0 07 63 EB can1 633 [03] 39 10 18 can1 25D [32] 01 4E 65 41 E8 4D 94 6F 01 4E 65 41 E8 4D 94 6F 01 4E 65 41 E8 4D 94 6F 01 4E 65 41 E8 4D 94 6F can1 2FB [03] A8 D8 E3 can1 0DE [04] A1 11 3F 32 can1 012 [06] 85 23 B2 07 1A 03 can1 658 [08] A0 8A 2D 67 97 79 A1 64 can1 37D [05] 1A 57 E8 4F 72 can1 70A [04] 5E 6A B8 0F can1 3A8 [07] 65 C5 48 76 05 B6 11 can1 5D4 [07] ED 03 A6 07 CF D8 DC can1 7DA [05] 94 18 50 09 B8 can1 7A9 [05] CC 5E 02 74 BC can1 3FC [01] D6 can1 599 [06] EB 23 02 61 16 D9 can1 47C [06] 88 20 F2 62 86 3B can1 30A [06] C4 98 57 61 B2 4E can1 57E [16] B8 04 86 5B 52 EB DF 45 B8 04 86 5B 52 EB DF 45 can1 191 [05] 22 C4 BC 26 6B can1 53B [06] 23 AA AA 00 E4 F4 can1 6EB [64] A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D A0 64 BE 5E E7 FA 20 1D‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ You can check with a scope your CAN FD frame (here CAN High): And you can see the first part of the frame sent @500kps and the second part @4Mbps. If you unplug one wire, the messages will no longer be sent as no acknowlege will occurs. You can also send message without flexible datarate. In our case, we'll send long frame at 500kps (no more 4Mbps transfer for end of the frame): imx8qxpmek:~# cangen can0 -v -f -g 20 can0 6FE##0.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E.6B.C6.BA.1A.82.2D.29.7E can0 3E2##0.D4.9E.3D can0 1DE##0.D0.D8.33.50.7E.39 can0 7CE##0.FA.68.25.74.86.E7.E1.4A.FA.68.25.74.86.E7.E1.4A.FA.68.25.74 can0 7C3##0.58.E6.F2.1E.BD.7D.F8.7F can0 32A##0.0D.06.98.0D.08.81.5C.4E.0D.06.98.0D.08.81.5C.4E.0D.06.98.0D.08.81.5C.4E.0D.06.98.0D.08.81.5C.4E.0D.06.98.0D.08.81.5C.4E.0D.06.98.0D.08.81.5C.4E can0 48B##0.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47.76.48.B4.34.59.81.B9.47 can0 3FC##0.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00.6E.70.F7.36.FB.82.B9.00 can0 4BE##0.7D.B0.E2.7E.A0.F0.DF.24.7D.B0.E2.7E can0 60C##0.0E can0 257##0.69.11.0C.4B.25.CA.16.65.69.11.0C.4B.25.CA.16.65.69.11.0C.4B.25.CA.16.65.69.11.0C.4B.25.CA.16.65.69.11.0C.4B.25.CA.16.65.69.11.0C.4B.25.CA.16.65 can0 0BA##0.AB.B1.F8 can0 0FC##0.3A.7E.FB.34 can0 452##0.2F.4D.04.26.DE.80.EA can0 2C7##0.37.02.A4.4D.C3 can0 0B4##0.BE.39.AD.3B.73 can0 17E##0.13.66.44.6A.8A.8F.CE.7A.13.66.44.6A.8A.8F.CE.7A.13.66.44.6A‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ You can also force the CAN to only send CAN 2.0b frames (not FD, you'll have 8-byte data max frames): imx8qxpmek:~# cangen can0 -v -g 20 can0 7FF#8F.04.3F.31.EB can0 135#92.7C.46.5C.95.4E.6C.48 can0 0F8#E3.E4.7E.4D.92.2A.1D.69 can0 68F#C6.B7.BA.35.78.06 can0 4EC#D8.D9.86.19.40.BE.64.05 can0 09F#EE.E1.70.7D.13.C9.18.53 can0 7CE#BB.CD.FE.50.3E.B6.A4.4A can0 3C7#04 can0 1F6#B2.E4.4B.42 can0 080#C1.81.65.41 can0 14C#0B.B4.7E.5D can0 15A#53 can0 1CF#86.D4.ED.11.6E.BA.20.14 can0 257#82.83.39.67 can0 2C1#64.20.DF.0D.89.0E.14.55 can0 45E#50.72.44.76.55.4E.96.0F can0 6FC#80.81 can0 046#F6 can0 1E5#6D can0 0D2# can0 7EB#0F.3D.29.78.42.72.60.61 can0 480#68 can0 1CE#CB.05.12.74.2D.0E.F2.14 can0 634#82.5C.88.24.31.75.AF.03 can0 71D#AE.4C can0 144#F5.A8.17.70 can0 2A5#69.BE can0 222#18.C6.AA.4A.0D.5A.EC.48 can0 5FA#4F.CC.4C.2A.7B.BA.31 can0 3B9#BD.B1.2F.3C.87.D5.D1 can0 583#B4.E3.C3.4E.B8.D3.22.43‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
View full article