diff --git a/workspace/TS100/Core/BSP/Pine64/README.md b/workspace/TS100/Core/BSP/Pine64/README.md
index bb9de245..944507c4 100755
--- a/workspace/TS100/Core/BSP/Pine64/README.md
+++ b/workspace/TS100/Core/BSP/Pine64/README.md
@@ -1,12 +1,3 @@
-# BSP section for STM32F103 based Miniware products
+# BSP section for Pinecil
-This folder contains the hardware abstractions required for the TS100, TS80 and probably TS80P soldering irons.
-
-## Main abstractions
-
-* Hardware Init
-* -> Should contain all bootstrap to bring the hardware up to an operating point
-* -> Two functions are required, a pre and post FreeRToS call
-* I2C read/write
-* Set PWM for the tip
-* Links between IRQ's on the system and the calls in the rest of the firmware
+This folder contains the hardware abstractions required for the Pinecil. A RISC-V based soldering iron.
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/gd32vf103v_eval.h b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/gd32vf103v_eval.h
deleted file mode 100644
index 88957f51..00000000
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/gd32vf103v_eval.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*!
- \file gd32vf103v_eval.h
- \brief definitions for GD32VF103V_EVAL's leds, keys and COM ports hardware resources
-
- \version 2019-6-5, V1.0.0, demo for GD32VF103
-*/
-
-/*
- Copyright (c) 2019, GigaDevice Semiconductor Inc.
-
- Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGE.
-*/
-
-#ifndef GD32VF103V_EVAL_H
-#define GD32VF103V_EVAL_H
-
-#ifdef cplusplus
- extern "C" {
-#endif
-
-#include "nuclei_sdk_soc.h"
-
-#ifdef cplusplus
-}
-#endif
-
-#endif /* GD32VF103V_EVAL_H */
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/nuclei_sdk_hal.h b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/nuclei_sdk_hal.h
deleted file mode 100644
index fab446a7..00000000
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Include/nuclei_sdk_hal.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// See LICENSE for license details.
-#ifndef _NUCLEI_SDK_HAL_H
-#define _NUCLEI_SDK_HAL_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-#include "gd32vf103v_eval.h"
-
-
-#ifndef NUCLEI_BANNER
-#define NUCLEI_BANNER 0
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/GCC/gcc_gd32vf103_flashxip.ld b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/GCC/gcc_gd32vf103_flashxip.ld
deleted file mode 100644
index 9b6264f8..00000000
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/GCC/gcc_gd32vf103_flashxip.ld
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2019 Nuclei Limited. All rights reserved.
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the License); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/******************************************************************************
- * @file gcc_Device.ld
- * @brief GNU Linker Script for gd32vf103 based device
- * @version V1.0.0
- * @date 17. Dec 2019
- ******************************************************************************/
-
-/*********** Use Configuration Wizard in Context Menu *************************/
-
-OUTPUT_ARCH( "riscv" )
-/********************* Flash Configuration ************************************
- * Flash Configuration
- * Flash Base Address <0x0-0xFFFFFFFF:8>
- * Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
- *
- */
-__ROM_BASE = 0x08000000;
-__ROM_SIZE = 0x00020000;
-
-/*--------------------- ILM RAM Configuration ---------------------------
- * ILM RAM Configuration
- * ILM RAM Base Address <0x0-0xFFFFFFFF:8>
- * ILM RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
- *
- */
-__ILM_RAM_BASE = 0x80000000;
-__ILM_RAM_SIZE = 0x00010000;
-
-/*--------------------- Embedded RAM Configuration ---------------------------
- * RAM Configuration
- * RAM Base Address <0x0-0xFFFFFFFF:8>
- * RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
- *
-*/
-__RAM_BASE = 0x20000000;
-__RAM_SIZE = 0x00005000;
-
-/********************* Stack / Heap Configuration ****************************
- * Stack / Heap Configuration
- * Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
- * Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
- *
- */
-__STACK_SIZE = 0x00000800;
-__HEAP_SIZE = 0x00000800;
-
-/**************************** end of configuration section ********************/
-
-/* Define base address and length of flash and ram */
-MEMORY
-{
- flash (rxai!w) : ORIGIN = __ROM_BASE, LENGTH = __ROM_SIZE
- ram (wxa!ri) : ORIGIN = __RAM_BASE, LENGTH = __RAM_SIZE
-}
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH,ILM and RAM.
- * It references following symbols, which must be defined in code:
- * _Start : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- * _ilm_lma
- * _ilm
- * __etext
- * _etext
- * etext
- * _eilm
- * __preinit_array_start
- * __preinit_array_end
- * __init_array_start
- * __init_array_end
- * __fini_array_start
- * __fini_array_end
- * _data_lma
- * _edata
- * edata
- * __data_end__
- * __bss_start
- * __fbss
- * _end
- * end
- * __heap_end
- * __StackLimit
- * __StackTop
- * __STACK_SIZE
- */
-/* Define entry label of program */
-ENTRY(_start)
-SECTIONS
-{
- __STACK_SIZE = DEFINED(__STACK_SIZE) ? __STACK_SIZE : 2K;
-
- .init :
- {
- /* vector table locate at flash */
- *(.vtable)
- KEEP (*(SORT_NONE(.init)))
- } >flash AT>flash
-
- .ilalign :
- {
- . = ALIGN(4);
- /* Create a section label as _ilm_lma which located at flash */
- PROVIDE( _ilm_lma = . );
- } >flash AT>flash
-
- .ialign :
- {
- /* Create a section label as _ilm which located at flash */
- PROVIDE( _ilm = . );
- } >flash AT>flash
-
- /* Code section located at flash */
- .text :
- {
- *(.text.unlikely .text.unlikely.*)
- *(.text.startup .text.startup.*)
- *(.text .text.*)
- *(.gnu.linkonce.t.*)
- } >flash AT>flash
-
- .rodata : ALIGN(4)
- {
- . = ALIGN(4);
- *(.rdata)
- *(.rodata .rodata.*)
- /* section information for initial. */
- . = ALIGN(4);
- __rt_init_start = .;
- KEEP(*(SORT(.rti_fn*)))
- __rt_init_end = .;
- /* section information for finsh shell */
- . = ALIGN(4);
- __fsymtab_start = .;
- KEEP(*(FSymTab))
- __fsymtab_end = .;
- . = ALIGN(4);
- __vsymtab_start = .;
- KEEP(*(VSymTab))
- __vsymtab_end = .;
- *(.gnu.linkonce.r.*)
- . = ALIGN(8);
- *(.srodata.cst16)
- *(.srodata.cst8)
- *(.srodata.cst4)
- *(.srodata.cst2)
- *(.srodata .srodata.*)
- } >flash AT>flash
-
- .fini :
- {
- KEEP (*(SORT_NONE(.fini)))
- } >flash AT>flash
-
- . = ALIGN(4);
-
- PROVIDE (__etext = .);
- PROVIDE (_etext = .);
- PROVIDE (etext = .);
- PROVIDE( _eilm = . );
-
-
- .preinit_array :
- {
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP (*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_array_end = .);
- } >flash AT>flash
-
- .init_array :
- {
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
- KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
- PROVIDE_HIDDEN (__init_array_end = .);
- } >flash AT>flash
-
- .fini_array :
- {
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
- KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
- PROVIDE_HIDDEN (__fini_array_end = .);
- } >flash AT>flash
-
- .ctors :
- {
- /* gcc uses crtbegin.o to find the start of
- * the constructors, so we make sure it is
- * first. Because this is a wildcard, it
- * doesn't matter if the user does not
- * actually link against crtbegin.o; the
- * linker won't look for a file to match a
- * wildcard. The wildcard also means that it
- * doesn't matter which directory crtbegin.o
- * is in.
- */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*crtbegin?.o(.ctors))
- /* We don't want to include the .ctor section from
- * the crtend.o file until after the sorted ctors.
- * The .ctor section from the crtend file contains the
- * end of ctors marker and it must be last
- */
- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- } >flash AT>flash
-
- .dtors :
- {
- KEEP (*crtbegin.o(.dtors))
- KEEP (*crtbegin?.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- } >flash AT>flash
-
- .lalign :
- {
- . = ALIGN(4);
- PROVIDE( _data_lma = . );
- } >flash AT>flash
-
- .dalign :
- {
- . = ALIGN(4);
- PROVIDE( _data = . );
- } >ram AT>flash
-
- /* Define data section virtual address is ram and physical address is flash */
- .data :
- {
- *(.data .data.*)
- *(.gnu.linkonce.d.*)
- . = ALIGN(8);
- PROVIDE( __global_pointer$ = . + 0x800 );
- *(.sdata .sdata.* .sdata*)
- *(.gnu.linkonce.s.*)
- } >ram AT>flash
- .logo_page (NOLOAD) :
- {
- . = ABSOLUTE(__FLASH_END_ADDR__ - 2048);
- KEEP (*(.logo_page*))
- } > flash
-
- .settings_page (NOLOAD) :
- {
- . = ABSOLUTE(__FLASH_END_ADDR__ - 1024);
- KEEP (*(.settings_page*))
- } > flash
- . = ALIGN(4);
- PROVIDE( _edata = . );
- PROVIDE( edata = . );
-
- PROVIDE( _fbss = . );
- PROVIDE( __bss_start = . );
- .bss :
- {
- *(.sbss*)
- *(.gnu.linkonce.sb.*)
- *(.bss .bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(4);
- } >ram AT>ram
-
- . = ALIGN(8);
- PROVIDE( _end = . );
- PROVIDE( end = . );
- /* Define stack and head location at ram */
- .stack ORIGIN(ram) + LENGTH(ram) - __STACK_SIZE :
- {
- PROVIDE( _heap_end = . );
- . = __STACK_SIZE;
- PROVIDE( _sp = . );
- } >ram AT>ram
-}
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/gd32vf103v_eval.c b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/gd32vf103v_eval.c
deleted file mode 100644
index 127b2078..00000000
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/Source/gd32vf103v_eval.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*!
- \file gd32vf103v_eval.c
- \brief firmware functions to manage leds, keys, COM ports
-
- \version 2019-6-5, V1.0.0, demo for GD32VF103
-*/
-
-/*
- Copyright (c) 2019, GigaDevice Semiconductor Inc.
-
- Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGE.
-*/
-
-#include "nuclei_sdk_hal.h"
-#include "gd32vf103_usart.h"
-#include "gd32vf103_gpio.h"
-#include "gd32vf103_exti.h"
-
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/openocd_gd32vf103.cfg b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/openocd_gd32vf103.cfg
deleted file mode 100644
index 4dfe1fe0..00000000
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/gd32vf103v_eval/openocd_gd32vf103.cfg
+++ /dev/null
@@ -1,47 +0,0 @@
-adapter_khz 1000
-reset_config srst_only
-adapter_nsrst_assert_width 100
-
-interface cmsis-dap
-
-transport select jtag
-
-autoexit true
-
-set _CHIPNAME riscv
-jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d
-
-set _TARGETNAME $_CHIPNAME.cpu
-target create $_TARGETNAME riscv -chain-position $_TARGETNAME
-$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 20480 -work-area-backup 0
-
-# Work-area is a space in RAM used for flash programming
-if { [info exists WORKAREASIZE] } {
- set _WORKAREASIZE $WORKAREASIZE
-} else {
- set _WORKAREASIZE 0x5000
-}
-
-# Allow overriding the Flash bank size
-if { [info exists FLASH_SIZE] } {
- set _FLASH_SIZE $FLASH_SIZE
-} else {
- # autodetect size
- set _FLASH_SIZE 0
-}
-
-# flash size will be probed
-set _FLASHNAME $_CHIPNAME.flash
-
-flash bank $_FLASHNAME gd32vf103 0x08000000 0 0 0 $_TARGETNAME
-
-# Expose Nuclei self-defined CSRS range 770-800,835-850,1984-2032,2064-2070
-# See https://github.com/riscv/riscv-gnu-toolchain/issues/319#issuecomment-358397306
-# Then user can view the csr register value in gdb using: info reg csr775 for CSR MTVT(0x307)
-riscv expose_csrs 770-800,835-850,1984-2032,2064-2070
-
-riscv set_reset_timeout_sec 1
-
-init
-
-halt
diff --git a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/pinecil/openocd_gd32vf103.cfg b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/pinecil/openocd_gd32vf103.cfg
index 23970612..733b4bd9 100644
--- a/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/pinecil/openocd_gd32vf103.cfg
+++ b/workspace/TS100/Core/BSP/Pine64/Vendor/SoC/gd32vf103/Board/pinecil/openocd_gd32vf103.cfg
@@ -1,10 +1,11 @@
-adapter_khz 4000
+adapter_khz 100
reset_config srst_only
adapter_nsrst_assert_width 100
interface cmsis-dap
transport select jtag
+adapter_khz 100
autoexit true
diff --git a/workspace/TS100/Core/BSP/Pine64/flash.c b/workspace/TS100/Core/BSP/Pine64/flash.c
index 46a18bcf..ba85c89b 100755
--- a/workspace/TS100/Core/BSP/Pine64/flash.c
+++ b/workspace/TS100/Core/BSP/Pine64/flash.c
@@ -12,7 +12,7 @@
#define FMC_PAGE_SIZE ((uint16_t)0x400U)
//static uint16_t settings_page[FMC_PAGE_SIZE] __attribute__ ((section (".settings_page")));
//Linker script doesnt want to play, so for now its hard coded
-#define SETTINGS_START_PAGE (0x08000000 +(63*1024))
+#define SETTINGS_START_PAGE (0x08000000 +(127*1024))
uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) {
/* unlock the flash program/erase controller */
diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile
index 8be49bf6..2dfc9355 100644
--- a/workspace/TS100/Makefile
+++ b/workspace/TS100/Makefile
@@ -150,8 +150,6 @@ AS=$(COMPILER_PREFIX)-as
OBJCOPY=$(COMPILER_PREFIX)-objcopy
OBJDUMP=$(COMPILER_PREFIX)-objdump
SIZE=$(COMPILER_PREFIX)-size
-SREC=srec_cat
-SREC_INFO=srec_info
# For the Pinecil, use GCC rather than as? (Copying other makefiles)
ifeq ($(model),Pinecil)
@@ -246,6 +244,7 @@ CFLAGS=$(DEV_CFLAGS) \
-ffreestanding \
-T$(LDSCRIPT) \
-c
+
AFLAGS= $(CPUFLAGS) \
@@ -255,9 +254,6 @@ AFLAGS= $(CPUFLAGS) \
$(INCLUDES)
-CFLAGS += -ffunction-sections -fdata-sections
-CXXFLAGS += -ffunction-sections -fdata-sections
-
OBJS = $(SOURCE:.c=.o)
@@ -289,7 +285,7 @@ $(OUT_HEXFILE).elf : $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) Makefile $(LDSCRI
@test -d $(@D) || mkdir -p $(@D)
@echo Linking $(OUTPUT_EXE).elf
@echo $(LINKER_FLAGS)
- @$(CPP) $(CXXFLAGS) $(OUT_OBJS_S) $(OUT_OBJS) $(OUT_OBJS_CPP) $(LIBS) $(LINKER_FLAGS)
+ @$(CPP) $(CXXFLAGS) $(OUT_OBJS) $(OUT_OBJS_CPP) $(OUT_OBJS_S) $(LIBS) $(LINKER_FLAGS)
$(OUT_OBJS): $(OUTPUT_DIR)/%.o : %.c Makefile
@test -d $(@D) || mkdir -p $(@D)