From 920f72a8c1d9528018361f2ec59dd49be68f8f70 Mon Sep 17 00:00:00 2001 From: Justin Mitchell Date: Tue, 1 Oct 2013 12:56:31 +0100 Subject: [PATCH] Adapt bootloader for 12F1840 devices Fix bug in default port name in cli --- cli/Makefile | 4 +- cli/boot.c | 6 +- mybootload.X/main.asm | 30 ++++---- mybootload.X/nbproject/Makefile-genesis.properties | 11 +-- mybootload.X/nbproject/Makefile-impl.mk | 6 +- mybootload.X/nbproject/Makefile-variables.mk | 7 ++ mybootload.X/nbproject/configurations.xml | 83 ++++++++++++++++++++++ mybootload.X/nbproject/private/configurations.xml | 22 +++++- 8 files changed, 137 insertions(+), 32 deletions(-) diff --git a/cli/Makefile b/cli/Makefile index 6566a12..3bf6538 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -8,9 +8,9 @@ WINDOWS=0 ifeq ($(WINDOWS),1) PREFIX=i686-w64-mingw32- SRC += serial-win.c -CFLAGS += -static -mwindows -DDEFPORT="COM4:" +CFLAGS += -static -mwindows else -CFLAGS += -fPIC -DDEFPORT="/dev/ttyUSB0" +CFLAGS += -fPIC -static #-m32 SRC += serial.c endif diff --git a/cli/boot.c b/cli/boot.c index 087b47a..8a522ab 100644 --- a/cli/boot.c +++ b/cli/boot.c @@ -13,10 +13,8 @@ #define BAUD_RATE 19200 -#define STRINGIFY(n) #n - -#ifdef DEFPORT -#define PORT_NAME STRINGIFY(DEFPORT) +#ifdef _WIN32 +#define PORT_NAME "COM4:" #else #define PORT_NAME "/dev/ttyUSB0" #endif diff --git a/mybootload.X/main.asm b/mybootload.X/main.asm index 9df5743..9425e29 100644 --- a/mybootload.X/main.asm +++ b/mybootload.X/main.asm @@ -2,18 +2,7 @@ errorlevel -302 -#include "p16f1455.inc" - -; CONFIG1 - __config _CONFIG1, 0xFCC -;; __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_SWDTEN & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF -; CONFIG2 - __config _CONFIG2, 0x16CF -; __CONFIG _CONFIG2, _WRT_OFF & _CPUDIV_NOCLKDIV & _USBLSCLK_48MHz & _PLLMULT_3x & _PLLEN_DISABLED & _STVREN_ON & _BORV_LO & _LPBOR_ON & _LVP_OFF - - -#define max_flash 0x2000 -#define row_size 32 +#include "cpuselect.inc" ; 16F1455 errata says self-program only works <= 4MHz clock xtal EQU 4000000 @@ -87,15 +76,20 @@ StartBoot ; banksel TRISC ; BSF TRISC,5 ; RC5 as input ; BCF TRISC,4 ; RC4 as output - banksel PORTC - CLRF PORTC + banksel SERIAL_PORT + CLRF SERIAL_PORT + +#ifdef SERIAL_ANSEL + banksel SERIAL_ANSEL + CLRF SERIAL_ANSEL +#endif - BTFSC PORTC,5 ; RC5 is Clear (break state) carry on + BTFSC SERIAL_PORT,SERIAL_RXPIN ; RC5 is Clear (break state) carry on BRA AppVector ; Was not clear, launch app instead ; Lets start the bootloader properly banksel OSCCON - MOVLW b'00110100' + MOVLW OSC_4MHZ MOVWF OSCCON ; 4Mhz clock mode BTFSS OSCSTAT,HFIOFR BRA $-1 ; wait until oscillator is ready @@ -135,8 +129,8 @@ SetBaud CALL SendByte ; Wait for PC to drop the break condition - banksel PORTC - BTFSS PORTC,5 + banksel SERIAL_PORT + BTFSS SERIAL_PORT,SERIAL_RXPIN BRA $-1 ; Transmit device ID diff --git a/mybootload.X/nbproject/Makefile-genesis.properties b/mybootload.X/nbproject/Makefile-genesis.properties index 9ef204a..465fbda 100644 --- a/mybootload.X/nbproject/Makefile-genesis.properties +++ b/mybootload.X/nbproject/Makefile-genesis.properties @@ -1,8 +1,11 @@ # -#Fri Sep 27 17:16:44 BST 2013 +#Tue Oct 01 12:20:41 BST 2013 +default.languagetoolchain.version=5.52 +conf.ids=default,12F1840 default.languagetoolchain.dir=/opt/microchip/mplabx/mpasmx +default.com-microchip-mplab-nbide-toolchainMPASMWIN-MPASMWINLanguageToolchain.md5=dc1e238caba4e98e3e2f2da7006384df +12F1840.languagetoolchain.dir=/opt/microchip/mplabx/mpasmx com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331 -default.languagetoolchain.version=5.52 +12F1840.com-microchip-mplab-nbide-toolchainMPASMWIN-MPASMWINLanguageToolchain.md5=dc1e238caba4e98e3e2f2da7006384df +12F1840.languagetoolchain.version=5.52 host.platform=linux -conf.ids=default -default.com-microchip-mplab-nbide-toolchainMPASMWIN-MPASMWINLanguageToolchain.md5=dc1e238caba4e98e3e2f2da7006384df diff --git a/mybootload.X/nbproject/Makefile-impl.mk b/mybootload.X/nbproject/Makefile-impl.mk index 7482b42..d0f4dd0 100644 --- a/mybootload.X/nbproject/Makefile-impl.mk +++ b/mybootload.X/nbproject/Makefile-impl.mk @@ -27,11 +27,11 @@ CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} PROJECTNAME=mybootload.X # Active Configuration -DEFAULTCONF=default +DEFAULTCONF=12F1840 CONF=${DEFAULTCONF} # All Configurations -ALLCONFS=default +ALLCONFS=default 12F1840 # build @@ -46,12 +46,14 @@ ALLCONFS=default # clobber .clobber-impl: .clobber-pre .depcheck-impl ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=12F1840 clean # all .all-impl: .all-pre .depcheck-impl ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build + ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=12F1840 build diff --git a/mybootload.X/nbproject/Makefile-variables.mk b/mybootload.X/nbproject/Makefile-variables.mk index 9db2045..4772f43 100644 --- a/mybootload.X/nbproject/Makefile-variables.mk +++ b/mybootload.X/nbproject/Makefile-variables.mk @@ -11,3 +11,10 @@ CND_ARTIFACT_PATH_default=dist/default/production/mybootload.X.production.hex CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package CND_PACKAGE_NAME_default=mybootload.x.tar CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/mybootload.x.tar +# 12F1840 configuration +CND_ARTIFACT_DIR_12F1840=dist/12F1840/production +CND_ARTIFACT_NAME_12F1840=mybootload.X.production.hex +CND_ARTIFACT_PATH_12F1840=dist/12F1840/production/mybootload.X.production.hex +CND_PACKAGE_DIR_12F1840=${CND_DISTDIR}/12F1840/package +CND_PACKAGE_NAME_12F1840=mybootload.x.tar +CND_PACKAGE_PATH_12F1840=${CND_DISTDIR}/12F1840/package/mybootload.x.tar diff --git a/mybootload.X/nbproject/configurations.xml b/mybootload.X/nbproject/configurations.xml index cdc8392..cd5fe8b 100644 --- a/mybootload.X/nbproject/configurations.xml +++ b/mybootload.X/nbproject/configurations.xml @@ -5,6 +5,7 @@ displayName="Header Files" projectFiles="true"> spbrgselect.inc + cpuselect.inc + + + localhost + PIC12F1840 + + + ICD3PlatformTool + MPASMWIN + 5.52 + 2 + + + + + + + + false + + + + + false + + false + + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mybootload.X/nbproject/private/configurations.xml b/mybootload.X/nbproject/private/configurations.xml index 56374ed..0e594aa 100644 --- a/mybootload.X/nbproject/private/configurations.xml +++ b/mybootload.X/nbproject/private/configurations.xml @@ -1,10 +1,28 @@ Makefile - 0 + 1 - :=MPLABCommUSB:=04D8:=9009:=0100:=Microchip Technology, Inc. (www.microchip.com):=MPLAB ICD3 tm (www.microchip.com):=JIT123410560:=x:=en + + /opt/microchip/mplabx/mpasmx + + place holder 1 + place holder 2 + + + + + true + 0 + 0 + 0 + + + + + + /opt/microchip/mplabx/mpasmx place holder 1 -- 1.8.3.1