i.MX Solutions Knowledge Base

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

i.MX Solutions Knowledge Base

Labels
  • General 294

Discussions

Sort by:
As i.MX6 empowers the Surveillance applications, iWave has developed a system that brings together video streams from four cameras on four i.MX6 Pico ITX SBCs placed in four different locations through Ethernet. The fifth Pico ITX captures the video streams from the Ethernet and displays on a single HDMI monitor as indicated in the following block diagram. The system requires five i.MX6 Dual Pico-ITX boards connected with LAN. Each of four boards are connected with cameras which capture the video, encode and streams it as RTP packets.  The fifth board receives four streams of RTP packets and displays to four slots in HDMI. Operating system used is Yocto of Dora Version. MIPI or CSI cameras can be used for the video capture (tested with 5MP MIPI camera). All the four cameras share the screen equally and the display resolution of each camera is 854x480. For ease of demonstration we have used one Pico-ITX per camera, however for real life scenario and to keep down costs there is a possiblity that each i.MX6 Pico-ITX SBC can be connected to two cameras. Each pico-itx with i.MX6 quad/dual core can capture video from two cameras simultaneously. The same streaming procedure needs to be followed for this scenario too with it appropriate IP and Port number. For more details please reach to mktg@iwavesystems.com
View full article
iWave is upgrading Android KitKat 4.4 BSP for its all variants of i.MX6 Qseven SOMs. The KitKat BSP supports following features and will be available in end of Q2 2015: i.MX6 ARM Cortex A9 Quad, Dual, Dual Lite & Solo CPU 1GB DDR3 RAM (Quad, Dual, Dual Lite CPU version)/ 512MB DDR3 (Solo CPU version) Freescale PMIC SPI NOR Flash eMMC Flash uSD slot Standard SD slot USB 2.0 Host USB 2.0 device 10/100/1000 Ethernet PCIex1 Port CAN Port LVDS display port Capacitive multi-touch PWM for backlight HDMI Port with Audio SATA (Support available only in i.MX6Q/D) Hardware Codecs (Encode/Decode) 2D/3D Graphics MIPI CSI camera port AC97 Audio In/Out Console UART Besides the Android support, Linux and WEC7 board support packages are also available for the i.MX6 Qseven SOMs from iWave systems. More details about the i.MX6 Qseven SOM & software features can be found in the i.MX6 Qseven product page. Device drivers will be supported for specific interface chipsets, which are used in iWave's Qseven Carrier board. More details about iWave i.MX6 Qseven development kit can be found in the following webpage: http://www.iwavesystems.com/product/development-platform/i-mx6-q7-development-kit-54.html
View full article
iWave has now enabled 2GB RAM support for the iW-RainboW-G15M-Q7, the i.MX6 Quad, Dual & Dual Lite Qseven SOMs. The 2GB RAM support allows customers to run graphics and multimedia rich applications more seamlessly. The 2GB RAM supported Qseven SOM configuration is available with minimum order quantity of 500pcs. iWave also can support 4GB RAM on specific requests. For more details contact mktg@iwavesystems.com
View full article
Why Freescale Sabre Smart i.MX6 Solo X SD2 slot do not detect SD card insertion / removal while SD3 does? 1.   How SDIO detection works on i.MX6?      First, we checked how the i.MX6 CPU detect SDIO card insertion / removal.      Freescale i.MX6 Solo X Reference Manual (IMX6SXRM.pdf) Section 68.4.7 "Card Insertion and Removal Detection" says that;           "The uSDHC uses either the DATA3 pin or the CD_B pin to detect card      insertion or removal. When there is no card on the MMC/SD bus, the      DATA3 will be pulled to a low voltage level by default"     "When the DATA3 pin is not used for card detection (for example,      it is implemented in GPIO), the CD_B pin must be connected for card      detection. Whether DATA3 is configured for card detection or not,      the CD_B pin is always a reference for card detection." Based on this description, It seems that DATA3 is used for card detection. But it isn't. 2.  Implementation on Sabre i.MX6 SoloX We checked voltage on DATA3(PIN1) on both SD2 and SD3 slot when card is not inserted. Both were 3.3V. Neither SD2 nor SD3 DATA3 was "pulled to a low voltage level by default".      Then, we checked CD pin. In the case of SD3, it was 3.3V when card is not inserted, then fall to 0V when card is inserted. That cause card detection. In the case of SD2, CD pin was all time 0V. Sabre i.MX6SX Schematic confirms that CD pin of SD2 slot is not connected to anywhere (see attached image).                                                     Sabre SoloX SD2                                                                                                                                                               Sabre SoloX SD3 "CD(Card Detect)" is not a SDIO pin. SDIO has only 9pins, where 9 DAT2 1 DAT3 2 CMD 3 VSS1 (GND) 4 VDD 5 CLK 6 VSS2 (GND) 7 DAT0 8 DAT1 - CD (Card Detection) and WP (Write Protect) are function of SD slot connector, not function of SDIO bus. 3.  Implementation on Sabre i.MX6Q We checked i.MX6Q Sabre Smart. Again, DATA3 (pin1) voltage was 3.3V both on SD2 and SD3. Schematic shows there are register pattern prepared to pull down DATA3, but both R549 on SD3 and R667 SD3 are not populated (DNP) as default.                                                           Sabre i.MX6Q SD2                                                                                                                                                     Sabre i.MX6Q SD3  4.  Conclusion From this we can infer that Freescale reference design (Sabre i.MX6Q and i.MX6SX) do not use DATA3 for SDIO detection, as it appears to have been described in the reference manual. Both Sabre i.MX6Q and i.MX6SX solely relies on CD(Card Detect) signal from SDIO connector. In the case of SD2 slot on i.MX6SX, CD signal is not connected to anywhere.There where unpopulated DATA3 pull-down register pattern prepared on Sabre i.MX6Q, but it is omitted from i.MX6SX. Which makes card insertion / removal detection on Sabre i.MX6SX SD2 slot difficult.
View full article
Launched on Kickstarter on Monday 20 April 2015 – Funded in 80 minutes The groundbreaking Single Board Computer reached its 15k goal on Kickstarter in 80 minutes. UDOO Neo merges the world of Arduino™ and Raspberry Pi with wireless connectivity and 9-axis motion sensors, providing a complete and easy solution to free your imagination, make your objects alive and create new smart devices and appliances from scratch. Campaign Link: bit.ly/UdooNEO On Monday 20 April 2015 SECO USA Inc. launched UDOO Neo on Kickstarter at 11 o’clock in EST time, raising the 15k USD dollar goal in just 80 minutes. The first to be astonished by the overwhelmingly successful launch are UDOO Team members: “We felt immediatly a great interest for the NEO, but we weren’t expecting such enthusiast reaction. This confirms that we’re in the right direction: people are eager to get involved in the Internet of Things computing, and UDOO NEO seems their perfect companion” declares Maurizio Caporali, NEO’s product manager. UDOO Neo is a credit-card size (59.3mm x 85mm - 3.35" x 2.33"), low-cost, low-power consumption, open-source hardware board, able to run Android or Linux and Arduino-compatible. It can be used as a fully-fledged computer, as an Arduino-compatible microcontroller or as an embedded computer to build new devices, smart objects and appliances. UDOO Neo comes in two versions: UDOO Neo Basic and UDOO Neo. UDOO Neo Basic has 512MB of RAM, one USB port, one micro USB OTG port, HDMI video output for LVDS and touchscreen, Wi-Fi module, Bluetooth 4.0 module (including Classic Bluetooth and Bluetooth 4.0), analog and digital camera connection, 54 GPIOs and MicroSD card for the operating system. In addition to all the features of UDOO Neo Basic, UDOO Neo has also a fast ethernet (10/100 Mbps), 9-axis motion sensors embedded, and it has 1GB of RAM instead of 512MB. UDOO Neo is the result of a joint effort between SECO (http://www.seco.com/en/welcome-seco) and Aidilab (http://aidilab.com/). SECO is a global leader in the B2B embedded market, with 36 years of experience in design and production of electronic embedded solutions. AidiLab is a design studio founded as a startup of the Interaction Design Lab (IDA) of Siena University (http://www.unisi.it/) thanks to passionate efforts of professors and students. It collaborates with SECO in the hardware and software development of UDOO, and manages the communication and the relation with the user base. “UDOO Neo is a new-generation single board computer, ready for Internet of Things applications thanks to its wireless connectivity and embedded sensors that no other board on the market features right now.” says Maurizio Caporali, Product Manager of UDOO Neo. UDOO needs the funds to keep the price low, this is the reason why it will be launched on Kickstarter. Right now, a $49 pledge is the minimum to get a UDOO Neo Basic and $59 to get a UDOO Neo. SECO aims to ship the boards to customers in September 2015. Contact info@udoo.org for further inquiries. www.udoo.org
View full article
RidgeRun Professional SDK Turrialba for Freescale iMX6 Sabre SDP - Release Notes : RidgeRun Professional SDK Turrialba for Freescale iMX6 Sabre SDP - Release Notes - RidgeRun Developer Connection RidgeRun Professional SDK Turrialba for Boundary Devices iMX6 SabreLite - Release Notes : RidgeRun Professional SDK Turrialba for Boundary Devices iMX6 SabreLite - Release Notes - RidgeRun Developer Connection RidgeRun Professional SDK Turrialba for Boundary Devices iMX6 Nitrogen6X board - Release Notes : http://developer.ridgerun.com/wiki/index.php?title=RidgeRun_Professional_SDK_Turrialba_for_Boundary_Devices_iMX6_Nitrogen6X_board_-_Release_Notes RidgeRun Professional SDK Turrialba for iMX6 Variscite VAR-SOM-MX6 Board - Release Notes : RidgeRun Professional SDK Turrialba for iMX6 Variscite VAR-SOM-MX6 Board - Release Notes - RidgeRun Developer Connection Contact RidgeRun for more information and RidgeRun iMX6 Professional SDK at inquiries@ridgerun.com or Submit your comments/Inquiry at our Contact Us Link here.
View full article
iWave's PICO-ITX board embedded with i.MX6 Quad core processor loaded with Yocto-Dora 1.5.3 now is capable of capturin g and streaming full HD (1080p) video from an on-board camera. Not only it can stream 1080p full HD video to a destined host machine, it is also capable of streaming two 1080p (2 streams) simultaneously at 24fps. In some of the use case scenario, user may want to stream two streams of different resolutions like 1080p and 720p simultaneously. Where high resolution on faster network and low resolution on low bandwidth network, in such use case scenario it is possible to stream multiple streams at various resolutions. The differentiating feature in this system is, it can encode and stream multiple streams simultaneously at maximum 1080p resolution or lesser.  The maximum streaming achieved on all i.MX system earlier was VGA. The possible application of this system could be surveillance and streaming server at full HD resolution. Dual Video Streaming using i.MX6 Dual Pico-ITX Single Board Computer Imagine a system which has two independent displays and can run different content from the embedded computer at the same time. iWave has developed this system with i.MX 6 processor based PICO-ITX platform running Yocto-Dora(1.5) is now equipped with such feature. The system can decode and play two different HD (1080p@24fps) videos at the time using two LVDS displays. For further information or enquiries please write to mktg@iwavesystems.com
View full article
iWave now has released the official Yocto BSP for its i.MX 6 Qseven modules (iW-RainboW-G15M-Q7) and i.MX 6 development kit variants. The release is based on Linux 3.10.17 kernel and supports the following features; i.MX6 ARM Cortex A9 Quad, Dual, Dual Lite & Solo CPU 1GB DDR3 RAM (Quad, Dual, Dual Lite CPU version)/ 512MB DDR3 (Solo CPU version) Freescale PMIC SPI NOR Flash (default boot) eMMC Flash (default OS storage) Data UART uSD slot Standard SD slot USB 2.0 Host USB 2.0 device 10/100/1000 Ethernet PCIex1 Port SATA Port CAN Port LVDS display port (Dual) PWM for backlight HDMI Port with Audio 7”TFT LCD with capacitive touch Hardware Codecs (Encode/Decode) 2D/3D Graphics CMOS CSI camera port MIPI CSI camera port AC97 Audio In/Out Console UART RTC (i.MX6 Internal) I2C Port Sensors Watchdog GPIOs This release supports single BSP, Binary image & MFG tool for all the four i.MX6 CPU version (Quad/Dual/Dual Lite/Solo) based Qseven SOMs. Besides the Linux Yocto BSP support, Android Jelly Bean and Windows Embedded Compact 7 (WEC7) board support packages are also supported for the i.MX6 Qseven modules (Rainbow G15M-Q7) by iWave. More details about the i.MX6 Qseven modules (Rainbow G15M-Q7) hardware & software features can be found in the i.MX6 Qseven SOM product page. For further information or enquiries please write to mktg@iwavesystems.com
View full article
iWave now has released the official Yocto BSP for its i.MX6 Qseven modules (iW-RainboW-G15M-Q7) and development kit variants. The release is based on Linux 3.10.17 kernel and supports the following features; i.MX6 ARM Cortex A9 Quad, Dual, Dual Lite & Solo CPU 1GB DDR3 RAM (Quad, Dual, Dual Lite CPU version)/ 512MB DDR3 (Solo CPU version) Freescale PMIC SPI NOR Flash (default boot) eMMC Flash (default OS storage) Data UART uSD slot Standard SD slot USB 2.0 Host USB 2.0 device 10/100/1000 Ethernet PCIex1 Port SATA Port CAN Port LVDS display port (Dual) PWM for backlight HDMI Port with Audio 7”TFT LCD with capacitive touch Hardware Codecs (Encode/Decode) 2D/3D Graphics CMOS CSI camera port MIPI CSI camera port AC97 Audio In/Out Console UART RTC (i.MX6 Internal) I2C Port Sensors Watchdog GPIOs This release supports single BSP, Binary image & MFG tool for all the four i.MX6 CPU version (Quad/Dual/Dual Lite/Solo) based Qseven SOMs. Besides the Linux Yocto BSP support, Android Jelly Bean and Windows Embedded Compact 7 (WEC7) board support packages are also supported for the i.MX6 Qseven modules (Rainbow G15M-Q7) by iWave. More details about the i.MX6 Qseven modules (Rainbow G15M-Q7) hardware & software features can be found in the i.MX6 Qseven SOM product page.
View full article
This post is about adding cellular modem support on the Boundary Devices i.MX6 boards under Ubuntu.  Many customers have requested cellular modem support on our i.MX6 boards (BD-SL-i.MX6, Nitrogen6X, Nitrogen6_Lite and Nitrogen6_MAX).  Since most cell modems are USB or PCIe devices, configuration is a software task, and mostly done in userspace. The steps are also different for Android, embedded Linux and desktop distributions.  In other words, its complicated. In this post, we’ll walk through all of the steps needed to configure a specific set of modems under Ubuntu as a reference. If you’re using another modem or another userspace, the details may be different, but the fundamentals will be the same. We used the Huawei E3131 USB dongle , and Huawei MU609 Mini-PCIe during this process, and will be adding them to our default kernels going forward. As you can see in this patch, we did have to add some USB device ids and make minor updates to the kernel as provided by the vendor. In the process, we should now also support the following Huawei models for various regions and carriers: MC323   CDMA: Downlink:153.6 kbps, Uplink: 153.6 kbps MU509   WDCMA: Downlink:3.6 Mbps, Uplink: 384 kbps MC509   EVDO: Downlink:3.1 Mbps, Uplink: 1.8 Mbps MU609   HSPA+: Downlink:14.4 Mbps, Uplink: 5.76 Mbps MU709   HSPA+: Downlink:21.6 Mbps, Uplink: 5.76 Mbps ME906   LTE: Downlink:100 Mbps, Uplink: 50 Mbps ME909   LTE: Downlink:100 Mbps, Uplink: 50 Mbps ME936   LTE: Downlink:100 Mbps, Uplink: 50 Mbps For more details including links to images as well as detailed descriptions on how to implement, please visit this blog post:  http://boundarydevices.com/cellular-modems-on-i-mx6-boards/
View full article
The BD-SL-i.MX6 formerly SABRE Lite board is a low cost i.MX6 development platform.  One of the best attributes of the board is the significant software support that is available.  This post introduces Qt5.4 from the QT Company.  The video below shows The Qt Company’s enterprise device creation offering, a Qt-optimized pre-built software stack that lets you immediately get started with prototyping on a real device for embedded Linux and Android development.  The demo is running Qt5.4 and the image is available for the BD-SL-i.MX6 as well as our Nitrogen family of products.  Here is a brief video showing some of the capabilities: The video above showed an image created for embedded Linux, and more specifically, built using tools from The Yocto Project and The Freescale Community BSP. Because of this, your products can leverage the packages provided by those projects, and you can use the Yocto build system to integrate your components and tailor your build. For more details, visit http://qt.io or http://boundarydevices.com/qt-for-device-creation/
View full article
This is a demo of the Nitrogen6X with BD_HDMI_MIPI daughter board. The Nitrogen6X is an i.MX6-based Single Board Computer (SBC) designed for both development and production use.  The BD_HDMI_MIPI daughter board utilizes the Toshiba TC358743XBG HDMI to MIPI CSI part to convert the HDMI signals to MIPI. The BD_HDMI_MIPI can be used with our Nitrogen6X, BD-SL-i.MX6, Nitrogen6_MAX boards as well as the Nitrogen6X_Carrier.  The daughter board can be used for evaluation as well as software development.  Please contact Boundary Devices for custom version. This demo shows the Nitrogen6X running Yocto based on 3.10.17 kernel and displaying the output of our Nitrogen6X_SOM on a 10.1" LG BD101LIC1 display.
View full article
Product Features: SMARC Development kit pre-loaded with Android OS Kit includes: (1). REV-SA01 SMARC Evaluation Carrier Board in 3.5" SBC Form Factor (2). SMA-IMX6QI Quad Core SMARC Module (3). Power Adapter: AC Input: 100-240V DC Output: 5.0V (4). Power Cable (5). Mini-USB Cable (6). Pre-loaded OS on onboard eMMC
View full article
Product Features: SMARC Development kit pre-loaded with Linux OS Kit includes: (1). REV-SA01 SMARC Evaluation Carrier Board in 3.5" SBC Form Factor (2). SMA-IMX6QI Quad Core SMARC Module (3). Power Adapter: AC Input: 100-240V DC Output: 5.0V (4). Power Cable (5). Mini-USB Cable (6). Pre-loaded OS on onboard eMMC
View full article
Product Features: SMARC Development kit pre-loaded with Yocto OS Kit includes: (1). REV-SA01 SMARC Evaluation Carrier Board in 3.5" SBC Form Factor (2). SMA-IMX6QI Quad Core SMARC Module (3). Power Adapter: AC Input: 100-240V DC Output: 5.0V (4). Power Cable (5). Mini-USB Cable (6). Pre-loaded OS on onboard eMMC
View full article
Optimizing ARM Cortex-A9 support in Windows Embedded Compact     A Discussion of random hangs and other issues using Windows Embedded Compact on Freescale i.MX6 Application Processor and how they were solved By Adeneo Embedded Engineering Team Rev 1.0, November 2014 Summary Over the last year Adeneo Embedded has been confronted with reports of random processor deadlocks and operating system crashes from customers using our Freescale i.MX6 Windows Embedded Compact Board Support Package.   The random hangs and other issues surfaced while testing the devices comprehensively, i.e., regular CTK test passes did not bring out the failures to occur.   A dedicated team of senior engineers in Adeneo worked with a number of our key customers to analyze and solve the issues across the board. With the latest version of the Adeneo i.MX6 Windows Embedded Compact (7 and 2013) BSPs we are confident this has been achieved.   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. Format of the investigation   Based on the problem reports from the field it was complex to identify a single component in a system as the culprit, so we decided to use a formal and broad process to investigate the situation.   A formal code review was done for the BSP code, Microsoft kernel code and customer application code; Lauterbach JTAG hardware debuggers were used to capture all available processor data at the time of crashes; Microsoft’s kernel team assisted with all questions around the Windows CE kernel; Customer’s engineering teams with their specific knowledge of their application developed test applications to replicate the problem more easily Freescale support engineers assisted with all questions around the silicon. Adeneo engineers redesigned the BSP from the ground and optimized it for i.MX6 and Cortex-A9 architecture    In summary, the collaboration of multiple companies, and more important, a diverse group of dedicated individuals with unique value add provided the comprehensive technical coverage to develop the solution to this complex problem History of the i.MX6 BSP   Starting point for the i.MX6 Windows Embedded Compact BSP were earlier BSPs for other application processors from Freescale like i.MX5x series and back to i.MX2x series. On the OS side the history goes back to Windows CE 5.   The good thing with Freescale application processors is that they share peripheral IP blocks across a range of processors, so developers can share and reuse a lot of code. This was very helpful in the beginning to get a BSP working on the new i.MX6 SoC and get projects started. However, the i.MX6 with its multi-core Cortex-A9 architecture which made is challenging to reuse the code designed for single core Cortex A8 or ARM9 CPUs.   In particular, cache management, multi-core support and memory configuration were the areas where existing Cortex-A8 and ARM9 code first was able to get enablement possible, but then failed in long-term stability tests. Cortex-A9 Architecture   The Freescale i.MX6 Application Processor is an implementation of the ARM Cortex-A9 and ARMv7 Instruction Set architecture. This powerful architecture provides a number of features to improve the processing performance, but requires special attention when developing system software.   The i.MX6 provides up to four cores in a symmetric multi-processing configuration under Windows Embedded Compact.   Some of the stability affecting features addressed during the investigation are:   Speculative load and execution Speculative table walks Branch prediction Out-of-order execution and instruction reordering Parallel internal busses Multiple internal buffers and caches Multi-core coherency L1/L2 cache operations Abort handling As part of our code review we identified shortcomings in existing code to correctly configure these features and take proper advantage of them. All code was verified with the ARM architecture documentation and updated to follow the latest recommendations by ARM. Freescale engineers helped to understand implementation details where ARM documentation is vague as it leaves some freedom to silicon vendors how to implement a feature.  All errata documents from Freescale, ARM and other IP vendors were reviewed, and we made sure all applicable fixes or workarounds got implemented in BSP or kernel code.   In discussion with customers we decided on a good working configuration for the i.MX6 processor that focuses on stability without compromising performance.   In multi-core configurations we updated the code to operate all available cores in the same configuration at all times. A critical area was power management code to reapply the same settings when coming back from low power states. Memory Configuration   Cortex-A9 provides a powerful memory management unit that allows it to implement a virtual memory system that operates the device in multiple modes, isolates application processes from each other and provides layers of protection and security.   Looking at the memory space, we have several types of memory with this architecture. We focused on:   Normal memory Device memory ARM architecture has a flat unified memory address space as compared to x86 architecture where we have a memory address space and an I/O address space. This means all our peripheral registers and other I/O addresses are mapped into the same address space together with RAM and ROM (memory-mapped I/O). By default, this is nothing new and not a bad design as it makes things easier for software and hardware developers. In previous versions of Windows CE and other OS all addresses where treated a normal memory and the only difference between RAM and I/O was to set the non-cache flag in the memory properties for I/O. For architectures up to Cortex-A8 this was enough to ensure a stable operation of a system.  In particular with Cortex-A9 speculative engines the legacy approach causes problems. While some speculative features of the cores can be disabled, speculative table walks (which implicitly do speculative loads) can’t be disabled – for Normal Memory. So with Cortex-A9 it is necessary to use the extended access permission features of the architecture and configure all I/O memory as device memory. Device memory amongst others has the no-execute flag set in its properties (XN flag), and the processor doesn’t touch it during speculative operations. Under heavy load and stress this becomes an issue as the processor does more speculative operations per time and the chance to touch I/Os grows. It was one of the main reasons for crashes and deadlocks.   For Windows CE, Microsoft introduced a new way for OEMs to report available memory to the kernel with Compact 7. However, since the issue described above is not an issue on x86 and older ARM architectures, the i.MX6 BSP inherited the old reporting style from its ancestors.   With the legacy memory reporting the OEM fills a memory mapping table with the information about available memory and provides that to the CE kernel during startup. The kernel then creates the initial MMU page table with a cached and a non-cached entry per memory block from the OEM. For the MMU everything is normal memory.   The new WEC7 model works with two tables, the old one for RAM and ROM, and a new one for I/Os (device table). All blocks in the device table are configured as device memory in the MMU and are protected then.   This sounds straight forward, but the devil is in the details. The new model changes the way BSP code can use address translation during the early boot phase. Functionality in the startup code and the KITL component had to be updated in order to work with the new model and allow parameter transfer from boot loader code to OAL code. It is also not well documented and required kernel code reviews and discussions with Microsoft kernel engineers to fine tune this part of the code and optimize it for i.MX6. Another issue was that internal SRAM of the i.MX6, which in the first place appears as part of the processor’s I/O space, and so ended up in the device table. However, the internal RAM is used in low power modes to run power-management code while external RAM is in self-refresh, so it has to be mapped as normal memory without the XN flag set. After all, it wasn’t a trivial piece of work. Synchronization Barriers   Due to the above listed enhancements in Cortex-A9 it is necessary to set synchronization points in the flow of operation at which the processor and all memory has a known state and is in sync. This is especially important when updating processor configuration or during context switches in the OS.   Through code reviews of OAL and kernel code and in discussions with Microsoft we updated the BSP to meet all ARM requirements and fine tune the interfaces between kernel and OAL to provide optimal performance. Errata   During the investigation we spent time on errata for the i.MX6 and its various IP blocks. BSP and kernel code where intensively reviewed for each erratum, if they are affected and a fix or workaround is necessary to be implemented.   As part of this we also looked at the all software implemented BSP for i.MX6 (by Freescale) and its change log to double-check that we didn’t miss anything.   Several critical errata were identified as missing in the code and implemented during the investigation. Three of the necessary code changes were in Microsoft kernel code and required a kernel update. Adeneo Embedded implemented these modifications in the kernel, tested the updated kernel in our test lab as well as with selected customers in the field, and then submitted the kernel change requests to Microsoft to formally release the update through the Windows Embedded Update mechanism. Cache Management   The i.MX6 implements the Cortex-A9 architecture with an internal L1 data and instruction cache and an external L2 unified cache. Internal L1 means the L1 RAM array is located inside the ARM MPCore IP block, and each Cortex-A9 core in the MP cluster has its own L1 cache. External L2 means the L2 RAM array is located outside the ARM MPCore IP block but inside the SoC and connected to the internal AXI bus. Both RAM arrays are not accessible through processor load/store instructions.   Cache memory allows the system to keep often used data in memory with faster access but this requires to synchronize cache memory and external SDRAM so that observers outside the processor-cache block can see data changes.   When configured as SMP cluster some of the necessary L1 maintenance is done by the hardware cache controller. Since we may have up to 4 cores each with its own L1 cache, and a multi-tasking operating system which may assign the same execution thread to different cores due to context switches, it is necessary that all cores have the same synchronized view of the memory. This is done in hardware through the coherency unit in the MPCore as long as single addresses are affected. If the L1 needs maintenance as a whole software has to handle it.   Software also has to handle all L2 cache maintenance operations.   Cache maintenance gets invoked by the kernel normally, but there are a few situations where device drivers or even application software has to request cache maintenance. In any case, the OAL gets these requests and executes them. All cache related code in the OAL was updated and redesigned to meet the ARM architecture requirements and collaborate with the kernel in an optimized way. Shortcomings Cortex-A9 support in the cache maintenance code and maintenance requests from drivers were another major source of instability in the initial BSP.   Some of the complications in this area are:     Optimize L1 code to take advantage of the available hardware support Maintenance requests that include L1 and L2 require a specific procedure to make sure all levels of memory are in sync Maintenance requests can come from multiple threads and CPUs in parallel – L2 code has to be reentrant and multi-core safe DMA controllers work with physical addresses and do not know about caches; when DMA operations are used drivers have to make sure to request the necessary cache maintenance. Some instability with USB, SD and video operations were related to bugs in this area.    Build and Testing   As we learned at the beginning of this investigation that the CTK BSP testing failed to identify these issues we also reviewed our testing approach and implemented improved procedures. A new component in our testing is the stability lab, where we provide a dedicated set of hardware together with IT infrastructure to automate tasks and log results. With approval from our key customers we transferred customer test applications and applications that helped reproducing the issues into more generic test applications and added them to our portfolio.   Another lesson learned is that knowledge of customer use cases is important. We restructured our testing to be closer to real world scenarios and integrate feedback from customers directly.   A number of times during the investigation concerns were raised that the build process or the tools may be the root cause for some issues. Test teams reported different results based on where and how an OS image was built. We analyzed the tool installation and update process and the process to install OS bug fixes from Microsoft, but conclusion was that these observations were red herrings. But we used the knowledge gained from this part of the investigation to improve the build lab in Adeneo Embedded. We enhanced our infrastructure and upgraded tools so that it is easier for us to switch between versions and QFE levels of Windows Embedded Compact and our BSPs. Commitment   This investigation was done over a period of about 8 months, and Adeneo Embedded put a committed effort into it to solve the problems. A core team of engineers worked fulltime on it while an extended group of engineers was available to support where needed (test, build, debugging, applications,..). The problems we had to solve here were not trivial; at times it was like a wild roller coaster ride.   But as a result we have a Freescale i.MX6 Windows Embedded Compact board support package by Adeneo Embedded with significantly improved quality and optimized for this system-on-chip. This brings out the benefits to all customers running Windows Embedded Compact i.MX6 and future CPU architectures on similar ARM cores on WEC7 and WEC2013. For more information email the Adeneo Embedded Support Team at sales@adeneo-embedded.com or visit our website at http://www.adeneo-embedded.com/
View full article
iWave has now enabled the new Hotspot feature in Android ICS 4.0.4 on iMX6 Qseven board. Internet Sharing is one of the most popular concepts in wireless communication today. A device having Data Pack can share its internet connectivity with other devices, this feature is known as 'Hotspot'. By enabling Hotspot in i.MX6 Q7 evaluation board we can use the board an Access Point. Once the Device is enabled with Hotspot, all other devices (we'll call it as client devices) within the minimum coverage range will get Network SSID in their Available wireless network's list. Once connected, client devices will be provided with the internet access. Android allows tethering only if the device is provided with mobile data pack or through Ethernet. So, the Board is connected to internet using Ethernet. As security is the major consideration in wireless communication, Hotspot feature is provided with following security modes. WPA2-PSK is more secure -                      (i)Open, (ii)WPA-PSK and (iii)WPA2-PSK Implementation of Non Standard Android feature – Simultaneous Wi-Fi Station-Hotspot modes: Basic android architecture does not support simultaneous operation of Station mode and Hotspot. Now iWave is providing support for simultaneous working of Station and Hotspot, which allows sharing the available Wi-Fi connectivity, with its client devices. This feature supports, Device(iWave iMX6 Qseven development board) works as a Wi-Fi Access Point(Standard android feature) Device works as a Wi-Fi Client (Standard android feature) Device works simultaneously as a Wi-Fi AP and a client(Non-standard android feature) A Wi-Fi mobile or tablet connects to Device's Access Point(AP) Device (As a client) connects to a public AP Device bridges the two connections and enables the Wi-Fi mobile to connect to the public AP Board acts as an Access Point by enabling Hotspot feature. Then the board will act as client by switching on Wi-Fi feature and connecting to an Access Point which is connected to internet. Pros and cons: Pros: Internet connectivity sharing is possible. Hotspot is provided with Open, WPA-PSK, WPA2-PSK security modes. Network range is up to 10m. Device can act as station and as SoftAP simultaneous. Cons: Number of client devices supported is limited to 10. For further information or enquiries please write to mktg@iwavesystems.com or visit www.iwavesystems.com
View full article
Today, technology goes forward and we get some new possibilities in the Online TV viewing. iWave’s i.MX6 Pico-ITX board with Jelly Bean Android provides one such solution. Today we can watch online TV in the Browser that will run in the i.MX6 Pico-ITX Single Board Computer. This uses Real Time Messaging Protocol (RTMP).  RTMP was initially a proprietary protocol developed by Macromedia. It is based on TCP and was specifically designed for streaming video, audio, and data between a media server and clients (Flash player). Currently applications like follows use this protocol: Online multi-player games Text and video chat applications Virtual meeting applications Synchronous and interactive e-learning applications (business simulation games, etc.) In the early days of web video delivery, users had to rely on progressive delivery of video, meaning that the bits of video were delivered to your player one packet at a time “in the blind,” with no communication between the server and player. When a reasonable percentage of the file was downloaded to disk, the player would begin playing the file. However too often the player caught up with the point at which the file was being delivered, and playback halted. As a result streaming was created—a mode through which the video is passed to the player, with increased communication and monitoring in place, and it happens in real time between the player and server. If bandwidth degrades on the player side, it signals the server and “buffers” until it can obtain a suitable amount of packets of video to resume playback. One benefit with RTMP worth mentioning here is its ability to provide multicast support. If you run an enterprise and want to take one stream inside your corporate network and deliver it to many users without initiating a new connection for each user, RTMP is the best technology. Using iMX6 PICO-ITX Android Jelly Bean, one can watch ‘online live iptv broadcasting’ and ‘video on demand’. As shown in the above block diagram, web browser through http requests the web server, then the web server will send the swf file to the web browser over http. Flash player then connects to the media server using RTMP. RTMP server will send the data via RTMP that will be played in the Flash Player. If your favourite online service (IP TV) uses the RTMP protocol for broadcasting, you have a good chance of being able to watch the video stream live using iWave’s i.MX6 SBC.  Its operating principle is simple: you input the address of the video server. It just connects to the server, consuming only the network traffic containing the video, and streams it to your display unit. Online Live IP TV: "Russia Today" is one of the IPTV broadcasting http://rt.com/on-air/rt-america-air/ we can watch this IPTV online in the Jelly Bean's Browser. We can choose the quality either HD, medium and low. Video On Demand: i.MX6 Pico ITX SBC also supports RTMP for Video on demand services. "Deutsche Welle" is one of the Video on demand service provider. We can watch this on demand video in the Android Browser.  http://www.dw-world.de/dw/0,,4756,00.html We can watch Discovery Germany Video By clicking on that. Finally iWave’s i.MX6 Single Board Computer is able to provide Video on demand services and Worldwide IPTV broadcasting over HDMI or LVDS display. For further information or enquiries please write to mktg@iwavesystems.com or visit www.iwavesystems.com. http://http://www.iwavesystems.com/onlinetv-videoondemand-imx6-android
View full article
iWave, a reliable embedded solutions provider has now optimized the booting time of its Windows Embedded Compact 7 (WEC7) BSP for Freescale’s SABRE SDP/B platform. Now the WEC7 OS is booting in a short period of time  ~3 seconds for a small footprint OS image with display and touch drivers support, and boot time of ~8 to ~10 seconds for an OS image with basic drivers and OS components support. Why boot time optimization? WinCE7 is a real time OS which will be used in performance-critical applications such as automotive and healthcare units. In most of the cases, booting time will play important role, e.g. if the device is used in rear-view camera system in automotive field, the user needs the device to start working as soon as the reverse-gear is applied. This requirement needs the device to boot and start the camera application within few seconds. This demands a very short OS boot time. Some of the techniques which can be applied for efficient boot time optimization are discussed in this article. Boot phases in WEC7: Boot-loader (eboot) Copying of OS image from booting device (e.g. Micro-SD) to RAM OAL Layer Driver initializations and file system mounting Guidelines for reducing the boot time in different booting phases of WEC7: Boot-loader (eboot): Remove the code that initializes a hardware which is not required in boot-loader. E.g. If booting device is micro-SD, the initialization of NAND is not necessary. So, this redundant code needs to be removed. The eboot menu in eboot is important for debugging of WEC7 OS. But it is not needed in an end product. So, the delay for this eboot menu can be completely removed to reduce 3 seconds of time. In few platforms such as Freescale’s SABRE platform, a default splash screen is used, which updates continuously. This can be removed, and a static splash screen can be displayed, which can save a few milliseconds of time. Remove unnecessary serial debug prints. Copying of OS image from booting device (e.g. Micro-SD) to RAM: This time increases as the size of WEC7 OS image increases. So, select the OS components carefully and remove redundant components from OS image so that the OS image can be copied to RAM quickly. Also remove unnecessary registry keys, dlls and libraries to reduce the OS size. Optimize binary image builder (.bib) file to reduce the run-time image file. Implement Multi-BinFS OS binaries to reduce the OS copying size. As the functionalities/driver supports goes on increasing, WEC7 image size increases. So, the time required to copy the image increases, and RAM size needed to store the OS image increases. The Binary ROM Image File System (BinFS) can fix the two issues. In a BinFS file system, the WEC7 OS binary is divided into multi-binary Image files, and only the one binary (less than 5MBs) is copied into the RAM by the boot-loader. The components in the other binary files are copied into the RAM only when they are required to run. Links that can be referred to implement multi-BinFS in WinCE:      MSDN documentation: http://msdn.microsoft.com/en-us/library/aa516960.aspx; An implementation guide by Freescale: http://cache.freescale.com/files/dsp/doc/app_note/AN4137.pdf You can also include compressing-decompressing mechanisms in boot-loader to achieve even shorter copying time. OAL layer: Remove the code that does unnecessary hardware implementations. Skip the initializations that already done in eboot. Remove any wait/loop/delay if exists. Remove unnecessary serial debug prints. Driver initializations and file system mounting: Analyse and remove all the redundant drivers, check for any loop, wait or delay sequences in driver initialization code. Load any applicable drivers (e.g. USB, sensors) after the OS boot (i.e. after user sees a desktop/application). In WEC7 OS, a driver can be either loaded during booting using device manager/GWES, or can be loaded dynamically whenever necessary. This can be achieved easily by changing the registry key configurations to remove the driver from built-in drivers, a small application to load the driver after OS boot-up, and registry settings to launch this application automatically once the OS is booted. To decide the load order, it is important to check the dependencies of/on a driver. Use appropriate splash screen/progress bar while user waits for OS booting. Remove unnecessary serial debug prints. By effectively following the techniques mentioned, WEC7 based platforms can achieve reduced boot time for quick application access. iWave has optimized the WEC7 booting time on Freescale’s SABRE SDP platform. The booting time is as low as ~3 seconds for a WEC7 OS with standard shell, LCD display, DDraw, I2C and touch driver support, and ~8 to 10 seconds for WEC7 OS with following components: Standard shell Display DDRAW Capacitive touch screen MicroSD USB host – Mass storage and HID Ethernet GPU (OpenVG/GL) Multimedia codecs DirectShow Audio Video Playback Ambient Light Sensor Accelerometer SMP PWM Backlight I2C Debugging using KITL For further information or inquiries please write to mktg@iwavesystems.com or visit www.iwavesystems.com
View full article