mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	* Add defines for LED, button and serial port To make supporting different board layouts easier, this introduces some new defines: For all platforms: - `KNX_LED` - the programming LED, defaults to `LED_BUILTIN` - `KNX_BUTTON` - the programming button, defaults to `0` For Arduino platforms: - `KNX_DEBUG_SERIAL` - the serial port that is used for debugging, defaults to `Serial` - `KNX_SERIAL` - the serial port used for communication with the TPUART, default depends on platform * GD32 flash workaround Addressing #181 At least some GD32 devices seem to require unlocking the flash twice. As the unlock function exits with `HAL_OK` if the flash is already unlocked, STM32 devices can run the same code without issues. * Add H8I8O and H8C09 configurations to knx-demo Addressing #181 These configurations both serve as examples for the use of these boards and other custom boards that don't use the standard pinout. * Add STM32 unlock target This copies the brute force unlock approach by @pavkriz into a custom target. With this commit, it is possible to automatically unlock e.g. a H8I8O board without leaving the PlatformIO IDE. See #181
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
from subprocess import run
 | 
						|
from datetime import datetime, timedelta
 | 
						|
from os.path import expanduser
 | 
						|
 | 
						|
ocddir = expanduser("~/.platformio/packages/tool-openocd/")
 | 
						|
chip = "stm32f1x"
 | 
						|
 | 
						|
def unlock(*args, **kwargs):
 | 
						|
  print("Please connect the board within the next two minutes.")
 | 
						|
  endtime = datetime.now() + timedelta(minutes = 1)
 | 
						|
  ret = 1
 | 
						|
  while ret != 0 and datetime.now() < endtime:
 | 
						|
    ret = run(["bin/openocd", "-f", "interface/stlink.cfg", "-f", "target/" + chip + ".cfg", "-c", "init", "-c", "reset halt", "-c", chip + " unlock 0", "-c", "reset halt", "-c", "exit"], cwd = ocddir).returncode
 | 
						|
  if ret != 0:
 | 
						|
    print("Timeout")
 | 
						|
  return ret
 | 
						|
 | 
						|
try:
 | 
						|
  Import("env")
 | 
						|
except NameError:
 | 
						|
  import sys
 | 
						|
  if len(sys.argv) > 1:
 | 
						|
    chip = sys.argv[1]
 | 
						|
  if len(sys.argv) > 2:
 | 
						|
    ocddir = sys.argv[2]
 | 
						|
  unlock(None, None)
 | 
						|
else:
 | 
						|
  ocddir = env.PioPlatform().get_package_dir("tool-openocd")
 | 
						|
  options = env.GetProjectOptions()
 | 
						|
  for option in options:
 | 
						|
    if "unlock_chip" == option[0]:
 | 
						|
      chip = option[1]
 | 
						|
  env.AddCustomTarget("unlock", None, unlock)
 |