Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-06 Thread John Hartman (NoICE)

At 01:32 PM 9/5/10, Spencer Oliver wrote:

On 03/09/2010 20:29, John Hartman (NoICE) wrote:

The STM32 parts have Flash beginning at 0x800, and OpenOCD's
stm32x.c places the Flash there regardless of the address used in the
flash command in the cfg file.

The chips have two pins that can be jumpered to specify what appears at
address 0: Flash, RAM, or the boot loader. For embedded work, I think
Flash will be the most common case.

But if I link my program at zero, it is a pain to burn my program,
because OpenOCD tells gdb there is only RAM at 0, with Flash at 800.
(material deleted for brevity)


Just use the virtual bank cmd, that's what it there for
flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME
flash bank vbank0 virtual 0x 0 0 0 $_TARGETNAME $_FLASHNAME


This is EXACTLY what I need.  No changes to OpenOCD (aside from my 
cfg file), and no need to modify the configuration of other tools.


Thank you.


Best regards, John Hartman
NoICE Debugging Tools
http://www.noicedebugger.com
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-05 Thread Spencer Oliver

On 03/09/2010 20:29, John Hartman (NoICE) wrote:

The STM32 parts have Flash beginning at 0x800, and OpenOCD's
stm32x.c places the Flash there regardless of the address used in the
flash command in the cfg file.

The chips have two pins that can be jumpered to specify what appears at
address 0: Flash, RAM, or the boot loader. For embedded work, I think
Flash will be the most common case.

But if I link my program at zero, it is a pain to burn my program,
because OpenOCD tells gdb there is only RAM at 0, with Flash at 800.

One solution is to re-link my program to 800, and rely on aliasing
of the vector table to 0. This works, but is a little annoying.

I would like to propose the following changes to allow Flash at zero:


1) In the file flash/stm32x.c, function stm32x_probe, remove or comment
out the explicit setting of bank-base:
// Don't fill in the base: get it from the cfg file
// bank-base = 0x0800;
bank-size = (num_pages * page_size);
(etc.)

2) In the stm32.cfg, change
flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME
to
flash bank $_FLASHNAME.1 stm32x 0x 0 0 0 $_TARGETNAME
flash bank $_FLASHNAME.2 stm32x 0x0800 0 0 0 $_TARGETNAME

This claims that there are TWO Flash banks, one at 0 and one at 800.
By having two banks, users can locate their code at either location, as
they prefer, without needing to modify the cfg file.

Note that this would break existing cfg files, moving the Flash from
800 to 0. This could be remedied by using a non-zero value for one
of the other parameters (bus width etc) to mean new style, and only
using the specified base address in that case. (Or more formally, one
might add a new algorithm instead of stm32x that does this)

What do people think?



Just use the virtual bank cmd, that s what it there for
flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME
flash bank vbank0 virtual 0x 0 0 0 $_TARGETNAME $_FLASHNAME

Cheers
Spen
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Øyvind Harboe
On Fri, Sep 3, 2010 at 11:48 PM, John Hartman (NoICE)
j...@noicedebugger.com wrote:
 At 03:30 PM 9/3/10, Øyvind Harboe wrote:

 But it does what you need?

 Yes.

 My hope was to move from possible to configure to easy to use.  But it
 is certainly possible to use load with an offset.

That's OK. I just want to establish that we know what the problem
and solution was. Today there is a solution, but it can be a bit
inaccessible.

I think we should make OpenOCD as easy as use as possible, but
no easier.

Perhaps this is a thing that *should* be a bit hard?

Perhaps embedded users *should* learn about the load offset for
GDB?

Perhaps we can market the gdb load feature somehow instead of
changing how the system works?


-- 
Øyvind Harboe
US toll free 1-866-980-3434 / International +47 51 63 25 00
http://www.zylin.com/zy1000.html
ARM7 ARM9 ARM11 XScale Cortex
JTAG debugger and flash programmer
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Peter Stuge
Øyvind Harboe wrote:
 Perhaps this is a thing that *should* be a bit hard?
 
 Perhaps embedded users *should* learn about the load offset for
 GDB?

Do you know if gdb always sends an offset in the (binary?) command to
OpenOCD? If yes, I think gdb should be changed to make 'load' easier
to use.

Can OpenOCD return a (textual?) error message? If yes, then OpenOCD
could return a very informative error in case someone tries to load
to an address not backed by flash.

But ideally this knowledge should be up in gdb too, so that gdb, or
whatever tool is controlling it, can provide more information and
faster response to the user.


//Peter
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Andreas Fritiofson
On Sat, Sep 4, 2010 at 2:57 PM, Peter Stuge pe...@stuge.se wrote:
 Øyvind Harboe wrote:
 Perhaps this is a thing that *should* be a bit hard?

 Perhaps embedded users *should* learn about the load offset for
 GDB?

 Do you know if gdb always sends an offset in the (binary?) command to
 OpenOCD? If yes, I think gdb should be changed to make 'load' easier
 to use.

This is not a problem with gdb. When gdb is asked to load an image it
simply writes all relevant sections in that image to their respective
memory locations. If it has knowledge that the location to be written
resides in flash, it uses the vFlash* commands, otherwise it uses
regular memory writes. If the section addresses does not match the
actual memory layout of the target, there's nothing gdb can do about
it. Yes, you can fix the error by telling gdb to load the image with
an offset. That won't change the fact that the image is not linked
correctly and gdb can hardly be blamed for providing the possibility
of a workaround.

Nor is it an OpenOCD problem. We just provide the knowledge to gdb
about the memory layout of the target and then receive the memory
writes. We can't guess the user's intentions and try to remap the
writes behind gdb's (and the user's) back.

 Can OpenOCD return a (textual?) error message? If yes, then OpenOCD
 could return a very informative error in case someone tries to load
 to an address not backed by flash.

We can't really tell the (non-flash) loads from other memory writes
and we don't want to see errors on every write to peripheral or sram
addresses. Even if we could we wouldn't want to print an error,
because there is no error. And what would the message look like?

It seems you're trying to load an image to a memory location not
commonly used for loading to. Maybe you're using a broken linker
script. Do you want me to try to fix the script for you?

That would be neat. Why not take it a step further?

I notice you try to load an image that has been compiled for another
architecture than the one you're working on. Do you want me to install
the correct cross compiler and recompile it for you?

Based on your recent usage pattern I've come to the conclusion that
you're getting desperate to find that nasty bug you introduced two
weeks ago, before your deadline tomorrow morning. It's really late, so
why don't you go home and get some sleep and I'll fix the bug for
you.

It looks like you're writing a letter. Would you like help? Aaargh!
Ok maybe not such a great idea.

Ok I got a little carried away there, sorry :). But my point is: We
shouldn't remove the incentive for users to fix their tools or read up
on the docs by reducing the impact of their errors or making it easier
to work around them.

 But ideally this knowledge should be up in gdb too, so that gdb, or
 whatever tool is controlling it, can provide more information and
 faster response to the user.

OpenOCD already gives gdb full knowledge of the target's memory layout
(at least what is and isn't flash).

/Andreas
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Freddie Chopin
Both OpenOCD and GDB work perfectly well with correct files (standard 
OpenOCD .cfgs, correctly linked .elf file) so I really don't see any 
problem you're trying to fix...


4\/3!!
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Peter Stuge
Andreas Fritiofson wrote:
 When gdb is asked to load an image it simply writes all relevant
 sections in that image to their respective memory locations. If it
 has knowledge that the location to be written resides in flash, it
 uses the vFlash* commands, otherwise it uses regular memory writes.

Thanks! Sorry I'm a bit of a gdb noob. I've never used it in-depth in
spite of using it a little, over lots of years.


 If the section addresses does not match the actual memory layout of
 the target, there's nothing gdb can do about it.

I disagree; gdb can certainly discover this and do something more
useful (error message, whatever) than trying to send stuff to OpenOCD
*even though* it can not work.


 Yes, you can fix the error by telling gdb to load the image with
 an offset.

What happens then, exactly? Does gdb relocate all sections or does it
just send a single offset parameter to OpenOCD?


 That won't change the fact that the image is not linked correctly

Agreed.


 and gdb can hardly be blamed for providing the possibility of a
 workaround.

If anything I'm blaming gdb for not being smarter about when to
automatically add the workaround - or at the *very least* providing
relevant and useful error messages.


 Nor is it an OpenOCD problem.
..
 We can't guess the user's intentions

And we shouldn't.


 We can't really tell the (non-flash) loads from other memory writes
 and we don't want to see errors on every write to peripheral or sram
 addresses. Even if we could we wouldn't want to print an error,
 because there is no error.

There is not enough information for OpenOCD to accurately determine
if it is an error or not. Remember that is very different from there
is no error. Even in gdb there may not be enough information, since
the load command is so generic.


 It seems you're trying to load an image to a memory location not
 commonly used for loading to. Maybe you're using a broken linker
 script.

A message similar to this would be a significant and real improvement
if it could be generated with zero false positives.


 Do you want me to try to fix the script for you?

Silly. At most, whoever is generating the error (gdb IMO) could at
this point list known memory areas.


 That would be neat. Why not take it a step further?
..
 We shouldn't remove the incentive for users to fix their tools or
 read up on the docs by reducing the impact of their errors or
 making it easier to work around them.

Let me make another point, which I think is partially parallell
partially orthogonal:

There should be adequate error messages for all error cases. All
error cases must be detected without heuristics and without
ambiguity.


  But ideally this knowledge should be up in gdb too,
 
 OpenOCD already gives gdb full knowledge of the target's memory
 layout (at least what is and isn't flash).

Good stuff. The problem is all in gdb then.


Freddie Chopin wrote:
 Both OpenOCD and GDB work perfectly well with correct files
 (standard OpenOCD .cfgs, correctly linked .elf file) so I really
 don't see any problem you're trying to fix...

Usability. See the point I make above about accurately detecting
every error case, and providing users with relevant error messages
and ideally suggestions for fixes.


It seems to me that the problem is fundamentally the load command,
since it does not know what the user wants to do, beyond send to
hardware - to me that's just too dumb for modern hardware.

Sometimes a user *only* wants to load into RAM, other times she
*only* wants to load into flash, but without any way to specify that
intent in the gdb load command the sections can't be relied upon to
detect what is actually a very simple error condition for the user.

It does not matter the least that the error is outside gdb/OpenOCD
and actually in the linking process if we can reliably detect it. I
don't think we can do that at the moment. Neither in gdb nor OpenOCD.

The only quick fix would be to always require an offset to be
specified in the gdb load command, and error if it does not match the
linking. I'm not sure if that's a great idea but it seems intuitive.
The load command would no longer be target agnostic (maybe that's a
good thing?) but at least it would still be file agnostic.


//Peter
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Duane Ellis
John [st32 flash can be at 0x0 or 0x800, I want to link my code at 
0x0...]


Is there a specific technical advantage you are gaining? I can't think 
of any. If there is - please explain.


Have you tried the load address in the linker? Hence, the code loads 
at address(fixed location of flash) and runs at (aliased location)


Here's an example of the load address technique.

http://lostarm.svn.sourceforge.net/viewvc/lostarm/trunk/chips/at91sam7x256/source/at91sam7x256_ld?revision=28view=markup

Examples are on line 68, 79, 196, etc.

[ A note of magic, on the linker command line, the variable: 
__layout_flash is set to 0 or 1]


-Duane.


___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread Andreas Fritiofson
On Sat, Sep 4, 2010 at 7:31 PM, Peter Stuge pe...@stuge.se wrote:
 Andreas Fritiofson wrote:
 When gdb is asked to load an image it simply writes all relevant
 sections in that image to their respective memory locations. If it
 has knowledge that the location to be written resides in flash, it
 uses the vFlash* commands, otherwise it uses regular memory writes.

 Thanks! Sorry I'm a bit of a gdb noob. I've never used it in-depth in
 spite of using it a little, over lots of years.


 If the section addresses does not match the actual memory layout of
 the target, there's nothing gdb can do about it.

 I disagree; gdb can certainly discover this and do something more
 useful (error message, whatever) than trying to send stuff to OpenOCD
 *even though* it can not work.

GDB cannot know that it cannot work. The user has, and must have, the
power here. If the user tells gdb to load some data to address 0, gdb
must try its best to do so, using the information provided (directly
or indirectly) by the user to determine _how_ to do it. I know I would
hate if gdb tried to outsmart me by disallowing a load of a
not-quite-standard configuration just because it doesn't work in other
cases.

 Yes, you can fix the error by telling gdb to load the image with
 an offset.

 What happens then, exactly? Does gdb relocate all sections or does it
 just send a single offset parameter to OpenOCD?

I really don't know since I've never used the offset. It's probably
mainly useful when you load a binary file without location information
encoded in the file. When you load an elf-file, all information gdb
needs is already available from the file. Under normal circumstances,
load is a fire-and-forget command, it just does the right thing. Very
usable.

 That won't change the fact that the image is not linked correctly

 Agreed.


 and gdb can hardly be blamed for providing the possibility of a
 workaround.

 If anything I'm blaming gdb for not being smarter about when to
 automatically add the workaround - or at the *very least* providing
 relevant and useful error messages.

THE workaround you're talking about is not some universal fix for
problems related to linking. It may help in some very specific
situation with some link script that's broken in a very specific way.
It can never be made automatic. Consider if my target actually HAS
some memory at address zero that I want to load and gdb has been
patched as a result of this discussion to automatically add 0x800
to the load address if it equals zero. It would break my system. Can
you find another method of altering gdb that would resolve this issue
while not breaking any conceivable valid configuration and not
producing nonsense error messages?

 Nor is it an OpenOCD problem.
 ..
 We can't guess the user's intentions

 And we shouldn't.


 We can't really tell the (non-flash) loads from other memory writes
 and we don't want to see errors on every write to peripheral or sram
 addresses. Even if we could we wouldn't want to print an error,
 because there is no error.

 There is not enough information for OpenOCD to accurately determine
 if it is an error or not. Remember that is very different from there
 is no error. Even in gdb there may not be enough information, since
 the load command is so generic.


 It seems you're trying to load an image to a memory location not
 commonly used for loading to. Maybe you're using a broken linker
 script.

 A message similar to this would be a significant and real improvement
 if it could be generated with zero false positives.

It cannot.

 Do you want me to try to fix the script for you?

 Silly. At most, whoever is generating the error (gdb IMO) could at
 this point list known memory areas.


 That would be neat. Why not take it a step further?
 ..
 We shouldn't remove the incentive for users to fix their tools or
 read up on the docs by reducing the impact of their errors or
 making it easier to work around them.

 Let me make another point, which I think is partially parallell
 partially orthogonal:

 There should be adequate error messages for all error cases. All
 error cases must be detected without heuristics and without
 ambiguity.

A bit too ambitious goal, don't you think, especially when you
consider errors that are not errors in the realm of gdb, but outside
of it. It's like a blender that would refuse to mix ingredients that
are not normally used together.

  But ideally this knowledge should be up in gdb too,

 OpenOCD already gives gdb full knowledge of the target's memory
 layout (at least what is and isn't flash).

 Good stuff. The problem is all in gdb then.

No, the problem is still in the faulty linker script/build system
shipped by Olimex(?). Use a Blinky LED example from another source and
the issue is gone.

 Freddie Chopin wrote:
 Both OpenOCD and GDB work perfectly well with correct files
 (standard OpenOCD .cfgs, correctly linked .elf file) so I really
 don't see any problem you're trying to fix...

 Usability. 

Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-04 Thread David Brownell



  If the section addresses does not match the actual
 memory layout of
  the target, there's nothing gdb can do about it.
 
  I disagree; gdb can certainly discover this has, and must have, the offset. 
  It's


GDB runs by the memory map that OpenOCD feeds it
during startup.  That memory map is not, ISTR,
necessarily correct about where ram is found.

There's an RFE in our bug database about wanting
to at least add a way to declare where RAM lives,
so that can be fed to GDB..
 probably
 mainly useful when you load a binary file without location
 information
 encoded in the file. When you load an elf-file, all
 information gdb
 needs is already available from the file.


Sometimes.  If it was part of the linker script
used to create the ELF image.

There don't seem to be public archives of linker
scripts for Cortex-M parts, specifying where flash
and SRAM regions are found.  So folk need to write
their own (possibly buggy) ones...

 
 It can never be made automatic. Consider if my target
 actually HAS
 some memory at address zero that I want to load and gdb has
 been
 patched as a result of this discussion to automatically add
 0x800
 to the load address if it equals zero. It would break my
 system. Can
 you find another method of altering gdb that would resolve
 this issue
 while not breaking any conceivable valid configuration and
 not producing nonsense error messages

Download comoplete target memory maps to GDB,
not the partial (and ISTR made-up/wrong) one
it now delivers ...  Knock off that RFE...


___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread Øyvind Harboe
Shooting from he hip: what about the offset to gdb's load command?

Could that help?



-- 
Øyvind Harboe
US toll free 1-866-980-3434 / International +47 51 63 25 00
http://www.zylin.com/zy1000.html
ARM7 ARM9 ARM11 XScale Cortex
JTAG debugger and flash programmer
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread Øyvind Harboe
 The syntax of load with an offset is also a bit annoying:

But it does what you need?


-- 
Øyvind Harboe
US toll free 1-866-980-3434 / International +47 51 63 25 00
http://www.zylin.com/zy1000.html
ARM7 ARM9 ARM11 XScale Cortex
JTAG debugger and flash programmer
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread Andreas Fritiofson
On Fri, Sep 3, 2010 at 9:29 PM, John Hartman (NoICE)
j...@noicedebugger.com wrote:
 The STM32 parts have Flash beginning at 0x800, and OpenOCD's stm32x.c
 places the Flash there regardless of the address used in the flash command
 in the cfg file.

 The chips have two pins that can be jumpered to specify what appears at
 address 0: Flash, RAM, or the boot loader.  For embedded work, I think
 Flash will be the most common case.

 But if I link my program at zero, it is a pain to burn my program, because
 OpenOCD tells gdb there is only RAM at 0, with Flash at 800.

 One solution is to re-link my program to 800, and rely on aliasing of
 the vector table to 0.  This works, but is a little annoying.

Annoying how? The flash IS at 0x0800. Why would you want to link
your program to 0? That if anything would be relying on the aliasing.
Of course it works, otherwise the chip couldn't start, but does it
alias the entire flash and not just enough to cover the vectors? Two
years ago, the ST folks I asked didn't know the answer to that.
Perhaps it's clarified in the docs today.

 I would like to propose the following changes to allow Flash at zero:


 1) In the file flash/stm32x.c, function stm32x_probe, remove or comment out
 the explicit setting of bank-base:
        // Don't fill in the base: get it from the cfg file
 //      bank-base = 0x0800;
        bank-size = (num_pages * page_size);
        (etc.)

 2) In the stm32.cfg, change
        flash bank $_FLASHNAME stm32x 0 0 0 0 $_TARGETNAME
 to
        flash bank $_FLASHNAME.1 stm32x 0x 0 0 0 $_TARGETNAME
        flash bank $_FLASHNAME.2 stm32x 0x0800 0 0 0 $_TARGETNAME

 This claims that there are TWO Flash banks, one at 0 and one at 800.  By
 having two banks, users can locate their code at either location, as they
 prefer, without needing to modify the cfg file.

 Note that this would break existing cfg files, moving the Flash from 800
 to 0.  This could be remedied by using a non-zero value for one of the other
 parameters (bus width etc) to mean new style, and only using the specified
 base address in that case.  (Or more formally, one might add a new
 algorithm instead of stm32x that does this)

 What do people think?

Breaking existing config files and/or adding confusing nonexistent
banks for no apparent benefit? I don't like it.

/Andreas
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread John Hartman (NoICE)

At 02:48 PM 9/3/10, Øyvind Harboe wrote:

Shooting from he hip: what about the offset to gdb's load command?


The short answer is I didn't know that gdb's load HAD an offset.

The longer answer is that gdb may be invoked by 
Eclipse, Insight, CodeBlocks etc.  In that case, 
specifying an offset is at best yet another 
configuration step that must be done.  At worst, 
the GUI may not support adding such parameters.



The syntax of load with an offset is also a bit 
annoying:  Normally, the tools invoke gdb 
specifying the file to be debugged.  Then the GUI issues gdb commands like

target remote localhost:
load

To specify an offset on the load command, I have to re-specify the file
load mypath/myfile.elf 0x800

So the configuration string now depends on the program being debugged.


Best regards, John Hartman
NoICE Debugging Tools
http://www.noicedebugger.com
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread John Hartman (NoICE)

At 03:30 PM 9/3/10, Øyvind Harboe wrote:

But it does what you need?


Yes.

My hope was to move from possible to configure 
to easy to use.  But it is certainly possible to use load with an offset.



Best regards, John Hartman
NoICE Debugging Tools
http://www.noicedebugger.com
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread John Hartman (NoICE)

At 03:32 PM 9/3/10, Andreas Fritiofson wrote:

Annoying how? The flash IS at 0x0800. Why would you want to link
your program to 0? That if anything would be relying on the aliasing.
Of course it works, otherwise the chip couldn't start, but does it
alias the entire flash and not just enough to cover the vectors? Two
years ago, the ST folks I asked didn't know the answer to that.
Perhaps it's clarified in the docs today.


I have found Flash-at-zero to be the common case for ARM7 from many 
vendors.  Sometimes a register must be written to map the entire 
Flash at 0, more often 0 is the default.  Perhaps this is not the 
case on Cortex - the STM32 is my only experience there.


My first test project for STM32 was an LED-flasher program that 
Olimex ships with their STM-P103 board.  It links at zero.  I do not 
claim that this is the best project in the world, but it will be the 
first one that many people see, and it will not work as provided.


The memory map diagram in the 3 June 2010 update to the STM32F103 
datasheet labels the entire range 0 to 800_ with Aliased to 
Flash or system memory depending on BOOT pins.  Whether or not this 
is accurate, I cannot say.


My intent was to make it easier for people to get gdb and OpenOCD 
running.  The volume of how do I do it traffic here and on SparkFun 
indicates to me that things could be made easier.


But if the change seems unwise to the expects, I am happy to withdraw 
my proposal.


Best regards, John Hartman
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development


Re: [Openocd-development] Proposed change for STM32 Flash burner: at 0 as well as 0x8000000

2010-09-03 Thread Peter Stuge
John Hartman (NoICE) wrote:
 My intent was to make it easier for people to get gdb and OpenOCD
 running. The volume of how do I do it traffic here and on
 SparkFun indicates to me that things could be made easier.

This is a good initiative, but I think it's important to consider the
different components involved.


 But if the change seems unwise to the expects, I am happy to
 withdraw my proposal.

I like your goal, but I don't think OpenOCD should be working around
the behavior of gdb, or even higher level tools. Better just fix gdb
or the other tools.

Does the gdb load command (with or without parameters) always send an
address to OpenOCD?

If so, then gdb obviously also needs to know the address it should
send. That could come from the user, from another tool, or from the
binary. Adding an alias to OpenOCD isn't the right fix to the problem
of users or tools interfacing with gdb but not telling gdb the whole
story IMO.


//Peter
___
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development