Page 7 of 7

Posted: Fri Apr 14, 2006 2:00 pm
by pmazolo
Thanks for the link to SAM-BA!

It looks as JTAG is the way to go when first programming an empty AT91SAM7A3... (or are there alternatives here?)

However, I could not really find out what was needed to upgrade firmware after that, via RS-232 in-field.... I presume I need a special piece of code in the FLASH for that, but I could not find it, or how to incorporate it into my main program code (I am using IAR EWARM).... if so, is that code available for the A3 chip?


Posted: Fri Apr 14, 2006 4:02 pm
by Fredo_Boyer
JTAg is the only way indeed for the SAM7A3...

You will need to upgrade in the field the equivalent of SAM-BA Boot code and adap it in your application...

Hope this will help !
Best regards

Posted: Fri Apr 14, 2006 4:58 pm
by pmazolo
OK.... is that code available as source code for some simillar chip (like the AT91AM7S and hopefully the IAT EWARM), so I can port it to the A3?

If so, where can i find it? (your link pointed only to the .bi binary file)

Is this whole SAM-BA solution free of charge?


Posted: Fri Apr 14, 2006 5:38 pm
by Fredo_Boyer
SAM-BA boot for SAM7A3 already exist !


Posted: Fri Apr 14, 2006 9:58 pm
by pmazolo
OK, fine! ..... But I thought you just said only JTAG flashing was available for the A3...?

What I want is for users to upgrade my firmware via RS-232, in-field.... Does that also exist for the A3 (and IAR EWARM adapted)?

If not, is there some code for another simillar chip that I can port to the A3 (and IAR EWARM)?

Please explain if I am totally stupid about something obvious here!


Posted: Tue Apr 18, 2006 10:15 am
by Fredo_Boyer
SAM-BA Boot is available for the SAM7A3-EK board. It supports the USB and the DBGU as the others parts.
But as there is no recovery procedure in the SAM7A3, you will not be able to recover it once you will have programmed your flash !
So you will need to program SAM-BA Boot that will allow you to program your binary with SAM-BA !!!!

The best is perhaps to use SAM-PROG available in the AT91ISP software package ( ... ol_id=3883 ) during your debug phase or your development toolchain to program your part. SAM-PROG uses the JTAG interface to directly program your application in the SAM7A3 flash

For ISP/IAP, you will have to adapt SAM-BA Boot code directly in your application


Posted: Fri May 19, 2006 9:34 am
by gerhardf
i have to program an at91sam7s via the DBGU interface with an PC still running windows98.

sam-ba and AT-ISP are only running under windows2000 and higher.

has anybody of you had a similar problem and found a solution?


Re: Download firmware via RS-232 port

Posted: Wed Jun 07, 2006 2:38 pm
by rickcollins
pmazolo wrote:Hi,

I am new to this FLASH thing and would like some help with basic questions:

1. How do we best get the very first code into the AT91SAM7A3 in our produced units? Does the chip have some kind of built-in support for downloading code in an "empty" chip? JTAG? Other?

2. How do we download new firmware into existing products, in-field?
The DBGU serial port will let you (re)load the Flash. It has a protocol where you have to first load the boot loader into the Flash by raising several pins to a one (TST, PA0, PA1, PA2) and asserting reset (or cycling power). You then set TST to zero and reset again to run the boot loader. This will communicate with a PC application, SAM-BA, to load your program into the flash.
Our product will have a serial port (RS-232 via the USART), so could we use that for both #1 and #2 in some way? We would like to avoid having a JTAG connector on every unit produced....
That's the sticky wicket. Can you use the same serial port for loading code into the SAM7 that you want to use in the application? The DBGU serial port is not as programmable as the other serial ports. For example, I don't think you can use any word size other than 8 bits. But more importantly, the DBGU is used for several other debug features. I am currently trying to determine if using this port in your application interferes in any way with using all of these debug features.
Ie: Is there any way to get the "empty" chip to download firmware via the serial port? Or, if that is not possible, we could perhaps download the first code via JTAG pads in production, but then we would like to be able to use RS-232 after that, in-field.... is there a bootocode available that can handle that? At least one that we could port to the A3....

(The at91sam7A3 we use has 32K ram and 256 FLASH, but no ROM/bootrom)

I missed the fact that you are working with the SAM7A3 rather than the SAM7S parts. I am trying to find out how usable the DBGU port is in an application.

Posted: Tue Apr 17, 2007 3:19 pm
by Nordin
Development board: sam7A3
IDE&Compiler: IAR
OS: Windows XP pro SP2

Hello my friends,

So, if I understand well, I need to embedd SAMBA source into my own application source, right?

Well is it possible to load firmware with SAMBA into flash using USB?
I'm sorry if it's a silly question, but nobody has mentioned that.

Thank you.

Posted: Mon May 07, 2007 8:23 pm
by Ancaritha
I believe I have the incorrect oscillator on my board, so I can't get SAMBA to work properly, but once I spin a new rev with a different oscillator, I just want to make sure I have this procedure correct.

I have to program my board (SAM7A3) with the SAMBA boot binary provided by Atmel, and then I should be able to program my board via USB using the SAM-BA program. However, once I've programmed it once, the boot binary is gone since it is stored in flash and I would need to incorporate one into my code to do the same thing.

Right now when I plug in my device it fails to enumerate so Windows doesn't recognize it. My USB works for other applications, so I'm assuming that my oscillator is wrong for the boot binary that was provided.

Arm bootloader

Posted: Thu Apr 10, 2008 12:23 pm
by aty
Dear all.

I'm a beginner at arm programing, I working on a bootloader. But I can't find any way to start the firmware, now I trying to jump to the bootloader's start address(0x00000000). I use gcc, arm toolchain., my uC is AT91SAM7a3.

The assembly lines are the folowing
MOV R0, #0x0000
MOV R15, R0

Can somebody help me?

Best regards, aty

linker wizardry

Posted: Fri Apr 11, 2008 12:36 pm
by aty
The reset => Bootloader => firmware sequence requires some linker wizardry:

1) put firmware entry address (text.init0 ?) to a predefined start address (0x100) while interrupt vectors are on page0
2) but tweak interrupt (reset) vector0 to jump to bootloader address (say 0x3F000)
3) link bootloader (section text?) address to 0x3F000
3b) maybe the linker can be told to copy from flash to SRAM and jump to SRAM with a simple pragma

4) bootloader (executing from SRAM so it can upgrade firmware in flash) must be able to jump to firmware (flash 0x100). Assembly code ? Or simple void *f(void)=0x100100 ; f() ; ?

Can someone help in 1-3) ? There should be some bootloader example out there, that works with gcc and implements these.

Re: AT91SAM7S Boot Assistant (SAM-BA)

Posted: Fri Jan 29, 2010 10:33 am
by Phong.dq
I'm newbie in SAM7 and IAR. So, I have a question:
How to convert .out file into .bin file?

Re: AT91SAM7S Boot Assistant (SAM-BA)

Posted: Wed Sep 21, 2011 8:42 am
by 71GA
[quote="Phong.dq"]I'm newbie in SAM7 and IAR. So, I have a question:
How to convert .out file into .bin file?[/quote]

There is a command "arm-none-eabi-objcopy" that is included in YAGARTO toolchain that lets you do that. Soo take a look at this command on the web. You can get YAGARTO toolchain here: