This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Red Hat eCos and RedBoot news
- To: ecos-discuss at sources dot redhat dot com
- Subject: [ECOS] Re: Red Hat eCos and RedBoot news
- From: Julius Vanderspek <juul at trimedia dot com>
- Date: Mon, 9 Apr 2001 09:17:30 -0700 (PDT)
- Reply-To: Julius Vanderspek <juul at trimedia dot com>
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