Ještě k tomu bootloaderu odolnému proti chybám v komunikaci - ach jo, rozhozené řádkování takže znova.

Pavel Kořenský pavel.korensky@dator3.cz
Úterý Leden 10 23:34:55 CET 2006


Zdravím,

děkuji za rady ohledně bootloaderu.

Nejspíš si ho napíšu sám a měl bych zhruba následující myšlenku:


1. Do PIC se přenáší soubor abcd.hex přímo v ASCII tvaru, každý řádek je
několik packetů přenosu. Řádek končí speciálním packetem 

2. Packety jsou číslované, mají nějaký úvod a jako nožičky a závěr se
posílá CRC. 

3. Pokud packet dorazí v pořádku, posílá se zpět ACK. 

4. Pokud packet dorazí chybně, posílá se zpět NACK s číslem vadného
packetu. 

5. Pokud se vrátil NACK, opakuje PC poslání packetu s číslem, které bylo
v NACK. 

6. Pokud zpět nedorazil ACK ani NACK, tak PC zkouší poslat poslední
packet několikrát a pokud pořád nic, tak signalisace chyby. 

7. Packety se posílají tak, že každý ASCII znak je kódovaný pomocí 50/50
kódování kvůli spolehlivosti přenosu přes radio-modem. 

8. Pokud jsou packety pro řádek přijaty v pořádku, bootloader vybalí z
packetů data (tedy jednu řádku .HEX souboru) a data zapíše po ověření CS
do paměti. 

9. Pokud dojde k fatálnímu selhání přenosu, bootloader se vrací na
začátek a čeká na nový start přenosu.



Zapomněl jsem na něco ???

Buffer pro přijetí celého programu do RAM bohužel nemám. Mohl bych do
robota přidat I2C FRAM (mám je v šuplíku), ale pokud to bude fungovat
tak bych jí tam nerad cpal. Šifrování není potřeba, jedná se víceméně o
hračku a nikoli o komerční projekt. Jde mi jenom o to, aby byl upload
firmware bezproblémový, protože pokud to celé uveřejním na Webu, nechci
řešit, proč se někomu v Austrálii kousnul robot a co s tím má dělat. :-)



Zdraví PavelK




Další informace o konferenci Hw-list