User:Remy

From RTwiki
(Difference between revisions)
Jump to: navigation, search
m
 
m (Remy Böhmer)
Line 1: Line 1:
 
== Remy Böhmer ==
 
== Remy Böhmer ==
  
I am working for a large printer manufacturer in the Netherlands. The printers we develop require a Hard-Realtime Operating System as Embedded Control Platform to control the hardware (i.e. motors, clutches, sensors etc.).
+
I graduated from a study in Technical Computer Science in 1999 with a bachelor degree. Prior to this, I was active as a programmer in the hobby computer scene. My professional career started in 1994 for a large printer manufacturer in the Netherlands. Since 1999, I am working on non-real-time printer software. During 2001, I became active in the field of real-time printer control software, with a focus on operating systems, device drivers, and timing. Starting in 2003, I worked on using a single platform for the combined operation of real-time printer control and non-real-time printer control software for data processing/throughput.
<BR>My main task is to get RT-Linux to run on the Embedded Control boards. I have years of experience with the RT_PREEMPT patch on X86 (+SMP) and Atmel AT91 ARM cores, started with the 2.4 preemptive kernel. Before Linux I worked with LynxOS from Lynuxworks as RTOS beside VxWorks and some proprietary schedulers.
+
  
We never liked the RTAI dual-kernel approach, because we need the capability to run Userland POSIX-C++-RT-applications, beside non-RT (also 3rd party commercial) applications that generate a high amount of data processing/throughput through network devices and harddisk. Even heavy use of the swap space on disk is necessary on our systems.  
+
First we started doing this while running on LynxOS from Lynuxworks. Due to continuous problems with some 3rd party software that did not run well on this RTOS (It was not designed for LynxOS, but could run on it due to the Linux ABI compatibility layer of this LynxOS), we started searching for an alternative in early 2005. A logical step was to make the switch to Linux, but Linux was not real time enough at that time. We started looking at the preemptive 2.4 kernels, but migrated soon to the Montavista-4 2.6.10-RT kernel. It turned out to be a good route to go. But do to increasing hunger for CPU-speed and the lack of Priority Inheritance on Mutexes, we moved to newer kernels and newer CPU/chipsets to run on.
<BR>We managed to get this system to run stable and to let the RT-application, beside the running non-RT applications, show similar RT behavior as what was normal for VxWorks or LynxOS on the same platform. So, we do things with Linux here what is impossible with the mentioned RTOS-es...  
+
Eventually we ended up using Fedora Core 6 together with a 2.6.20-rt8 kernel on a Core-2-Duo(E6300) system with a Intel 945 chipset. This was the 1st kernel that really ran stable on our boards with our real time requirements and data throughput requirements, without having to patch a lot of things in the kernel ourselves.  
 +
Eventually we get equal real time results on these boards as with LynxOs and VxWorks without loosing much data-processing/throughput capabilities, and with the advantage of the much more complete set of development tools, recent hardware support etc.
  
Because there was very little written on how to write RT-applications on Linux, I tried to share some of the basics on [[ HOWTO:_Build_an_RT-application ]] and the [[ Frequently_Asked_Questions ]].  
+
Early 2007 I started using real-time Linux on (proprietary) ARM based cores from Atmel (AT91 series), but on these boards we only need to run the hard real time application to control the printer hardware, without the data process software that was needed on the Intel boards.
 +
It turned out that these boards are limited supported by the real-time patch, and I am still working to get these boards complete and running stable. The basic real-time patch runs fine, but several drivers do not like the preemptive kernel, and could BUG() sometimes, Even interrupt sharing is a big problem, because many devices in the at91-cores share the same interrupt line which is shared with the Timer interrupt, and thus run in the IRQF_NODELAY context. The faulty drivers are not designed for this context. I am working on a patch-set for these type of boards, and will publish the patches during the process, when they are ready, or on request (e.g. in the LKML).
 +
 
 +
During the years I found out that very little was written on how to write RT-applications on Linux, especially if they have to run beside heavy non-RT applications. This is the reason why I shared some of the basics on [[ HOWTO:_Build_an_RT-application ]] and the [[ Frequently_Asked_Questions ]].  
 
<BR><BR>Remy Böhmer (linux AT bohmer DOT net)
 
<BR><BR>Remy Böhmer (linux AT bohmer DOT net)

Revision as of 18:35, 1 October 2007

Remy Böhmer

I graduated from a study in Technical Computer Science in 1999 with a bachelor degree. Prior to this, I was active as a programmer in the hobby computer scene. My professional career started in 1994 for a large printer manufacturer in the Netherlands. Since 1999, I am working on non-real-time printer software. During 2001, I became active in the field of real-time printer control software, with a focus on operating systems, device drivers, and timing. Starting in 2003, I worked on using a single platform for the combined operation of real-time printer control and non-real-time printer control software for data processing/throughput.

First we started doing this while running on LynxOS from Lynuxworks. Due to continuous problems with some 3rd party software that did not run well on this RTOS (It was not designed for LynxOS, but could run on it due to the Linux ABI compatibility layer of this LynxOS), we started searching for an alternative in early 2005. A logical step was to make the switch to Linux, but Linux was not real time enough at that time. We started looking at the preemptive 2.4 kernels, but migrated soon to the Montavista-4 2.6.10-RT kernel. It turned out to be a good route to go. But do to increasing hunger for CPU-speed and the lack of Priority Inheritance on Mutexes, we moved to newer kernels and newer CPU/chipsets to run on. Eventually we ended up using Fedora Core 6 together with a 2.6.20-rt8 kernel on a Core-2-Duo(E6300) system with a Intel 945 chipset. This was the 1st kernel that really ran stable on our boards with our real time requirements and data throughput requirements, without having to patch a lot of things in the kernel ourselves. Eventually we get equal real time results on these boards as with LynxOs and VxWorks without loosing much data-processing/throughput capabilities, and with the advantage of the much more complete set of development tools, recent hardware support etc.

Early 2007 I started using real-time Linux on (proprietary) ARM based cores from Atmel (AT91 series), but on these boards we only need to run the hard real time application to control the printer hardware, without the data process software that was needed on the Intel boards. It turned out that these boards are limited supported by the real-time patch, and I am still working to get these boards complete and running stable. The basic real-time patch runs fine, but several drivers do not like the preemptive kernel, and could BUG() sometimes, Even interrupt sharing is a big problem, because many devices in the at91-cores share the same interrupt line which is shared with the Timer interrupt, and thus run in the IRQF_NODELAY context. The faulty drivers are not designed for this context. I am working on a patch-set for these type of boards, and will publish the patches during the process, when they are ready, or on request (e.g. in the LKML).

During the years I found out that very little was written on how to write RT-applications on Linux, especially if they have to run beside heavy non-RT applications. This is the reason why I shared some of the basics on HOWTO:_Build_an_RT-application and the Frequently_Asked_Questions .

Remy Böhmer (linux AT bohmer DOT net)

Personal tools