From 48eb68c8b8a594a0aeff99d91a21104180e80c5c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 26 Jul 2013 15:39:47 +0000 Subject: added bootloader for CTR git-svn-id: https://svn.spreadspace.org/mur.sat@815 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/pic.bootloader/Makefile-CTR | 26 +++++++ software/pic.bootloader/bootloader-CTR.asm | 105 +++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 software/pic.bootloader/Makefile-CTR create mode 100644 software/pic.bootloader/bootloader-CTR.asm (limited to 'software') diff --git a/software/pic.bootloader/Makefile-CTR b/software/pic.bootloader/Makefile-CTR new file mode 100644 index 0000000..2e2dbfa --- /dev/null +++ b/software/pic.bootloader/Makefile-CTR @@ -0,0 +1,26 @@ +## +## spreadspace pic utils +## +## +## Copyright (C) 2011-2013 Christian Pointner +## +## This file is part of spreadspace pic utils. +## +## spreadspace pic utils is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## any later version. +## +## spreadspace pic utils is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with spreadspace pic utils. If not, see . +## + +PROJECT := bootloader-CTR +PROC_TYPE := 16F887 + +include ../pic.include.mk diff --git a/software/pic.bootloader/bootloader-CTR.asm b/software/pic.bootloader/bootloader-CTR.asm new file mode 100644 index 0000000..fadbf69 --- /dev/null +++ b/software/pic.bootloader/bootloader-CTR.asm @@ -0,0 +1,105 @@ + ;; + ;; spreadspace pic utils + ;; + ;; + ;; Copyright (C) 2011-2013 Christian Pointner + ;; + ;; This file is part of spreadspace pic utils. + ;; + ;; spreadspace pic utils is free software: you can redistribute it and/or modify + ;; it under the terms of the GNU General Public License as published by + ;; the Free Software Foundation, either version 3 of the License, or + ;; any later version. + ;; + ;; spreadspace pic utils is distributed in the hope that it will be useful, + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ;; GNU General Public License for more details. + ;; + ;; You should have received a copy of the GNU General Public License + ;; along with spreadspace pic utils. If not, see . + ;; + ;; ------------------------------------- + ;; PREAMBLE + + LIST p=16F887 + include "p16f887.inc" + __config _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTOSC + __config _CONFIG2, _BOR21V & _WRT_256 + + ;; ------------------------------------- + ;; DEFINES (chip/com specific) +#define BOOTPIN PORTA,5 +#define INTPIN PORTC,2 +USERVECT EQU H'100' +ISRVECT EQU USERVECT + H'4' +FLASH_BOUNDARY EQU b'00001111' ; flash write boundary is at 16 bytes boundaries + +VERSION_MAJ EQU .0 +VERSION_MIN EQU .1 +NAME_0 EQU 'C' +NAME_1 EQU 'T' +NAME_2 EQU 'R' +DEVID_L EQU H'82' +DEVID_H EQU H'20' +FLASH_SIZE_L EQU H'00' +FLASH_SIZE_H EQU H'20' ; 0x2000 -> 8192 Words of Flash +FSS EQU .16 ; writing is done 8 words at a time but 16 words get erased +EEPROM_SIZE_L EQU H'00' +EEPROM_SIZE_H EQU H'01' ; 0x0100 -> 256 Bytes of EEPROM +MESS EQU .64 ; this limit is because of to combuff size and single byte len field for messages +CFG EQU .2 ; anyway this is not read or writable for this chip +SUPPORTED_H EQU .0 +SUPPORTED_L EQU b'00000110' ; only read/write flash is supported by now + +#define HOOK_CMD_RESET cmd_not_impl +#define HOOK_CMD_R_FLASH cmd_r_flash +#define HOOK_CMD_W_FLASH cmd_w_flash +#define HOOK_CMD_R_EEPROM cmd_not_impl +#define HOOK_CMD_W_EEPROM cmd_not_impl +#define HOOK_CMD_R_CONFIG cmd_not_impl +#define HOOK_CMD_W_CONFIG cmd_not_impl + + ;; Variables +combuff EQU H'0020' +current_cmdlen EQU H'0070' +csum EQU H'0071' +flags EQU H'007D' +cnt EQU H'007F' + +bootmacro macro ; use this for com-spi + bsf STATUS,RP0 + bsf STATUS,RP1 + bcf ANSEL,ANS4 ; RA5/SS as digital input -> BOOTPIN + goto com_init + endm + + ;; ------------------------------------- + ;; DEFINES (defines) +#include "generic-defines.inc" + + ;; ------------------------------------- + ;; Bootloader init +#include "generic-init.inc" + + ;; ------------------------------------- + ;; Bootloader (com specific subroutines and init) +#include "com-16f887-spi.inc" + + ;; ------------------------------------- + ;; Bootloader (generic init/body) +#include "generic-mainloop.inc" + + ;; ------------------------------------- + ;; chip specific commands +#include "cmds-16f887.inc" + + ;; ------------------------------------- + ;; ------------------------------------- + ;; dummy user code + org USERVECT + goto USERVECT + + ;; ------------------------------------- + ;; END + end -- cgit v1.2.3