Support 512K "RCT6" in BTT SKR Mini (#15890)

2.0.x
thisiskeithb 5 years ago committed by Scott Lahteine
parent aa93e1f21a
commit 0f57818f2d

@ -27,7 +27,7 @@ env:
# Extended STM32 Environments # Extended STM32 Environments
- TEST_PLATFORM="STM32F103RC_bigtree" - TEST_PLATFORM="STM32F103RC_bigtree"
- TEST_PLATFORM="STM32F103RC_bigtree_USB" - TEST_PLATFORM="STM32F103RC_bigtree_NOUSB"
- TEST_PLATFORM="STM32F103RC_fysetc" - TEST_PLATFORM="STM32F103RC_fysetc"
- TEST_PLATFORM="jgaurora_a5s_a1" - TEST_PLATFORM="jgaurora_a5s_a1"
- TEST_PLATFORM="STM32F103VE_longer" - TEST_PLATFORM="STM32F103VE_longer"

@ -51,6 +51,14 @@
// Defines // Defines
// ------------------------ // ------------------------
#ifndef STM32_FLASH_SIZE
#ifdef MCU_STM32F103RE
#define STM32_FLASH_SIZE 512
#else
#define STM32_FLASH_SIZE 256
#endif
#endif
#ifdef SERIAL_USB #ifdef SERIAL_USB
#ifndef USE_USB_COMPOSITE #ifndef USE_USB_COMPOSITE
#define UsbSerial Serial #define UsbSerial Serial

@ -470,13 +470,13 @@
#elif MB(MKS_ROBIN_LITE) #elif MB(MKS_ROBIN_LITE)
#include "stm32/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite #include "stm32/pins_MKS_ROBIN_LITE.h" // STM32F1 env:mks_robin_lite
#elif MB(BIGTREE_SKR_MINI_V1_1) #elif MB(BIGTREE_SKR_MINI_V1_1)
#include "stm32/pins_BIGTREE_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_bigtree #include "stm32/pins_BIGTREE_SKR_MINI_V1_1.h" // STM32F1 env:STM32F103RC_bigtree env:STM32F103RC_bigtree_512K env:STM32F103RC_bigtree_NOUSB env:STM32F103RC_bigtree_512K_NOUSB
#elif MB(BTT_SKR_MINI_E3_V1_2) #elif MB(BTT_SKR_MINI_E3_V1_2)
#include "stm32/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_bigtree #include "stm32/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_bigtree env:STM32F103RC_bigtree_512K env:STM32F103RC_bigtree_NOUSB env:STM32F103RC_bigtree_512K_NOUSB
#elif MB(BIGTREE_SKR_MINI_E3) #elif MB(BIGTREE_SKR_MINI_E3)
#include "stm32/pins_BIGTREE_SKR_MINI_E3.h" // STM32F1 env:STM32F103RC_bigtree #include "stm32/pins_BIGTREE_SKR_MINI_E3.h" // STM32F1 env:STM32F103RC_bigtree env:STM32F103RC_bigtree_512K env:STM32F103RC_bigtree_NOUSB env:STM32F103RC_bigtree_512K_NOUSB
#elif MB(BIGTREE_SKR_E3_DIP) #elif MB(BIGTREE_SKR_E3_DIP)
#include "stm32/pins_BIGTREE_SKR_E3_DIP.h" // STM32F1 env:STM32F103RC_bigtree #include "stm32/pins_BIGTREE_SKR_E3_DIP.h" // STM32F1 env:STM32F103RC_bigtree env:STM32F103RC_bigtree_512K env:STM32F103RC_bigtree_NOUSB env:STM32F103RC_bigtree_512K_NOUSB
#elif MB(JGAURORA_A5S_A1) #elif MB(JGAURORA_A5S_A1)
#include "stm32/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1 #include "stm32/pins_JGAURORA_A5S_A1.h" // STM32F1 env:jgaurora_a5s_a1
#elif MB(FYSETC_AIO_II) #elif MB(FYSETC_AIO_II)

@ -33,15 +33,9 @@
// Ignore temp readings during development. // Ignore temp readings during development.
//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#ifdef MCU_STM32F103RE
#define STM32_FLASH_SIZE (512 * 1024)
#else
#define STM32_FLASH_SIZE (256 * 1024)
#endif
#define FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION
#define EEPROM_PAGE_SIZE uint16(0x800) // 2KB #define EEPROM_PAGE_SIZE uint16(0x800) // 2KB
#define EEPROM_START_ADDRESS uint32(0x8000000 + STM32_FLASH_SIZE - 2 * EEPROM_PAGE_SIZE) #define EEPROM_START_ADDRESS uint32(0x8000000 + (STM32_FLASH_SIZE) * 1024 - 2 * EEPROM_PAGE_SIZE)
#undef E2END #undef E2END
#define E2END (EEPROM_PAGE_SIZE - 1) // 2KB #define E2END (EEPROM_PAGE_SIZE - 1) // 2KB

@ -33,15 +33,9 @@
// Ignore temp readings during development. // Ignore temp readings during development.
//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#ifdef MCU_STM32F103RE
#define STM32_FLASH_SIZE (512 * 1024)
#else
#define STM32_FLASH_SIZE (256 * 1024)
#endif
#define FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION
#define EEPROM_PAGE_SIZE uint16(0x800) // 2KB #define EEPROM_PAGE_SIZE uint16(0x800) // 2KB
#define EEPROM_START_ADDRESS uint32(0x8000000 + STM32_FLASH_SIZE - 2 * EEPROM_PAGE_SIZE) #define EEPROM_START_ADDRESS uint32(0x8000000 + (STM32_FLASH_SIZE) * 1024 - 2 * EEPROM_PAGE_SIZE)
#undef E2END #undef E2END
#define E2END (EEPROM_PAGE_SIZE - 1) // 2KB #define E2END (EEPROM_PAGE_SIZE - 1) // 2KB

@ -33,15 +33,9 @@
// Ignore temp readings during development. // Ignore temp readings during development.
//#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
#ifdef MCU_STM32F103RE
#define STM32_FLASH_SIZE (512 * 1024)
#else
#define STM32_FLASH_SIZE (256 * 1024)
#endif
#define FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION
#define EEPROM_PAGE_SIZE (0x800) // 2KB #define EEPROM_PAGE_SIZE (0x800) // 2KB
#define EEPROM_START_ADDRESS (0x8000000 + STM32_FLASH_SIZE - 2 * EEPROM_PAGE_SIZE) #define EEPROM_START_ADDRESS uint32(0x8000000 + (STM32_FLASH_SIZE) * 1024 - 2 * EEPROM_PAGE_SIZE)
#define E2END (EEPROM_PAGE_SIZE - 1) #define E2END (EEPROM_PAGE_SIZE - 1)
// //

@ -35,7 +35,7 @@
#define FLASH_EEPROM_EMULATION #define FLASH_EEPROM_EMULATION
#define EEPROM_PAGE_SIZE uint16(0x800) // 2KB #define EEPROM_PAGE_SIZE uint16(0x800) // 2KB
#define EEPROM_START_ADDRESS uint32(0x8000000 + 256 * 1024 - 2 * EEPROM_PAGE_SIZE) #define EEPROM_START_ADDRESS uint32(0x8000000 + (STM32_FLASH_SIZE) * 1024 - 2 * EEPROM_PAGE_SIZE)
#undef E2END #undef E2END
#define E2END (EEPROM_PAGE_SIZE - 1) // 2KB #define E2END (EEPROM_PAGE_SIZE - 1) // 2KB

@ -0,0 +1,14 @@
MEMORY
{
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K - 40
rom (rx) : ORIGIN = 0x08007000, LENGTH = 512K - 28K
}
/* Provide memory region aliases for common.inc */
REGION_ALIAS("REGION_TEXT", rom);
REGION_ALIAS("REGION_DATA", ram);
REGION_ALIAS("REGION_BSS", ram);
REGION_ALIAS("REGION_RODATA", rom);
/* Let common.inc handle the real work. */
INCLUDE common.inc

@ -1,13 +1,18 @@
import os import os
Import("env") Import("env")
# Relocate firmware from 0x08000000 to 0x08007000 STM32_FLASH_SIZE = 256
for define in env['CPPDEFINES']: for define in env['CPPDEFINES']:
if define[0] == "VECT_TAB_ADDR": if define[0] == "VECT_TAB_ADDR":
env['CPPDEFINES'].remove(define) env['CPPDEFINES'].remove(define)
if define[0] == "STM32_FLASH_SIZE":
STM32_FLASH_SIZE = define[1]
# Relocate firmware from 0x08000000 to 0x08007000
env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000")) env['CPPDEFINES'].append(("VECT_TAB_ADDR", "0x08007000"))
custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/STM32F103RC_SKR_MINI.ld") custom_ld_script = os.path.abspath("buildroot/share/PlatformIO/ldscripts/STM32F103RC_SKR_MINI_" + str(STM32_FLASH_SIZE) + "K.ld")
for i, flag in enumerate(env["LINKFLAGS"]): for i, flag in enumerate(env["LINKFLAGS"]):
if "-Wl,-T" in flag: if "-Wl,-T" in flag:
env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script env["LINKFLAGS"][i] = "-Wl,-T" + custom_ld_script

@ -118,8 +118,6 @@ from datetime import datetime, date, time
# reboot # reboot
######### #########
########################################################################################## ##########################################################################################
# #
# popup to get input from user # popup to get input from user
@ -128,74 +126,78 @@ from datetime import datetime, date, time
def get_answer(board_name, cpu_label_txt, cpu_a_txt, cpu_b_txt): def get_answer(board_name, cpu_label_txt, cpu_a_txt, cpu_b_txt):
if python_ver == 2: if python_ver == 2:
import Tkinter as tk import Tkinter as tk
else: else:
import tkinter as tk import tkinter as tk
def CPU_exit_3(): # forward declare functions def CPU_exit_3(): # forward declare functions
CPU_exit_3_() CPU_exit_3_()
def CPU_exit_4():
CPU_exit_4_() def got_answer():
got_answer_()
def kill_session(): def kill_session():
kill_session_() kill_session_()
root_get_answer = tk.Tk() root_get_answer = tk.Tk()
root_get_answer.attributes("-topmost", True) root_get_answer.title('')
root_get_answer.withdraw()
root_get_answer.deiconify()
root_get_answer.chk_state_1 = 1 # declare variables used by TK and enable def disable_event():
pass
chk_state_1 = 0 # set initial state of check boxes root_get_answer.protocol("WM_DELETE_WINDOW", disable_event)
root_get_answer.resizable(False, False)
root_get_answer.radio_state = 1 # declare variables used by TK and enable
global get_answer_val global get_answer_val
get_answer_val = 2 # return get_answer_val, set default to match chk_state_1 default get_answer_val = 2 # return get_answer_val, set default to match radio_state default
radio_state = tk.IntVar()
radio_state.set(get_answer_val)
l1 = tk.Label(text=board_name, l1 = tk.Label(text=board_name, fg="light green", bg="dark green",
fg = "light green", font="default 14 bold").grid(row=0, columnspan=2, sticky='EW', ipadx=2, ipady=2)
bg = "dark green",
font = "Helvetica 12 bold").grid(row=1)
l2 = tk.Label(text=cpu_label_txt, l2 = tk.Label(text=cpu_label_txt).grid(row=1, pady=4, columnspan=2, sticky='EW')
fg = "light green",
bg = "dark green",
font = "Helvetica 16 bold italic").grid(row=2)
b4 = tk.Checkbutton(text=cpu_a_txt, b4 = tk.Radiobutton(
text=cpu_a_txt,
fg="black", fg="black",
font = "Times 20 bold ", bg="lightgray",
variable=chk_state_1, onvalue=1, offvalue=0, relief=tk.SUNKEN,
selectcolor="green",
command = CPU_exit_3).grid(row=3) variable=radio_state,
value=1,
b5 = tk.Checkbutton(text=cpu_b_txt, indicatoron=0,
command=CPU_exit_3
).grid(row=2, pady=1, ipady=2, ipadx=10, columnspan=2)
b5 = tk.Radiobutton(
text=cpu_b_txt,
fg="black", fg="black",
font = "Times 20 bold ", bg="lightgray",
variable=chk_state_1, onvalue=0, offvalue=1, relief=tk.SUNKEN,
selectcolor="green",
variable=radio_state,
value=2,
indicatoron=0,
command=CPU_exit_3
).grid(row=3, pady=1, ipady=2, ipadx=10, columnspan=2) # use same variable but inverted so they will track
command = CPU_exit_4).grid(row=4) # use same variable but inverted so they will track b6 = tk.Button(text="Cancel", fg="red", command=kill_session).grid(row=4, column=0, padx=4, pady=4, ipadx=2, ipady=2)
b6 = tk.Button(text="CONFIRM",
fg = "blue",
font = "Times 20 bold ",
command = root_get_answer.destroy).grid(row=5, pady=4)
b7 = tk.Button(text="CANCEL", b7 = tk.Button(text="Continue", fg="green", command=got_answer).grid(row=4, column=1, padx=4, pady=4, ipadx=2, ipady=2)
fg = "red",
font = "Times 12 bold ",
command = kill_session).grid(row=6, pady=4)
def got_answer_():
root_get_answer.destroy()
def CPU_exit_3_(): def CPU_exit_3_():
global get_answer_val global get_answer_val
get_answer_val = 1 get_answer_val = radio_state.get()
def CPU_exit_4_():
global get_answer_val
get_answer_val = 2
def kill_session_(): def kill_session_():
raise SystemExit(0) # kill everything raise SystemExit(0) # kill everything
@ -270,7 +272,6 @@ def resolve_path(path):
# if 0 <= start: # if 0 <= start:
# path = path[start + 2 : ] # path = path[start + 2 : ]
start = path.find('/') start = path.find('/')
if start != 0: # make sure path starts with '/' if start != 0: # make sure path starts with '/'
while 0 == path.find(' '): # eat any spaces at the beginning while 0 == path.find(' '): # eat any spaces at the beginning
@ -304,7 +305,7 @@ def resolve_path(path):
# #
# Opens the file in the preferred editor at the line & column number # Open the file in the preferred editor at the line & column number
# If the preferred editor isn't already running then it tries the next. # If the preferred editor isn't already running then it tries the next.
# If none are open then the system default is used. # If none are open then the system default is used.
# #
@ -410,10 +411,11 @@ def open_file(path):
else: else:
os.system('open ' + file_path) os.system('open ' + file_path)
# end - open_file # end - open_file
# gets the last build environment # Get the last build environment
def get_build_last(): def get_build_last():
env_last = '' env_last = ''
DIR_PWD = os.listdir('.') DIR_PWD = os.listdir('.')
@ -434,8 +436,8 @@ def get_build_last():
return env_last return env_last
# gets the board being built from the Configuration.h file # Get the board being built from the Configuration.h file
# returns: board name, major version of Marlin being used (1 or 2) # return: board name, major version of Marlin being used (1 or 2)
def get_board_name(): def get_board_name():
board_name = '' board_name = ''
# get board name # get board name
@ -465,12 +467,11 @@ def get_board_name():
board_name = lines[board:spaces] board_name = lines[board:spaces]
break break
return board_name, Marlin_ver return board_name, Marlin_ver
# extract first environment name it finds after the start position # extract first environment name found after the start position
# returns: environment name and position to start the next search from # return: environment name and position to start the next search from
def get_env_from_line(line, start_position): def get_env_from_line(line, start_position):
env = '' env = ''
next_position = -1 next_position = -1
@ -484,8 +485,7 @@ def get_env_from_line(line, start_position):
return env, next_position return env, next_position
# scan pins.h for board name and return the environment(s) found
#scans pins.h for board name and returns the environment(s) it finds
def get_starting_env(board_name_full, version): def get_starting_env(board_name_full, version):
# get environment starting point # get environment starting point
@ -530,8 +530,8 @@ def get_starting_env(board_name_full, version):
return env_A, env_B, env_C return env_A, env_B, env_C
# scans input string for CPUs that the users may need to select from # Scan input string for CPUs that users may need to select from
# returns: CPU name # return: CPU name
def get_CPU_name(environment): def get_CPU_name(environment):
CPU_list = ('1280', '2560', '644', '1284', 'LPC1768', 'DUE') CPU_list = ('1280', '2560', '644', '1284', 'LPC1768', 'DUE')
CPU_name = '' CPU_name = ''
@ -541,8 +541,9 @@ def get_CPU_name(environment):
# get environment to be used for the build # get environment to be used for the build
# returns: environment # return: environment
def get_env(board_name, ver_Marlin): def get_env(board_name, ver_Marlin):
def no_environment(): def no_environment():
print('ERROR - no environment for this board') print('ERROR - no environment for this board')
print(board_name) print(board_name)
@ -553,11 +554,12 @@ def get_env(board_name, ver_Marlin):
print(board_name) print(board_name)
raise SystemExit(0) # quit if unable to find board raise SystemExit(0) # quit if unable to find board
CPU_question = (('1280', '2560', '1280 or 2560 CPU?'), ('644', '1284', '644 or 1284 CPU?'))
CPU_question = ( ('1280', '2560', " 1280 or 2560 CPU? "), ('644', '1284', " 644 or 1284 CPU? ") )
if 0 < board_name.find('MELZI'): if 0 < board_name.find('MELZI'):
get_answer(' ' + board_name + ' ', " Which flavor of Melzi? ", "Melzi (Optiboot bootloader)", "Melzi ") get_answer(
board_name, " Which flavor of Melzi? ", "Melzi (Optiboot bootloader)", "Melzi "
)
if 1 == get_answer_val: if 1 == get_answer_val:
target_env = 'melzi_optiboot' target_env = 'melzi_optiboot'
else: else:
@ -575,7 +577,7 @@ def get_env(board_name, ver_Marlin):
for item in CPU_question: for item in CPU_question:
if CPU_A == item[0]: if CPU_A == item[0]:
get_answer(' ' + board_name + ' ', item[2], item[0], item[1]) get_answer(board_name, item[2], item[0], item[1])
if 2 == get_answer_val: if 2 == get_answer_val:
target_env = env_B target_env = env_B
else: else:
@ -592,11 +594,20 @@ def get_env(board_name, ver_Marlin):
if build_type == 'traceback' or (build_type == 'clean' and get_build_last() == 'DUE_debug'): if build_type == 'traceback' or (build_type == 'clean' and get_build_last() == 'DUE_debug'):
target_env = 'DUE_debug' target_env = 'DUE_debug'
elif env_B == 'DUE_USB': elif env_B == 'DUE_USB':
get_answer(' ' + board_name + ' ', " DUE: need download port ", "USB (native USB) port", "Programming port ") get_answer(board_name, 'DUE Download Port?', '(Native) USB port', 'Programming port')
if 1 == get_answer_val: if 1 == get_answer_val:
target_env = 'DUE_USB' target_env = 'DUE_USB'
else: else:
target_env = 'DUE' target_env = 'DUE'
elif env_A == 'STM32F103RC_bigtree':
get_answer(board_name, 'RCT6 Flash Size?', '512K', '256K')
if 1 == get_answer_val:
target_env = 'STM32F103RC_bigtree_512K'
else:
target_env = 'STM32F103RC_bigtree'
get_answer(board_name, 'USB Support?', 'No USB', 'USB')
if 1 == get_answer_val:
target_env += '_NOUSB'
else: else:
invalid_board() invalid_board()
@ -607,14 +618,18 @@ def get_env(board_name, ver_Marlin):
raise SystemExit(0) raise SystemExit(0)
return target_env return target_env
# end - get_env # end - get_env
# puts screen text into queue so that the parent thread can fetch the data from this thread # puts screen text into queue so that the parent thread can fetch the data from this thread
if python_ver == 2: if python_ver == 2:
import Queue as queue import Queue as queue
else: else:
import queue as queue import queue as queue
IO_queue = queue.Queue() IO_queue = queue.Queue()
#PIO_queue = queue.Queue() not used! #PIO_queue = queue.Queue() not used!
def write_to_screen_queue(text, format_tag='normal'): def write_to_screen_queue(text, format_tag='normal'):
double_in = [text, format_tag] double_in = [text, format_tag]
@ -625,7 +640,7 @@ def write_to_screen_queue(text, format_tag = 'normal'):
# send one line to the terminal screen with syntax highlighting # send one line to the terminal screen with syntax highlighting
# #
# input: unformatted text, flags from previous run # input: unformatted text, flags from previous run
# returns: formatted text ready to go to the terminal, flags from this run # return: formatted text ready to go to the terminal, flags from this run
# #
# This routine remembers the status from call to call because previous # This routine remembers the status from call to call because previous
# lines can affect how the current line is highlighted # lines can affect how the current line is highlighted
@ -641,6 +656,7 @@ next_line_warning = False
warning_continue = False warning_continue = False
line_counter = 0 line_counter = 0
def line_print(line_input): def line_print(line_input):
global warning global warning
@ -654,12 +670,8 @@ def line_print(line_input):
# all '0' elements must precede all '1' elements or they'll be skipped # all '0' elements must precede all '1' elements or they'll be skipped
platformio_highlights = [ platformio_highlights = [
['Environment', 0, 'highlight_blue'], ['Environment', 0, 'highlight_blue'], ['[SKIP]', 1, 'warning'], ['[IGNORED]', 1, 'warning'], ['[ERROR]', 1, 'error'],
['[SKIP]', 1, 'warning'], ['[FAILED]', 1, 'error'], ['[SUCCESS]', 1, 'highlight_green']
['[IGNORED]', 1, 'warning'],
['[ERROR]', 1, 'error'],
['[FAILED]', 1, 'error'],
['[SUCCESS]', 1, 'highlight_green']
] ]
def write_to_screen_with_replace(text, highlights): # search for highlights & split line accordingly def write_to_screen_with_replace(text, highlights): # search for highlights & split line accordingly
@ -707,8 +719,8 @@ def line_print(line_input):
write_to_screen_queue(line + '\n') write_to_screen_queue(line + '\n')
else: else:
write_to_screen_queue(text + '\n') write_to_screen_queue(text + '\n')
# end - write_to_screen_with_replace
# end - write_to_screen_with_replace
# scan the line # scan the line
line_counter = line_counter + 1 line_counter = line_counter + 1
@ -801,6 +813,7 @@ def line_print(line_input):
write_to_screen_queue(line_input + '\n', 'warning') write_to_screen_queue(line_input + '\n', 'warning')
if error == True: if error == True:
write_to_screen_queue(line_input + '\n', 'error') write_to_screen_queue(line_input + '\n', 'error')
# end - line_print # end - line_print
@ -810,7 +823,6 @@ def line_print(line_input):
# # # #
########################################################################## ##########################################################################
# build platformio run -e target_env # build platformio run -e target_env
# clean platformio run --target clean -e target_env # clean platformio run --target clean -e target_env
# upload platformio run --target upload -e target_env # upload platformio run --target upload -e target_env
@ -862,7 +874,6 @@ def sys_PIO():
#for line in iter(pio_subprocess.stdout.readline, ''): #for line in iter(pio_subprocess.stdout.readline, ''):
# line_print(line.replace('\n', '')) # line_print(line.replace('\n', ''))
# append info used to run PlatformIO # append info used to run PlatformIO
# write_to_screen_queue('\nBoard name: ' + board_name + '\n') # put build info at the bottom of the screen # write_to_screen_queue('\nBoard name: ' + board_name + '\n') # put build info at the bottom of the screen
# write_to_screen_queue('Build type: ' + build_type + '\n') # write_to_screen_queue('Build type: ' + build_type + '\n')
@ -872,7 +883,6 @@ def sys_PIO():
# end - sys_PIO # end - sys_PIO
def run_PIO(dummy): def run_PIO(dummy):
global build_type global build_type
@ -888,50 +898,60 @@ def run_PIO(dummy):
if build_type == 'build': if build_type == 'build':
# platformio run -e target_env # platformio run -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'run', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'run', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'clean': elif build_type == 'clean':
# platformio run --target clean -e target_env # platformio run --target clean -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'clean', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'run', '--target', 'clean', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'upload': elif build_type == 'upload':
# platformio run --target upload -e target_env # platformio run --target upload -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'traceback': elif build_type == 'traceback':
# platformio run --target upload -e target_env - select the debug environment if there is one # platformio run --target upload -e target_env - select the debug environment if there is one
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'run', '--target', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'program': elif build_type == 'program':
# platformio run --target program -e target_env # platformio run --target program -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'run', '--target', 'program', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'run', '--target', 'program', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'test': elif build_type == 'test':
#platformio test upload -e target_env #platformio test upload -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'test', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'test', 'upload', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
elif build_type == 'remote': elif build_type == 'remote':
# platformio remote run --target upload -e target_env # platformio remote run --target upload -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'remote', 'run', '--target', 'program', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'remote', 'run', '--target', 'program', '-e', target_env],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)
elif build_type == 'debug': elif build_type == 'debug':
# platformio debug -e target_env # platformio debug -e target_env
# combine stdout & stderr so all compile messages are included # combine stdout & stderr so all compile messages are included
pio_subprocess = subprocess.Popen(['platformio', 'debug', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) pio_subprocess = subprocess.Popen(
['platformio', 'debug', '-e', target_env], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
else: else:
print('ERROR - unknown build type: ', build_type) print('ERROR - unknown build type: ', build_type)
@ -954,8 +974,6 @@ def run_PIO(dummy):
# end - run_PIO # end - run_PIO
######################################################################## ########################################################################
import time import time
@ -970,13 +988,13 @@ if python_ver == 2:
else: else:
import tkinter as tk import tkinter as tk
import queue as queue import queue as queue
from tkinter import ttk, Tk, Frame, Text, Scrollbar, Menu from tkinter import ttk, Tk, Frame, Text, Menu
from tkinter import filedialog
import subprocess import subprocess
import sys import sys
que = queue.Queue() que = queue.Queue()
#IO_queue = queue.Queue() #IO_queue = queue.Queue()
class output_window(Text): class output_window(Text):
# based on Super Text # based on Super Text
global continue_updates global continue_updates
@ -988,10 +1006,8 @@ class output_window(Text):
global error_found global error_found
error_found = False # are there any errors? error_found = False # are there any errors?
def __init__(self): def __init__(self):
self.root = tk.Tk() self.root = tk.Tk()
self.root.attributes("-topmost", True) self.root.attributes("-topmost", True)
self.frame = tk.Frame(self.root) self.frame = tk.Frame(self.root)
@ -1044,7 +1060,6 @@ class output_window(Text):
#self.config(height = 240, width = 1000) # didn't get the size baCK TO NORMAL #self.config(height = 240, width = 1000) # didn't get the size baCK TO NORMAL
#self.pack(side='left', fill='both', expand=True) # didn't get the size baCK TO NORMAL #self.pack(side='left', fill='both', expand=True) # didn't get the size baCK TO NORMAL
# pop-up menu # pop-up menu
self.popup = tk.Menu(self, tearoff=0) self.popup = tk.Menu(self, tearoff=0)
@ -1070,7 +1085,6 @@ class output_window(Text):
else: else:
self.bind('<Button-3>', self._show_popup) # Windows & Linux self.bind('<Button-3>', self._show_popup) # Windows & Linux
# threading & subprocess section # threading & subprocess section
def start_thread(self, ): def start_thread(self, ):
@ -1084,13 +1098,11 @@ class output_window(Text):
self.root.after(50, self.check_thread) self.root.after(50, self.check_thread)
self.root.after(50, self.update) self.root.after(50, self.update)
def check_thread(self): # wait for user to kill the window def check_thread(self): # wait for user to kill the window
global continue_updates global continue_updates
if continue_updates == True: if continue_updates == True:
self.root.after(10, self.check_thread) self.root.after(10, self.check_thread)
def update(self): def update(self):
global continue_updates global continue_updates
if continue_updates == True: if continue_updates == True:
@ -1108,10 +1120,8 @@ class output_window(Text):
self.insert('end', temp_text[0], temp_text[1]) self.insert('end', temp_text[0], temp_text[1])
self.see("end") # make the last line visible (scroll text off the top) self.see("end") # make the last line visible (scroll text off the top)
# text editing section # text editing section
def _scroll_errors(self): def _scroll_errors(self):
global search_position global search_position
global error_found global error_found
@ -1137,7 +1147,9 @@ class output_window(Text):
end_pos = '{}+{}c'.format(search_position, 5) end_pos = '{}+{}c'.format(search_position, 5)
start_pos = '{}+{}c'.format(search_position, -1) start_pos = '{}+{}c'.format(search_position, -1)
self.tag_remove("error_highlight_active", start_pos, end_pos) self.tag_remove("error_highlight_active", start_pos, end_pos)
search_position = self.search("error", search_position, stopindex="end", nocase=1) # finds first occurrence AGAIN on the first time through search_position = self.search(
"error", search_position, stopindex="end", nocase=1
) # finds first occurrence AGAIN on the first time through
if search_position == "": # wrap around if search_position == "": # wrap around
search_position = self.search("error", '1.0', stopindex="end", nocase=1) search_position = self.search("error", '1.0', stopindex="end", nocase=1)
end_pos = '{}+{}c'.format(search_position, 5) end_pos = '{}+{}c'.format(search_position, 5)
@ -1148,7 +1160,6 @@ class output_window(Text):
def scroll_errors(self, event): def scroll_errors(self, event):
self._scroll_errors() self._scroll_errors()
def _rebuild(self): def _rebuild(self):
#global board_name #global board_name
#global Marlin_ver #global Marlin_ver
@ -1161,7 +1172,6 @@ class output_window(Text):
print("event happened") print("event happened")
self._rebuild() self._rebuild()
def _open_selected_file(self): def _open_selected_file(self):
current_line = self.index('insert') current_line = self.index('insert')
line_start = current_line[:current_line.find('.')] + '.0' line_start = current_line[:current_line.find('.')] + '.0'
@ -1178,15 +1188,12 @@ class output_window(Text):
if 0 <= path.find('\\') or 0 <= path.find('/'): # make sure it really contains a path if 0 <= path.find('\\') or 0 <= path.find('/'): # make sure it really contains a path
open_file(path) open_file(path)
def _file_save_as(self): def _file_save_as(self):
self.filename = fileDialog.asksaveasfilename(defaultextension='.txt') self.filename = fileDialog.asksaveasfilename(defaultextension='.txt')
f = open(self.filename, 'w') f = open(self.filename, 'w')
f.write(self.get('1.0', 'end')) f.write(self.get('1.0', 'end'))
f.close() f.close()
def copy(self, event): def copy(self, event):
try: try:
selection = self.get(*self.tag_ranges('sel')) selection = self.get(*self.tag_ranges('sel'))
@ -1248,11 +1255,9 @@ class output_window(Text):
def _select_all(self): def _select_all(self):
self.tag_add('sel', '1.0', 'end') self.tag_add('sel', '1.0', 'end')
def select_all(self, event): def select_all(self, event):
self.tag_add('sel', '1.0', 'end') self.tag_add('sel', '1.0', 'end')
def _clear_all(self): def _clear_all(self):
#'''erases all text''' #'''erases all text'''
# #
@ -1262,14 +1267,11 @@ class output_window(Text):
# self.delete('1.0', 'end') # self.delete('1.0', 'end')
self.delete('1.0', 'end') self.delete('1.0', 'end')
# end - output_window # end - output_window
def main(): def main():
########################################################################## ##########################################################################
# # # #
# main program # # main program #
@ -1294,7 +1296,6 @@ def main():
auto_build.root.mainloop() auto_build.root.mainloop()
if __name__ == '__main__': if __name__ == '__main__':
main() main()

@ -294,12 +294,33 @@ upload_protocol = serial
# #
# BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3) # BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3)
# #
# STM32F103RC_bigtree .............. RCT6 with 256K
# STM32F103RC_bigtree_NOUSB ........ RCT6 with 256K (no USB)
# STM32F103RC_bigtree_512K.......... RCT6 with 512K
# STM32F103RC_bigtree_512K_NOUSB ... RCT6 with 512K (no USB)
#
[env:STM32F103RC_bigtree] [env:STM32F103RC_bigtree]
platform = ststm32 platform = ststm32
framework = arduino framework = arduino
board = genericSTM32F103RC board = genericSTM32F103RC
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py
${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DUSE_USB_COMPOSITE -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_FLASH_SIZE=256
build_unflags = -std=gnu++11
lib_deps = ${common.lib_deps}
SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip
lib_ignore = Adafruit NeoPixel, SPI
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
monitor_speed = 115200
[env:STM32F103RC_bigtree_NOUSB]
platform = ststm32
framework = arduino
board = genericSTM32F103RC
platform_packages = tool-stm32duino
extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py
${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4
build_unflags = -std=gnu++11 build_unflags = -std=gnu++11
@ -309,14 +330,31 @@ lib_ignore = Adafruit NeoPixel, SPI
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1> src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
monitor_speed = 115200 monitor_speed = 115200
[env:STM32F103RC_bigtree_USB] [env:STM32F103RC_bigtree_512K]
platform = ststm32
framework = arduino
board = genericSTM32F103RC
board_upload.maximum_size=524288
platform_packages = tool-stm32duino
extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py
${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DUSE_USB_COMPOSITE -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_FLASH_SIZE=512
build_unflags = -std=gnu++11
lib_deps = ${common.lib_deps}
SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip
lib_ignore = Adafruit NeoPixel, SPI
src_filter = ${common.default_src_filter} +<src/HAL/HAL_STM32F1>
monitor_speed = 115200
[env:STM32F103RC_bigtree_512K_NOUSB]
platform = ststm32 platform = ststm32
framework = arduino framework = arduino
board = genericSTM32F103RC board = genericSTM32F103RC
board_upload.maximum_size=524288
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py
build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py
${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DUSE_USB_COMPOSITE -DHAVE_SW_SERIAL -DSS_TIMER=4 ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_FLASH_SIZE=512
build_unflags = -std=gnu++11 build_unflags = -std=gnu++11
lib_deps = ${common.lib_deps} lib_deps = ${common.lib_deps}
SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip

Loading…
Cancel
Save