cancel
Showing results for 
Search instead for 
Did you mean: 

Programming ST10F269

saroj
Associate
Posted on April 17, 2006 at 07:53

Programming ST10F269

2 REPLIES 2
saroj
Associate
Posted on April 13, 2006 at 09:19

We are using ST10F269. We have extermal flash memory.

Is there any utility to download .H86 file to external flash?

Earlier for on-chip we were using ST10 flasher utility but now we want to download our software in External flash.

I tried to write utility myself in VB.net but the only thing i am able to get is D5 after sending 00. I should be sending 32 byte code to ST10 but where would get this code from?

Please help me i have no idea about this.

Best Regards and Thanks,

Saroj

najoua
Associate II
Posted on April 17, 2006 at 07:53

Hello,

Sorry, we don't provide a tool to program external Flash. The only way to do is to use a programmer from a third party or do your own utility.

The ST10F269 includes an on-chip boot loader. This mode is entered when P0L.4 is sampled low during reset.

When this mode is activated, the ST10F269 will be waiting to receive a NULL (0x00) byte on its ASC interface from an external device. Then, it calculates the ASC baud rate according to the length of the 0x00 byte received, configures its ASC interface accordingly, sends the acknowledge byte 0xD5 to the external device and start waiting to receive exactly 32 bytes from the external device. The on chip boot loader stores these 32 bytes in the ST10F269 internal RAM starting at address 0xFA40.

These 32 bytes may hold up to 16 instructions, clearly not enough to setup all registers and run an application. Instead, the 32 bytes are almost always a loop to download more instruction bytes. Consider the following loop.

mov R0, #0FA60h ; R0 is the address to the next byte

W0:

jnb S0RIR, W0 ; wait until a byte is received

movb [R0], S0RBUF ; place the received byte in memory

bclr S0RIR ; clear serial receive flag

movb S0TBUF, [R0] ; transmit (echo) the byte

cmpi1 R0, #(0FA60h+NUMBYTES-1) ; see if all bytes are received

jmpr cc_NE, W0 ; if not repeat

nop

nop

nop

nop

This loop takes exactly 32 bytes to implement. Note that NOP (no operations) instructions are used to pad the loop to make it exactly 32 bytes. Once the 32-byte loop is received, the microcontroller branches to 0FA40h and starts executing this 32-byte loop. This loop expects more characters to be received and places the received characters in internal memory. So the host which sends the 32-byte loop may continue to send more bytes, now to be placed in memory by the loop rather than by the microcontroller’s bootstrap logic.

I hope this helps you,

Regards,

Najoua.

[ This message was edited by: Najoua on 17-04-2006 11:24 ]