diff --git a/board/main.c b/board/main.c index 26213ba..4e162d5 100644 --- a/board/main.c +++ b/board/main.c @@ -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: diff --git a/release/flash_release.py b/release/flash_release.py new file mode 100755 index 0000000..bfe5469 --- /dev/null +++ b/release/flash_release.py @@ -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!") + + diff --git a/release/make_release.sh b/release/make_release.sh index 020e526..7be994c 100755 --- a/release/make_release.sh +++ b/release/make_release.sh @@ -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