Re: Breakpoints in bootloader assembly



On Oct 9, 11:15 am, "Dean Ramsier" <ramsiernos...@xxxxxxxxxx> wrote:
Caveat - I have no experience with the Marvell jtag tools so don't assume
because I work at BSQUARE I know the answer to your question :)

Startup is going to occur with the MMU off, so the address you use needs to
be a physical address.  The one you used with Main() is a virtual address
because Main() is called after the MMU is enabled.

Also note that StartUp is going to be running in internal RAM because that's
what the hardware does - copies a small segment of code out of NAND into
internal RAM and jumps there.  What you really want is to set a hardware
breakpoint at that location.

And no, I don't know what it is offhand :)

--
Dean Ramsier - eMVP
BSQUARE Corporation

"RyeCatcher" <daniel.chi...@xxxxxxxxx> wrote in message

news:uBfXKOhKJHA.4452@xxxxxxxxxxxxxxxxxxxxxxx

Here we do not care about the boot mode. If you want to set a break point,
you can just set a dead loop at the Startup, as shown below.

Startup

deadloop

b    deadloop

Then it will stop at the Startup point. You can use some debug tools to
check if the current PC is pointing here.

--
RyeCatcher

Shanghai, China

<jared.win...@xxxxxxxx>
??????:76c4e839-b91d-47bf-8b72-da34065e4...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
On Oct 8, 2:33 pm, "Paul G. Tobey [eMVP]" <p space tobey no spam AT no
instrument no spam DOT com> wrote:
Think we might need to know what bootloader you're talking about? What
version of Windows CE? What hardware debugging support you have? What
processor type? It looks like ARM, but why make us guess?

Paul T.

<jared.win...@xxxxxxxx> wrote in message

news:8b5526ea-8da8-4408-8992-2d07c8f7e7ea@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

I am trying to setup breakpoints in my bootloader before my the main()
function gets called. For instance, I would like be able to set a
breakpoint at the beginning of the StartUp function which is written
in assembly. I have no problem setting breakpoints for C functions,
for example I can create a new breakpoint and just type "main" into
the New Breakpoint dialog. I can also set a HW breakpoint using the
address of main (in my case 0x9000c1c0) and that works too. Trying to
enter "StartUp" rather than "main" doesn't work, nor does using its
address. I have noticed that the symbol "StartUp" isn't seen in my
bootloader executable like "main" is (as inspected with dumpbin). Any
suggestions of what I might be doing wrong would be appreciated.
Thanks.

Sure, sorry for the lack of details. I am running Windows CE 6 on a
BSquare development board with a PXA320 (XScale) processor. The
bootloader is from BSquare (not eboot), and it is booting from NAND
flash. If I understand things correctly, the processor has a BootROM
that will copy the the bootloader out of the NAND flash into internal
RAM, and then the BootROM will jump to my bootloader. I am using a
Macraigor usb2sprite JTAG probe and the Marvell Debugger Extensions
for Windows 3.0 provides my eXDI2 driver. Thanks.

got it, thanks. if anyone else has the same problem, the BootROM
copies the first block of the bootloader to address 0x5C014000, so
that is where you want to set the hardware breakpoint. See the BootROM
Reference Manual for the PXA3xx for more info. thanks again.
.