diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-07-02 02:35:27 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-07-02 02:35:27 +0000 |
commit | 6fdf64f3b39f03e809b80ddeee6256555146d0ae (patch) | |
tree | 00c20e0bf85d90ef2b07fc674483696a633270cb | |
parent | cleanup (diff) |
added very basic version for bootloader and downloader
git-svn-id: https://svn.spreadspace.org/pic/trunk@15 a09c6847-51d9-44de-8ef2-e725cf50f3c7
-rw-r--r-- | bootloader/Makefile | 26 | ||||
-rw-r--r-- | bootloader/bootloader.asm | 61 | ||||
-rwxr-xr-x | downloader/downloader.py | 98 |
3 files changed, 185 insertions, 0 deletions
diff --git a/bootloader/Makefile b/bootloader/Makefile new file mode 100644 index 0000000..5503b6d --- /dev/null +++ b/bootloader/Makefile @@ -0,0 +1,26 @@ +## +## spreadspace pic utils +## +## +## Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org> +## +## 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 <http://www.gnu.org/licenses/>. +## + +PROJECT := bootloader +PROC_TYPE := 16F887 + +include ../include.mk diff --git a/bootloader/bootloader.asm b/bootloader/bootloader.asm new file mode 100644 index 0000000..eacc30b --- /dev/null +++ b/bootloader/bootloader.asm @@ -0,0 +1,61 @@ + ;; + ;; spreadspace pic utils + ;; + ;; + ;; Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org> + ;; + ;; 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 <http://www.gnu.org/licenses/>. + ;; + ;; ------------------------------------- + ;; PREAMBLE + + LIST p=16F887 + include "p16f887.inc" + ;; __config _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC + ;; __config _CONFIG2, _BOR21V & _WRT_256 + + ;; ------------------------------------- + ;; DEFINES +#define BOOTPIN PORTC,7 +USERVECT EQU H'100' +ISRVECT EQU USERVECT + H'4' + + ;; ------------------------------------- + ;; Boot test + org 0 + btfsc BOOTPIN + goto USERVECT + goto boot + org 4 + + ;; ------------------------------------- + ;; goto user ISR +isr + goto ISRVECT + + ;; ------------------------------------- + ;; Bootloader +boot + goto USERVECT + + ;; ------------------------------------- + ;; dummy user code + org USERVECT + goto USERVECT + + ;; ------------------------------------- + ;; END + end diff --git a/downloader/downloader.py b/downloader/downloader.py new file mode 100755 index 0000000..6dc36c3 --- /dev/null +++ b/downloader/downloader.py @@ -0,0 +1,98 @@ +#!/usr/bin/python +# +# spreadspace pic utils +# +# +# Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org> +# +# 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 <http://www.gnu.org/licenses/>. +# + +'''spreadspace simple pic downloader.''' + +VERSION = '0.1' + +if __name__ == '__main__': + import getopt + import os + import sys + import termios + import tty + + from intelhex import IntelHex + + usage = '''spreadspace simple pic downloader. +Usage: + python downloader.py [options] INFILE + +Arguments: + INFILE name of hex file for downloading. + Use '-' for reading from stdin. + +Options: + -h, --help this help message. + -v, --version version info. + --device=N the serial port to use (default: /dev/ttyUSB0). +''' + + device = "/dev/ttyUSB0" + + try: + opts, args = getopt.getopt(sys.argv[1:], "hv", + ["help", "version", "device="]) + + for o, a in opts: + if o in ("-h", "--help"): + print(usage) + sys.exit(0) + elif o in ("-v", "--version"): + print(VERSION) + sys.exit(0) + elif o in ("--device"): + device = a + + if not args: + raise getopt.GetoptError('Input file is not specified') + + if len(args) > 1: + raise getopt.GetoptError('Too many arguments') + + except getopt.GetoptError, msg: + print("ERROR: %s" % msg) + print(usage) + sys.exit(2) + + fin = args[0] + if fin == '-': + fin = sys.stdin + elif not os.path.isfile(fin): + print("ERROR: File not found: %s" % fin) + sys.exit(1) + + data = {} + ih = IntelHex(fin) + for a in ih.addresses(): + if a/2 not in data.keys(): + data[a/2] = 0 + if a%2 == 0: + data[a/2] += ih[a] + else: + data[a/2] += (ih[a] << 8) + + addr = data.keys() + addr.sort() + for a in addr: + print "%05d: %04X" % (a, data[a]) |