Category: "embedded"

Pages: 1

Solving the QSPI NOR Flash issue

 15. May 2017, by emtrion
Categories: Hardware, embedded

The Beginning

The following article gives a real life example of pitfalls that developers face during their work almost every day and shows how problems can be solved by close cooperation of software and hardware developers.

It all started with a custom specific design which incorporated a CPU that was not used before. Therefore there was almost no know how available at emtrion about that CPU from former projects. Nevertheless the project was almost finished within the given time and hardware and software were working as demanded by the customer.

The only remaining issue was the startup time of the system. As often the customer complained that it lasts too long until the system was running after power up. To reduce component costs a single QSPI NOR Flash chip was used to store all software, including the Linux operating system.

The used CPU incorporates a so called “First level bootloader” which starts fetching code from the QSPI NOR Flash. This is done in 4 bit wide QSPI mode at 41.5 MHz clock. It was assumed that the startup time could be reduced by increasing the clock of the QSPI NOR Flash after the First Bootloader has finished.

Full story »

Form is loading...

Renesas Synergy, a complete IoT ecosystem.

 15. December 2016, by emtrion
Categories: Software, Eclipse, embedded

Renesas Synergy is a complete and qualified platform with fully integrated software, a scalable family of microcontrollers, and unified development tools to speed embedded system developers’ time to market as they innovate new products.

At the heart of the Synergy Platform is the Synergy Software Package (SSP), which is qualified, supported, warranted, and maintained by Renesas. The SSP consists of a proven real-time operating system (RTOS), stacks for USB and Ethernet, file systems, a graphic users interface (GUI), and more – all accessible through a robust Application Programming Interface (API) to free designers from struggling with lower-level details.

Based on the very popular and customisable Eclipse IDE, the Synergy IDE is very simple to understand and to get the graps of it.

“Hello World” using the UART Application Framework

We will explore the Renesas Synergy UART Application Framework and walk through the necessary steps to get it up and running on a PE-HMI1 starter kit and say “Hello World!”.

Starting from a new project configured by the Synergy wizard to be a Blinky project, a developer can open the Synergy configuration file and navigate to the threads tab. After selecting the blinky thread, a thread stack can be added by selecting add Framework -> Connectivity -> UART Driver.



Once the developer has added the UART Application Framework to the project, there are a few configuration items that need to be handled. First, within the SCI module properties, the Asynchronous Mode (r_sci_uart) needs to be enabled.The g_uart0 UART Driver on r_sci_uart module will still be colored red, indicating that further configuration is required. Clicking on the module, the four interrupts associated with SCI RXI, TXI, TEI and ERI all need to have their priorities set.

Saving the changes results in the configuration being accepted (the red coloring now becomes black) and our development environment will look similar to the image below.

By default, the UART Driver on r_sci_uart module is configured for 9600 bps, 8 bits, 1 stop bit which is pretty standard. Developers can change these defaults from the properties tab if necessary. Once the desired settings have been set, save all changes and then press the “Generate Project Content” button before rebuilding the project. The header for the UART Application Framework will now be added to the application.

At this point, the UART Application Framework is configured and ready to be utilized in the project. If a developer has never used the Synergy Software Package (SSP) before, they may be wondering how they can now use the framework that is included in the project. The trick for getting the API’s associated with the framework is to use the framework name instance, in this case g_uart0, and then examine its p_api member which in the IDE will reveal all available API calls. So in English, or computer code more accurately, typing g_uart0.p_api-> in the IDE will reveal the function available.

Writing the “Hello World” application using the UART Application Framework requires only four lines of code in the hal_entry.c, like below:

The execution of this example will now reveals the following output on the UART0:

The UART Application Framework is now properly configured on the development kit and communicating with the external world. Not only was this simple to achieve but scaling into far more complex applications is just as straightforward.

Form is loading...

emtrion goes virtual

 12. April 2016, by emtrion
Categories: Software, Linux, embedded, Android

In the past few months emtrion has broaden its knowledge base towards the open source virtualization platform Jailhouse [1]. The eventual goal is to provide customers a virtualization solution that is real-time capable, lightweight, secure, certifiable and operable on emtrion hardware. The main advantage to customers will be the reduction of costs through the combination of multiple hardware units into one single unit that handles multiple tasks.

Full story »

Form is loading...


In general most of emtrion’s hardware comes with interfaces like Ethernet, RS232, CAN, GPIOs, I2C, SPI. In addition, the used CPU modules are supported by a powerful microprocessor.

Such preconditions are predestinated in controlling industrial systems. In many cases, programming in this environment is based on the widely-known NORM IEC 61131-3.

If you consider these items, the question to ask is, are there any reason why you are not using emtrion's hardware as PLC. Not really. On the one hand it's dependent on the use case and its requirements such as real-time, certification etc. and the other hand on the effort needed to transform it to a PLC.

Full story »

Form is loading...


Products for consumer market, industrial control systems and other embedded devices often require a touch screen display to offer both, visual feedback to the user, as well as an input method to interact with the system. In order to achieve a nicely designed and responsive user interface, developers can write their own graphical library providing widgets like drop-down menus, list-views, check-boxes or simple buttons. However, this can be a very tedious and error-prone task. It is best to use one of the available graphic libraries like Qt[1], Cairo[2], EFL[3] or also emWin[4], not to forget to mention nCurses for console-style block-oriented graphics.

Now which library should one select, especially in terms of limited hardware resources on embedded systems but also with a look forward to the look&feel as well as the usability on a touch screen? Besides, hardware restrictions, like the used CPU and its computing power, available RAM-size, free space in ROM, availability of a GPU with 2D/3D hardware accelerated graphics and the used operating system, should be taken into consideration. emWin for example, runs on bare-metal systems either with or without a RTOS whereas Qt or EFL need at least a running Linux (but not said that it is impossible to run them on bare-metal). Other decision affecting parameters are the availability of the library as open- or closed-source, as well as the costs for non-commercial and commercial products. In the following article we will take a brief look at the Enlightenment Foundation Libraries (EFL) of a small Cortex-A5 based single board computer from emtrion running a Debian Jessie based Linux: the SBC-SAMA5D36 [5].

Full story »

Form is loading...


Linux is an operating system that is widely used in embedded systems such as consumer electronics, networking equipment, machine control, industrial, automation and so on and so forth. However, all systems do not have the same requirements in term of determinism and sometimes determinism, the ability to schedule the highest priority tasks in a consistent and predictable way, really matters. This is the case for Financial Services, Networking (QoS), Robots, Air Traffic Control Systems...

Compared to other real-time operating systems, Linux has the advantage to be open source with great hardware support. Yet it was not designed to be real-time. It was originally designed to be a time-sharing system where the goal is to give the best throughput from the hardware using all the resources at the maximum. This is the opposite requirement of the real-time constraints that needs determinism even at a low global throughput.

Throughout the years, different approaches have emerged to overcome this problem. The first approach is to modify the Linux Kernel itself in order to get the required latencies or the real-time APIs. This approach is covered by the project PREEMPT_RT led by the Linux kernel developers Ingo Molnar, Thomas Gleixner and Steven Rostedt. The second approach is to add a layer between the Hardware and the Linux kernel to handle the real-time requirements so that the Linux kernel behaviour can stay as it is. This approach has been taken into account by different project like RTLinux, RTAI and Xenomai. Since only the last one is maintained actively on ARM, we will only talk about it.

Full story »

Form is loading...

The emtrion SBC-SAMA5D36

 06. May 2015, by emtrion
Categories: Hardware, Linux, embedded, SAMA5D3

 I may be a microcontroller guy myself, but there are times where you need the power of a microprocessor. Having an operating system handle the memory, peripherals and events just saves time, and some applications really do need the power a microprocessor provides.

Atmel’s SAMA5D3 family has some impressive devices. Based on ARM’s A5 architecture, they has an impressive amount of peripherals and I/O lines. To name just a few, the SAMA5D36 has 3 I2C ports, 6 SPI ports, 12 12-bit ADC channels, and something you don’t see every day, 7 UART ports. This is impressive enough, but to add to that, the SAMA5D3 also has up to 160 I/O pins, each with its own interrupt. The SAMA5 series is geared towards industrial environments, automotive devices, and with Atmel’s implementation of capacitive touch peripherals, it can be used on just about any application where a user must input data.

With all that power, it isn’t surprising that the German manufacturer emtrion used this processor for one of their development boards, the SBC-SAMA5D36. They not only went with the SAMA5D36 device for its power and reliability, but also for Atmel’s reactivity when it comes to support. Atmel has worked hard on Linux implementation, and so the Linux kernel has everything you need to access every part of the processor, but I’ll get into that later on.

Full story »

Form is loading...




emtrion GmbH
Kreativpark - Alter Schlachthof 45
D-76131 Karlsruhe

Tel: +49 (0)721-62725-0
Fax: +49 (0)721-62725-19