Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-05-14 Thread Peter Bigot
On Tue, Apr 22, 2014 at 1:00 PM, DJ Delorie d...@redhat.com wrote:
 * __delay_cycles() didn't get back-ported from the version that TI
 published back in December

 My bad.  I can provide it if anyone needs it, but I'll see about
 adding it to the 4.9 branch.

Any idea when this might happen?  I appreciate the offer for a private
patch, but this feature needs to be upstream and on trunk as well as
the release branch.

FWIW, I'm unable to find the sources for msp430-130423-317 as
delivered in CCS6 on http://www.ti.com/tool/msp430-gcc-opensource.  If
any TI folks are still here, that really ought to be addressed.

Peter

--
Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free.
http://p.sf.net/sfu/SauceLabs
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Grant Edwards
On 2014-04-22, DJ Delorie d...@redhat.com wrote:

 I was surprised to see DJ's comment that there actually was no
 standard system interface; the standard interface I was referring to
 is the one documented at http://neptune.billgatliff.com/newlib.html

 The key to a successfully ported newlib is providing stubs that
  bridge the gap between the functionality newlib needs, and what your
  target system can provide.

 This bridge is what I was referring to.  Newlib calls read() but does
 not provide an implementation of it.  Libgloss provides various
 target-specific implementations of read(), the one I wrote for msp430
 uses CIO to communicate with the simulator/debugger.

Why is newlib calling read(), and from what is it expecting to read?

 I was expecting for MSP430 to also simply implement the functions
 stubbed in newlib's libnosys, but at first glance it looks like the
 CIO one uses different names, and maybe doesn't support all the same
 functions.

 Hmmm... it should be all the same names.  I only changed the existing
 libgloss hooks.  But, I don't always do all the hooks, usually only
 write() and exit() are needed for our testing.

Again, why should newlib be calling write() and what is it expecting
to write _to_?

What does it expect exit() to do?

-- 
Grant Edwards   grant.b.edwardsYow! Did you move a lot of
  at   KOREAN STEAK KNIVES this
  gmail.comtrip, Dingy?


--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Peter Bigot
On Wed, Apr 23, 2014 at 9:14 AM, Grant Edwards
grant.b.edwa...@gmail.com wrote:
 On 2014-04-22, DJ Delorie d...@redhat.com wrote:

 I was surprised to see DJ's comment that there actually was no
 standard system interface; the standard interface I was referring to
 is the one documented at http://neptune.billgatliff.com/newlib.html

 The key to a successfully ported newlib is providing stubs that
  bridge the gap between the functionality newlib needs, and what your
  target system can provide.

 This bridge is what I was referring to.  Newlib calls read() but does
 not provide an implementation of it.  Libgloss provides various
 target-specific implementations of read(), the one I wrote for msp430
 uses CIO to communicate with the simulator/debugger.

 Why is newlib calling read(), and from what is it expecting to read?

 I was expecting for MSP430 to also simply implement the functions
 stubbed in newlib's libnosys, but at first glance it looks like the
 CIO one uses different names, and maybe doesn't support all the same
 functions.

 Hmmm... it should be all the same names.  I only changed the existing
 libgloss hooks.  But, I don't always do all the hooks, usually only
 write() and exit() are needed for our testing.

 Again, why should newlib be calling write() and what is it expecting
 to write _to_?

 What does it expect exit() to do?

Again: whatever the environment wants it to do.  In my case, I'm using
printf(3c) in my code, and I want it to output to one of the UARTs,
which newlib accommodates by using write(2) to descriptor 1, just like
any other standard C library.   This works because I supply a _write()
function that does that.   Or maybe it sends the data to an LCD.
Maybe exit() starts blinking a red LED if the return code isn't zero.
Whatever any of the system functions do, it's my choice, and I like
that newlib allows me that control.

Peter

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Eric
On Wed, Apr 23, 2014 at 02:14:32PM +, Grant Edwards placed into existence:
] On 2014-04-22, DJ Delorie d...@redhat.com wrote:
] 
]  I was surprised to see DJ's comment that there actually was no
]  standard system interface; the standard interface I was referring to
]  is the one documented at http://neptune.billgatliff.com/newlib.html
] 
]  The key to a successfully ported newlib is providing stubs that
]   bridge the gap between the functionality newlib needs, and what your
]   target system can provide.
] 
]  This bridge is what I was referring to.  Newlib calls read() but does
]  not provide an implementation of it.  Libgloss provides various
]  target-specific implementations of read(), the one I wrote for msp430
]  uses CIO to communicate with the simulator/debugger.
] 
] Why is newlib calling read(), and from what is it expecting to read?
] 
]  I was expecting for MSP430 to also simply implement the functions
]  stubbed in newlib's libnosys, but at first glance it looks like the
]  CIO one uses different names, and maybe doesn't support all the same
]  functions.
] 
]  Hmmm... it should be all the same names.  I only changed the existing
]  libgloss hooks.  But, I don't always do all the hooks, usually only
]  write() and exit() are needed for our testing.
] 
] Again, why should newlib be calling write() and what is it expecting
] to write _to_?
] 
] What does it expect exit() to do?

My understanding is newlib provides STDIO calls such as printf() (using
write()), fgets() (using read()), etc. for your convenience, but then you
have to implement those low-level syscalls yourself.  End result should be
that you can use the stdio calls in any manner you feel appropriate, on any
hardware you feel this stdio paradigm could have value (output to LCD displays
or UARTs, input from a keyboard or UART, etc).

Example: on the Tiva-C ARM Cortex-M4F platform, I produced a library for
interfacing with a 9-bit SPI accessible black  white LCD display (repair
part for Nokia 1202 dumbphones) using newlib's infrastructure; my code can
then enable something like this:

// Display ready for init
fopen(LCDBACKLIT, w);  // driver grabs stdout for this by default
printf(Totally cool! %g\n, 1.059);

and suddenly Totally cool! 1.059 appears (line-wrapped) on the LCD.

Pictoral example of printf'ing Hi there, using printf!-
http://spirilis.net/junk/tiva/nokia1202_tiva_printf.jpg

Library for that: https://github.com/spirilis/tiva1202
Newlib stdio stubs implemented here:
  https://github.com/spirilis/tiva1202/blob/master/devoptab.c

The newlib stub functions for _write(), _read() etc. are written in my
library to call sub-drivers' write(), read(), etc. so multiple types of
hardware can be supported with this infrastructure using the file descriptor
concept.

So I'm guessing DJ implemented a default hardware I/O implementation in libgloss
that uses the CIO infrastructure (no idea what that is, but I'm guessing it uses
the JTAG Mailbox system somehow to talk with the debugger host?  in which case
I'd love to play with it that...  assuming mspdebug can support it)


--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Grant Edwards
On 2014-04-23, Peter Bigot big...@acm.org wrote:

 Again: whatever the environment wants it to do.  In my case, I'm
 using printf(3c) in my code, and I want it to output to one of the
 UARTs, which newlib accommodates by using write(2) to descriptor 1,
 just like any other standard C library.

 This works because I supply a _write() function that does that.

But it's not called like a normal C function, it goes through some
sort of syscall interface so you don't actually link your _write()
function with newlib?

 Or maybe it sends the data to an LCD. Maybe exit() starts blinking a
 red LED if the return code isn't zero. Whatever any of the system
 functions do, it's my choice, and I like that newlib allows me that
 control.

Hmm. Is there an option to build a non-hosted version of newlib which
doesn't assume any underlying OS support.

-- 
Grant Edwards   grant.b.edwardsYow! Is it 1974?  What's
  at   for SUPPER?  Can I spend
  gmail.commy COLLEGE FUND in one
   wild afternoon??


--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Peter Bigot
On Wed, Apr 23, 2014 at 9:57 AM, Grant Edwards
grant.b.edwa...@gmail.com wrote:
 On 2014-04-23, Peter Bigot big...@acm.org wrote:

 Again: whatever the environment wants it to do.  In my case, I'm
 using printf(3c) in my code, and I want it to output to one of the
 UARTs, which newlib accommodates by using write(2) to descriptor 1,
 just like any other standard C library.

 This works because I supply a _write() function that does that.

 But it's not called like a normal C function, it goes through some
 sort of syscall interface so you don't actually link your _write()
 function with newlib?

See http://pabigot.github.io/bspacm/newlib.html#newlib_sys


 Or maybe it sends the data to an LCD. Maybe exit() starts blinking a
 red LED if the return code isn't zero. Whatever any of the system
 functions do, it's my choice, and I like that newlib allows me that
 control.

 Hmm. Is there an option to build a non-hosted version of newlib which
 doesn't assume any underlying OS support.

Yes, also described at that link, and possibly at the gatliff link I
gave earlier.

Peter


 --
 Grant Edwards   grant.b.edwardsYow! Is it 1974?  What's
   at   for SUPPER?  Can I spend
   gmail.commy COLLEGE FUND in one
wild afternoon??


 --
 Start Your Social Network Today - Download eXo Platform
 Build your Enterprise Intranet with eXo Platform Software
 Java Based Open Source Intranet - Social, Extensible, Cloud Ready
 Get Started Now And Turn Your Intranet Into A Collaboration Platform
 http://p.sf.net/sfu/ExoPlatform
 ___
 Mspgcc-users mailing list
 Mspgcc-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mspgcc-users

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread DJ Delorie

 So I'm guessing DJ implemented a default hardware I/O implementation in 
 libgloss
 that uses the CIO infrastructure (no idea what that is, but I'm guessing it 
 uses
 the JTAG Mailbox system somehow to talk with the debugger host?  in which case
 I'd love to play with it that...  assuming mspdebug can support it)

In a nutshell... the target fills in a structure at a known address,
then executes an opcode at a known address.  The
debugger/simulator/whatever traps execution at that address, then
looks at the structure to decide what to do.  In the CIO case, the
known addresses are based on symbols in the symbol table.

So as long as the debugger can set a breakpoint at a given address,
and examine/change target memory, you can implement CIO.

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread DJ Delorie

 But it's not called like a normal C function, it goes through some
 sort of syscall interface so you don't actually link your _write()
 function with newlib?

It *is* called like a normal C function.  You really do just link
libgloss.a (or your equivalent) in with your app like you would any
other library.

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Grant Edwards
On 2014-04-23, DJ Delorie d...@redhat.com wrote:

 But it's not called like a normal C function, it goes through some
 sort of syscall interface so you don't actually link your _write()
 function with newlib?

 It *is* called like a normal C function.  You really do just link
 libgloss.a (or your equivalent) in with your app like you would any
 other library.

I see.  I guess to me a syscall interface implies something other
than a normal C function call to a function that's linked with the
caller.

-- 
Grant Edwards   grant.b.edwardsYow! In Newark the
  at   laundromats are open 24
  gmail.comhours a day!


--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread DJ Delorie

 I see.  I guess to me a syscall interface implies something other
 than a normal C function call to a function that's linked with the
 caller.

It does to me too.  The *implementation* of those standard C functions
may involve some sort of interface that's known to the
debugger/simulator as well.  In the case of msp430-elf-libgloss, that
interface is CIO, but it could involve designated interrupts or a
simulated I/O peripheral.  But that syscall interface is hidden in the
libgloss C function calls.  In other cases, there might not be a
syscall interface, if the C functions interface directly with
hardware, such as a serial port or LCD interface.

But I don't think any of the implementations involve a separate OS
running *on the chip*, which talks to your app with a well-known
interface, similar to how (for example) the Linux kernel talks to apps
running on a Linux machine.

Note, however, that there *is* a newlib port for running on a native
x86 Linux platform, which *does* use the Linux kernel syscall API, but
not for the MSP430.  In *that* port, the _read() et al C functions
call the Linux kernel syscall.

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-23 Thread Eric
Thanks Peter!  I've successfully compiled msp430-elf-gcc 4.9 using those 
instructions on a 64-bit Linux host.

For anyone else new to this GCC build, here's the additional steps I used to 
get the headers  linker scripts
into the correct place:

Download the GCC_RH_20131206.zip file from 
http://www.ti.com/tool/msp430-gcc-opensource (click Get Software)

Modify this shell script (tested under Linux only so far) to install the 
headers and linker scripts (change
paths to install and zipfile):   
https://gist.github.com/spirilis/115655b9bf206402ff50

This combines memory.ld and peripherals.ld into lib/part#.ld as Peter 
suggested was needed in his quoted message.
It also cleans up the ldscript directories from the include/ dir.

I have successfully compiled a binary with it. ... but haven't tried it on 
actual hardware yet :-)
Getting to that soon.



On Tue, Apr 22, 2014 at 06:57:55PM +, 
mspgcc-users-requ...@lists.sourceforge.net placed into existence:
] Date: Tue, 22 Apr 2014 10:34:30 -0500
] From: Peter Bigot big...@acm.org
] Subject: [Mspgcc-users] msp430-elf-gcc upcoming release
] To: GCC for MSP430 - http://mspgcc.sf.net;
]   mspgcc-users@lists.sourceforge.net
] Message-ID:
]   CAPOJ94PGLz+BkaKm9hWc2RXg2PSBT=9x_m5h0+fvbydtzng...@mail.gmail.com
] Content-Type: text/plain; charset=UTF-8
] 
] Back in mid April GCC forked off a branch for 4.9.0, which will be the
] first release of GCC that supports the MSP430.  I've verified basic
] functionality with:
] 
] binutils git://sourceware.org/git/binutils-gdb.git master
] gcc git://gcc.gnu.org/git/gcc.git gcc-4_9-branch
] newlib git://sourceware.org/git/newlib.git master
] 
] A couple issues:
] 
] * The only headers/linker scripts available are from
] GCC_RH_20131206.zip; memory.ld and peripherals.ld for each MCU need to
] be manually combined to get something binutils can process
] 
] * __delay_cycles() didn't get back-ported from the version that TI
] published back in December
] 
] msp430-elf-gdb also doesn't appear to work with mspdebug:
] 
] (gdb) target remote :2000
] Remote debugging using :2000
] Reply contains invalid hex digit 59
] 
] I expect there'll be some issues with newlib as well; it appears to
] use a unique syscall interface that I haven't tried to reverse
] engineer.  However, I'm unsure the flags I used are appropriate (they
] derive from the ones used for arm-gcc).  I do know that newlib without
] the nano enhancements will not be acceptable for MSP430 work.  Insight
] from Red Hat on a complete set of recommended flags known to work
] together would be appreciated.
] 
] Below is the script I use for building, with
] /opt/{binutils,gcc,newlib} being git workspaces checking out the
] branches named above.  To help ensure the new toolchain is as good as
] possible when it's first released, mspgcc users please try it and
] report problems to Red Hat through whatever mechanism they prefer,
] either here or on the upstream toolchain support lists.
] 
] Peter
] 
] TODATE=$(date +%Y%m%d)
] PREFIX=/usr/local/msp430-elf-dev-${TODATE}
] rm -rf ${PREFIX}
] export PATH=${PREFIX}/bin:${PATH}
] 
] rm -rf binutils  mkdir binutils  cd binutils
] /opt/binutils/configure --prefix=${PREFIX} --target=msp430-elf 21 | tee co
] make -j8 21 | tee mo
] make install 21 | tee moi
] cd ..
] 
] rm -rf gcc  mkdir gcc  cd gcc
] /opt/gcc/configure --prefix=${PREFIX} --target=msp430-elf
] --with-newlib --enable-languages=c,c++ 21 | tee co
] make -j12 all-host 21 | tee moah
] make install-host 21 | tee moiah
] cd ..
] 
] rm -rf newlib  mkdir newlib  cd newlib
] /opt/newlib/configure \
]   --prefix=${PREFIX} \
]   --target=msp430-elf \
]   --disable-newlib-supplied-syscalls\
]   --enable-newlib-reent-small   \
]   --disable-newlib-fvwrite-in-streamio  \
]   --disable-newlib-fseek-optimization   \
]   --disable-newlib-wide-orient  \
]   --enable-newlib-nano-malloc   \
]   --disable-newlib-unbuf-stream-opt \
]   --enable-lite-exit\
]   --enable-newlib-global-atexit \
]   --disable-nls
]  21 | tee co
] make 21 | tee mo
] make install 21 | tee moi
] cd ..
] 
] cd gcc
] make -j12 all-target 21 | tee moat
] make install-target 21 | tee moiat
] cd ..
] 
] 
] 

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread DJ Delorie

 * The only headers/linker scripts available are from
 GCC_RH_20131206.zip; memory.ld and peripherals.ld for each MCU need to
 be manually combined to get something binutils can process

Hmmm... I was under the impression that there were toplevel
chip-specific scripts that included the sub-scripts.  Maybe that's
handled some other way in the TI IDE...

 * __delay_cycles() didn't get back-ported from the version that TI
 published back in December

My bad.  I can provide it if anyone needs it, but I'll see about
adding it to the 4.9 branch.

 I expect there'll be some issues with newlib as well; it appears to
 use a unique syscall interface that I haven't tried to reverse
 engineer.

It uses the TI CIO interface.

 Insight from Red Hat on a complete set of recommended flags known to
 work together would be appreciated.

We build with the big newlib, for testing.  There are a bunch of flags
which I mentioned in my size optimization email:

https://www.mail-archive.com/mspgcc-users@lists.sourceforge.net/msg11977.html

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread DJ Delorie

  It uses the TI CIO interface.
 
 Interesting; is there any public documentation on how to use that?

Not that I know of.

 An option to build MSP430 newlib with the standard system interface
 would be even better.

I don't know of a standard interface.  Each chip I've done has done
something a little different, depending on what the architecture
provided that could be hooked.

 It's not clear to me why a TI-specific interface is desirable to
 anybody other than TI.  Part of the point of using a GNU-based
 toolchain is portability across processors (even if vendors would
 prefer that we be locked to their offerings).

They use the CIO interface across all their processors, and it lets
you debug gcc-produced executables in their IDE/simulator/hardware.

As for reverse-engineering it... the sources are in libgloss and the
simulator ;-)

 I saw that, but it only mentioned two specific flags, compared with
 the nine that are used by gcc-arm-embedded (though they're using a
 forked newlib).  However if nobody actually uses newlib for
 applications on MSP430 yet, perhaps the community will come up with a
 set of flags that work.

There are far more than nine flags available, too.  Users almost need
to check them all and decide which features they're using in their app
and which they aren't.

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread Grant Edwards
On 2014-04-22, Peter Bigot big...@acm.org wrote:

 I expect there'll be some issues with newlib as well; it appears to
 use a unique syscall interface that I haven't tried to reverse
 engineer.

I don't understand.  A syscall API is usually the interface between
libc code (which is running in user mode) and an underlying OS kernel
that's running in protected mode.  Into what What OS kernel is newlib
expecting to be able to make syscalls?

For example, the syscall interface I deal with is the API between
either glibc or uclibc and the Linux kernel.  It's architecture
specific, since the the mechanism for swithcing to/from protected mode
usually has to be done in assembler.  It's typically something like:

  * Load parameters in to specific registers

  * Execute some variety of SWI instruction to generate a hardware
exception/interrupt.

-- 
Grant Edwards   grant.b.edwardsYow! Actually, what I'd
  at   like is a little toy
  gmail.comspaceship!!


--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread Daniel Beer
On Tue, Apr 22, 2014 at 10:34:30AM -0500, Peter Bigot wrote:
 msp430-elf-gdb also doesn't appear to work with mspdebug:
 
 (gdb) target remote :2000
 Remote debugging using :2000
 Reply contains invalid hex digit 59

I have a possible fix for this, but I haven't tried it myself. The
problem is that it's not possible to simultaneously satisfy
msp430-elf-gdb and msp430-gdb:

diff --git a/ui/gdb.c b/ui/gdb.c
index c500d83..8590667 100644
--- a/ui/gdb.c
+++ b/ui/gdb.c
@@ -239,11 +239,8 @@ static int run_final_status(struct gdb_data *data)
address_t value = regs[i];
int j;
 
-   /* NOTE: this only gives GDB the lower 16 bits of each
-*   register. It complains if we give the full data.
-*/
gdb_printf(data, %02x:, i);
-   for (j = 0; j  2; j++) {
+   for (j = 0; j  4; j++) {
gdb_printf(data, %02x, value  0xff);
value = 8;
}

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread Peter Bigot
On Tue, Apr 22, 2014 at 5:00 PM, Daniel Beer dlb...@gmail.com wrote:
 On Tue, Apr 22, 2014 at 10:34:30AM -0500, Peter Bigot wrote:
 msp430-elf-gdb also doesn't appear to work with mspdebug:

 (gdb) target remote :2000
 Remote debugging using :2000
 Reply contains invalid hex digit 59

 I have a possible fix for this, but I haven't tried it myself. The
 problem is that it's not possible to simultaneously satisfy
 msp430-elf-gdb and msp430-gdb:

Maybe a command-line argument?

This fix works, by the way.  Very nice.

Peter


 diff --git a/ui/gdb.c b/ui/gdb.c
 index c500d83..8590667 100644
 --- a/ui/gdb.c
 +++ b/ui/gdb.c
 @@ -239,11 +239,8 @@ static int run_final_status(struct gdb_data *data)
 address_t value = regs[i];
 int j;

 -   /* NOTE: this only gives GDB the lower 16 bits of each
 -*   register. It complains if we give the full data.
 -*/
 gdb_printf(data, %02x:, i);
 -   for (j = 0; j  2; j++) {
 +   for (j = 0; j  4; j++) {
 gdb_printf(data, %02x, value  0xff);
 value = 8;
 }

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread Peter Bigot
On Tue, Apr 22, 2014 at 4:53 PM, Grant Edwards
grant.b.edwa...@gmail.com wrote:
 On 2014-04-22, Peter Bigot big...@acm.org wrote:

 I expect there'll be some issues with newlib as well; it appears to
 use a unique syscall interface that I haven't tried to reverse
 engineer.

 I don't understand.  A syscall API is usually the interface between
 libc code (which is running in user mode) and an underlying OS kernel
 that's running in protected mode.  Into what What OS kernel is newlib
 expecting to be able to make syscalls?

Whatever simulated environment is provided by the application or the
framework newlib links to, so as to support stdc library functions.

I was surprised to see DJ's comment that there actually was no
standard system interface; the standard interface I was referring to
is the one documented at http://neptune.billgatliff.com/newlib.html
which matches what I found in gcc-arm-embedded.  I have a (IMO) very
nice infrastructure supporting a variety of memory allocators and file
descriptors for BSPACM (a cross-vendor ARM Cortex-M infrastructure;
http://pabigot.github.io/bspacm/newlib.html#newlib_sys).

I was expecting for MSP430 to also simply implement the functions
stubbed in newlib's libnosys, but at first glance it looks like the
CIO one uses different names, and maybe doesn't support all the same
functions.


 For example, the syscall interface I deal with is the API between
 either glibc or uclibc and the Linux kernel.  It's architecture
 specific, since the the mechanism for swithcing to/from protected mode
 usually has to be done in assembler.  It's typically something like:

   * Load parameters in to specific registers

   * Execute some variety of SWI instruction to generate a hardware
 exception/interrupt.

 --
 Grant Edwards   grant.b.edwardsYow! Actually, what I'd
   at   like is a little toy
   gmail.comspaceship!!


 --
 Start Your Social Network Today - Download eXo Platform
 Build your Enterprise Intranet with eXo Platform Software
 Java Based Open Source Intranet - Social, Extensible, Cloud Ready
 Get Started Now And Turn Your Intranet Into A Collaboration Platform
 http://p.sf.net/sfu/ExoPlatform
 ___
 Mspgcc-users mailing list
 Mspgcc-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/mspgcc-users

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


Re: [Mspgcc-users] msp430-elf-gcc upcoming release

2014-04-22 Thread DJ Delorie

 I was surprised to see DJ's comment that there actually was no
 standard system interface; the standard interface I was referring to
 is the one documented at http://neptune.billgatliff.com/newlib.html

The key to a successfully ported newlib is providing stubs that
 bridge the gap between the functionality newlib needs, and what your
 target system can provide.

This bridge is what I was referring to.  Newlib calls read() but does
not provide an implementation of it.  Libgloss provides various
target-specific implementations of read(), the one I wrote for msp430
uses CIO to communicate with the simulator/debugger.

 I was expecting for MSP430 to also simply implement the functions
 stubbed in newlib's libnosys, but at first glance it looks like the
 CIO one uses different names, and maybe doesn't support all the same
 functions.

Hmmm... it should be all the same names.  I only changed the existing
libgloss hooks.  But, I don't always do all the hooks, usually only
write() and exit() are needed for our testing.

--
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
___
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users