porting to Motorola MCore

Joel Sherrill joel at rtems.org
Sun Dec 27 22:22:03 UTC 2015

On Sun, Dec 27, 2015 at 2:13 AM, sgtas company <sgtas at mail.com> wrote:

> Hi,
> Two humble apologies in advance:
> 1) sorry for spamming y'all that didn't hit the 'delete' button or spam
> filter already and have wasted valuable seconds reading this
> 2) sorry if this is completely the wrong place for this email --- please
> let me know where I should have gone instead

This is the right place.

> However, given the following (and other similar blurbs I found on the
> Wiki):
> Potential Ports
> We are always interested in adding ports to other CPU families supported
> by the GNU tools. If you are interested in working on a port or are ready
> to submit one, contact us.
>    - Atmel AVR
>    - Xtensa
>    - Motorola MCore
>    - Texas Instruments C6x
>    - ARC
>    - ...
> FWIW The list is out of date. The AVR has been ported and is in the
process of
being removed. It was a challenge to fit RTEMS on anything but the largest
CPU models. Plus GCC seems to always be broken for AVR.

> This is to let "us" from "contact us" know that I am interested in porting
> rtmems to Motorola MCore, or to be more specific, to my s8g001 processor
> (and s8g1eb platform/board), which is 99.999% compatible with MCore (i.e.
> minus some MCore bugs).
This is the right place for us.

> I'm going to go ahead with this starting next month, with or without help,
> and any comments/suggestions at this point would be welcome (especially the
> "don't bother, it's already been done" kind:)
> I'm primarily a hardware/processor/ASIC/SoC designer, but I do know my way
> around software (C/C++/assembly/etc), although my OS/porting experience is
> limited (for now).
> I've worked on/with MCore processors for many many years, and I'm
> intimately familiar with the hardware and ISA, having system-designed with,
> and (re-)developed/implemented several MCore variants
> (SM210/M210S/M310S/C306/C310/C312/CS320/etc and my own compatible
> s8g001/011/012/021 cores) in various 0.35u to 45nm processes and FPGA.
> At this point, I've got my MCore compatible processor(s) coded,
> synthesized and running on my FPGA board. I've cross-compiled GCC/binutils
> with Newlib, to the point where I'm able to compile simple C-code programs
> and have those execute on my processor/board.
> I've got a big/long technology roadmap that includes faster cores,
> multi-core platforms and DSP-extensions, however, my immediate/next step is
> to have 'something' OS-ish ported to my core/board such that it can boot up
> to a linux-ish command-line prompt. I'm assuming that rtmems will suit, and
> that it (porting) can be done for a system that includes just one CPU, some
> RAM, ROM, and one or two serial ports for I/O (text display and keyboard?).
> I'm happy to add other hardware as needed (eg MMU, graphics, etc). The
> ultimatre goal is to have all the bells and whistles (full blown
> desktop/server linux, openCL, etc) on an MCore based many-core platform,
> but one has to start somewehere. I'm guessing just porting/booting rtmems
> will be difficult enough to keep me entertained for a while...
This much already running should give you a good head start. :)

The basic porting process is:

+ add mcore*-*-rtems* to binutils and gcc
  - RTEMS uses its own targets since we have multithread safe libc,
    Thread Local Storage, and other support that the basic CPU-elf targets
do not.
  - add this recipe to the RTEMS Source Builder so we all can build the
tools easily.
+ Focus on hello world on the mcore simulator in gdb. Having a BSP
   for that allows us to do automated testing. We don't all have hardware.
   - Using newlib, you should be able to get the linker script, crt0.S, and
     polled IO for a console.  This goes for gdb simulator BSP and your own.
   - This will require most of the port except interrupts to work.
+ Once hello world is running on simulator, you can add the automated
   testing support to rtems-tools.
   - At this point, you can run most tests on a simulator and see how things
     are going.
+ You can add Thread Local Storage at this point or later.
+ If the simulator in gdb doesn't support any interrupts, then move to real
   hardware and focus on the "ticker" application.

There is a porting guide which has a lot of advice. The emphasis on the
simulator is important because it eases testing of both RTEMS and the
tools. It also gives us all a common reference platform to discuss bugs
and issues you encounter.

Ask questions, dive in, and welcome on-board.

> So, there! Comments anyone...?
> Thanks,
> Michiel (sgtas at mail dot com).
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20151227/5b457c8f/attachment-0002.html>

More information about the devel mailing list