summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-07-02 02:35:27 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-07-02 02:35:27 +0000
commit6fdf64f3b39f03e809b80ddeee6256555146d0ae (patch)
tree00c20e0bf85d90ef2b07fc674483696a633270cb
parentcleanup (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/Makefile26
-rw-r--r--bootloader/bootloader.asm61
-rwxr-xr-xdownloader/downloader.py98
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])