add release flasher

master
George Hotz 2017-08-23 10:43:40 -07:00
parent bb4ec716b1
commit 0b7f10abe5
3 changed files with 81 additions and 2 deletions

View File

@ -207,7 +207,7 @@ int usb_cb_control_msg(USB_Setup_TypeDef *setup, uint8_t *resp, int hardwired) {
case 0xd6:
COMPILE_TIME_ASSERT(sizeof(gitversion) <= MAX_RESP_LEN)
memcpy(resp, gitversion, sizeof(gitversion));
resp_len = sizeof(gitversion);
resp_len = sizeof(gitversion)-1;
break;
// **** 0xd8: reset ST
case 0xd8:

View File

@ -0,0 +1,78 @@
#!/usr/bin/env python
from __future__ import print_function
import sys
import time
from panda import Panda, PandaDFU
from panda.boardesp.tools.esptool import ESPROM, CesantaFlasher
from zipfile import ZipFile
def status(x):
print("\033[1;32;40m"+x+"\033[00m")
if __name__ == "__main__":
zf = ZipFile(sys.argv[1])
zf.printdir()
version = zf.read("version")
code_bootstub = zf.read("bootstub.panda.bin")
code_panda = zf.read("panda.bin")
code_boot_15 = zf.read("boot_v1.5.bin")
code_boot_15 = code_boot_15[0:2] + "\x00\x30" + code_boot_15[4:]
code_user1 = zf.read("user1.bin")
code_user2 = zf.read("user2.bin")
# look for Panda
st_serial = Panda.list()[0]
# enter DFU mode
status("1. Entering DFU mode")
panda = Panda(st_serial)
panda.enter_bootloader()
time.sleep(1)
# program bootstub
status("2. Programming bootstub")
dfu = PandaDFU(PandaDFU.st_serial_to_dfu_serial(st_serial))
dfu.clear_status()
dfu.erase(0x8004000)
dfu.erase(0x8000000)
dfu.program(0x8000000, code_bootstub, 0x800)
dfu.reset()
time.sleep(1)
# flash main code
status("3. Flashing main code")
panda = Panda(st_serial)
panda.flash(code=code_panda)
panda.close()
time.sleep(1)
# flashing ESP
status("4. Flashing ESP (slow!)")
align = lambda x, sz=0x1000: x+"\xFF"*((sz-len(x)) % sz)
esp = ESPROM(st_serial)
esp.connect()
flasher = CesantaFlasher(esp, 230400)
flasher.flash_write(0x0, align(code_boot_15), True)
flasher.flash_write(0x1000, align(code_user1), True)
flasher.flash_write(0x81000, align(code_user2), True)
flasher.flash_write(0x3FE000, "\xFF"*0x1000)
flasher.boot_fw()
del flasher
del esp
time.sleep(1)
# check for connection
status("5. Verifying version")
panda = Panda(st_serial)
my_version = panda.get_version()
print(my_version, "should be", version)
assert(str(version) == str(my_version))
# done!
status("6. Success!")

View File

@ -29,11 +29,12 @@ mkdir obj
make -f ../common/version.mk
make obj/gitversion.h
RELEASE_NAME=$(python -c "import sys;sys.stdout.write(open('obj/gitversion.h').read().split('\"')[1])")
echo -en $RELEASE_NAME > /tmp/version
rm -rf obj
# make zip file
pushd .
cd ..
zip -j release/panda-$RELEASE_NAME.zip ~/one/panda/board/obj/bootstub.panda.bin ~/one/panda/board/obj/panda.bin ~/one/panda/boardesp/user?.bin /tmp/version
zip -j release/panda-$RELEASE_NAME.zip ~/one/panda/board/obj/bootstub.panda.bin ~/one/panda/board/obj/panda.bin ~/one/panda/boardesp/user?.bin ~/one/panda/boardesp/esp-open-sdk/ESP8266_NONOS_SDK_V1.5.4_16_05_20/bin/boot_v1.5.bin /tmp/version
popd