123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- ( LOADER PROTOCOL JCB 09:16 11/11/10)
- 947 constant PORT
- : response0 ( -- )
- ETH.IP.UDP.SOURCEPORT packet@
- PORT
- d# 2 ETH.IP.SRCIP mac-inoffset mac@n
- net-my-ip
- 2over arp-lookup
- ( dst-port src-port dst-ip src-ip *ethaddr )
- udp-header
- d# 0 mac-pkt-,
- ETH.IP.UDP.LOADER.SEQNO packet@ mac-pkt-,
- ;
- : response1
- udp-wrapup mac-send
- ;
- : respond
- response0
- response1
- ;
- : ramread
- response0
- ETH.IP.UDP.LOADER.RAMREAD.ADDR packet@
- d# 128 bounds begin
- dup @ mac-pkt-,
- cell+
- 2dup=
- until
- 2drop
- response1
- ;
- : ramwrite
- ETH.IP.UDP.LOADER.RAMWRITE.ADDR packet@
- d# 64 0do
- ETH.IP.UDP.LOADER.RAMWRITE.DATA i cells + packet@
- over !
- cell+
- loop
- drop
- respond
- ;
- : reboot
- respond bootloader ;
- : flashread
- response0
- ETH.IP.UDP.LOADER.FLASHREAD.ADDR packetd@ d2/
- flash-reset
- d# 64 0do
- 2dup flash@
- mac-pkt-,
- d1+
- loop
- 2drop
- response1
- ;
- : flasherase
- respond flash-chiperase ;
- : flashdone
- response0
- ETH.IP.UDP.LOADER.FLASHREAD.ADDR packetd@ d2/
- flash-erased mac-pkt-,
- response1
- ;
- : flashwrite
- ETH.IP.UDP.LOADER.FLASHWRITE.ADDR packetd@ d2/
- d# 64 0do
- 2dup
- ETH.IP.UDP.LOADER.FLASHWRITE.DATA i cells + packet@
- -rot flash!
- d1+
- loop
- 2drop
- respond
- ;
- : flashsectorerase
- ETH.IP.UDP.LOADER.FLASHWRITE.ADDR packetd@ d2/
- flash-sectorerase
- respond
- ;
- jumptable opcodes
- ( 0 ) | ramread
- ( 1 ) | ramwrite
- ( 2 ) | reboot
- ( 3 ) | flashread
- ( 4 ) | flasherase
- ( 5 ) | flashdone
- ( 6 ) | flashwrite
- ( 7 ) | flashsectorerase
- : loader-handler ( -- )
- IP_PROTO_UDP ip-isproto if
- ETH.IP.UDP.DESTPORT packet@ PORT =
- d# 2 ETH.IP.SRCIP mac-inoffset mac@n arp-lookup 0<> and if
- udp-checksum? if
- ETH.IP.UDP.LOADER.OPCODE packet@
- \ s" loader opcode=" type dup hex4 cr
- opcodes execute
- then
- then
- then
- ;
|