This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Red Hat eCos and RedBoot news



Hi Jonathan,

A few months ago I ported eCos to the TriMedia TM1300
(www.trimedia.com), and I would like to publish the 
results on your website.

The problem is, however, that we maintain an ANSI SDE for 
our TriMedia processors, and this SDE does not support 
the gcc extensions; therefore I had to make
a few patches in the directories that actually should not 
have been touched during porting. Most of these patches are
in the build files. See also the attached port log for getting 
an idea on what I changed. I have also attached the complete 
ported source base for further reference.

Do you have any suggestion on how to handle such a non-gcc port?

Thanks,

Juul VanderSpek,






> X-Spam-Filter: check_local@mailhost.trimedia.com by digitalanswers.org
> Mailing-List: contact ecos-announce-help@sourceware.cygnus.com; run by ezmlm
> List-Unsubscribe: 
<mailto:ecos-announce-unsubscribe-juul=trimedia.com@sources.redhat.com>
> List-Subscribe: <mailto:ecos-announce-subscribe@sources.redhat.com>
> List-Archive: <http://sources.redhat.com/ml/ecos-announce/>
> List-Post: <mailto:ecos-announce@sources.redhat.com>
> List-Help: <mailto:ecos-announce-help@sources.redhat.com>, 
<http://sources.redhat.com/ml/#faqs>
> Delivered-To: mailing list ecos-announce@sources.redhat.com
> Delivered-To: moderator for ecos-announce@sources.redhat.com
> Date: Sat, 07 Apr 2001 02:59:58 +0100
> From: Jonathan Larmour <jlarmour@redhat.com>
> X-Accept-Language: en
> MIME-Version: 1.0
> To: ecos-announce@sources.redhat.com, eCos discussion 
<ecos-discuss@sources.redhat.com>
> Subject: Red Hat eCos and RedBoot news
> Content-Transfer-Encoding: 7bit
> X-Logged: Logged by mailhost.trimedia.com as f39C7qU12879 at Mon Apr  9 
05:07:52 2001
> 
> Again Red Hat and the eCos community have been working hard to deliver more
> new ports and features to eCos and RedBoot. Here's a highlight of some
> exciting new functionality we've added recently:
> 
> o eCos and RedBoot ported to the Compaq iPAQ PocketPC. Try out
>   our eCos Microwindows demo for the iPAQ at
>   http://sources.redhat.com/redboot/ipaq/ ! Support includes
>   keypad, touch screen, watchdog, FLASH, PCMCIA and Compact
>   Flash drivers. RedBoot includes support for booting ARM Linux.
>   Derived from an initial port by Richard Panton of 3G Lab and
>   enhanced significantly by Red Hat. 
> 
> o eCos/RedBoot port to the ARM Evaluator-7T. Currently beta quality. 
> 
> o eCos/RedBoot port to QED RM7000 Ocelot, including PCI, ethernet and
>   FLASH support.
> 
> o RedBoot ported to the MIPS Atlas eval board with MIPS32 4Kc or
>   MIPS64 5Kc processor modules, including PCI, serial, ethernet and
>   FLASH drivers. 
> 
> o RedBoot support for ARM PID/EPI Dev7/EPI Dev9 targets. 
> 
> o Port added to the Cosmo CEB-V850/SB1 
> 
> o Compressed image support has been added to RedBoot 
> 
> o ROM based file system support has been added, contributed by
>   Richard Panton of 3G Lab. 
> 
> o Generic FLASH drivers added for Intel FlashFile 28Fxxx,
>   AMD AM29xxxxx, Atmel AT29C040 and Intel StrataFLASH 
> 
> o Watchdog driver for Intel SA11x0 StrongARM added. 
> 
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 
> Red Hat is exhibiting at the Embedded Systems Conference San Francisco,
> from Tuesday April 10th to Thursday April 12th inclusive. Come and see us
> demo RedBoot, eCos, and Embedded Linux on stand 2110! Visit
> http://www.esconline.com/sf/ for more details about the show.
> 
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> 
> We've given parts of the eCos net site - http://sources.redhat.com/ecos/ -
> a new look, particularly the Supported Hardware section, and we've added a
> new area dedicated to RedBoot at http://sources.redhat.com/redboot/
> Let us know what you think! 
> 
> 
> Jonathan Larmour
> eCos Net maintainer
> -- 
> Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223) 271062

TriMedia ECOS port
==================

This port fits Ecos directly on top of the TCS runtime system.
Which means that the regular boot sequence is followed, and that
an Ecos app is 'just' a main program. TCS board support packages,
and device libraries will remain working, and the TCS libc can
be used.

However, this port does *not* provide reentrancy for (TCS) libc
calls. This would require to add a considerable amount of AppModel
state to each task. I decided to keep this standard ECOS port lightweight,
and to move the reentrancy to the pSOS compliance layer.

This kept the port effort small: it consisted of defining context
switch macros (as usual on top of setjmp/longjmp), and system timer
and interrupt macros (on top of tmTimers and tmInterrups device library).
See the Hal package. Also some callback hooks to provide AppModel glue
(in the psos compliance port) were added.

The ECOS source- and build base assumes that gcc tools are used.
This was worked around in the following ways:

    1) aliasing of tmcc, tmld, tmar to tm-gcc tm-ld and tm-ar.
       (the 'tm' was chosen for CYGBLD_GLOBAL_COMMAND_PREFIX in hal.cdl). 
       See also the attached bin directory for the aliases

    2) defining an ad hoc tool tmtoobj, for converting an archive
       into an object file. See also the attached bin directory.

    3) defining dummy macros       
           #define _asm_(x)       /*nothing*/
           #define _attribute_(x) /*nothing*/

        - the TriMedia port does not contain assembly or trees

        - the _attribute_ language extension was used for the following reasons:

           a) symbol aliasing, weak symbol aliasing
               -> a lot of weak aliasing was used in the Ecos libc,
                  but this one is not used. The only one left aliased
                  the scheduler lock into a C variable so that it can be
                  accessed by interrupt handlers written in assembly, but 
                  this has been replaced by direct access of the C++ scheduler
                  object from our handlers written in C++. See diffs list below

           b) C++ constructor ordering.
               -> disabled, and replaced by linking the ECOS object files in
                  the following order:
                        kernel_thread.o kernel_clock.o kernel_except.o kernel_sc
hed.o <the others>


The trailer of this file unumerates the changes that were necessary in the
common sources. A mail to redhat concerning this has been sent, but no 
reply has been received.


######################################################################

ecos-1.3.1/packages/ecos.db
===========================

    Added TriMedia hal package reference, plus TriMedia target.



ecos-1.3.1/packages/hal/common/v1_3_1/cdl/hal.cdl
=================================================
62c62
<         $(CC) $(CFLAGS) -nostdlib -Wl,-r -Wl,--whole-archive -o $@ $<
---
>         tmtoobj $@ $<

    gcc specific conversion of archive to object file





ecos-1.3.1/packages/hal/common/v1_3_1/cdl/interrupts.cdl
========================================================
45c45
<     default_value 1
---
>     default_value 0

    Use interrupt stack by default. Changed here, because
    I don't want to have to patch the generated Ecos
    configuration each time I generate a new one




ecos-1.3.1/packages/infra/v1_3_1/include/cyg_type.h
===================================================
305c305
< # define CYGBLD_ATTRIB_ALIAS(__x__) !!!-- Attribute alias not defined --!!!
---
> # define CYGBLD_ATTRIB_ALIAS(__x__) /* !!!-- Attribute alias not defined --!!!
 */
307c307
< # define CYGBLD_ATTRIB_ASM_ALIAS(__symbol__) !!!-- Asm alias not defined --!!!
---
> # define CYGBLD_ATTRIB_ASM_ALIAS(__symbol__) /* !!!-- Asm alias not defined --
!!! */

   This effectively refused to compile with a non-gcc compiler



ecos-1.3.1/packages/kernel/v1_3_1/cdl/kernel.cdl
================================================
241c241
<             default_value 1
---
>             default_value 0

    Disable gdb hooks in kernel by default. Changed here, because
    I don't want to have to patch the generated Ecos
    configuration each time I generate a new one


ecos-1.3.1/packages/kernel/v1_3_1/include/sched.hxx
===================================================
63d62
< protected:
66a66
>  public:
69a70
>  protected:

    Make kernel flag visible from interrupt handler
    wrappers written in C(++) (see hal_intr.c). 
    The original code used a generated C symbol alias,
    which is not supported by our TCS.




ecos-1.3.1/packages/kernel/v1_3_1/src/common/thread.cxx
=======================================================
188d187
< 
1185d1183
< 
1193,1194c1191,1195
< Cyg_IdleThread idle_thread CYG_INIT_PRIORITY( IDLE_THREAD ) =
< Cyg_IdleThread( idle_thread_main,
---
> Cyg_IdleThread idle_thread CYG_INIT_PRIORITY( IDLE_THREAD ) 
> 
> //= Cyg_IdleThread
> 
> ( idle_thread_main,

   This fixes an Ecos bug masked by a gcc optimization;
   tmCC generates a temporary thread object that was afterwards
   assigned to the static variable. The temp reported itself
   to the scheduler, and this created a dangling reference.



ecos-1.3.1/packages/kernel/v1_3_1/src/sync/flag.cxx
===================================================
61c61
< Cyg_Flag::Cyg_Flag( Cyg_FlagValue init = 0 )
---
> Cyg_Flag::Cyg_Flag( Cyg_FlagValue init )
124c124
< Cyg_Flag::maskbits( Cyg_FlagValue arg = 0 )
---
> Cyg_Flag::maskbits( Cyg_FlagValue arg )
148c148
< Cyg_Flag::setbits( Cyg_FlagValue arg = ~0 )
---
> Cyg_Flag::setbits( Cyg_FlagValue arg )


   This avoids tmCC bug 600282 that forbids respecification of
   the default value (even if the same). This change can be
   undone after the bug is fixed.


ecos-1.3.1/packages/pkgconf/rules.mak
=====================================

   This file contained rules to generate .d dependency files.
   Not supported by tmCC, so the .d files are now just touched
   instead.

ecos.zip


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]