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:
Hi all, I'm using this patch to get BT656 output on my i.MX6Q: Patch to Support BT656 and BT1120 Output For i.MX6 BSP Now I am looking for a way to clamp the pixel values between 16 to 240. Based on the i.MX6Q Reference Manual (37.4.5.6 IC Task Parameter Memory), this can be done by setting a IC task parameter called SAT_MODE from 0 to 1, but I'm not sure how it should be done. I've inspected the ipu_disp.c code and I guess the right way to do this is calling ipu_dp_write inside __ipu_dp_csc_setup function to set SAT_MODE to 1, but know I don't know which address to give toipu_dp_write since SAT_MODE is not defined in the ipu_regs.h. Looking at other parameters addresses (e.g. DP_CSC_0) and comparing their counterpart in the Reference Manual doesn't get my anywhere either. Bests, Isaac Hi Isaac, the default BSP code doesn't support DP_CSC_YUV_SAT_MODE modification, just used the default value 0. You can reference to the ioctl "MXCFB_SET_GAMMA" to add it into mxcfb_ioctl() of file mxc_ipuv3_fb.c. Bit 11 in IPUx_DP_COM_CONF_SYNC is for DP_CSC_YUV_SAT_MODE. So you can add it in ipu_regs.h: DP_COM_CONF_CSC_DEF_BOTH = 0x00000100, + DP_COM_CONF_CSC_YUV_SAT_MODE = 0x00000800, DP_COM_CONF_GAMMA_EN = 0x00001000, For BT656 display, IC CSC was not used, it used DP CSC. This document was generated from the following discussion: How to change SAT_MODE in BT656 display output for i.MX6
View full article
i.CORE M6SX The i.Core M6SX is the latest powerful i.MX6 SoloX based SOM solution provided by Engicam in SODIMM format. The i.MX 6SoloX is the first device utilizing both the ARM Cortex-A9 and ARM Cortex-M4 cores. Its heterogeneous architecture provides a secure and robust implementation to enable concurrent execution of multiple software environments to provide an application-rich system with real-time responsiveness. Optimized for high performance energy efficient processing in general embedded, automotive, industrial and consumer applications i.CORE M6SX Cores Cortex TM -A9 @ 800 MHz core, NEON co-processor. DP FPU, L1 and L2 I/D cache Cortex TM -M4 @ 200 MHz core SP Floating point unit,  I/D chache Memories 256MB 32bit DDR3-800 512MB SLC NAND Flash Graphics and Multimedia 1x Parallel LCD 18bit output 1x LVDS output Hardware 3D/2D engine OpenGL-ES 2.0 and OpenVG1.1 Parallel Camera Interface input Touch screen Peripherals 2x SD Card interface USB OTG HS, USB HS HOST, Uart, I2C, I2S, QSPI,PCI Express SATA ADC and Video ADC input 2x Ethernet 10/100 Dimensions Standard SODIMM footprint 67,4x31.9 mm PCB size Very Low Profile Module
View full article
Please make sure design is follow below checking list before checking this guide. HW Design Checking List for i.MX6DQSDL
View full article
Hi all !      I found a problem, wiif connection issue .  When I connect to WiFi hotspots, reported a warning !     <4>RTL871X: assoc success <4>------------[ cut here ]------------ <4>WARNING: at net/wireless/sme.c:482 __cfg80211_connect_result+0x2f4/0x32c() <4>Modules linked in: 8188eu <4>[<c0054044>] (unwind_backtrace+0x0/0x138) from [<c008c1b8>] (warn_slowpath_common+0x4c/0x64) <4>[<c008c1b8>] (warn_slowpath_common+0x4c/0x64) from [<c008c1ec>] (warn_slowpath_null+0x1c/0x24) <4>UpdateHalRAMask8188EUsb => mac_id:0, networkType:0x0b, mask:0x000fffff <4>     ==> rssi_level:0, rate_bitmap:0x000ff015 <4>[<c008c1ec>] (warn_slowpath_null+0x1c/0x24) from [<c069e3a0>] (__cfg80211_connect_result+0x2f4/0x32c) <4>[<c069e3a0>] (__cfg80211_connect_result+0x2f4/0x32c) from [<c06893f4>] (cfg80211_process_rdev_events+0x1e0/0x204) <4>[<c06893f4>] (cfg80211_process_rdev_events+0x1e0/0x204) from [<c0686ec0>] (cfg80211_event_work+0x24/0x54) <4>[<c0686ec0>] (cfg80211_event_work+0x24/0x54) from [<c00a66f0>] (process_one_work+0x12c/0x494) <4>[<c00a66f0>] (process_one_work+0x12c/0x494) from [<c00a6bc8>] (worker_thread+0x170/0x3cc) <4>[<c00a6bc8>] (worker_thread+0x170/0x3cc) from [<c00aacbc>] (kthread+0x80/0x88) <4>[<c00aacbc>] (kthread+0x80/0x88) from [<c004d408>] (kernel_thread_exit+0x0/0x8) <4>---[ end trace 14efbc2d6eba2439 ]---       This document was generated from the following discussion: 
View full article
I followed the Yocto Training up until Task #4 - Deploy and test.... and I got stuck here. I am not able to download the .sdcard image to my SD card. Do I need to format it first? It is brand new. Since the sudo dd if=core-image-base-imx6solosabresd.sdcard of=/dev/sdb1 bs=1M did not work for me, I was not able to boot from the SD on my board. The board switches are set to boot from SD4. Is imx6solosabresd the correct MACHINE to use for the solox? I tried setting MACHINE=imx6sxsabersd in the local.conf file but I got an error message (Task #2). This is why I want to try the MFGTool. I have set the board to boot from SD3 so it can go into "download mode". When I go through the MFGTool, it says No Device Connected although HID-compliant vendor-defined device shows up. This document was generated from the following discussion: 
View full article
Hi team, My customer is facing the issue of unexpected behavior of i.MX6Q SSI. The customer uses SSI as slave/Network mode. And they want to transfer 4 time-slot data. As for the register setting, RFEN0, RFEN1 and RDMAE is set to 1. And only first time slot data is transferred. Do you have any ideas about the cause of this? Thanks, Miyamoto This document was generated from the following discussion: 
View full article
One of the features that many users have asked about but still is a work in progress for android, is the extended desktop capabilities. Currently android allows you to mirror your desktop in two displays, but you are still unable to extend your desktop like you would with any other OS like Linux or Windows. This tutorial is intended to show you how to use a special object that allows you to control what should appear on a secondary or external display, replacing the screen mirroring. So how do we do this? A presentation is a container to display a user interface, in the form of a view hierarchy on an external display. This is pretty much like a Dialog since it displays its UI separated from its activity, but the difference is that the presentation shows in an external display while the dialog displays it in the primary screen. Now, because of this, the resources that are to be used by the UI on an external display are different then the resources used in the primary screen, the context of the presentation is NOT the activity. How do we choose where to send this presentation? The easiest way to do this is to use the MediaRouter API. What the mediarouter does is it keeps track of which audio and video routes are available on the system. The MediaRouter sends notifications whenever routes are selected or unselected. An application can simple watch for these notifications and show or dismiss a presentation on the preferred presentation display automatically. The preferred presentation display is the display that the mediarouter recommends that the application should use if it wants to show content on the secondary display. IF there is not a preferred presentation display, the application should show its content locally without using a presentation. Using the Mediarouter The MediaRouter is a system service obtained by calling getSystemService() and asking for the MEDIA_ROUTER_SERVICE. We should use the mediarouter to create and show a presentation on the preferred presentation display: MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(); if (route != null) { Display presentationDisplay = route.getPresentationDisplay(); if (presentationDisplay != null) { Presentation presentation = new MyPresentation(context, presentationDisplay); presentation.show(); } } In order to use this framework in your app, you need to get an instance of the MediaRouter framework object and attach a MediaRouter.Callback object to listen for event in available media routes. The android apps that implement the media router API need to include a Cast button to allow users to select a media route to play media on a secondary output device. The recommended way to implement the Cast button  is to extend your activity from ActionBarActivity() and use the onCreateOptionMenu() method to add an options menu. The Cast button must use the MediaRouteActionProvider class as its action: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/media_route_menu_item" android:title="@string/media_route_menu_title" app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider" app:showAsAction="always" /> </menu> The media router framework communicates with an app through a callback object that you attach to the mediarouter framework object.  Its necessary to extend the callback object in order to receive messages when a media route is connected. Once your callback is defined for the media router,  you need to attach it to the media router object.  The following sample demonstrates how to use the lifecycle methos to appropriately add and remove your app’s media router callback object. You need to add and remove it because it needs to be free for whenever you close the app or have it in the background so other apps use it if necessary. public class MediaRouterPlaybackActivity extends ActionBarActivity { private MediaRouter mMediaRouter; private MediaRouteSelector mSelector; private Callback mMediaRouterCallback; // your app works with so the framework can discover them. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the media router service. mMediaRouter = MediaRouter.getInstance(this); ... } // Add the callback on start to tell the media router what kinds of routes // your app works with so the framework can discover them. @Override public void onStart() { mMediaRouter.addCallback(mSelector, mMediaRouterCallback, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY); super.onStart(); } // Remove the selector on stop to tell the media router that it no longer // needs to discover routes for your app. @Override public void onStop() { mMediaRouter.removeCallback(mMediaRouterCallback); super.onStop(); } ... } Remote playback This approach sends control commands to a secondary device to initiate playback and to control the playback that is in progress (play, stop, fast-forward, rewind, etc). When your app supports this type of media route, you must need to create a RemotePlaybackClient boject using a remote playback MediaRoute.RouteInfo object received through your app’s MediaRouter.Callback object. The following sample code demonstrates a controller method that creates a new remote playback cliente and sends it a video for playback. private void updateRemotePlayer(RouteInfo route) { // Changed route: tear down previous client if (mRoute != null && mRemotePlaybackClient != null) { mRemotePlaybackClient.release(); mRemotePlaybackClient = null; } // Save new route mRoute = route; // Attach new playback client mRemotePlaybackClient = new RemotePlaybackClient(this, mRoute); // Send file for playback mRemotePlaybackClient.play(Uri.parse( "http://archive.org/download/Sintel/sintel-2048-stereo_512kb.mp4"), "video/mp4", null, 0, null, new ItemActionCallback() { @Override public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus, String itemId, MediaItemStatus itemStatus) { logStatus("play: succeeded for item " + itemId); } @Override public void onError(String error, int code, Bundle data) { logStatus("play: failed - error:"+ code +" - "+ error); } }); } } For more information on how to use the media router, you can visit developer.android.com
View full article
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
If you cannot access the www.youtube.com, you may watch the citrix demo in Youku, the link as fellow: Citrix Receiver for Linux is a software client to access the desktops, applications, and data easily and securely from many types of Linux devices. About Installing Citrix Receiver,please go to Citrix website Receiver The i.MX 6DQ processor incorporates the hardware accelerators Video Processing Unit(VPU) and 3D/2D Graphics Processing Unit. By taking the advantage of i.MX 6DQ hardware accelerators, Freescale integrates H264 hardware decoder to Citrix Receiver for Linux on i.MX6DQ Ubuntu. With accelerated hardware decoding, the computing is offloaded and better performance is achieved. Configuration in the demo: Hardware i.MX6Q: i.MX 6Quad Processors: Quad Core, ARM® Cortex®-A9 Core 1920x1080 HDMI panel Software: Linux kernel 3.0.35 Ubuntu 12.04 hardfloat rootfs Citrix Receiver13.1 with Freescale H264 plug-in
View full article
   The purpose of this article is to describe how to join together the Processor Expert and ARM GCC toolchain under Eclipse environment.    Freescale provides the Processor Expert, which contains the Pin Settings Tool to support an easy way to configure pin signals, from multiplexing to the electrical properties of pins. With such Tool all the pins can be configured with a graphical user interface, and then generate C code, in order to use it as an example in applications. Please refer to the following Web for more details. http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=PROCESSOR-EXPERT-IMX   The Processor Expert Software for i.MX Processors (Version 1.0) does not include a compiler or linker. Customers should merge the generated code into a build system.   However, it is possible to use common Eclipse-based IDE for the Processor Expert (V 1.0) and GNU ARM “C” toolchains. In particular, the following sequence may be implemented for both Linux and Windows hosts. 1. Install Eclipse (Kepler release) IDE for C/C++ Developers. https://eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2 2. Add Eclipse Processor Expert plug-in, as recommended in the documentation. http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=PROCESSOR-EXPERT-IMX https://community.freescale.com/docs/DOC-101470 3.  Add GNU ARM Eclipse, which contains configurations for different toolchains, including Linux ones. http://gnuarmeclipse.livius.net/blog/plugins-install/ 4. Install appropriate toolchain. For bare-metal applications Sourcery CodeBench Lite for ARM is sutable one. Sourcery CodeBench Lite Edition including ARM GCC IDE - Mentor Graphics Please use Getting Started Guide document from the CodeBench Lite package, that explains how to install and build applications with the CodeBench Lite.    As an example, let’s consider minimal startup code for i.MX6Q (LED flickering project on i.MX6Q SDB / SDP). Assuming Eclipse IDE with the Processor Expert and GNU ARM tools is installed, we should create new “C” project under Eclipse : New -> C Project. Select “Empty Project” and “Cross ARM GCC”, enter “Project name”. Then : select “Advanced settings” -> C/C++ Build -> Settings Tab “Target Processor” : ARM Family : cortex – a9 Architecture : armv7-a Instruction set : ARM (-marm) Endianness : Little endian (-mlittle-endian) FloatABI : Library with FP (softfp) FPU Type : neon Unaligned access : Disabled (-mno-unaligned-access) “Cross ARM GNU Create Flash Image” : General : Raw binary. TAB “Toolchains” : Name : Sourcery CodeBench Lite for ARM EABI (arm-none-eabi-gcc) (If needed customers can select appropriate toolchain) Architecture : ARM (AArch32) Prefix : arm-none-eabi Check “Use global toolchain path” or select the required path directly.  Source codes may added via Eclipse : File -> Import -> File System -> From directory Example source is enclosed. After sources as included in the project, let’s configure linker options via project properties, C/C++ Build -> Settings -> Tool Settings -> Cross ARM C Linker -> General. Add script file “mx6dq.ld”, uncheck “Remove unused section”, check “Do not use standard start files”.   Note, the article of Miro Samek is very helpful in clarifying of startup code and linker script. Please refer to “Building Bare-Metal ARM Systems with GNU”. Article Published online at www.Embedded.com,  July/August 2007. So, now we can build the project : Project -> Build Project. Two executable file will be generated : test.elf (for JTAG debugger) and test.bin, which may be used to create bootable SD card, using cfimager-imx.exe utility : CMD> cfimager-imx -o 0 -f test.bin -d g: Please use readme files in the enclosed for more details.
View full article
NFS and TFTP Boot 1  Introduction This document explains the required steps to boot Linux Kernel and mount a NFS on your target. 2 Requirements A functional Yocto environment (Images generated for your target). Your preferred target.  (SABRE-AI, SABRE-SD) 1 Ethernet Cable 1 Micro USB cable USB to Serial converter depending on your target features. 3 Yocto Folders When you develop your Linux kernel and Root File System with Yocto, different folders are created and each folder contains different information. {YOCTO_BUILD_DIR}/tmp/deploy/images/ {TARGET}/  This directory contains the output images, like Kernel, U-Boot and the File System in a tar file. This directory will be used to fetch the kernel and device tree blob file only. {YOCTO_BUILD_DIR}/tmp/sysroot/{TARGET}/  This folder contains all the development files used to generate our Yocto images. Here we can find all the dynamic libraries and headers used for development. This folder is used as parameter for cross-compilation. {YOCTO_BUILD_DIR}/tmp/work/{TARGET}-poky-linux-gnueabi/{IMAGE}/1.0-r0/rootfs This folder contains the uncompressed rootfs of our target. This folder will be used as entry in the host NFS server. 4 IP Address and Network Setup This section covers how to boot Linux that mounts the root file system (RFS) over the network. Remember that in this scenario, the RFS exists on the laptop hard drive, and the kernel that runs on the target board will mount the RFS over Ethernet. This setup is used for developing and debugging Linux applications. It allows for applications to be loaded and run without having to re-boot the kernel each time. First some packages on your host need to be installed: # apt-get install xinetd tftp tftpd isc-dhcp-server nfs-kernel-server portmap For development, it is best to have a static IP setup for the board and Linux environment. This way U-Boot options won’t change between reboots as you get a new IP address as you would using DHCP. 4.1 Linux Host Setup This section describes how to setup a static IP in your Linux host environment. This is not required but will allow the IP address of your virtual host system to remain unchanged. Because u-boot parameters use specific IP addresses, this step is recommended because u-boot parameters may need to be updated in the future to match your virtual IP address if it should ever change. You could take the existing IP address and make it static, but you would lose the Internet connection in your virtual machine. Instead we want to make use of the virtual environment and add a secondary Ethernet port that is tied to your wired Internet connection, while keeping the original Ethernet port which can use the wireless connection on your laptop. In the Linux virtual environment, type sudo ifconfig and note that you should have one Ethernet adapter (eth0). The other item listed (lo) is a virtual port for loopback mode. Shutdown the Linux virtual machine In VMware Player, go to Edit virtual machine settings. And add a Bridged Network Adapter, choosing only the wired Ethernet port. And click on OK.  See below for example: Start up the Linux VM. Open a terminal and type: sudo ifconfig You should have a new entry (eth1). This is the new Ethernet port you created in the virtual machine, and it is bridged to your wired Ethernet port. This is the port we want to make a static IP address. To set eth1 to a static IP, open /etc/nework/interfaces sudo gedit /etc/network/interfaces Add the following to set eth1 to your desired IP address. auto eth1 iface eth1 inet static address 192.168.0.100      <-- Your HOST IP netmask 255.255.255.0 gateway 192.168.0.1 Save the file Restart eth1 sudo ifdown eth1 sudo ifup eth1 4.2 Target Setup We need to setup the network IP address of our target. Power On the board and hit a key to stop the U-Boot from continuing. Set the below parameters: setenv serverip 192.168.0.100 <-- This must be your Host IP address setenv ipaddr 192.168.1.102  <-- This must be your target IP addres setenv ip_dyn no The path where the rootfs is placed in our host has to be indicated in the U-Boot: setenv nfsroot /home/usuario/fsl-release-bsp/buildimx6q/tmp/work/imx6qsabresd-poky-linux-gnueabi/fsl-image-gui/1.0-r0/rootfs setenv image zImage setenv fdt_file uImage-imx6q-sabresd.dtb setenv netargs 'setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip={ipaddr} nfsroot=${serverip}:${nfsroot},v3,tcp' 4.3 TFTP and NFS Configuration Now configure the Trivial File Transfer Protocol (TFTP) server and Networked File System (NFS) server. This is how U-Boot will download (via TFTP) the Linux kernel, and then the kernel will mount (via NFS) its root file system on the computer hard drive. 4.3.1 TFTP Setup Next setup the TFTP server. The following commands show that we are logged in as root (#). If you are not root ($) then precede each instruction with “sudo”. Edit /etc/xinetd.conf gedit /etc/xinetd.conf Add and save the following lines in the file service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s {YOCTO_BUILD_DIR}/tmp/deploy/images/ {TARGET}/  disable = no } Notice that {YOCTO_BUILD_DIR}/tmp/deploy/images/ {TARGET}/   has to be written as absolute path. Restart the xinetd service service xinetd restart Test that TFTP is working tftp localhost tftp> get {An Image found in the tftp folder} tftp> quit 4.3.2 NFS Setup Edit the /etc/exports file gedit /etc/exports Add the path where the rootfs is found in your host. {YOCTO_BUILD_DIR}/tmp/work/{TARGET}-poky-linux-gnueabi/{IMAGE}/1.0-r0/rootfs *(rw,no_root_squash)                                                                 NOTE:      {YOCTO_BUILD_DIR}/tmp/work/{TARGET}-poky-linux-gnueabi/{IMAGE}/1.0-r0/rootfs may work most of the times,        but it is recommended to untar the {IMAGE}.bz2 in an exported           folder keeping using sudoand keeping the chmod of each file.     3. Restart the NFS service sudo service portmap stop sudo service nfs-kernel-server stop sudo service portmap start sudo service nfs-kernel-server start 5 Host Final Configuration and Booting Linux over NFS In your host, under the images folder {YOCTO_BUILD_DIR}/tmp/deploy/images/ {TARGET}/ create the below links ln -s zImage_imx_v7_defconfig zImage      2. In U-boot type the below command:                run netboot After a pair of minutes you should get a Linux working system on your target.
View full article
A new release of the manufacturing tool is was recently made available, "imx-3.10.53_1.1.0_ga-mfg-tools". It can be found in the software download sections for the iMX6 family. However, it can be used to program an iMX28 in a Win7 64-bit host by adding a few files. The steps to do so are listed below and can be checked against the script in ucl2.xml.   Download the attached "28.vbs" file and place it into where the manufacturing tool was installed, typically in  <install_dir>\mfgtools\   Replace <install_dir>\mfgtools\Profiles\Linux\OS Firmware\ucl2.xml with the attached ucl2.xml.    Copy the attached files "updater_ivt.sb" and "fdisk-u.input" into <install_dir>\mfgtools\Profiles\Linux\OS Firmware\firmware Copy your iMX28 image file into <install_dir>\mfgtools\Profiles\Linux\OS Firmware\files.  The file should be renamed to "linux.sb" to conform with the ucl2.xml script. Copy your "rootfs.tar.bz2" file into <install_dir>\mfgtools\Profiles\Linux\OS Firmware\files To launch the manufacturing tool, double click on "28.vbs". Issue: After MfgTool has finished and the progress bars have turned green, clock on the Stop button or the program will start another cycle.
View full article
The i.MX 6 D/Q/DL/S/SL Linux 3.10.53_1.1.0 GA release is now available on www.freescale.com ·         Files available           Name Description L3.10.53_1.1.0_LINUX_DOCS i.MX 6 D/Q/DL/S/SL Linux   3.10.53_1.1.0 GA BSP documentation. L3.10.53_1.1.0_iMX6QDLS_Bundle i.MX 6 D/Q/DL/S  Linux   3.10.53_1.1.0 GA BSP Binary Demo Files L3.10.53_1.1.0_iMX6SL_Bundle i.MX 6 SL  Linux   3.10.53_1.1.0 GA BSP Binary Demo Files L3.10.53_1.1.0_AACP_CODECS AAC Plus Codec for the i.MX 6 D/Q/DL/S/SL Linux 3.10.53_1.1.0   GA BSP y IMX_6_MFG_L3.10.53_1.1.0_TOOL Manufacturing Tool and Documentation for Linux   3.10.53_1.1.0 GA BSP y ·         Target HW boards o   i.MX6DL  SABRE SD board o   i.MX6Q  SABRE SD board o   i.MX6DQ SABRE AI board o   i.MX6DL SABRE AI board o   i.MX6SL EVK board New Features ·                             Please refer to formal Release Note document for all details. Known issues For known issues and limitations please consult the release notes located in the BSP documentation package.
View full article
ro.hwui.disable_scissor_opt For Vivante GPU, the scissor should be enabled. The default value is enabled, So, keep the default value. ro.hwui.texture_cache_size ro.hwui.layer_cache_size ro.hwui.r_buffer_cache_size ro.hwui.path_cache_size ro.hwui.drop_shadow_cache_size These parameters depend on display resolution. The default value is calculated according to 720P resolution which near 1024x768 resolution on our platform. ro.hwui.text_small_cache_width ro.hwui.text_small_cache_height ro.hwui.text_large_cache_width ro.hwui.text_large_cache_height These variables depends on screen resolution, density(similar to ppi) and language used. On a larger resolution screen, there might be more characters painted on it. Better to have larger font cache size. On a larger density config, it tends to use larger fonts. If the language has more different characters (symbols), it may need larger texture size to cache the fonts. For example, English may only have 52 characters, but Chinese have more than 10K and each will occupy more memory cache than English character. If cache size is too small, performance may drop because the font renderer will flush existed cache and upload new ones. If cache size is too large, it just wastes memory. It's OK to flush existed cache sometimes. But it's better to have only one (or no) flush for rendering a single screen. The default value is optimum on out platform with 1024x768 display resolution. BTW, texture size limitation on current Vivante GPU are 8192 x 8192.
View full article
The lastest iMX28 WinCE 6.0 BSP "WCE600_MX28_SDK1008" has a UART RX DMA data lost issue. Test case to duplicate the issue: Connect iMX28 UART1 and PC with UART cable, then run some UART test application on iMX28 and PC side, PC can send a file to IMX28, file size should bigger than the default RX DMA buffer size 1024 bytes, then from iMX28 side, there will be data lost. The attached "SERIALAPP.zip" is the updated UART driver code to fix this issue, you can unzip and update it to "wince600\platform\common\src\soc\common_fsl_v2_pdk1_9\serialapp" folder, and rebuild the WinCE image. The followed improvement had been implemented in this update for UART RX DMA: 1. Added DMA recover code.     When UART error happens in DMA mode, the driver will re-initialize the DMA for next transfer.. 2. Set UART DMA timeout interrupt to 5ms. "#define SERIAL_DMA_RX_TIMEOUT      5"     After UART DMA interrupt happens, the IST need copy data from DMA buffer to MDD buffer, so it needs time. The default BSP had set this delay to 31 bits transfer time, this is very short, if the PC send "DMA buffer + 1" bytes to iMX28, after first DMA buffer full interrupt happens, the second DMA timeout interrupt will happen in a short time, this interrupt will be lost, because the driver is still processing the pre-interrupt. 3. Updated MDD code to make sure the buffer send to PDD is always bigger than the RX DMA buffer.     This MDD code modification will only active in DMA mode, so there is no impact for PIO mode. 4. Update UART DMA interrupt handler code.     When UART DMA interrupt happens, set up the next DMA transfer at once, so DMA can continue to receive data with another DMA buffer, the same time the IST will copy data from pre-DMA buffer to MDD buffer.
View full article
Hi all, Cortex-M4 for i.MX6SoloX that is new to i.MX6SX customers. They concerns GPIO ISRs response time are not real time and hugh latency while Android/Linux is running on Cortex-A9 in i.MX6SoloX. I shared my test steps, report and image for your reference. Best regards, Carl
View full article
A discussion of random hangs and other issues using Windows Embedded Compact on Freescale i.MX6 application processor and how they were solved. This white paper is about the investigation and shares some of our discoveries. All information in this document applies to Windows Embedded Compact 7 and 2013 as well as all variants of the i.MX6.    
View full article
how to enable bt on imx6 sabreasd_dq
View full article
Overview The document describes the procedure to measure the memory to memory copy performance by using SDMA on i.MX6Q. Materials i.MX6Q Sabre SD board L3.0.35_4.1.0_130816 BSP Procedure Install BSP and build kernel Extract imx unit test source: ./ltib -p imx-test -m prep Apply attached patch to sdma memcopy code cd ltib/rpm/BUILD/imx-test-3.0.35-4.1.0 patch -p1 -i LTIB_4.1.0_sdma_m2m_test.patch Build imx unit test ./ltib -p imx-test -f Copy kernel and rootfs to SD Card. Boot kernel and login Insert the kernel module for SDMA memory copy test: insmod /lib/modules/XXX/test/mxc_sdma_memcopy_test.ko Start SDMA memory copy test /unit_tests/mxc_sdma_test.out Result root@freescale ~$ insmod /lib/modules/3.0.35-2666-gbdde708-g1c42f8b/test/mxc_sdma_memcopy_test.ko SDMA test major number = 248 SDMA test Driver Module loaded root@freescale ~$ /unit_tests/mxc_sdma_test.out in dma_m2m_callback 65532byte / 0.003382sec buffer 1 copy passed! root@freescale ~$ /unit_tests/mxc_sdma_test.out in dma_m2m_callback 65532byte / 0.003367sec buffer 1 copy passed! root@freescale ~$ /unit_tests/mxc_sdma_test.out in dma_m2m_callback 65532byte / 0.003364sec buffer 1 copy passed! In summary, > 19Mbyte/sec
View full article
本文档主要包括两个部分: 1:如何将一首超过两声道的多声道音乐放到多个双声道声卡上播放,来模拟原音乐文件的多声道输出。 2:如何将多个双声道音乐文件同时放到一个8声道的声卡的不同channel上播放。 涉及的文件:etc/asound.conf 1:如何将一首超过两声道的多声道音乐放到多个双声道声卡上播放,来模拟原音乐文件的多声道输出。 1):Sabresd板子 按设计来讲,sabresd板子最多只能播双声道的音乐,但是如果一个音乐文件是四声道,该如何用sabresd板子来播放呢? 可以让前两个声道通过WM8962来播放,后两个声道通过HDMI来播放: 33 pcm.multi { 34         type multi 35 36         slaves.a.pcm "hw:0,0" 37         slaves.a.channels 2 38         slaves.b.pcm "hw:1,0" 39         slaves.b.channels 2 40 41         bindings.0.slave a 42         bindings.0.channel 0 43         bindings.1.slave a 44         bindings.1.channel 1 45         bindings.2.slave b 46         bindings.2.channel 0 47         bindings.3.slave b 48         bindings.3.channel 1 49 } 273 pcm.asymed{ 274 type asym 275 playback.pcm "multi" 276 capture.pcm "dsnoop_44100" 277 } 278 279 ctl.multi{ 280         type hw; 281         card 0; 282 } 289 pcm.!default{ 290 type plug 291 route_policy "average" 292 slave.pcm "asymed" 293 } 可以通过以下命令来测试: speaker-test -c 4 -t sine speaker-test -c 4 -t sine -D multi 2):ARD板子 ARD板子,6声道的audio文件,用ESAI来播放前四个channel,后两个channel用HDMI来播放: 33 pcm.multi { 34         type multi 35 36         slaves.a.pcm "hw:0,0" 37         slaves.a.channels 4 38         slaves.b.pcm "hw:2,0" 39         slaves.b.channels 2 40 41         bindings.0.slave a 42         bindings.0.channel 0 43         bindings.1.slave a 44         bindings.1.channel 1 45         bindings.2.slave a 46         bindings.2.channel 2 47         bindings.3.slave a 48         bindings.3.channel 3 49         bindings.4.slave b 50         bindings.4.channel 0 51         bindings.5.slave b 52         bindings.5.channel 1 53 } 273 pcm.asymed{ 274 type asym 275 playback.pcm "multi" 276 capture.pcm "dsnoop_44100" 277 } 278 279 ctl.multi{ 280         type hw; 281         card 0; 282 } 289 pcm.!default{ 290 type plug 291 route_policy "average" 292 slave.pcm "asymed" 293 } 可以用下面命令来测试: 播源文件是6声道的音乐: aplay 48kHz16bit-six-channel.wav aplay -D multi 48kHz16bit-six-channel.wav speaker-test -c 6 -t sine speaker-test -c 6 -t sine -D multi 播源文件是双声道的音乐,ESAI的四个channel和HDMI的两个声道都是该音乐: aplay heart.wav 2:如何将多个双声道音乐文件同时放到一个8声道的声卡的不同channel上播放。 我们ARD的板子,ESAI是8声道的,大部分音乐都是双声道的,ESAI的6个channel会被浪费掉。如何将其余的6个声道也应用起来? alsa lib有dshare这个plugin,可以将4个双声道的音乐文件当成一个8声道的音乐来处理。 28  pcm_slave.nforce { 29        pcm "hw:0,0” 30        channels 8 31        rate 48000        # fixed, because all dshare devices must use the same samplerate. 32        buffer_size 4096  # make these sizes smaller for lower latency 33        period_size 1024 34        periods 4 35        period_time 0 36    } 37 39  pcm.ch12 { 40        type dshare 41        ipc_key 47110815 42        slave nforce 43        bindings.0 0 44        bindings.1 1 45    } 46 47  pcm.ch34 { 48        type dshare 49        ipc_key 47110815 50        slave nforce 51        bindings.0 2 52        bindings.1 3 53    } 54 55   pcm.ch56 { 56        type dshare 57        ipc_key 47110815 58        slave nforce 59        bindings.0 4 60        bindings.1 5 61    } 62 63   pcm.ch78 { 64        type dshare 65        ipc_key 47110815 66        slave nforce 67        bindings.0 6 68        bindings.1 7 69    } 可以通过下面的命令来测试: (aplay -Dplug:ch12 XX.wav &) (aplay -Dplug:ch34 XXX.wav &) (aplay -Dplug:ch56 XXXX.wav &) (aplay -Dplug:ch78 XXXXX.wav &) 四首音乐会分配到ESAI的8个channel上。
View full article