mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-21 07:13:53 +08:00
45d0d286f remove whitespace (#255)
e49d0dbbd Pedal: use avg between tracks (#253)
c597dcc89 VERSION update after health packet changes and minor misra test change
01072bec0 Misra 11.x: pointer usage. (#250)
fd68c26ab Propagate can_push errors (#249)
ce1daf206 Misra check only done for EON config
70d4fd7f6 cleanup docker container on failure
04756a037 Turning back Misra check: unvoluntarily change
fcb1208e1 fix weird code in USB_ReadPacket
b983cc8fe Re-wrote test_misra.sh
0b1920636 Misra 17.7: The value returned by a function having non-void return type shall be used. We should hang on initial failed safety_set_mode
06ee8bd2d Ignore Misra 5.4 until cppcheck bug (?) is fixed
4be858224 Update cppcheck commit and pass predefined params to avoid impossible combinations of configs
f45dd04c6 cppcheck: ignore redundantAssignment and selfAssignment for registers in llcan.h
9ce631155 Misra 12.1 (operator order) and 10.4 (incompatible essential types) fixes, arised after properly checking UID_BASE config
1cd34e564 Explicitly set the define and undefine for unknown configs in misra checks
5a024999d remove esp flash from run_automated_tests.sh
23e3684d7 Cppcheck unused functions (#247)
c97d60be6 Removed bad language
b031480a7 Missed adding Dockerfile
91ff6bb21 Run language checker in CI
205ec342a Improved language checker
f7bbab072 Language checker test
d9d0a62f2 Misra 5.5: missed this change from previous PR
85fa3c02a Misra 5.5: Identifiers shall be distinct from macro names (#246)
190d604a0 Pedal: 2 minor fixes to Misra 15.7 (else needed) and 17.7 (non-void output must be used)
8ea01ff12 Pedal: no built-in functions to avoid puts and putc re-definitions
1f40d1e6a Misra pedal (#245)
a4554e3e6 Ignore advisory Misra 19.2: the union keyword should not be used
e6dc4172b Minor indent error
247e128b4 Fix strict compiler on bootstub build
ba6856921 Removed build strict test and enabled -Werror flag
da11f0fa0 safety replay: update openpilot-tools after logreader fix
fc8b9e49b Cppcheck: also check pedal
f7bd2c2f3 Misra 10.4: fix last 2 violations (#242)
9be5fdead finished misra 17.8 (#241)
3c3aba3db Misra 10.4: Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category (#240)
f2a3a177b Misra 15_7: fix what seems to be a false positive of cppcheck
812ace538 Misra 15_7: if … else if constructs should be terminated with an else clause (#230)
79e9735ae rename 5_wifi_udp.py
3c3ff0c03 Update Jenkinsfile (#239)
1bd928437 Misra 17.7: the value returned by a function having non-void return shall be used (#237)
18c9e88bc Merge pull request #238 from commaai/misra_17_8
7ac321de4 Merge pull request #235 from commaai/memxxx
004e543cc Jenkins: run EON test first
4bff28620 Merge branch 'memxxx' of github.com:commaai/panda into memxxx
7cd80de23 typo
385e33b32 12.1 regression
955842bae WIP
ea908cbb7 10_1 violations: Operands shall not be of an inappropriate essential type (#233)
fa3303805 Fix Misra 5.3: An identifier declared in an inner scope shall not hide an identifier declared in an outer scope (#236)
ebfe1c512 Merge branch 'master' of github.com:commaai/panda into memxxx
8c11470ef Fix EON test case
64e18e841 fix inverted logic to differentiate between dev and EON panda builds
36755a0fd Merge branch 'master' of github.com:commaai/panda into memxxx
e2981d612 skip wifi tests for EON panda build
db2eec98c Merge branch 'master' of github.com:commaai/panda into memxxx
11257e79a Ignore test 5_wifi_udp.py_ignore: too unreliable for now
6973c2a81 fix wifi tests
cf6985ad1 memxxx function changes to be Misra compliant
3a6cd2930 wifi threshold perc back to 20%. Problem wasn't this.
d92a03528 faster docker build for safety replay
3e9469b3e Fixing tests after min->MIN change
ecb9b6c01 Revert "Misra 10 1: Operands shall not be of an inappropriate essential type (#232)"
8732e4faf Misra 10 1: Operands shall not be of an inappropriate essential type (#232)
git-subtree-dir: panda
git-subtree-split: 45d0d286f4b5c893590a98ec1438b8a143b9605d
old-commit-hash: 1ff59baea7
96 lines
2.6 KiB
Python
Executable File
96 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
import sys
|
|
import time
|
|
import requests
|
|
import json
|
|
import StringIO
|
|
|
|
def flash_release(path=None, st_serial=None):
|
|
from panda import Panda, PandaDFU, ESPROM, CesantaFlasher
|
|
from zipfile import ZipFile
|
|
|
|
def status(x):
|
|
print("\033[1;32;40m"+x+"\033[00m")
|
|
|
|
if st_serial == None:
|
|
# look for Panda
|
|
panda_list = Panda.list()
|
|
if len(panda_list) == 0:
|
|
raise Exception("panda not found, make sure it's connected and your user can access it")
|
|
elif len(panda_list) > 1:
|
|
raise Exception("Please only connect one panda")
|
|
st_serial = panda_list[0]
|
|
print("Using panda with serial %s" % st_serial)
|
|
|
|
if path == None:
|
|
print("Fetching latest firmware from github.com/commaai/panda-artifacts")
|
|
r = requests.get("https://raw.githubusercontent.com/commaai/panda-artifacts/master/latest.json")
|
|
url = json.loads(r.text)['url']
|
|
r = requests.get(url)
|
|
print("Fetching firmware from %s" % url)
|
|
path = StringIO.StringIO(r.content)
|
|
|
|
zf = ZipFile(path)
|
|
zf.printdir()
|
|
|
|
version = zf.read("version")
|
|
status("0. Preparing to flash "+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")
|
|
|
|
# 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.program_bootstub(code_bootstub)
|
|
time.sleep(1)
|
|
|
|
# flash main code
|
|
status("3. Flashing main code")
|
|
panda = Panda(st_serial)
|
|
panda.flash(code=code_panda)
|
|
panda.close()
|
|
|
|
# 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("dongle id: %s" % panda.get_serial()[0])
|
|
print(my_version, "should be", version)
|
|
assert(str(version) == str(my_version))
|
|
|
|
# done!
|
|
status("6. Success!")
|
|
|
|
if __name__ == "__main__":
|
|
flash_release(*sys.argv[1:])
|
|
|