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:
How To Understand JTAG BSDL File This example explains how to understand the BSDL file in order to create an OpenOCD configure file. IR Len That information can be retrieved directly: attribute INSTRUCTION_LENGTH of imx_device: entity is 5; This means that IR Len is 5, then in OpenOCD config it will be informed this way: -irlen 5 IR Capture The IR Capture also can be retrieved directly: attribute INSTRUCTION_CAPTURE of imx_device : entity is "XXX01"; This means that IR Capture is 1, then in OpenOCD config it will be informed this way: -ircapture 0x1 IR Mask The IR Mask is based on IR Len size. Just create a binary number with "IR Len" bits 1. If the IR Len is 4 then the IR Mask will be 0xF (1111). Case the IR Len is 5 the IR Mask will be 0x1F (11111). In this BSDL example (IR Len = 5) the OpenOCD config needs to inform the IR Mask this way: -irmask 0x1f TAP ID attribute IDCODE_REGISTER  of imx_device : entity is     "0010"            & -- Version     "000110"          & -- Design Center Number     "0100000001"      & -- Sequence Number     "00000001110"      & -- Manufacturer Identity     "1";                -- IEEE 1149.1 Requirement This code can be converted directly to TAP ID: Binary: 0010-0001-1001-0000-0001-0000-0001-1101 Hexadecimal: 2-1-9-0-1-0-1-D Then in OpenOCD configure you will create: if { [info exists SDMATAPID ] } {   set _SDMATAPID $SDMATAPID } else {   set _SDMATAPID 0x2190101d } The final configure line will be: jtag newtap $_CHIPNAME smda -irlen 5 -ircapture 0x1 -irmask 0x1f -expected-id $_SDMATAPID
View full article
i.MX6UL/ULL extend uart port and integrate SIP I2C device. Contents 1 硬件设计说明 ............................................................. 2 硬件框图 ........................................................................ 2 硬件模块设计 ................................................................. 4 IOMUX 表 ....................................................................... 8 2 编译环境搭建 ............................................................. 8 编译环境文档及镜像下载。 ............................................ 8 编译环境搭建 ............................................................... 11 3 移植BSP 到扩展串口板 ........................................... 15 Uboot 中支持新的DTB ................................................ 15 Uboot 中调试串口改成UART6 ..................................... 16 去除掉无用的驱动及其IOMUX .................................... 18 增加i.MX6UL/ULL 本身串口支持 ................................. 18 增加GPIO 输出支持(GPIO_LED) ............................ 26 增加GPIO 输入支持(GPIO_KEY) ........................... 30 增加PWM支持 ............................................................ 34 增加i.MX6UL 本身ADC 支持 ....................................... 38 修改网口驱动仅支持一个网口 ...................................... 41 增加NXP PCF8591 I2C 转ADC 芯片支持 ................... 44 增加NXP PCA9555A I2C 转GPIO 芯片支持(rework 支持) 47 增加NXP PCT2075 I2C 温度传感器芯片支持(rework 支持) 55 增加NXP PCF8563 I2C RTC 支持(rework 支持) ......... 58 增加NXP PCA9632 I2C LED控制器芯片支持(rework 支持) 65 增加CH438 EIM 转串口芯片支持(delay) ..................... 70
View full article
This document provide an overall guide how to get started with i.MX6 development. There are several chapters: 1. how to get necessary docs from freescale website; 2. how to setup environment and build your own images;3. Hardware design consideration;4. How to get help. I hope the doc will bring you in i.MX world more easily, and hope you all have a fun in it.
View full article
Overview i.MX28EVK Setup Build Yocto Project image Create a SDCARD from the Linux Host Boot i.MX28EVK Create file system on USB Create Mount Point and Mount the USB device Create 250 MB File Create Exports File Restart NFS Server Ubuntu Linux Host Setup Create Mount Directory Mount i.MX28EVK Exported Directory Access the NFS mounted directory Overview This document describes the steps for configuring a NFS Server running on an i.MX Application Processor - in this case the evaluation board i.MX28 EVK. Once the NFS server is running, an Ubuntu 12.04 Linux host is then configured to NFS mount the i.MX28EVK exported directory. The Ethernet interface is used for the connection transport. A block diagram of the connection setup is shown below: An Ethernet switch provided the Ethernet connection between the Linux Host and the i.MX28EVK. A thumb drive was connected to the USB port on the i.MX28EVK which was used for the exported directory. i.MX28EVK Setup Build Yocto Project image Use core-image-minimal and add packages to conf/local.conf to support NFS MACHINE=imx28evk source setup-environment mx28-evk echo "CORE_IMAGE_EXTRA_INSTALL += \"bash kernel-modules nfs-utils\" " >> conf/local.conf bitbake core-image-minimal When bitbake finishes the images are found in tmp/deploy/images/imx28evk Create a SDCARD from the Linux Host sudo dd if=/tmp/deploy/images/imx28evk/core-image-minimal-imx28evk.sdcard of=/dev/sdc bs=4M && sync Boot i.MX28EVK Insert the SDCARD into slot 0 on the bottom side of the i.MX28EVK and connect the serial console. Power-on and push the POWER button on the lower conner to turn on. The Login credentials are User Name: root      There is no password configured by default. Create file system on USB The USB drive had one partition which was formatted with vfat file system: mkfs.vfat /dev/sdb1 Create Mount Point and Mount the USB device mkdir /mnt/usb mount /dev/sdb1 /mnt/usb Create 250 MB File dd if=/dev/zero of=/mnt/usb/file1.txt bs=512K count=500 Create Exports File echo "/mnt/usb *(rw,sync,no_root_squash,no_subtree_check)" > /etc/exports Restart NFS Server /etc/init.d/nfsserver stop /etc/init.d/nfsserver start Ubuntu Linux Host Setup Create Mount Directory sudo mkdir /mnt/remote Mount i.MX28EVK Exported Directory sudo mount -t nfs 10.85.1.10:/mnt/usb /mnt/remote Access the NFS mounted directory ls /mnt/remote
View full article
On this tutorial we will review the implementation of Flutter on the i.MX8MP using the Linux Desktop Image. Please find more information about Flutter using the following link: Flutter: Option to create GUIs for Embedded System... - NXP Community Requirements: Evaluation Kit for the i.MX 8M Plus Applications Processor. (i.MX 8M Plus Evaluation Kit | NXP Semiconductors) NXP Desktop Image for i.MX 8M Plus (GitHub - nxp-imx/meta-nxp-desktop at lf-6.1.1-1.0.0-langdale) Note: This tutorial is based on the NXP Desktop Image with Yocto version 6.1.1 – Langdale. Steps: 1. First, run commands to update packages. $ sudo apt update $ sudo apt upgrade 2. Install Flutter for Linux using the following command. $ sudo snap install flutter --classic 3. Run the command to verify the correct installation. $ flutter doctor With this command you will find information about the installation. The important part for our purpose is the parameter "Linux toolchain - develop for Linux desktop". 4. Run the command “flutter create .” to create a flutter project, this framework will create different folders and files used to develop the application.  $ cd Documents $ mkdir flutter_hello $ cd flutter_hello $ flutter create .​ 5. Finally, you can run the “hello world” application using: $ flutter run Verify the program behavior incrementing the number displayed on the window.  
View full article
Note: This guide is specifically for use with VS Code. For standalone with Segger software please refer to this guide. (How to Use Segger J-Link Plus with i.MX 8M Process... - NXP Community) In this guide we will describe the process to start using VS Code to debug an SDK application. The board used for this guide specifically is the i.MX 8M Nano EVK, but it also applies to all processors of the i.MX 8M Family. This guide covers the following topics: Hardware requirements Software requirements How to find, build, and download the i.MX SDK Debug Probe and i.MX 8M Nano EVK connection Create an SDK Application with MCUXpresso for VS Code Run and debug your SDK Application with MCUXpresso for VS Code Hardware requirements Evaluation Kit for the i.MX8M Nano Applications Processor (i.MX 8M Nano Evaluation Kit | NXP Semiconductors) Quick Start Guide for i.MX8M Nano (I.MX 8M Nano EVK Quick Start Guide (nxp.com)) J-Link Plus JTAG/SWD debug probe with USB interface (SEGGER J-Link PLUS) Features Download speed up to 1MB/s Unlimited breakpoints in flash memory Supports direct download into RAM and flash memory Supported NXP Devices Supported Devices - Search results "nxp" (segger.com) 9 Pin Cortex-M Adapter (9-Pin Cortex-M Adapter (segger.com)) Description Adapts from the 20-pin 0.1'' JTAG connector to a 9-pin 0.05'' Samtec FTSH connector as defined by Arm. Software requirements Windows 10 OS (host) J-Link Software and Documentation Pack for Windows (https://www.segger.com/products/debug-probes/j-link/models/j-link-plus/) i.MX 8M Nano SDK (Welcome | MCUXpresso SDK Builder (nxp.com)) VS Code for Windows (Installation Guide: Running Visual Studio Code on Windows) MCUXpresso Extension for VS Code (Installation Guide: Training: Walkthrough of MCUXpresso for VS Code - NXP Community)   How to find, build, and download the i.MX 8M Nano SDK Enter Welcome | MCUXpresso SDK Builder (nxp.com) Click on "Select Development Board"  Select EVK-MIMX8MN (MIMX8MN6xxxJZ) from Boards -> i.MX -> EVK-MIMX8MN Click on the Build MCUXpresso SDK button Click on Download SDK, you'll be redirected to the MCUXpresso SDK Dashboard Look for the i.MX 8M Nano SDK and click on Download SDK Click on Download SDK archive and documentation, accept the Software Terms and Conditions and the .zip file for the SDK will be downloaded. Debug Probe and i.MX 8M Nano EVK connection Connect the debug cable (USB-UART) to the board and the other end to your PC. Connect the power cable to the second USB-C port and to a wall socket. Don't turn on the board yet. Connect the JLink Plus to your PC with the USB cable. Connect the JLink Plus to the JTAG of the i.MX 8M Nano EVK board In this part we will need to identify pin number 1 from the 9 Pin Cortex-M adapter and from the i.MX 8M Nano EVK board. For the first one identifies pin 7 identifiable by a "non-connect pin". For the i.MX 8M Nano, you can identify easily with a number 1 in one corner of the connectors.    The whole setup should look similar to this:   Create an SDK Application with MCUXpresso for VS Code Before delving into the details of creating an SDK Application it is important to recognize the sections of VS Code User Interface. This will help us to describe accurately the buttons' position. Click on MCUXpresso for VS Code extension icon from the Activity Bar.  In the section “Quickstart Panel” located in the Side Bar click on “Import Repository.” On this window, go to “Local” and select your previously downloaded SDK folder location. Then, click on “Import.” Expand the section “Installed Repositories” from Side Bar and verify your selected SDK. Expand the section “Projects” from Side Bar and click on “Import Example from Repository” and complete the options: Choose a toolchain Choose a board Choose a template Name Location Finally, click on the "Create" button. Click on the gear icon located in the project folder to build the code. In “Projects” expand the “Settings” options and select “mcuxpresso-tools.json.” Here you will find a JSON file with different parameters. Defines the device that will be used to connect with the J-Link Plus. Code: “segger”: { “device”: “MIMX8MN6_M7” } Expand the section “Debug Probes” and verify that your J-Link Plus debug probe appears. Start SEGGER J-Link GDB Server. On section “Target Device” select MIMX8MN6_M7 and click “OK”. You will see the following window. Run and debug your SDK Application with MCUXpresso for VS Code Click on “Debug” located in the project folder, to start with the debugging session. In the Panel click on “Serial Monitor,” set it to the serial debug port with the lowest numbered port with the following settings: Baud rate: 115200 Line ending: None Click on "Start Monitoring" Use the debug controls to run the code. Verify your code output in the “Serial Monitor.”
View full article
Overview: This document is written for Freescale customers who have Freescale AC3 release packages (excluded package). (If you did not have the AC3 release package, you can disregard this document.) Freescale OMX Player in Android release supports audio track selection when playing files with multiple audio tracks. However, most customers don't use this enhanced API to select the audio track even if current audio codec is not supported. To avoid a soundless output when partial audio track can be played, this document provides the method to select the available audio track automatically to play. The patch in this document is not included in our current release because it did not match with our track selection rule - play the first track. If you have any idea with this issue, feel free to add comments into this document. Issue description: Software: R13.4-GA or R13.4.1 Android releases Hardware: MX6Dual/Quad SabreSD board Test source: 1.mkv Test Step: 1. Lunch Gallery from main menu. 2. Play the video And you can see the watch the video without any sound Root Reason: The file has 2 audio track DTS & AC3: audio track 1 is DTS and track 2 is AC3. OMX Player will choose the first audio track to play as default audio track, which is DTS audio. However, the software only supports the AC3 audio codec, so it could not set up audio decoder for DTS track. If we choose to play the AC3 track, sounds could be heard. How to fix: The audio track index is set in GMPlayer::LoadParser(). You can get audio format to check whether it is supported by decoder. Please see the patch audio_track_slection.diff
View full article
For detailed view, please check out the attached file.
View full article
1. Register to the meta-freescale maillist 2. Follow just the install and download steps indicated on the Freescale's github repo. Make sure you local code is in sync (repo sync) 3. Create a local branch using the repo command fs-community-bsp $ repo start <branch_name> --all      Where <branch_name> can be any name you want for your contribution (either a fix or a implementation) 4. Modify the files you want under the Freescale source folders (e.g. meta-fsl-arm) 5. Create a commit (follow the recommendations from Commit Patch Message Guidelines - Openembedded.org ) meta-fsl-arm $ git add <modified file 1> meta-fsl-arm $ git add <modified file 2> . . meta-fsl-arm $ git commit -m '<recipe name>: <my contribution>' 6. Create a patch file meta-fsl-arm $ git format-patch -s --subject-prefix='meta-fsl-arm][PATCH' -1 7. Configure ~./gitconfig so you are able to send e-mails through git, e.g. [sendemail]   smtpencryption = tls   smtpserver = smtp.gmail.com   smtpuser = [email protected]   smtpserverport = 587 8.Send the patch file to the community git send-email --to [email protected] <generated patch> 9. Check your patch's progress on meta-freescale mailing list. 10. In case you need to rework your patch, make sure you add v2 (version 2 of the patch) when creating the patch meta-fsl-arm $ git format-patch -s --subject-prefix='meta-fsl-arm][PATCH v2' -1
View full article
Running Zephyr on i.MX9 A55 core brings a high performance, real-time (short interrupt, scheduler latency, etc.) OS experiences as well as the fast boot, small memory footprint features. This article provide all the information on how to run the Zephyr v4.1 on Cortex-A55 cores to support below features: Supported Features FRDM-IMX93 FRDM-IMX91 Description Zephyr RTOS code base     Based on Zephyr v4.1 FRDM-IMX93 board configure Yes   Board configuration, build, device tree files FRDM-IMX91 board configure   Yes Board configuration, build, device tree files Hello world Yes Yes   Dual Ethernet Yes   TY8521 Ethernet PHY support Display Yes   LCDIF, MIPI DSI, Waveshare 1024x600 7inch DSI LCD(C) Camera Yes   MIPI-CSI, ISI, AP1302 sensor Audio Yes   I2S with eDMA (Driver only) uSDHC Yes   SD card only USB Yes   USB CDC device class   The code has been release on github: Zephyr samples/drivers: https://github.com/nxp-zephyr/zephyr Zephyr HAL: https://github.com/nxp-zephyr/hal_nxp Tag: FRDM-IMX93-v4.1 How to doc is attached.  
View full article
Board : i.MX93 EVK BSP: imx L6.1.1-1.0.0 Gui guider: 1.6.1   We have a GUI software tool called GUI Guider. It is a user-friendly graphical user interface development tool from NXP that enables the rapid development of high quality displays with the open-source LVGL graphics library. The GUI demo can run on the i.MX93EVK board. (https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER)   This document will show you an example how the buttons(gpio) on the EVK to interacting with the GUI. Basically, customer could use the same method to use the gpio pins to control everything.   On the i.MX93 EVK board, there are two buttons BTN1 and BTN2. They are connected to GPIO IO23 and GPIO IO24. Below is the schematic.    Buttons on the board.      SW1005 on the board   In the EVK's device tree file, need to change the pinmux for the two buttons like this: pinctrl_spdif: spdifgrp { fsl,pins = < // MX93_PAD_GPIO_IO22__SPDIF_IN 0x31e // MX93_PAD_GPIO_IO23__SPDIF_OUT 0x31e MX93_PAD_GPIO_IO23__GPIO2_IO23 0x31e MX93_PAD_GPIO_IO24__GPIO2_IO24 0x31e >; note: all the pins are defined in imx93-pinfunc.h.   For getting the input value of the buttons in user's space, I use the sysfs gpio. Build the imx-image-multimedia image first and then select the GPIO_SYSFS in kernel's menuconfig.   $ DISTRO=fsl-imx-xwayland MACHINE=imx93evk source imx-setup-release.sh -b build-xwayland $ bitbake imx-image-multimedia   After the build completed, go to the kernel's menuconfig to select the GPIO sysfs. $ bitbake linux-imx -c menuconfig [*] General setup-> Configure standard kernel features (expert users) [*] Device Drivers->GPIO Support-> /sys/class/gpio/... (sysfs interface)   Build the whole image again by "$ bitbake imx-image-multimedia".   Using the UUU to program the image to the EMMC on the EVK board. uuu -b emmc_all imx-image-multimedia-imx93evk.rootfs.wic.zst   Connect the LVDS to the board. Use the corresponding dtb to boot the board. In u-boot, set the dtb file. => setenv fdtfile imx93-11x11-evk-boe-wxga-lvds-panel.dtb => saveenv   Then restart the board. After the board boot up, it will look like below.     You need to calibrate the LVDS touch screen before it can normally use. Please use this command: $ weston-touch-calibrator LVDS-1     Now, build the GUI guider example. I use the Air Conditioner example. Download the GUI guider from the gui-guider web page: https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER   Follow the steps from the below web page to build the i.MX BSP and the gui example code. https://docs.nxp.com/bundle/GUIGUIDERUG-1.6.1/page/topics/yocto.html   After the gui-guider build completed, use the 'scp' command to transfer the gui_guider executable file to the board. Execute the command on your host PC like this: $ scp bld-imx93evk/tmp/work/armv8a-poky-linux/gui-guider/1.6.0-r0/image/usr/bin/gui_guider root@<Your Board IP address>:/ Note: You could use a router to connect your board and your host PC. They are on the same network so could use the 'scp' command to transfer the file to your board.   On your board, type the following commands to execute the gui. $ chmod 755 gui_guider $ ./gui_guider &   Then the GUI is running like this:   Now, let me explain how to find out the gpio number. Type the following command to show the mapping addresses of gpio. root@imx93evk:/# cat /sys/kernel/debug/gpio gpiochip3: GPIOs 0-31, parent: platform/47400080.gpio, 47400080.gpio: gpiochip0: GPIOs 32-63, parent: platform/43810080.gpio, 43810080.gpio: gpiochip1: GPIOs 64-95, parent: platform/43820080.gpio, 43820080.gpio: gpio-64 ( |cd ) in hi IRQ ACTIVE LOW gpio-71 ( |regulator-usdhc2 ) out lo gpiochip2: GPIOs 96-127, parent: platform/43830080.gpio, 43830080.gpio: gpiochip6: GPIOs 472-477, parent: i2c/0-001a, wm8962, can sleep: gpiochip5: GPIOs 478-487, parent: platform/adp5585-gpio.1.auto, adp5585-gpio, can sleep: gpio-479 ( |regulator-audio-pwr ) out hi gpio-483 ( |regulator-can2-stby ) out hi ACTIVE LOW gpio-486 ( |enable ) out hi gpiochip4: GPIOs 488-511, parent: i2c/1-0022, 1-0022, can sleep: gpio-492 ( |Headphone detection ) in lo IRQ gpio-501 ( |? ) out hi gpio-502 ( |regulator-vdd-12v ) out hi gpio-505 ( |reset ) out lo gpio-507 ( |? ) out hi gpio-508 ( |reset ) out lo ACTIVE LOW   The gpio pins of two buttons are GPIO2_IO23 and GPIO2_IO24. They are belongs to gpio2. In the imx93.dtsi, the gpio2's address is "gpio2: gpio@43810080". So, base on the information output from "/sys/kernel/debug/gpio", the gpio2 is mapping to "gpiochip0: GPIOs 32-63". So, the GPIO2_IO23 is 32+23=55, and the GPIO2_IO24 is 32+24=56.   To verify the gpio number is correct or not. We could do the following test. root@imx93evk:/# echo 55 > /sys/class/gpio/export root@imx93evk:/# echo in > /sys/class/gpio/gpio55/direction root@imx93evk:/# echo 56 > /sys/class/gpio/export root@imx93evk:/# echo in > /sys/class/gpio/gpio56/direction   Then, run these two commands to check the values. root@imx93evk:/# cat /sys/class/gpio/gpio55/value root@imx93evk:/# cat /sys/class/gpio/gpio55/value   When the button is not pressed, the value is 1. When press the button, the value is 0.  We could add the same in the GUI's custom.c. Open the GUI Guider software and add the code in the custom.c. /********************* * INCLUDES *********************/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <fcntl.h> #include "lvgl.h" #include "custom.h" #include "ui_Aircon.h" #include "guider_customer_fonts.h" /********************** * STATIC VARIABLES **********************/ int fdbtn1,fdbtn2,fdgpio; int btn1_pressed; int btn2_pressed; char btn1_value, btn2_value; void custom_func(void) { fdbtn1 = open("/sys/class/gpio/gpio55/value", O_RDWR); fdbtn2 = open("/sys/class/gpio/gpio56/value", O_RDWR); read(fdbtn1, &btn1_value, 1); read(fdbtn2, &btn2_value, 1); if(btn1_value=='0' && btn1_pressed) { btn1_pressed=0; ui_aircon_update_temp(0, kAIRCON_TempUp); } if(btn1_value=='1') btn1_pressed=1; if(btn2_value=='0' && btn2_pressed) { btn2_pressed=0; ui_aircon_update_temp(0, kAIRCON_TempDown); } if(btn2_value=='1') btn2_pressed=1; close(fdbtn1); close(fdbtn2); } void custom_init(lv_ui *ui) { fdbtn1 = open("/sys/class/gpio/gpio55/value", O_WRONLY); if (fdbtn1 == -1) { fdgpio = open("/sys/class/gpio/export", O_WRONLY); write(fdgpio,"55",3); write(fdgpio,"56",3); close(fdgpio); fdgpio = open("/sys/class/gpio/gpio55/direction", O_WRONLY); write(fdgpio,"in",3); close(fdgpio); fdgpio = open("/sys/class/gpio/gpio56/direction", O_WRONLY); write(fdgpio,"in",3); close(fdgpio); } else close(fdbtn1); ... ... ... ...   Add the custom_func() in the custom.h. #ifndef __CUSTOM_H_ #define __CUSTOM_H_ #ifdef __cplusplus extern "C" { #endif #include "gui_guider.h" void custom_init(lv_ui *ui); + void custom_func(void);   Also, need to add the custom function() into the dead loop in main.c.   To modify the code, bld-imx93evk$ vim tmp/work/armv8a-poky-linux/gui-guider/1.6.0-r0/gui-guider-1.6.0/ports/linux/main.c   while(1) { + custom_func(); // <--- Add the custom function here. /* Periodically call the lv_task handler. * It could be done in a timer interrupt or an OS task too.*/ time_till_next = lv_wayland_timer_handler(); #if LV_USE_VIDEO video_play(&guider_ui); #endif /* Run until the last window closes */ if (!lv_wayland_window_is_open(NULL)) { break; }   Re-build the code after modified. bld-imx93evk$ bitbake gui-guider -c compile -f   Build the whole image again. bld-imx93evk$ bitbake gui-guider Then use the 'scp' command to transfer the new gui-guider file to the board.   Finally, you can use the buttons on the EVK board to set the temperature up and down.                          
View full article
i.MX8 series contains internal HiFi4 DSP. It is targeted for Audio related signal processing. SOF (Sound Open Firmware) is open source audio DSP firmware, driver and SDK. This document introduces basic theory about IIR/FIR digital filters, how to design IIR/FIR digital filters and the Equalizer filters implementation by SOF. After that, the document also describes how HiFi4 DSP MAC engine accelerate the EQ filters calculation.
View full article
In defaut Linux BSP, NXP implemented LVDS to HDMI(it6263) and MIPI-DSI to HDMI(adv7535) bridge chip drivers. And these drivers need read the EDID from display, then apply the timing parameters to DRM driver. But for the use case that bridge chip -> Serializer -> Deserializer -> LCD Panel use case, there is no EDID. The attached are reference patches for such use case, it combined the bridge chip to panel directly, and no EDID is needed. The patches are tested on iMX8QXP MEK with bridge chip + panel mode, both of them can see the fb0 device under /sys/class/graphics/ folder, also can see card under  /sys/class/drm/. Display works fine with DTS selected 720P panel mode. [2020-06-24]: Add patches for L4.14.98 kernel: Android_Auto_P9.0.0_GA2.1.0_Kernel_No_EDID_IT6263.patch L4.14.98-iMX8QXP-MEK-ADV7535-MIPI-DSI-to-HDMI-bridge-chip-com.patch
View full article
Tips collected from zhaoyang-b49593 and dandouglass-b41520 while enabling redundant boot: Using i.MX 8MQ, same method can be applied for other i.MX devices that support redundant boot, see SoC Reference Manual. As described on the RM, if primary image authentication fails the ROM can reset and try booting a secondary image. This feature is only available on closed mode with properly signed binaries, otherwise the ROM boots the primary image despite the auth failure. For the i.MX 8MQ, the secondary image must start with spl, not HDMI firmware. Note, there is no ROM redundancy for the hdmi fw, if it is corrupt user can store a 2nd copy on a different memory address and update at run time. Steps to generate a dual spl image: 1. Build and Sign bootable binary (spl, u-boot, atf, fw, etc) Use the Yocto BSP or follow this post to build outside the Yocto environment. To sign the binary, follow the documentation on u-boot source: <u-boot>/doc/imx/habv4/guides/mx8m_secure_boot.txt Program image to the SD card: dd if=signed_flash.bin of=<sd path> bs=1024 seek=33 After boot you can use "hab_status" to verify that no events were generated: u-boot=> hab_status Secure boot disabled HAB Configuration: 0xf0, HAB State: 0x66 2. Corrupt spl on your boot image You can corrupt anywhere on the spl signed area. For easier visualization at boot time we can corrupt the SPL banner. First create a copy: cp signed_flash.bin signed_flash_corrupt.bin Find the banner: hexdump -C signed_flash.bin | grep 2019 00020190 26 1c 40 92 04 00 80 d2 05 01 80 52 c4 20 04 aa |&[email protected]. ..| 0002eac0 32 30 31 39 2e 30 34 2d 30 30 30 32 39 2d 67 34 |2019.04-00029-g4| 000dde10 3a 20 20 00 55 2d 42 6f 6f 74 20 32 30 31 39 2e |: .U-Boot 2019.| 0002eac3 is on spl area, where "9" for 2019 is, replace by "X" printf "X" > X dd if=X of=signed_flash_corrupt.bin seek=$((0x2eac3)) bs=1 conv=notrunc Verify corrupt binary hexdump -C -s 0x2eac0 -n 64 signed_flash_corrupt.bin 0002eac0 32 30 31 58 2e 30 34 2d 30 30 30 32 39 2d 67 34 |201X.04-00029-g4| 0002ead0 37 63 31 39 32 32 20 28 41 70 72 20 32 37 20 32 |7c1922 (Apr 27 2| Transfer image to SD Card dd if=signed_flash_corrupt.bin of=<sd path> bs=1024 seek=33 Now, you should see hab events after running "hab_status" on u-boot 3. Create a secondary boot image This can be the same content as your primary image without the HDMI fw or it can be a different spl image. For easier visualization, we can change the SPL banner, on the code this time. Modify banner at ./common/spl/spl.c as: - puts("\nU-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " + puts("\nSecondary U-Boot " SPL_TPL_NAME " " PLAIN_VERSION " (" U_BOOT_DATE " - " As mentioned above, we want our boot image without the HDMI fw, when running imx-mkimage use the flash_evk_no_hdmi target: make SOC=iMX8MQ flash_evk_no_hdmi Sign the image as in step 1. If you program the new image to the SD you should see the new banner. Make sure to run hab_status to confirm that no HAB events are generated. 4. Program SRK Hash and Close SoC Follow the documentation on u-boot source for SRK programming and closing the device: <u-boot>/doc/imx/habv4/guides/mx8m_secure_boot.txt Before closing the SoC, but after the SRK is programmed, try your images to confirm no HAB events are generated. Be careful with this step, errors could brick your board. This step is irreversible. After closing the SoC it will only boot signed images. 5. Create dual bootloader image We can concatenate our binaries to create a single file, let's use 2MB distance between primary and secondary images: For the working primary image: objcopy -I binary -O binary --pad-to 0x200000 --gap-fill=0x00 signed_flash.bin 1st-spl_pad.bin cat 1st-spl_pad.bin secondary2_nohdmifw_signed_flash.bin > 1st-spl_pad_2nd-spl.bin Or for the corrupt primary image experiment: objcopy -I binary -O binary --pad-to 0x200000 --gap-fill=0x00 signed_flash_corrupt.bin 1st-spl_pad.bin cat 1st-spl_pad.bin secondary2_nohdmifw_signed_flash.bin > 1st-spl_pad_2nd-spl.bin Program it to the SD card on 0x8400 offset (33k) dd if=1st-spl_pad_2nd-spl.bin of=<sd path> bs=1024 seek=33 && sync 6. Add Secondary image table Follow the format on the RM, this is only 20 bytes long. For a 2MB distance between the table and the secondary image we can use "0x1000" on the firstSectorNumber field. 2MB/512 = 4096 (0x1000) The perl script attached, genSecTable.pl, can be used to generate it. perl genSecTable.pl 0x1000 Program it to the SD card on 0x8200 offset dd if=secTable.bin of=<sd path> bs=1 seek=$((0x8200)) && sync 7. Verify secondary image is booting If using the corrupt primary image, you should see the spl with the "Secondary U-Boot SPL..." banner. You can also read the persist secondary boot bit. u-boot=> md.l 0x30390098 1 30390098: 40000000 ...@ The work can be extended patching spl for in case of u-boot authentication failure, spl can try to authenticate and jump to the secondary u-boot.
View full article
Recipes to include Amazon's Alexa Voice Services in your applications. Step 1 : Get iMX Yocto AVS setup environment Review the steps under Chapter 3 of the i.MX_Yocto_Project_User'sGuide.pdf on the L4.X LINUX_DOCS to prepare your host machine. Including at least the following essential Yocto packages $ sudo apt-get install gawk wget git-core diffstat unzip texinfo \ gcc-multilib build-essential chrpath socat libsdl1.2-dev u-boot-tools Install the i.MX NXP AVS repo Create/Move to a directory where you want to install the AVS yocto build enviroment. Let's call this as <yocto_dir> $ cd <yocto_dir> $ repo init -u https://source.codeaurora.org/external/imxsupport/meta-avs-demos -b master -m imx-alexa-sdk-4.9.51-8mq_ga.xml Download the AVS BSP build environment: $ repo sync Step 2: Setup yocto for Alexa_SDK image with AVS-SETUP-DEMO script: Run the avs-setup-demo script as follows to setup your environment for the imx8mqevk board: $ MACHINE=imx8mqevk DISTRO=fsl-imx-xwayland source avs-setup-demo.sh -b <build_sdk_8M> Where <build_sdk> is the name you will give to your build folder. After acepting the EULA the script will prompt if you want to enable: Sound Card selection The following Sound Cards are supported on the build: 2-Mic Synaptics/Conexant 2-Mic TechNexion Voice Hat (with DSPConcepts SW) The script will prompt to select the soundcard you will be using: Which Sound Card are you going to use? Synaptics/Conexant .................... 1 VoiceHat (for DSPConcepts SW) ......... 2 Type the number of your selection and press Enter... Install Alexa SDK Next option is to select if you want to pre-install the AVS SDK software on the image. Do you want to build/include the AVS_SDK package on this image(Y/N)? If you select YES, then your image will contain the AVS SDK ready to use (after authentication). Note this AVS_SDK will not have WakeWord detection support, but it can be added on runtime. If your selection was NO, then you can always manually fetch and build the AVS_SDK on runtime. All the packages dependencies will be already there, so only fetching the AVS_SDK source code and building it is required. Finish avs-image configuration At the end you will see a text according with the configuration you select for your image build. Next is an example for a Preinstalled AVS_SDK with Synaptics Sound Card support ============================================================ AVS configuration is now ready at conf/local.conf - Sound Card = Synaptics - Alexa SDK 1.7 pre-installed - Wifi supported You are ready to bitbake your AVS demo image now:   bitbake avs-image If you want to use QT5DisplayCards, use then:   bitbake avs-image-qt5 ============================================================ Step 3: Build the AVS image Go to your <build_sdk> directory and start the build of the avs-image There are 2 options Regular Build: $ cd  <yocto_dir>/<build_sdk>   $ bitbake avs-image With QT5 support included: $ cd  <yocto_dir>/<build_sdk>   $ bitbake avs-image-qt5 The image with QT5 is useful if you want to add some GUI for example to render DisplayCards. Step 4 : Deploying the built images to SD/MMC card to boot on target board. After a build has succesfully completed, the created image resides at <build_sdk>/tmp/deploy/images/imx8mqevk/ In this directory, you will find imx8mqevk-avs--.sdcard image or imx8mqevk-avs-qt5--.sdcard, depending on the build you chose on Step3. To Flash the .sdcard image into an SD Card follow the next steps: Extract and copy the .sdcard file to your SD Card $ cd <build_sdk>/tmp/deploy/images/imx8mqevk/ $ cp -v imx8mqevk-avs-synaptics-1.7.sdcard.bz2 <workdir> $ cd <workdir> $ sudo bzip2 -d imx8mqevk-avs-synaptics-1.7.sdcard.bz2 $ sudo dd if=imx8mqevk-avs-synaptics-1.7.sdcard.bz2 of=/dev/sd<part> bs=1M && sync $ sync Properly eject the SD Card: $ sudo eject /dev/sd<part> Insert the flashed SD Card on the 8M EVK and boot. Follow the instructions at startup to setup your AVS and run the SampleApp. NXP Documentation For a more comprehensive understanding of Yocto, its features and setup; more image build and deployment options and customization, please take a look at the i.MX_Yocto_Project_User's_Guide.pdf document from the Linux documents bundle mentioned at the beginning of this document. For a more detailed description of the Linux BSP, u-boot use and configuration, please take a look at the i.MX_Linux_User's_Guide.pdf document from the Linux documents bundle mentioned at the beginning of this document.
View full article
  Platform: i.MX8MP EVK , L6.1.22-2.0.0 LT9211 is a chip that can realize the conversion of MIPI DSI signals to LVDS signals. This patch is based on this mainline driver:https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/drivers/gpu/drm/bridge/lontium-lt9211.c Keypoint Move lt9211_host_attach function to lt9211_attach to skip bridge attach error.  
View full article
If you already followed the i.MX31ADS Compiling Uboot steps or got a compiled U-boot image, copy u-boot.bin to /tftpboot: $ cp u-boot.bin /tftpboot If you have RedBoot on your board follow the "Installing RedBoot using U-Boot", but if you already have been installed U-Boot and are just installing a new version jump to "Installing U-Boot using U-Boot". Installing U-Boot using RedBoot Load the U-boot image to board RAM: RedBoot> load -v -r -b 0x100000 /tftpboot/u-boot.bin -h 10.29.244.27 Where: 0x100000 is the memory position where the firmware image will be downloaded; 10.29.244.27 is your host IP which is running the TFTP server. Erase the Flash: RedBoot> fis erase -f 0xA0000000 -l 0x00040000 To make sure about what area you should erase, perform the fis list command and compare the areas Write the image to Flash: RedBoot> fis write -f 0xA0000000 -b 0x100000 -l 0x00040000 Reset the board: RedBoot> reset You should see something like this: U-Boot 1.3.3 (May 26 2008 - 11:19:43) CPU: Freescale i.MX31 at 531 MHz Board: MX31ADS DRAM: 128 MB Flash: 32 MB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 => Installing U-Boot using U-Boot First upload the U-Boot firmware using Network (Transferring file over network ) or Serial (Transferring File Over Serial) This is a common serial transfer output: => loady ## Ready for binary (ymodem) download to 0x80800000 at 115200 bps... CCmode, 1359(SOH)/0(STX)/0(CAN) packets, 9 retries ## Total Size = 0x0002a388 = 172936 Bytes Unprotect the bootloader flash area: protect off A0000000 A003FFFF Erase the flash blocks: erase A0000000 A003FFFF Copy from RAM to Flash: If firmware has been thansfered over serial: cp.b 80800000 A0000000 2a388 If firmware has been transfered over tftp: cp.b 100000 A0000000 2a388 Installing U-Boot using OpenOCD JTAG/GDB To do that you need to compile U-Boot with this define: #define CONFIG_SKIP_LOWLEVEL_INIT 1 Then enter in GDB and execute: (arm-gdb) restore u-boot.bin binary 0x87f00000 Restoring binary file u-boot.bin into memory (0x87f00000 to 0x87f2c790) (arm-gdb) set $pc = 0x87f00000 (arm-gdb) c You will see U-Boot starting in the serial console. Then compile a new U-Boot without the CONFIG_SKIP_LOWLEVEL_INIT and follow the Installing U-Boot using U-Boot to install U-Boot in the flash. Installing U-Boot using LogicLoader losh> ifconfig sm0 dhcp losh> load raw 0x81000000 115764 /tftp/10.29.244.27:u-boot.bin.lite losh> exec 0x81000000 -
View full article
This is a copy of the currently posted i.MX25 reference manual to be used to enter community comments.  Please feel free to add inline comments in this reference manual. You can point out where more information is needed or where existing information is incorrect.  You can also enter information in your comment that expands on existing information in the document, based on your experience with the device.  If you are pointing out that more information is needed in a paragraph or a section, please be very specific, not “needs more information”.  Your comments in this manual may help other members and will drive improvements in this and future documentation. Note: The doc viewer does not support going directly to a specified page.  Instead of manually paging through one page at a time, you can do a search on a string on a page such as "types of resets", or you can go to chapter links listed in the inline comments.  To do this, page down to the comments below the doc view, select "Inline Comments", sort the comments by "page", and then select the chapter you want to view.
View full article
Hi all, I'm trying to port Android JB to a custom board based on imx6q. I'm not able to get the launcher. And even the display is shifting to right. The kernel i've tested with linux where the display is proper. Below is log. In the log Marked are the issues I'm facing. Any advice is helpful. I'm in very critical stage. Please help me to resolve this. I'm the source from android_jb4.2.2_1.0.0-ga_source bundle package. Uncompressing Linux... done, booting the kernel. Initializing cgroup subsys cpu Linux version 3.0.35-gcbaa4e0-dirty (rangam@PHYTECIndia) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #11 SMP PREEMPT Fri Jul 26 16:57:13 IST 2013 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Phytec Memory policy: ECC disabled, Data cache writealloc CPU identified as i.MX6Q, silicon rev 1.2 PERCPU: Embedded 7 pages/cpu @c13ec000 s6592 r8192 d13888 u32768 Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 215040 Kernel command line: console=ttymxc3,115200 androidboot.hardware=freescale androidboot.console=ttymxc3  init=/init vmalloc=256M video=mxcfb1:dev=ldb,Primeview-PM070WL4,bpp =16 fbmem=10M vt.global_cursor_default=0 consoleblank=0 board_mx6q_phyflex.csi0=none board_mx6q_phyflex.csi1=none video=mxcfb1:off video=mxcfb2:off ip=none root=/dev/mmcbl k0p2 rootfstype=ext4 noinitrd rootwait mtdparts=n25q128:512k(barebox)ro,128k(bareboxenv),2M(splash),-(kernel);gpmi-nand:512k(barebox)ro,128k(bareboxenv),2M(splash),8M(kern el),-(root) PID hash table entries: 4096 (order: 2, 16384 bytes) Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) Memory: 592MB 256MB = 848MB total Memory: 847036k/847036k available, 201540k reserved, 311296K highmem Virtual kernel memory layout:     vector  : 0xffff0000 - 0xffff1000   (   4 kB)     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)     DMA     : 0xfbe00000 - 0xffe00000   (  64 MB)     vmalloc : 0xe2800000 - 0xf2000000   ( 248 MB)     lowmem  : 0xc0000000 - 0xe2000000   ( 544 MB)     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)     modules : 0xbf000000 - 0xbfe00000   (  14 MB)       .init : 0xc0008000 - 0xc0047000   ( 252 kB)       .text : 0xc0047000 - 0xc09dbebc   (9812 kB)       .data : 0xc09dc000 - 0xc0a59f18   ( 504 kB)        .bss : 0xc0a59f3c - 0xc0be2d40   (1572 kB) Preemptible hierarchical RCU implementation. NR_IRQS:624 MXC GPIO hardware sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 1431655ms arm_max_freq=1GHz MXC_Early serial console at MMIO 0x21f0000 (options '115200') bootconsole [ttymxc3] enabled Console: colour dummy device 80x30 Calibrating delay loop... 789.70 BogoMIPS (lpj=3948544) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 Initializing cgroup subsys debug Initializing cgroup subsys cpuacct Initializing cgroup subsys freezer 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 (3158.83 BogoMIPS). devtmpfs: initialized print_constraints: dummy: NET: Registered protocol family 16 print_constraints: vddpu: 725 <--> 1300 mV at 1100 mV fast normal print_constraints: vddcore: 725 <--> 1300 mV at 1100 mV fast normal print_constraints: vddsoc: 725 <--> 1300 mV at 1100 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: 2625 <--> 3400 mV at 3000 mV fast normal imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) imx_add_mxc_pwm:pdata=  (null) 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 bio: create slab <bio-0> at 0 mxs-dma mxs-dma-apbh: initialized print_constraints: vmmc: 3300 mV print_constraints: IOVDD: 3300 mV print_constraints: DVDD: 1800 mV print_constraints: AVDD: 3300 mV print_constraints: DRVDD: 3300 mV vgaarb: loaded i2c-core: driver [da9063] using legacy suspend method i2c-core: driver [da9063] using legacy resume method SCSI subsystem initialized spi_imx imx6q-ecspi.2: 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 $ i2c-gpio i2c-gpio.3: using pins 109 (SDA) and 108 (SCL) print_constraints: VDDCORE: 730 <--> 1280 mV at 1300 mV at 2000 mA normal print_constraints: VDDSOC: 730 <--> 1280 mV at 1300 mV at 500 mA normal print_constraints: VDD_DDR3: 1500 mV at 2000 mA print_constraints: VDD_3V3: 3300 mV at 1500 mA print_constraints: VDD_BUCKMEM: 3300 mV at 1500 mA print_constraints: VDD_ETH: 1200 mV at 3000 mA print_constraints: VDD_ETH_IO: 3300 mV print_constraints: VDD_MX6_SNVS: 3300 mV print_constraints: VDD_3V3_PMIC_IO: 3300 mV print_constraints: VDD_SD0: 3300 mV print_constraints: VDD_SD1: 3300 mV print_constraints: VDD_MX6_HIGH: 3000 mV da9063 0-0058: Device detected DA9063 max7300: probe of 0-0040 failed with error -5 stmpe 1-0041: stmpe811 detected, chip id: 0x811 stmpe 2-0041: failed to read regs 0x0: -5 stmpe: probe of 2-0041 failed with error -5 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) 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 cfg80211: Calling CRDA to update world regulatory domain Switching to clocksource mxc_timer1 NET: Registered protocol family 2 IP route cache hash table entries: 32768 (order: 5, 131072 bytes) TCP established hash table entries: 131072 (order: 8, 1048576 bytes) TCP bind hash table entries: 65536 (order: 7, 786432 bytes) TCP: Hash tables configured (established 131072 bind 65536) TCP reno registered UDP hash table entries: 512 (order: 2, 16384 bytes) UDP-Lite hash table entries: 512 (order: 2, 16384 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. Static Power Management for Freescale i.MX6 wait mode is enabled for i.MX6 cpaddr = e2880000 suspend_iram_base=e291c000 PM driver module loaded link up failed, DB_R0:0x00913b00, DB_R1:0x08200000! IMX PCIe port: link down with power supply 0! IMX usb wakeup probe add wake up source irq 75 IMX usb wakeup probe cpu regulator mode:ldo_bypass _regulator_get: get() with no identifier mx6_cpu_regulator_init: failed to get pu regulator i.MXC CPU frequency driver highmem bounce pool size: 64 pages ashmem: initialized NTFS driver 2.1.30 [Flags: R/O]. JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc. fuse init (API version 7.16) msgmni has been set to 1046 NET: Registered protocol family 38 cryptodev: driver loaded. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) mxc_sdc_fb mxc_sdc_fb.0: register mxc display driver ldb _regulator_get: get() with no identifier ldb_clk to di clk: ldb_di0_clk -> ipu1_di0_clk mxc_sdc_fb mxc_sdc_fb.1: mxcfb1 is turned off! imx-sdma imx-sdma: loaded firmware 1.1 imx-sdma imx-sdma: initialized Serial: IMX driver imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX console [ttymxc3] enabled, bootconsole disabled console [ttymxc3] enabled, bootconsole disabled loop: module loaded at24 0-0050: 4096 byte 24c32 EEPROM, writable, 8 bytes/write at24 2-0052: 512 byte 24c04 EEPROM, writable, 16 bytes/write No sata disk. m25p80 spi2.0: unrecognized id n25q128 m25p80 spi2.0: unrecognized JEDEC id 20ba18 GPIO NAND driver, �© 2004 Simtec Electronics NAND device: Manufacturer ID: 0xec, Chip ID: 0xd3 (Samsung NAND 1GiB 3,3V 8-bit) 5 cmdlinepart partitions found on MTD device gpmi-nand Creating 5 MTD partitions on "gpmi-nand": 0x000000000000-0x000000080000 : "barebox" 0x000000080000-0x0000000a0000 : "bareboxenv" 0x0000000a0000-0x0000002a0000 : "splash" 0x0000002a0000-0x000000aa0000 : "kernel" 0x000000aa0000-0x000040000000 : "root" GPMI NAND driver registered. (IMX) vcan: Virtual CAN interface driver CAN device driver interface flexcan netdevice driver flexcan imx6q-flexcan.0: device registered (reg_base=e29b0000, 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 usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: Freescale On-Chip EHCI Host Controller usb usb1: Manufacturer: Linux 3.0.35-gcbaa4e0-dirty ehci_hcd usb usb1: SerialNumber: fsl-ehci.0 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 usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb2: Product: Freescale On-Chip EHCI Host Controller usb usb2: Manufacturer: Linux 3.0.35-gcbaa4e0-dirty ehci_hcd usb usb2: SerialNumber: fsl-ehci.1 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. 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: stmpe-ts as /devices/virtual/input/input0 i2c-core: driver [isl29023] using legacy suspend method i2c-core: driver [isl29023] using legacy resume method using rtc device, da9063-rtc, for alarms da9063-rtc da9063-rtc: rtc core: registered da9063-rtc as rtc0 da9063-rtc da9063-rtc: Failed to request ALARM IRQ. rtc-pcf8563 1-0051: chip found, driver version 0.4.3 rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc1 snvs_rtc snvs_rtc.0: rtc core: registered snvs_rtc as rtc2 i2c /dev entries driver Linux video capture interface: v2.00 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video16 mxc_v4l2_output mxc_v4l2_output.0: V4L2 device registered as video17 usbcore: registered new interface driver uvcvideo USB Video Class driver (v1.1.0) Driver for 1-wire Dallas network protocol. i2c-core: driver [mag3110] using legacy suspend method i2c-core: driver [mag3110] using legacy resume method imx2-wdt imx2-wdt.0: IMX2+ Watchdog Timer enabled. timeout=60s (nowayout=1) Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCILL protocol initialized sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman mmc0: SDHCI controller on platform [sdhci-esdhc-imx.2] using DMA w1_master_driver w1 bus master: Family 43 for 43.000000436e56.c7 is not registered. mmc1: SDHCI controller on platform [sdhci-esdhc-imx.1] using DMA VPU initialized mxc_asrc registered revserved_memory_account:viv_gpu registerd Thermal calibration data is 0x5914c97d Thermal sensor with ratio = 185 w1_master_driver w1 bus master: Family 43 for 43.0000003be6e7.b6 is not registered. Anatop Thermal registered as thermal_zone0 anatop_thermal_probe: default cooling device is cpufreq! HDMI CEC initialized leds-pca953x 1-0062: setting platform data usbcore: registered new interface driver usbhid usbhid: USB HID core driver usb 2-1: new high speed USB device number 2 using fsl-ehci logger: created 256K log 'log_main' logger: created 256K log 'log_events' 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 imx-hdmi-soc-dai imx-hdmi-soc-dai.0: Failed: Load HDMI-video first. tlv320aic3x-codec 1-0018: asoc: failed to add kcontrol Left Line1R Mux tlv320aic3x-codec 1-0018: asoc: failed to add kcontrol Left Line1L Mux asoc: tlv320aic3x-hifi <-> imx-ssi.1 mapping ok Initialize HDMI-audio failed. Load HDMI-video first! ALSA device list:   #0: imx_tlv320aic3007-audio oprofile: using arm/armv7-ca9 GACT probability NOT on Mirror/redirect action on u32 classifier     Actions configured Netfilter messages via NETLINK v0.30. nf_conntrack version 0.5.0 (13234 buckets, 52936 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 Mobile IPv6 ip6_tables: (C) 2000-2006 Netfilter Core Team IPv6 over IPv4 tunneling driver NET: Registered protocol family 17 mmc0: new SD card at address e624 NET: Registered protocol family 15 can: controller area network core (rev 20090105 abi 😎 NET: Registered protocol family 29 mmcblk0: mmc0:e624 SU02G 1.84 GiB mmcblk0: p1 p2 p3 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 usb 2-1: New USB device found, idVendor=0451, idProduct=8042 usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 hub 2-1:1.0: USB hub found hub 2-1:1.0: 4 ports detected DVFS driver module loaded regulator_init_complete: VDD_MX6_HIGH: incomplete constraints, leaving on regulator_init_complete: VDD_SD1: incomplete constraints, leaving on regulator_init_complete: VDD_SD0: incomplete constraints, leaving on regulator_init_complete: VDD_3V3_PMIC_IO: incomplete constraints, leaving on regulator_init_complete: VDD_MX6_SNVS: incomplete constraints, leaving on regulator_init_complete: VDD_ETH_IO: incomplete constraints, leaving on regulator_init_complete: VDD_ETH: incomplete constraints, leaving on regulator_init_complete: VDD_3V3: incomplete constraints, leaving on regulator_init_complete: VDD_DDR3: incomplete constraints, leaving on regulator_init_complete: VDDSOC: incomplete constraints, leaving on regulator_init_complete: VDDCORE: incomplete constraints, leaving on regulator_init_complete: DRVDD: incomplete constraints, leaving on regulator_init_complete: AVDD: incomplete constraints, leaving on regulator_init_complete: DVDD: incomplete constraints, leaving on regulator_init_complete: IOVDD: incomplete constraints, leaving on da9063-rtc da9063-rtc: setting system clock to 2000-01-01 00:01:34 UTC (946684894) EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) VFS: Mounted root (ext4 filesystem) on device 179:2. devtmpfs: mounted Freeing init memory: 252K init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead. init: cannot open '/initlogo.rle' EXT4-fs (mmcblk0p2): re-mounted. Opts: (null) init: Unable to open persistent property directory /data/property errno: 2 init: using deprecated syntax for specifying property 'ro.product.manufacturer', use ${name} instead init: using deprecated syntax for specifying property 'ro.product.model', use ${name} instead init: using deprecated syntax for specifying property 'ro.serialno', use ${name} instead init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery' android_usb: already disabled android_usb: already disabled mtp_bind_config root@android:/ # request_suspend_state: wakeup (3->0) at 8290682004 (2000-01-01 00:01:39.585311336 UTC) init: untracked pid 2494 exited request_suspend_state: wakeup (0->0) at 8890367671 (2000-01-01 00:01:40.184997336 UTC) init: untracked pid 2543 exited root@android:/ # root@android:/ # root@android:/ # root@android:/ # root@android:/ # root@android:/ # lrequest_suspend_state: wakeup (0->0) at 14500371003 (2000-01-01 00:01:45.795000669 UTC) init: untracked pid 2551 exited root@android:/ # logcat                                                       --------- beginning of /dev/log/main I/installd( 2495): installd firing up E/cutils  ( 2495): Failed to read /data/.layout_version: No such file or directory E/installd( 2495): Could not create directories; exiting. --------- beginning of /dev/log/system I/Vold    ( 2489): Vold 2.1 (the revenge) firing up D/Vold    ( 2489): Volume udisk state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume extsd state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media) D/Vold    ( 2489): Volume sdcard state changing 0 (No-Media) -> 2 (Pending) D/Vold    ( 2489): Volume sdcard state changing 2 (Pending) -> 1 (Idle-Unmounted) I/SurfaceFlinger( 2491): SurfaceFlinger is starting I/SurfaceFlinger( 2491): SurfaceFlinger's main thread ready to run. Initializing graphics H/W... D/libEGL  ( 2491): loaded /system/lib/egl/libEGL_VIVANTE.so D/libEGL  ( 2491): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so D/libEGL  ( 2491): loaded /system/lib/egl/libGLESv2_VIVANTE.so W/imx6.gralloc( 2491): using (fd=15) W/imx6.gralloc( 2491): id           = DISP3 BG W/imx6.gralloc( 2491): xres         = 800 px W/imx6.gralloc( 2491): yres         = 480 px W/imx6.gralloc( 2491): xres_virtual = 800 px W/imx6.gralloc( 2491): yres_virtual = 1536 px W/imx6.gralloc( 2491): bpp          = 16 W/imx6.gralloc( 2491): r            = 11:5 W/imx6.gralloc( 2491): g            =  5:6 W/imx6.gralloc( 2491): b            =  0:5 W/imx6.gralloc( 2491): width        = 127 mm (160.000000 dpi) W/imx6.gralloc( 2491): height       = 76 mm (160.421051 dpi) W/imx6.gralloc( 2491): refresh rate = 35.70 Hz I/FslHwcomposer( 2491): fb0 is ldb I/FslHwcomposer( 2491):  device I/FslHwcomposer( 2491): fb1 is overlay device W/FslHwcomposer( 2491): open /sys/class/graphics/fb2 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb3 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb4 failed W/FslHwcomposer( 2491): open /sys/class/graphics/fb5 failed I/FslHwcomposer( 2491): hwcomposer: open framebuffer fb0 I/v_hwc   ( 2491): Detected display /dev/graphics/fb0 I/v_hwc   ( 2491): xres         = 800 px I/v_hwc   ( 2491): yres         = 480 px I/v_hwc   ( 2491): xres_virtual = 800 px I/v_hwc   ( 2491): yres_virtual = 1536 px I/v_hwc   ( 2491): width        = -1 mm (0.0 dpi) I/v_hwc   ( 2491): height       = -1 mm (0.0 dpi) I/v_hwc   ( 2491): refresh rate = 35.0 Hz E/v_hwc   ( 2491): open /dev/graphics/fb0 failed I/v_hwc   ( 2491): Vivante HWComposer v2.4 I/v_hwc   ( 2491): Device:               0x40039008 I/v_hwc   ( 2491): Separated 2D:         YES I/v_hwc   ( 2491): 2D PE20:              YES I/v_hwc   ( 2491): Multi-source blit:    NO I/v_hwc   ( 2491): Multi-source blit Ex: NO I/v_hwc   ( 2491): OPF/YUV blit/Tiling : NO I/v_hwc   ( 2491): Filter stretch      : NO I/FslHwcomposer( 2491): hwc_device_open,367 I/SurfaceFlinger( 2491): Using composer version 1.1 W/SurfaceFlinger( 2491): no suitable EGLConfig found, trying without EGL_FRAMEBUFFER_TARGET_ANDROID E/Trace   ( 2491): error opening trace file: No such file or directory (2) E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null E/SurfaceFlinger( 2491): HWComposer: framebufferTarget is null I/SurfaceFlinger( 2491): EGL informations: I/SurfaceFlinger( 2491): vendor    : Android I/SurfaceFlinger( 2491): version   : 1.4 Android META-EGL I/SurfaceFlinger( 2491): extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync EGL _ANDROID_image_native_buffer I/SurfaceFlinger( 2491): Client API: OpenGL_ES I/SurfaceFlinger( 2491): EGLSurface: 8-8-8-8, config=0x4b7d5138 I/SurfaceFlinger( 2491): OpenGL ES informations: I/SurfaceFlinger( 2491): vendor    : Vivante Corporation I/SurfaceFlinger( 2491): renderer  : GC2000 Graphics Engine I/SurfaceFlinger( 2491): version   : OpenGL ES-CM 1.1 I/SurfaceFlinger( 2491): extensions: GL_EXT_debug_marker GL_OES_blend_equation_separate GL_OES_blend_func_separate GL_OES_blend_subtract GL_OES_byte_coordinates GL_OES_com pressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_draw_texture GL_OES_extended_matrix_palette GL_OES_fixed_point GL_OES_framebuffer_object GL_OES_matrix_ get GL_OES_matrix_palette GL_OES_point_size_array GL_OES_point_sprite GL_OES_query_matrix GL_OES_read_format GL_OES_single_precision GL_OES_stencil_wrap GL_OES_texture_cub e_map GL_OES_texture_mirrored_repeat GL_OES_EGL_image GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_stencil1 GL_OES_stencil4 GL_OES_stencil8 GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_user_clip _plane GL_APPLE_texture_2D_limited_npot GL_EXT_texture_lod_bias GL_EXT_blend_minmax GL_EXT_read_format_bgra GL_EXT_multi_draw_arrays GL_OES_EGL_sync GL_APPLE_texture_forma t_BGRA8888 GL_APPLE_te I/SurfaceFlinger( 2491): GL_MAX_TEXTURE_SIZE = 8192 I/SurfaceFlinger( 2491): GL_MAX_VIEWPORT_DIMS = 8192 x 8192 D/AndroidRuntime( 2492): D/AndroidRuntime( 2492): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2492): CheckJNI is OFF I/AndroidRuntime( 2492): JNI options: '-Xjniopts:warnonly' D/SurfaceFlinger( 2491): Screen acquired, type=0 flinger=0x404f0318 D/libEGL  ( 2531): loaded /system/lib/egl/libEGL_VIVANTE.so D/libEGL  ( 2531): loaded /system/lib/egl/libGLESv1_CM_VIVANTE.so D/libEGL  ( 2531): loaded /system/lib/egl/libGLESv2_VIVANTE.so E/Trace   ( 2531): error opening trace file: No such file or directory (2) E/BufferQueue( 2491): [BootAnimation] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count I/mediaserver( 2494): ServiceManager: 0x40a56ef8 I/AudioFlinger( 2494): Using default 3000 mSec as standby time. I/CameraService( 2494): CameraService started (pid=2494) I/v_hwc   ( 2491): Display(0x4010c008) detected: format=306 800x480 I/v_hwc   ( 2491): Display buffer(0x40050de0) detected: physical=0x2f800000 I/v_hwc   ( 2491): Display buffer(0x40050e08) detected: physical=0x2f8bb800 I/FslCameraHAL( 2494): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2494): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2494): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/v_hwc   ( 2491): Display buffer(0x400d57a8) detected: physical=0x2f977000 I/AudioPolicyManagerBase( 2494): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2494): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2494): out rate 44100 W/audio_hw_primary( 2494): in rate 44100, channels 1 format 0 I/AudioFlinger( 2494): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2494): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2494): opened out stream...1086925552 I/AudioFlinger( 2494): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2494): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2494): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional D/dalvikvm( 2492): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2492): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2492): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2492): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2492): Profiling disabled. I/Zygote  ( 2492): Preloading classes... D/dalvikvm( 2492): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 1ms+0ms, total 3ms W/Environment( 2492): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2492): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2492): Shutting down VM W/dalvikvm( 2492): threadid=1: thread exiting with uncaught exception (group=0x4143c930) I/installd( 2542): installd firing up E/cutils  ( 2542): Failed to read /data/.layout_version: No such file or directory E/installd( 2542): Could not create directories; exiting. I/ServiceManager( 2488): service 'media.camera' died I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died D/AndroidRuntime( 2544): D/AndroidRuntime( 2544): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2544): CheckJNI is OFF I/AndroidRuntime( 2544): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2544): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2544): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2544): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2544): Added shared lib libnativehelper.so 0x0 I/mediaserver( 2543): ServiceManager: 0x40a68ef8 I/AudioFlinger( 2543): Using default 3000 mSec as standby time. I/CameraService( 2543): CameraService started (pid=2543) I/FslCameraHAL( 2543): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2543): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2543): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2543): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2543): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2543): out rate 44100 W/audio_hw_primary( 2543): in rate 44100, channels 1 format 0 I/AudioFlinger( 2543): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2543): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2543): opened out stream...1086774000 I/AudioFlinger( 2543): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2543): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2543): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/SamplingProfilerIntegration( 2544): Profiling disabled. I/Zygote  ( 2544): Preloading classes... D/dalvikvm( 2544): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 1ms+0ms, total 3ms W/Environment( 2544): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2544): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2544): Shutting down VM W/dalvikvm( 2544): threadid=1: thread exiting with uncaught exception (group=0x40b1a930) I/ServiceManager( 2488): service 'media.camera' died I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/mediaserver( 2551): ServiceManager: 0x41f7b000 I/AudioFlinger( 2551): Using default 3000 mSec as standby time. I/CameraService( 2551): CameraService started (pid=2551) I/FslCameraHAL( 2551): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2551): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2551): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2551): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2551): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2551): out rate 44100 W/audio_hw_primary( 2551): in rate 44100, channels 1 format 0 I/AudioFlinger( 2551): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2551): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2551): opened out stream...1106785632 I/AudioFlinger( 2551): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2551): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2551): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2562): installd firing up E/cutils  ( 2562): Failed to read /data/.layout_version: No such file or directory E/installd( 2562): Could not create directories; exiting. D/AndroidRuntime( 2561): D/AndroidRuntime( 2561): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2561): CheckJNI is OFF I/AndroidRuntime( 2561): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2561): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2561): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2561): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2561): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2561): Profiling disabled. I/Zygote  ( 2561): Preloading classes... D/dalvikvm( 2561): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+1ms, total 3ms W/Environment( 2561): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2561): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2561): Shutting down VM W/dalvikvm( 2561): threadid=1: thread exiting with uncaught exception (group=0x4200b930) I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2566): ServiceManager: 0x417df000 I/AudioFlinger( 2566): Using default 3000 mSec as standby time. I/CameraService( 2566): CameraService started (pid=2566) I/FslCameraHAL( 2566): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2566): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2566): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2566): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2566): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2566): out rate 44100 W/audio_hw_primary( 2566): in rate 44100, channels 1 format 0 I/AudioFlinger( 2566): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2566): open output stream drequest_suspend_state: wakeup (0->0) at 19200353004 (2000-01-01 00:01:50.494982670 UTC) evices 2, format 1, channels 3, sinit: untracked pid 2566 exited ample_rate 48000, flag 2 W/audio_hw_primary( 2566): opened out stream...1098806624 I/AudioFlinger( 2566): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2566): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2566): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/v_hwc   ( 2491): vsync thread exit: callback procs not registered. I/installd( 2572): installd firing up E/cutils  ( 2572): Failed to read /data/.layout_version: No such file or directory E/installd( 2572): Could not create directories; exiting. D/AndroidRuntime( 2571): D/AndroidRuntime( 2571): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2571): CheckJNI is OFF I/AndroidRuntime( 2571): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2571): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2571): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2571): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2571): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2571): Profiling disabled. I/Zygote  ( 2571): Preloading classes... D/dalvikvm( 2571): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+0ms, total 2ms W/Environment( 2571): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2571): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2571): Shutting down VM W/dalvikvm( 2571): threadid=1: thread exiting with uncaught exception (group=0x412e5930) I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2576): ServiceManager: 0x41724000 I/AudioFlinger( 2576): Using default 3000 mSec as standby time. I/CameraService( 2576): CameraService started (pid=2576) I/FslCameraHAL( 2576): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2576): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2576): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2576): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2576): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2576): out rate 44100 W/audio_hw_primary( 2576): in rate 44100, channels 1 format 0 I/AudioFlinger( 2576): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2576): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2576): opened out stream...1098040672 I/AudioFlinger( 2576): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2576): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2576): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2581): installd firing up E/cutils  ( 2581): Failed to read /data/.layout_version: No such file or directory E/installd( 2581): Could not create directories; exiting. D/AndroidRuntime( 2580): D/AndroidRuntime( 2580): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2580): CheckJNI is OFF I/AndroidRuntime( 2580): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2580): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2580): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2580): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2580): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2580): Profiling disabled. I/Zygote  ( 2580): Preloading classes... D/dalvikvm( 2580): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+0ms, total 3ms W/Environment( 2580): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2580): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2580): Shutting down VM W/dalvikvm( 2580): threadid=1: thread exiting with uncaught exception (group=0x40e62930) request_suspend_state: wakeup (0->0) at 23810412672 (2000-01-01 00:01:55.105042004 UTC) I/ServiceManager( 2488): service init: untracked pid 2576 exited 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2585): ServiceManager: 0x40bcdfb0 I/AudioFlinger( 2585): Using default 3000 mSec as standby time. I/CameraService( 2585): CameraService started (pid=2585) I/FslCameraHAL( 2585): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2585): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2585): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2585): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2585): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2585): out rate 44100 W/audio_hw_primary( 2585): in rate 44100, channels 1 format 0 I/AudioFlinger( 2585): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2585): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2585): opened out stream...1074431624 I/AudioFlinger( 2585): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2585): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2585): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional I/installd( 2590): installd firing up E/cutils  ( 2590): Failed to read /data/.layout_version: No such file or directory E/installd( 2590): Could not create directories; exiting. D/AndroidRuntime( 2589): D/AndroidRuntime( 2589): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<< D/AndroidRuntime( 2589): CheckJNI is OFF I/AndroidRuntime( 2589): JNI options: '-Xjniopts:warnonly' D/dalvikvm( 2589): Trying to load lib libjavacore.so 0x0 D/dalvikvm( 2589): Added shared lib libjavacore.so 0x0 D/dalvikvm( 2589): Trying to load lib libnativehelper.so 0x0 D/dalvikvm( 2589): Added shared lib libnativehelper.so 0x0 I/SamplingProfilerIntegration( 2589): Profiling disabled. I/Zygote  ( 2589): Preloading classes... D/dalvikvm( 2589): GC_EXPLICIT freed 36K, 9% free 419K/460K, paused 0ms+1ms, total 3ms W/Environment( 2589): EXTERNAL_STORAGE undefined; falling back to default W/dalvikvm( 2589): Exception Ljava/lang/NullPointerException; thrown while initializing Landroid/os/Debug; D/AndroidRuntime( 2589): Shutting down VM W/dalvikvm( 2589): threadid=1: thread exiting with uncaught exception (group=0x40ef1930) request_suspend_state: wakeup (0->0) at 29440367339 (2000-01-01 00:02:00.734997005 UTC) init: untracked pid 2585 exited I/ServiceManager( 2488): service 'media.audio_flinger' died I/ServiceManager( 2488): service 'media.player' died I/ServiceManager( 2488): service 'media.camera' died I/mediaserver( 2594): ServiceManager: 0x40b80fb0 I/AudioFlinger( 2594): Using default 3000 mSec as standby time. I/CameraService( 2594): CameraService started (pid=2594) I/FslCameraHAL( 2594): Face Back Camera is ov5642, orient is 0 I/FslCameraHAL( 2594): Face Front Camera is 0, orient is 0 I/FslCameraHAL( 2594): Camera ID 0: name ov5642, Facing 0, orientation 0, dev path I/AudioPolicyManagerBase( 2594): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf W/audio_hw_primary( 2594): card 0, id imxtlv320aic300 ,driver imx_tlv320aic30, name imx_tlv320aic3007-audio W/audio_hw_primary( 2594): out rate 44100 W/audio_hw_primary( 2594): in rate 44100, channels 1 format 0 I/AudioFlinger( 2594): loadHwModule() Loaded primary audio interface from Freescale i.MX Audio HW HAL (audio) handle 1 W/audio_hw_primary( 2594): open output stream devices 2, format 1, channels 3, sample_rate 48000, flag 2 W/audio_hw_primary( 2594): opened out stream...1074105088 I/AudioFlinger( 2594): HAL output buffer size 192 frames, normal mix buffer size 768 frames I/AudioMixer( 2594): found effect "Multichannel Downmix To Stereo" from The Android Open Source Project E/MonoPipe( 2594): Failed to fetch local time frequency when constructing a MonoPipe (res = -32).  getNextWriteTimestamp calls will be non-functional The above issue is resolved now i'm able to get the home screen, but the display is divided in to 2, the actual left half shifted to right and actual right half shifted to left. and even the display color changed to dark yellow and the image latency is too low. I'll update with the images(screenshots) soon. This document was generated from the following discussion: help in porting Android Jb to imx6q custom board
View full article
Background Configure Trace32 Attach to SCFW with Lauterbach Snooping Perf Examples Example 1 : Snoop a function call (or a variable) Example 2: MonitorFrame Per Second Example 3: Monitor Frame Per Second and rendering size Background None of my automotive have trace pins on their board. Trace is consequently not possible. Anyway you can do "Snooping" with your Lauterbach JTAG probe. Snooping just send data as fast as possible. In the following example I will Snoop the i.MX8X' SCFW, notice I do not have the sources (except board.c) but I have the elf file (thus I have debug info with functions names for instance). Notice Snooping is available on all MCU/MPU with JTAG.   In my case I used it for the first time in 2015 on Vybrid, our first heterogeneous dual core (Cortex-A5 & Cortex-M4) with no XRDC... My customer has sent the final product with a JTAG connector and flashed SW product to me. I had a laconic comment: "software is done all around the world in UK, India and the US, when we flash all the software the Vybrid Reset for some version, we don't have the sources for this specific software we have flashed in this product. Good Luck". In this case snooping on both core at the same time was the only solution for me... At the end I have discovered (thanks to the last PC addresses before the crash) the cortex-A5 was deconfiguring a pin of the QSPI flash interface on which the M4 was eXecuting In Place (XiP). Configure Trace32 When your Trace32 is open, CPU>>System Settings... menu and configure the JtagClock as fast as possible (here 40MHz) to have fast data streaming: go in Trace>>Configuration menu Select "SNOOPer" Select to stream the Pointer Counter thus select the mode "PC" Pass to State to "Arm" You can increase also the SIZE of the buffer Launch your code: Attach to SCFW with Lauterbach In Trace32, CPU>>System Settings, chose IMX8QXP-SCU: And then do an "Attach": Then yu should see your SCU core running: Snooping And break your code, your "used" field " should be filled: Open Trace>>List>>Default Click on "Chart" On the trace list you can see the sampling rate: around 48µs in our case. It means you may (almost) not see functions lasting less than 48µs (depends when it is sampled), or you'll see it sometimes. But for performance analysis it can be useful to see which function is too slow (rather then instrument the code), but as I mentioned in my case function has to last more than 48µs! Perf You can also get Performance analysis. But keep in mind if your function is faster than 48µs in my case, the result will not be accurate! Go in Perf>>Perf Configuration (it can also be done un real time with Perf>>Perf List Dynamic)... and select "Snoop": Then put the State in "Arm" and click on "List" to open the "List Window" Launch your code and stop it. In the "List" window you'll see all the function ranked according to their usage occurrence (my SCFW is almost always in sleep!) Examples Example 1 : Snoop a function call (or a variable) With Snooping you cannot trace a function calls. To do that I add a global variable in the function. You'll have a little overhead due to that. I will use an i.MXRT1170 with the SDK 2.6.1. I have built the Tiger example (vglite). April 4th 2020: i.MXRT1170 is not public, meaning not officially supported by Lauterbach. Please follow the instruction in my SharePoint folder (if the link disappears, it may signify i.MXRT1170 is supported) to add support of the i.MXRT1170. https://nxp1-my.sharepoint.com/:f:/g/personal/vincent_aubineau_nxp_com/Ej8ID8mXaNZPnVgTWgYgqHQBzR0XcE0K4sl1WusR3UMBnw?e=…  I want to know the framerate. To do that I have to monitor the redraw() calls. What I do, is I put the "n" variable as global. Trace>>Configuration ... Chose "memory" and "changes" (to log only when the variable is changing): Then then click on select... and "i" Search for "n" variable and select it: Launch your software and then do a break. Click on "List": You have the list of your function call (as you can see it is not always the same), in the "ti. call" you have the duration between 2 call (keep in mind the function must not be called at high frequency: If you click on "draw", you can display the variable values (click on  to scale it): Example 2: Monitor Frame Per Second I can also monitor the fps if I pass "time" variable global: And you can have a reprensentation of you fps (notive I have unchecked "Changes" to have an easy to intrepret curve Example 3: Monitor Frame Per Second and rendering size Results often depends of several variables. If you display 2 variables on 1 display window, if the 2 variable does not have the same range, it is not easy to observe. The best solution I have found in this case is to have 2 "Draw" Windows. Add the 2 variables in the "SElect" field ("time" and "ScaleCount", beware, it is case sensitive). Launch your code, and stop it after a while. Then right click on the "time" and "ScaleCount" variable in your code to display 2 "Draw" window: Thus you have 2 "Draw" windows, and you see FPS depends on rendering size... logical!  
View full article