I successfully use this to develop for the HCS12X.
Note however that gcc will not compile XGATE code. AFAIK there is no
open source XGATE compiler, however, there is an assembler available:
http://sourceforge.net/projects/hsw12asm/
Reply by David Brown●May 30, 20082008-05-30
Grant Edwards wrote:
> On 2008-05-29, David Brown <david@westcontrol.removethisbit.com> wrote:
>
>> gcc provides better syntax checking than any other compiler I have
>> tried. However, I don't believe there is a gcc port for the 68HCS12 -
>
> Yes there is.
>
>> if such a thing exists, it would only be as a minor partial port.
>
> What do you mean by a "minor partial port"? It's in the
> mainline gcc source tree, and it seemed to work fine for me.
> The code it generated was far better than the last commercial
> 6811 compiler I used.
>
Sorry, I was thinking of the 8-bit Motorola/Freescale devices, not the
16-bit devices. So I got that one completely wrong.
Reply by Grant Edwards●May 29, 20082008-05-29
On 2008-05-29, Florian E. Teply <onlinefloh@usenet.cnntp.org> wrote:
> And -- i just checked -- the gcc man page lists in the "machine dependent
> options" section the options -m68hc12 and -m68hcs12 in version 4.3.0.
> I'll probably try and get this to work, but as said: using gcc as a mere
> syntax checker would already be a start.
Gcc is a single-target design: you have to build a separate gcc
installation for each target architecture. IOW, you can't
switch from IA32 to HC12 target architecture by merely changing
the command line arguments passed to a single gcc binary.
>> It is quite possible to use gcc for a different target as a static
>> analysis tool. I've done that along with a commercial compiler for a
>> target (I've forgotten which - it was a long time ago) - gcc "compiles"
>> the program natively for the host (linking tended to fail...). It might
>> mean a little bit of fiddling to get the right headers at the right
>> place, and perhaps an extra header defining macros for any compiler
>> extensions used by the real target compiler, but it can often work well.
>> You can also use gcc to generate the makefile dependencies at the same
>> time.
>
>> An alternative is to use a dedicated static analysis tool. The big one
>> is PC-Lint, which is a reasonable price on Windows (but absurdly four
>> times the price on Linux - and I doubt they support PPC Linux). The
>> open source option is splint, which should be fine on your system.
>
> Thanks, will have a look at splint.
In my experience splint is useless for real world work. It'll
warn you about code like this:
uint8_t b;
b = 1;
Splint is unhappy because b is 8 bits wide and "1" is 16 or 32
bits wide (depending on your target), and the assignment is
loosing bits. If you turn that warning off, then you _won't_
get warned about code like this:
uint32_t u;
uint8_t b;
b = 123456789L;
b = u;
The only solution is to completely cover your code with
type-casts. The result is code without splint warnings, but
it's completely impossible to read/maintain.
I looked into trying to fix up splint to make it useful for
real work, but gave up after looking at the internals. The
"owners" of splint acknowledged on the splint mailing list that
splint was intended for language research and not for use with
real programs.
--
Grant Edwards grante Yow! Is this going to
at involve RAW human ecstasy?
visi.com
Reply by ●May 29, 20082008-05-29
On May 29, 2:49 am, onlinef...@usenet.cnntp.org (Florian E. Teply)
wrote:
> as you might guess from the subject: I'm trying to find a toolchain for
> freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> using Codewarrior on the Windows machine at work, but as i'm a tad
> dissatisfied by it's lack of decent syntax-checking and have no windows
> at home, i'd rather use some free compiler available for my rather
> unusual platform (Linux on PowerPC). So gcc would probably be the best
> bet.
Understand your frustration with codewarrior, however one reason for
sticking with it is the
fairly good BDM in-circuit debug capability of the HCS12 family.
The pod will set you back $100, but ultimately it is worth it.
I don't know if a gcc-based tool chain will really be able to leverage
that.
Reply by Florian E. Teply●May 29, 20082008-05-29
David Brown <david@westcontrol.removethisbit.com> wrote:
> Florian E. Teply wrote:
> > Hiya folks,
> >
> > as you might guess from the subject: I'm trying to find a toolchain for
> > freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> > using Codewarrior on the Windows machine at work, but as i'm a tad
> > dissatisfied by it's lack of decent syntax-checking and have no windows
> > at home, i'd rather use some free compiler available for my rather
> > unusual platform (Linux on PowerPC). So gcc would probably be the best
> > bet.
> >
> > Has any of you guys experience with that combination or another
> > suggestion (apart from buying some windows machine)??
> >
> gcc provides better syntax checking than any other compiler I have
> tried. However, I don't believe there is a gcc port for the 68HCS12 -
> if such a thing exists, it would only be as a minor partial port. But
> there are a couple of other ways to achieve what you want without
> dropping Codeworrier.
I'm not necessarily into dropping Codewarrior, i thought more like using
gcc as some sort of syntax check while not at work, so i can test the
stuff at home and concentrate on fixing this mess at work ;-)
Proper binaries would be an added bonus though.
And -- i just checked -- the gcc man page lists in the "machine dependent
options" section the options -m68hc12 and -m68hcs12 in version 4.3.0.
I'll probably try and get this to work, but as said: using gcc as a mere
syntax checker would already be a start.
> It is quite possible to use gcc for a different target as a static
> analysis tool. I've done that along with a commercial compiler for a
> target (I've forgotten which - it was a long time ago) - gcc "compiles"
> the program natively for the host (linking tended to fail...). It might
> mean a little bit of fiddling to get the right headers at the right
> place, and perhaps an extra header defining macros for any compiler
> extensions used by the real target compiler, but it can often work well.
> You can also use gcc to generate the makefile dependencies at the same
> time.
> An alternative is to use a dedicated static analysis tool. The big one
> is PC-Lint, which is a reasonable price on Windows (but absurdly four
> times the price on Linux - and I doubt they support PPC Linux). The
> open source option is splint, which should be fine on your system.
Thanks, will have a look at splint.
Greetings,
Florian
Reply by Florian E. Teply●May 29, 20082008-05-29
FreeRTOS.org <noemail@given.com> wrote:
> "Florian E. Teply" <onlinefloh@usenet.cnntp.org> wrote in message
> news:n902h5-9g2.ln1@mobile-news.teply.info...
> > Hiya folks,
> >
> > as you might guess from the subject: I'm trying to find a toolchain for
> > freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> > using Codewarrior on the Windows machine at work, but as i'm a tad
> > dissatisfied by it's lack of decent syntax-checking and have no windows
> > at home, i'd rather use some free compiler available for my rather
> > unusual platform (Linux on PowerPC). So gcc would probably be the best
> > bet.
> >
> > Has any of you guys experience with that combination or another
> > suggestion (apart from buying some windows machine)??
> >
> > Greetings,
> > Florian
> >
Umm, i guess this is *quite* close ;-)
Thanks,
Florian
Reply by Grant Edwards●May 29, 20082008-05-29
On 2008-05-29, David Brown <david@westcontrol.removethisbit.com> wrote:
> gcc provides better syntax checking than any other compiler I have
> tried. However, I don't believe there is a gcc port for the 68HCS12 -
Yes there is.
> if such a thing exists, it would only be as a minor partial port.
What do you mean by a "minor partial port"? It's in the
mainline gcc source tree, and it seemed to work fine for me.
The code it generated was far better than the last commercial
6811 compiler I used.
--
Grant Edwards grante Yow! Gee, I feel kind of
at LIGHT in the head now,
visi.com knowing I can't make my
satellite dish PAYMENTS!
Reply by Grant Edwards●May 29, 20082008-05-29
On 2008-05-29, Florian E. Teply <onlinefloh@usenet.cnntp.org> wrote:
> as you might guess from the subject: I'm trying to find a toolchain for
> freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> using Codewarrior on the Windows machine at work, but as i'm a tad
> dissatisfied by it's lack of decent syntax-checking and have no windows
> at home, i'd rather use some free compiler available for my rather
> unusual platform (Linux on PowerPC). So gcc would probably be the best
> bet.
>
> Has any of you guys experience with that combination or another
> suggestion (apart from buying some windows machine)??
Building a toolchain isn't too hard. Below is the shell script
I used last time I built a toolchain for the 6812. That was
probably a couple years ago I included newlib in my build, but
IIRC, you can build a 6812 compiler without any libc at all if
you prefer.
------------------------------build-6812.sh------------------------------
#!/bin/bash
DEST=/opt/gnu/testing
TARGET=m6812-elf
BINVERS=2.15_v0501
GCCVERS=3.4.3
NLBVERS=20030821-kpit3.04
GDBVERS=6.1
HERE=$PWD
SRC=$PWD/src
BLD=$PWD/bld
set -e
echo "+++ cleaning old source directory"
rm -rf $SRC
echo "+++ cleaning old build directory"
rm -rf $BLD
export PATH=$DEST/bin:$PATH
mkdir -p $SRC
function do-binutils {
echo "+++ extracting binutils"
tar xzvf binutils-$BINVERS.tar.gz -C $SRC
echo "+++ configuring binutils"
mkdir -p $BLD/binutils
pushd $BLD/binutils
$SRC/binutils-$BINVERS/configure \
--target=$TARGET \
--prefix=$DEST \
2>&1 | tee configure.log
echo "+++ building binutils"
make 2>&1 | tee make.log
echo "+++ installing binutils"
make install 2>&1 | tee makeinstall.log
echo "+++ finshed binutils"
popd
# rm -rf $SRC/binutils-* $BLD/binutils
}
function do-gcc {
echo "=== extracting gcc"
tar xzvf gcc-$GCCVERS.tar.gz -C $SRC
if [ -d $HERE/patches/gcc ]
then
echo "=== patching gcc"
pushd $SRC/gcc-$GCCVERS
(for f in $HERE/patches/gcc/*
do
echo "==== $f"
patch -p0 <$f
done) 2>&1 | tee patch.log
popd
fi
echo "=== extracting newlib"
tar xzvf newlib-$NLBVERS.tar.gz -C $SRC
mv $SRC/newlib-$NLBVERS/newlib $SRC/gcc-$GCCVERS
mv $SRC/newlib-$NLBVERS/libgloss $SRC/gcc-$GCCVERS
echo "=== configuring gcc"
mkdir -p $BLD/gcc
pushd $BLD/gcc
$SRC/gcc-$GCCVERS/configure \
--target=$TARGET \
--prefix=$DEST \
--enable-languages=c \
--with-gnu-as \
--with-gnu-ld \
--with-newlib \
-v 2>&1 | tee configure.log
echo "=== building gcc"
make 2>&1 | tee make.log
echo "=== installing gcc"
make install 2>&1 | tee makeinstall.log
echo "=== finished gcc"
popd
# rm -rf $SRC/gcc-* $SRC/newlib-* $BLD/gcc
}
function do-gdb {
echo "=== extracting gdb"
tar xzvf gdb-$GDBVERS.tar.gz -C src
echo "=== configuring gdb"
mkdir -p $BLD/gdb
pushd $BLD/gdb
$SRC/gdb-$GDBVERS/configure \
--target=m6811-elf \
--prefix=$DEST \
-v 2>&1 | tee configure.log
echo "=== building gdb"
make 2>&1 | tee make.log
echo "=== installing gdb"
make install 2>&1 | tee makeinstall.log
echo "=== finished gdb"
popd
# rm -rf $SRC/gdb-* $BLD/gdb
}
do-binutils
do-gcc
do-gdb
-------------------------------------------------------------------------
--
Grant Edwards grante Yow! HUMAN REPLICAS are
at inserted into VATS of
visi.com NUTRITIONAL YEAST ...
Reply by FreeRTOS.org●May 29, 20082008-05-29
"Florian E. Teply" <onlinefloh@usenet.cnntp.org> wrote in message
news:n902h5-9g2.ln1@mobile-news.teply.info...
> Hiya folks,
>
> as you might guess from the subject: I'm trying to find a toolchain for
> freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> using Codewarrior on the Windows machine at work, but as i'm a tad
> dissatisfied by it's lack of decent syntax-checking and have no windows
> at home, i'd rather use some free compiler available for my rather
> unusual platform (Linux on PowerPC). So gcc would probably be the best
> bet.
>
> Has any of you guys experience with that combination or another
> suggestion (apart from buying some windows machine)??
>
> Greetings,
> Florian
>
> Hiya folks,
>
> as you might guess from the subject: I'm trying to find a toolchain for
> freescale's hcs12 or S12X family of microcontrollers. Currently i'm
> using Codewarrior on the Windows machine at work, but as i'm a tad
> dissatisfied by it's lack of decent syntax-checking and have no windows
> at home, i'd rather use some free compiler available for my rather
> unusual platform (Linux on PowerPC). So gcc would probably be the best
> bet.
>
> Has any of you guys experience with that combination or another
> suggestion (apart from buying some windows machine)??
>
gcc provides better syntax checking than any other compiler I have
tried. However, I don't believe there is a gcc port for the 68HCS12 -
if such a thing exists, it would only be as a minor partial port. But
there are a couple of other ways to achieve what you want without
dropping Codeworrier.
It is quite possible to use gcc for a different target as a static
analysis tool. I've done that along with a commercial compiler for a
target (I've forgotten which - it was a long time ago) - gcc "compiles"
the program natively for the host (linking tended to fail...). It might
mean a little bit of fiddling to get the right headers at the right
place, and perhaps an extra header defining macros for any compiler
extensions used by the real target compiler, but it can often work well.
You can also use gcc to generate the makefile dependencies at the same
time.
An alternative is to use a dedicated static analysis tool. The big one
is PC-Lint, which is a reasonable price on Windows (but absurdly four
times the price on Linux - and I doubt they support PPC Linux). The
open source option is splint, which should be fine on your system.