# Forum: ARM programming with GCC/GNU tools [ANN] WinARM 2007113 testing

 Author: Martin Thomas (mthomas) (Moderator) Posted on: 2007-11-13 16:25

Rate this post
 0 ▲ useful ▼ not useful
Hello

I have created a new WinARM package. Since there have been a few changes
in the "background" some testing is needed. I will do this in the next
few days and hope that readers of this forum are also willing to test
the new package and send feedback.

http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
- Package (ca. 100MBytes zip-Archive:)
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...

Martin Thomas
mthomas( at)rhrk(dot )uni-kl( dot)de

 Author: Varuzhan Danielyan (vdaniel) Posted on: 2007-11-16 10:06

Rate this post
 0 ▲ useful ▼ not useful
Dear Martin,

I just installed the new version of WinARM over the previous 20070505,
automatically replacing older files with new ones and tried to compile
and run several proven projects for ADuC7020.  Everithing is Ok!
You do a fantastic work.  Thank you very much.
One request: is there a detailed description of WinAMP subdirectories?
Especially for system files: binaries, inludes, libraries.

Varuzhan

Martin Thomas wrote:
> Hello
>
> I have created a new WinARM package. Since there have been a few changes
> in the "background" some testing is needed. I will do this in the next
> few days and hope that readers of this forum are also willing to test
> the new package and send feedback.
>
>
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
> - Package (ca. 100MBytes zip-Archive:)
> http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
>
>
> Martin Thomas
> mthomas( at)rhrk(dot )uni-kl( dot)de

 Author: Martin Thomas (mthomas) (Moderator) Posted on: 2007-11-16 14:19

Rate this post
 0 ▲ useful ▼ not useful
Varuzhan Danielyan wrote:
> Dear Martin,
>
> I just installed the new version of WinARM over the previous 20070505,
> automatically replacing older files with new ones and tried to compile
> and run several proven projects for ADuC7020.  Everithing is Ok!
> You do a fantastic work.  Thank you very much.

Thanks for the feedback. I'm glad that it's working for you. So far I
havn't seen any issues with "pure C" too.

> One request: is there a detailed description of WinAMP subdirectories?
> Especially for system files: binaries, inludes, libraries.

Most of the directory-structure is the one created during the build of
the GNU tools. I expect there is some information on the structure in
the manuals from the tools. But I don't think it's worth the time
analysing this completly if the setup works.

Most important is the bin/ - directory which holds the GNU tools or the
"frontend"-programs (like arm-*-gcc) which call other binaries "deeper"
in the directory structure. That's why this directory needs to be added
to the search-path.

I have added ( where <target> is arm-eabi for the current test-release
and arm-elf for the older releases):

<target>/include/arch - some register defintions I collected in the
"early days" of WinARM, I suggest not to use them, they are only in for
compatibilty with older WinARM packages. Try to use register-defintions
on a "per project" basis. It seems there is no real "standard" even for
the same controller-model. I have seen differences between
register-definitions ("defines") availble from different sources for the
same target. I do not recomment adding own include-files in the
toolchain's include-directories to avoid side-effects.

<target>/lib/.../newlib-lpc.a: library support-functions for newlib on
LPC2000 from Aeolus (source for this in utils/newlib_lpc_src). I do not
recomment to add own libraries in this directory for the same reason
mentioned above.

bin/lpc21isp.exe - Martin Maurer's lpc21isp tool

examples/ - my example collection. Not everything in this directory has
been developed by myself and not all examples I provide on my web-pages
are included. The examples are used to test new releases and should
serve users as "getting started" projects. Note that the examples are of
very different "quality". For sure they do not always demonstrate the
"best" method.

doc/ - some of the documents I collected from which I think they are
useful for others too

pn/ - Simone Steele's Programmers Notepad

utils/bin - a collection of tools to support building. It's a GNU make
built for Win32 and tools to support it. This directory needs to be
added to the search path to use the build-tools from WinARM. If you use
mingw/minsys or cygwin or have WinAVR installed the tools from these
packages can be used and there is no need to add the
winarm/utils/bin-directory to the path.

utils/ - some utilities and code. It's a personal selection of tools I
use or plan to use and thought they might be useful for others too

<snip>

Current of the test-release:

- I have some problems getting my C++ and newlib-lpc examples to work
with the new test-release but I'm working on it. The toolchain itself
should be o.k. just the example-code/setup needs some adaption.

- Michael Fischer reported an issue with Insight that it's not finding
all files during debugging. Since the issue is also present in the
Insight binary from the latest Yagarto package Michael is working on a
fix. Modifications will be applied to both packages Yagarto and WinARM.

- included OpenOCD SVN211 may halt the controller after standalone
flashing with "reset-script" if the JTAG-probe did already halt the
controller on startup. Seems to be cause by a change done between SVN203
and SVN211. Flashing/debugging itself is o.k with the included version
so this is not a major issue. I asked on the OpenOCD mailing-list about
this, but it seems the mail still has to be approved to appear in the
list.

- at least one makefile of the examples still refers to lpc21isp_beta
which does not longer exist. _beta needs to be removed.

- I missed to include 2 or 3 newer examples.

 Author: Thomas Schulte (1stern) Posted on: 2007-11-18 11:03

Rate this post
 0 ▲ useful ▼ not useful
Hello,

I just tested this release with success.

I was interested in seeing the resulting figures of the compilation
related to previous versions.

4.1.2  4.2.1  4.2.2
WinArm  Yagarto  WinArm
.text  77136  79128  77560
.rodata  50608  50664  50696
.data  16488  16300  16312

The rest of lines did not change.

Cheers

 Author: Thomas Schulte (1stern) Posted on: 2007-11-18 11:10

Rate this post
 0 ▲ useful ▼ not useful
Improved format

4.1.2    4.2.1     4.2.2
section   WinArm   Yagarto   WinArm
.text      77136     79128    77560
.rodata    50608     50664    50696
.data      16488     16300    16312

 Author: Spencer Oliver (ntfreak) Posted on: 2007-11-18 14:10

Rate this post
 0 ▲ useful ▼ not useful
Martin Thomas wrote:
> - included OpenOCD SVN211 may halt the controller after standalone
> flashing with "reset-script" if the JTAG-probe did already halt the
> controller on startup. Seems to be cause by a change done between SVN203
> and SVN211. Flashing/debugging itself is o.k with the included version
> so this is not a major issue. I asked on the OpenOCD mailing-list about
> this, but it seems the mail still has to be approved to appear in the
> list.

There was a slight addition in svn rev 204 - adding a exit state for the
io's (parallel interface only).

Do you have any more details/testcase?

Cheers
Spen

 Author: Varuzhan Danielyan (vdaniel) Posted on: 2007-11-18 16:54

Rate this post
 0 ▲ useful ▼ not useful
Further experiments show, that an interrupt handler for the ADI example
project "Pulse" works only with no optimization (level 0), for all other
optimization levels seems the handler is entered once again immediately
after exit.  The same example works with any level of optimization with
WinARM 20070505.

Varuzhan

Varuzhan Danielyan wrote:
> Dear Martin,
>
> I just installed the new version of WinARM over the previous 20070505,
> automatically replacing older files with new ones and tried to compile
> and run several proven projects for ADuC7020.  Everithing is Ok!
> You do a fantastic work.  Thank you very much.
> One request: is there a detailed description of WinAMP subdirectories?
> Especially for system files: binaries, inludes, libraries.
>
> Varuzhan
>
> Martin Thomas wrote:
>> Hello
>>
>> I have created a new WinARM package. Since there have been a few changes
>> in the "background" some testing is needed. I will do this in the next
>> few days and hope that readers of this forum are also willing to test
>> the new package and send feedback.
>>
>>
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
>> - Package (ca. 100MBytes zip-Archive:)
>>
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
>>
>>
>> Martin Thomas
>> mthomas( at)rhrk(dot )uni-kl( dot)de

 Author: Martin Thomas (mthomas) (Moderator) Posted on: 2007-11-20 12:26

Rate this post
 0 ▲ useful ▼ not useful
Spencer Oliver wrote:
> Martin Thomas wrote:
>> - included OpenOCD SVN211 may halt the controller after standalone
>> flashing with "reset-script" if the JTAG-probe did already halt the
>> controller on startup. Seems to be cause by a change done between SVN203
>> and SVN211. Flashing/debugging itself is o.k with the included version
>> so this is not a major issue. I asked on the OpenOCD mailing-list about
>> this, but it seems the mail still has to be approved to appear in the
>> list.
>
> There was a slight addition in svn rev 204 - adding a exit state for the
> io's (parallel interface only).
>
> Do you have any more details/testcase?

Thanks for answering Spen.

Yes, I have a test-case with config/reset-script to flash a NXP LPC2129
using a Olimex Wiggler-Clone. This would match "parallel interface
only". I have not tested with the Amontec JTAGkey FT2232-based probe so
and I will send the test-case later this week (currently no access to my
development PC). I will do some tests with the STmicro STR710 eval-board
which might be easier for you to reproduce too.

In the e-mail to the OpenOCD developer-mailing-list I suggested to add
an optional parameter (i.e. "restoreio") to the shutdown command. So
shutdown without the parameter would leave the IO-pins as "configured"
by the reset-script. So the command reset run followed by shutdown
(without parameter) would not restore the io's while shutdown with the
parameter would restore the io's to the state found on OpenOCD start.

Martin Thomas

 Author: Varuzhan Danielyan (vdaniel) Posted on: 2007-11-29 08:36

Rate this post
 0 ▲ useful ▼ not useful
I am surprised, that the new verion testing is so passive.
Besides, I am afraid that Martin did not notice the problem
report (below).  Hope to activate the discussion a little by
this message.

Varuzhan

Varuzhan Danielyan wrote:
> Further experiments show, that an interrupt handler for the ADI example
> project "Pulse" works only with no optimization (level 0), for all other
> optimization levels seems the handler is entered once again immediately
> after exit.  The same example works with any level of optimization with
> WinARM 20070505.
>
> Varuzhan
>
>
> Varuzhan Danielyan wrote:
>> Dear Martin,
>>
>> I just installed the new version of WinARM over the previous 20070505,
>> automatically replacing older files with new ones and tried to compile
>> and run several proven projects for ADuC7020.  Everithing is Ok!
>> You do a fantastic work.  Thank you very much.
>> One request: is there a detailed description of WinAMP subdirectories?
>> Especially for system files: binaries, inludes, libraries.
>>
>> Varuzhan
>>
>> Martin Thomas wrote:
>>> Hello
>>>
>>> I have created a new WinARM package. Since there have been a few changes
>>> in the "background" some testing is needed. I will do this in the next
>>> few days and hope that readers of this forum are also willing to test
>>> the new package and send feedback.
>>>
>>>
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
>>> - Package (ca. 100MBytes zip-Archive:)
>>>
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...
>>>
>>>
>>> Martin Thomas
>>> mthomas( at)rhrk(dot )uni-kl( dot)de

 Author: Thomas Schulte (1stern) Posted on: 2007-11-29 12:38

Rate this post
 0 ▲ useful ▼ not useful
Varuzhan Danielyan wrote:
> I am surprised, that the new verion testing is so passive.
> Besides, I am afraid that Martin did not notice the problem
> report (below).  Hope to activate the discussion a little by
> this message.

Hi Varuzhan,

although not having tested/ssen your particular issues my projects are
running okay with this version.

However, some myths are accompanying me in VISTA still: I have OpenOCD
installed at THREE places (program files = programme). Although I
assumed ONE should be sufficient it turned out removing just one
installed location lets the "build" collapse at some point. I spent
D_A_Y_S !!! on trying to improof this to some kind of a LOGICAL
installation (single OPENOCD). I gave up to so far and stick to my
current working environment as the de facto standard.

Learning from the Yagarto experience it might be more healthy to install
the compenents OUTSIDE the "program files" ("Programme") folder:
- OpenOCD
- WinARM / YAGARTO
- eclipse

Funny, even eclipse has problems when residing in the standard VISTA
program folders. May be you encountered already difficulties when
installing eclipse plugins etc. when installation failure messages
turned up telling you that the folder names are too long.

Personally I am not happy with the idea to install the packages so near
to the ROOT dir. Currently I think if noone finds out how to solve these
issues with VISTA/Microsoft, more and more users will be forced to do
so. At this moment in time I see this as a tribute to the open software
idea as it is not typically focussing on windows as the prime system.

Regards
Thomas

 Author: Martin Thomas (mthomas) (Moderator) Posted on: 2007-11-29 14:27

Rate this post
 0 ▲ useful ▼ not useful
Varuzhan Danielyan wrote:
> I am surprised, that the new verion testing is so passive.
> Besides, I am afraid that Martin did not notice the problem
> report (below).  Hope to activate the discussion a little by
> this message.
>
> Varuzhan
>
>
> Varuzhan Danielyan wrote:
>> Further experiments show, that an interrupt handler for the ADI example
>> project "Pulse" works only with no optimization (level 0), for all other
>> optimization levels seems the handler is entered once again immediately
>> after exit.  The same example works with any level of optimization with
>> WinARM 20070505.

By "project pulse" do you mean the example in the ADuC7026_blink folder
of the WinARM 200711 test-release? If not: give a link to the
source-code or attach it to a message in this forum

Martin Thomas

 Author: Varuzhan Danielyan (vdaniel) Posted on: 2007-11-30 08:23

Rate this post
 0 ▲ useful ▼ not useful
Thank you very much.
The zipped file is attached.

Best regards,
Varuzhan

Martin Thomas wrote:
> Varuzhan Danielyan wrote:
>> I am surprised, that the new verion testing is so passive.
>> Besides, I am afraid that Martin did not notice the problem
>> report (below).  Hope to activate the discussion a little by
>> this message.
>>
>> Varuzhan
>>
>>
>> Varuzhan Danielyan wrote:
>>> Further experiments show, that an interrupt handler for the ADI example
>>> project "Pulse" works only with no optimization (level 0), for all other
>>> optimization levels seems the handler is entered once again immediately
>>> after exit.  The same example works with any level of optimization with
>>> WinARM 20070505.
>
> By "project pulse" do you mean the example in the ADuC7026_blink folder
> of the WinARM 200711 test-release? If not: give a link to the
> source-code or attach it to a message in this forum
>
> Martin Thomas

 Author: Martin Thomas (mthomas) (Moderator) Posted on: 2007-12-01 16:18

Rate this post
 0 ▲ useful ▼ not useful
Varuzhan Danielyan wrote:
> Thank you very much.
> The zipped file is attached.

Varuzhan,

Ok, this seems to be another problem with the interrupt attribute
(return address "adjusted" twice). The attributes used to produce
correct machine-code for exception-handlers with older versions of the
toolchain even with -Os optimization and when everything has been build
for ARM-mode. It seems this has changed somehow. So far I don't know the
real reason maybe because of the new versions of the tools or the
eabi-target. Well, it's a good idea to avoid compiler-specific
extensions anyway. Find attached a modified version of your code. The
user's IRQ handler (assigned to function-pointer IRQ) is now called from
an assembler-wrapper located in file startup.S. This should avoid any
attribut problems. So far no modifications done for the other exceptions
like FIQ, SWI etc. I do not own hardware with an Analog Devices ARM7TDMI
to test this so I could just test a little bit with the simulator of the
Keil eval-version. I hope it works on the real hardware too.

Martin Thomas

 Author: Varuzhan Danielyan (vdaniel) Posted on: 2007-12-02 09:53

Rate this post
 0 ▲ useful ▼ not useful
Dear Martin,

Thank you very much! Now it works.

Varuzhan

Martin Thomas wrote:
> Varuzhan Danielyan wrote:
>> Thank you very much.
>> The zipped file is attached.
>
> Varuzhan,
>
> Ok, this seems to be another problem with the interrupt attribute
> (return address "adjusted" twice). The attributes used to produce
> correct machine-code for exception-handlers with older versions of the
> toolchain even with -Os optimization and when everything has been build
> for ARM-mode. It seems this has changed somehow. So far I don't know the
> real reason maybe because of the new versions of the tools or the
> eabi-target. Well, it's a good idea to avoid compiler-specific
> extensions anyway. Find attached a modified version of your code. The
> user's IRQ handler (assigned to function-pointer IRQ) is now called from
> an assembler-wrapper located in file startup.S. This should avoid any
> attribut problems. So far no modifications done for the other exceptions
> like FIQ, SWI etc. I do not own hardware with an Analog Devices ARM7TDMI
> to test this so I could just test a little bit with the simulator of the
> Keil eval-version. I hope it works on the real hardware too.
>
> Martin Thomas

• $formula (LaTeX syntax)$