[chronojump] Added pydownloader 20MHz



commit 51f5aea6436e3696738a51ade663dc805290d5fe
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon Mar 10 11:03:26 2014 +0100

    Added pydownloader 20MHz

 .../howto-bootloader-and-firmware.txt              |    2 +-
 .../pydownloader_20MHz/pydownloader.py             |  143 ++++++++++++++++++++
 2 files changed, 144 insertions(+), 1 deletions(-)
---
diff --git a/chronopic-firmware/howto-bootloader-and-firmware.txt 
b/chronopic-firmware/howto-bootloader-and-firmware.txt
index 6ae30a8..22da630 100644
--- a/chronopic-firmware/howto-bootloader-and-firmware.txt
+++ b/chronopic-firmware/howto-bootloader-and-firmware.txt
@@ -57,7 +57,7 @@ per 20MHz cal el pydownloader-wx,pero no va pq necessita python 2.6
 anem a agafar el pydownloader de la web (sense wx) i compilar-lo
 http://svn.iearobotics.com/pydownloader/pydownloader/pydownloader-1.0/
 
-cd ~/Documents/chronojump-no-git/chronopic-3.0/grabar_cronopic_firmware/pydownloader-per-20MHz
+cd chronopic-firmware/pydownloader_20MHz
 
 gravar firmware prova:
 python pydownloader.py ledp1 /dev/ttyUSB1
diff --git a/chronopic-firmware/pydownloader_20MHz/pydownloader.py 
b/chronopic-firmware/pydownloader_20MHz/pydownloader.py
new file mode 100644
index 0000000..42e8e4d
--- /dev/null
+++ b/chronopic-firmware/pydownloader_20MHz/pydownloader.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-15 -*-
+
+# Description: Example of use of libIris
+# Copyright (C) 2007 by Rafael Treviño Menéndez
+# Author: Rafael Treviño Menéndez <skasi 7 gmail com>
+
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+
+# This program 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
+# Library General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,USA.
+
+import sys
+sys.path = ['..'] + sys.path
+import libIris.Pic16_Bootloader
+import libIris.Pic16_Firmware
+import libIris.IntelHex
+
+
+#-- Diccionario para asignar al firmware una cadena identificativa
+Firmware_DICT = {
+  'LEDP1'  : libIris.Pic16_Firmware.ledp1,
+  'LEDP2'  : libIris.Pic16_Firmware.ledp2,
+  'LEDP'   : libIris.Pic16_Firmware.ledp1,
+  'MONITOR': libIris.Pic16_Firmware.generic,
+  'SERVOS8': libIris.Pic16_Firmware.servos8,
+  'PICP'   : libIris.Pic16_Firmware.picp,
+  'ECO'    : libIris.Pic16_Firmware.echo,
+}
+
+#-- Cambiar el timeout por defecto para esperar a que responda
+#-- el bootloader
+libIris.Pic16_Bootloader.DEFAULT_TIMEOUT=800;
+
+
+#----------------------------------------------------
+#-- Mostrar la ayuda de como se usa la aplicacion
+#----------------------------------------------------
+def help():
+  print """
+Uso: pydownloader <programa> [<port>]
+
+ -Programa: Puede ser un fichero .hex o el nombre del firmware a cargar:
+    -ledp1: Programa de prueba 1. Led parpadeante
+    -ledp2: Programa de prueba 2. Led parpadeante a mas velocidad
+    -monitor: Servidor generico
+    -servos8: Servidor para movimiento de hasta 8 servos
+    -Picp   : Servidor para la programacion de PICs
+    -eco    : Servidor de eco por el puerto serie (pruebas)
+ -Port: Nombre del dispositivo serie a utilizar   
+ 
+ Ejemplo:
+    
+   1) pydownloader test.hex /dev/ttyUSB0
+        Descargar el programa test.hex en la skypic
+         
+   2) pydownloader ledp1 /dev/ttyUSB0
+        Descargar el Firmware de pruebas ledp
+
+  """
+
+#-- Mensaje de comienzo
+print 'PyDownloader. Descarga de programas en la Skypic. Licencia GPL\n'
+
+#----------------------------
+#-- Analizar los parametros
+#----------------------------
+
+#-- Leer el fichero o el nombre del firmware a cargar
+try:
+  file = sys.argv[1]
+except IndexError:
+  print "Nombre de programa no indicado"
+  help()
+  sys.exit(-1)
+  
+  
+#-- Opcional: Leer el puerto serie
+try:
+  serialName = sys.argv [2]
+  
+except IndexError:
+  #-- Establecer un puerto serie por defecto
+  serialName = "/dev/ttyUSB0" 
+  
+#---------------------------------------------------------------------
+#- Obtener el programa a descargar. Bien leyendolo del fichero .hex
+#- o bien detectando que es un firmware
+#- El programa listo para descargar se devuelve en program
+#---------------------------------------------------------------------
+
+try:
+  #-- Obtener el firmware
+  program = Firmware_DICT[file.upper()]
+  print "Firmware: %s" % file
+  
+#-- No es un firmare conocido. Comprobar si es un fichero  
+except KeyError:
+
+  #-- Realizar el parseo del fichero 
+  try:
+    hr = libIris.IntelHex.HexReader (file)
+  except libIris.IntelHex.ReaderError,msg:
+    print msg
+    sys.exit(-1)
+  
+  #-- Obtener el programa en el formato correcto
+  program = hr.dataBlocks16()
+  
+  print 'Fichero: "%s"' % file
+  
+#------------------------------------
+#-- Abrir puerto serie
+#------------------------------------
+
+try:
+  #-- Quitar el argumento logCallback=None para mostrar mas informacion 
+  #-- de lo que esta ocurriendo
+  iris = libIris.Pic16_Bootloader.Iris(serialName,logCallback=None)
+  
+#-- Error en puerto Serie  
+except libIris.Pic16_Bootloader.IrisError,msg:
+  print msg
+  sys.exit(-1)
+
+#----------------------------------
+#-- Realizar la descarga
+#----------------------------------
+
+try:
+  iris.download(program)
+except libIris.Pic16_Bootloader.IrisError,msg:
+  print msg
+  sys.exit(-1)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]