Autor Tema: Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz  (Leído 15707 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #30 en: 22 de Mayo de 2017, 12:36:41 »

Creo que será más sencillo si con FileSeek localizo en los fuentes todas las apariciones de estas definiciones tipo CORE_ y las reemplazo directamente por mis propias definiciones, igual para la manera de asignar los puertos.


Chungo. Seguro que te equivocas.

Mejor una macro Python que realice las sustituciones:

   data = re.sub("Definición1 de kinetis", "Definición1 de mi nuevo micro", data)
   data = re.sub("Definición2 de kinetis", "Definición2 de mi nuevo micro", data)

Luego lo guardas con otro nombre. Así, si te equivocas es más sencillo cambiarlo.
Esta macro anterior se puede escribir más sencilla para grandes cantidades de datos:

definitions = [
   ['Definición1 de kinetis', 'Definición1 de mi nuevo micro SAM'],
   ['Definición2 de kinetis', 'Definición2 de mi nuevo micro SAM'],
]

for kinetis_def, sam_def in definitions:
   data = re.sub(kinetis_def, sam_def, data)

Incluso las definiciones se pueden guardar fácilmente en un archivo YAML externo a la macro:

- - Definición1 de kinetis
  - Definición1 de mi nuevo micro SAM
- - Definición2 de kinetis
  - Definición2 de mi nuevo micro SAM

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #31 en: 22 de Mayo de 2017, 12:39:16 »

¿ Que es el drive de mayor fuerza ?.

No se muy bien. Supongo que se refiere a la corriente máxima que maneja.

Reference manual
48.1.2 IRO Drive Strength
The IRO pad requires higher current drive than standard pads. For this device, the pin
associated with the CMT_IRO signal is specifically designed to provide a higher drive
current.
No additional configuration is required to enable this capability.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #32 en: 22 de Mayo de 2017, 12:41:36 »
También puedes generar los *.h fácilmente con una hoja Excel.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #33 en: 22 de Mayo de 2017, 12:44:18 »
.

Bueno, ya vi en un libro sobre Kinetis la configuración del puerto con el registro PORTx_PRCx_

Esto ya lo tengo claro, solo tengo que buscar la direcciones de memoria que usa el SAM S70 para lo mismo, entiendo que al ser ambos ARM, trabajan con las mismas definiciones de registros y solo variarán las direcciones, ventajas de trabajarlo todo dentro del mundo ARM.







« Última modificación: 22 de Mayo de 2017, 12:49:09 por planeta9999 »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #34 en: 22 de Mayo de 2017, 12:53:06 »
Puede que algunos registros o valores no sean iguales.
Pero no importa porque estas definiciones sólo son el nivel 0 (dirección de memoria del registro) y el nivel 1 (nomenclatura de pines de la placa)

Al final, ambos se utilizarán en una función que inicializa los pines por defecto. En esa inicialización tendrás que especificar el Slew rate del pin o la asignación de pines multiplexados. Pero si esa opción no existe en el SAM, no importa. No lo configuras y no pasa nada.

Tendrás que estudiarte un poco el siguiente nivel. Por ejemplo "pins_teensy.c" o "analog.c"
https://github.com/PaulStoffregen/cores/tree/master/teensy3

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #35 en: 22 de Mayo de 2017, 12:53:26 »

Creo que será más sencillo si con FileSeek localizo en los fuentes todas las apariciones de estas definiciones tipo CORE_ y las reemplazo directamente por mis propias definiciones, igual para la manera de asignar los puertos.


Chungo. Seguro que te equivocas.


Con FileSeek lo encuentro todo enseguida, y con las búsquedas que he hecho por ahora, no hay tantas definiciones que se usen en los fuentes de este aplicativo.

El core tiene montones de definiciones, pero en mi fuente con la librería StmartMatrix no se usan tantas de esas definiciones, con localizarlas, apuntarlas para tenerlas localizadas y reemplazarlas a mano, creo que será suficiente.

O creo mi propio fichero que reemplace al actual con los defines y pongo los míos apuntando a las direcciones de SAM S70, pero solo metiendo los defines que se usan en mis fuentes, que son pocos del total, el resto los quito.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #36 en: 22 de Mayo de 2017, 12:55:26 »
Al final, ambos se utilizarán en una función que inicializa los pines por defecto. En esa inicialización tendrás que especificar el Slew rate del pin o la asignación de pines multiplexados. Pero si esa opción no existe en el SAM, no importa. No lo configuras y no pasa nada.


¿ Que es el Slew Rate ?, lo del multiplexado lo tengo claro, es seleccionar la función alternativa que queramos activar para un pin.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #37 en: 22 de Mayo de 2017, 12:56:30 »
O creo mi propio fichero que reemplace al actual con los defines y pongo los míos apuntando a las direcciones de SAM S70, pero solo metiendo los defines que se usan en mis fuentes, que son pocos del total, el resto los quito.

Algo así me refería. Esa es la solución rápida para pocos pines.
Pero si más adelante quieres cambiar todos los pines, es mejor automatizarlo (con excel, Python o lo que quieras)

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #38 en: 22 de Mayo de 2017, 12:57:11 »
¿ Que es el Slew Rate ?, lo del multiplexado lo tengo claro, es seleccionar la función alternativa que queramos activar para un pin.

Hace poco que lo descubrí.
Strength define si el pin tiene más o menos 'fuerza' (corriente)
El slew rate define la velocidad de subida o bajada (rise and fall time) de la señal de salida en el pin. Si lo activas, creo que va más rápido (7ns), si lo desactivas va más lento (15ns).

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #39 en: 22 de Mayo de 2017, 13:03:18 »
.

OK, entiendo que si lo configuro para que vaya más rápido, la contrapartida es que consumirá más, o no tiene mucho sentido que de dejen elegir si quieres que vaya rápido o muy rápido.

Pues que vaya siempre muy rápido que será mejor para cualquier aplicativo, salvo que eso suponga empeorar en otro aspecto, como el consumo.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #40 en: 22 de Mayo de 2017, 13:05:32 »
.

Bueno, ya lo empiezo a ver claro, y me parece que al final no va a ser tan complicado como pensaba, aunque ya veremos a la hora de la verdad que tal va.

Si consigo portar este aplicativo a un Cortex M7 300Mhz, para mi es la bomba, porque me va a permitir hacer cosas que con un M4 a 180Mhz iba muy pillado o no se podrían hacer. Además el chip es mucho más barato, prácticamente a mitad de precio.

Estoy muy ilusionado con el SAM S70, es bestial, y además al ser un ARM, buena parte de lo aprendido con los STM32 y los Kinetis me sirve. De todas formas estaré al tanto cuando ST ponga a la venta sus STM32H7, el top de los Cortex M7, a 400Mhz, la repera.
« Última modificación: 22 de Mayo de 2017, 13:12:24 por planeta9999 »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #41 en: 22 de Mayo de 2017, 13:34:39 »
.

OK, entiendo que si lo configuro para que vaya más rápido, la contrapartida es que consumirá más, o no tiene mucho sentido que de dejen elegir si quieres que vaya rápido o muy rápido.

Pues que vaya siempre muy rápido que será mejor para cualquier aplicativo, salvo que eso suponga empeorar en otro aspecto, como el consumo.

Hay más razones. Por ejemplo para reducir EMI.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #42 en: 22 de Mayo de 2017, 22:00:27 »
Mejor una macro Python que realice las sustituciones:

   data = re.sub("Definición1 de kinetis", "Definición1 de mi nuevo micro", data)
   data = re.sub("Definición2 de kinetis", "Definición2 de mi nuevo micro", data)

Luego lo guardas con otro nombre. Así, si te equivocas es más sencillo cambiarlo.
Esta macro anterior se puede escribir más sencilla para grandes cantidades de datos:

definitions = [
   ['Definición1 de kinetis', 'Definición1 de mi nuevo micro SAM'],
   ['Definición2 de kinetis', 'Definición2 de mi nuevo micro SAM'],
]

for kinetis_def, sam_def in definitions:
   data = re.sub(kinetis_def, sam_def, data)

Incluso las definiciones se pueden guardar fácilmente en un archivo YAML externo a la macro:

- - Definición1 de kinetis
  - Definición1 de mi nuevo micro SAM
- - Definición2 de kinetis
  - Definición2 de mi nuevo micro SAM



Estoy pensando en hacer algo así, pero la idea sería buscar todas las definiciones de los ficheros core_pins.h y kinetis.h, en todos los fuentes de la aplicación, y que la macro guarde en otro fichero, por ejemplo resultados.txt, una linea por expresión encontrada, que indique fichero fuente en el que ha encontrado la expresión y la expresión.

Los ficheros core_pins.h y kinetis.h, no los puedo usar directamente, porque las lineas tienen comentarios. Crearía un fichero a mano metiendo las expresiones que tiene que buscar, que serían practicamente las de esos dos archivos, pero sin los comentarios, y en el caso de las definiciones de multiplexado, les tendría que quitar el "x" que luego en el fuente se reemplaza por un número.

¿ Es muy complicado hacer esto ?, no tengo ni idea de Python.

Otra opción que barajo es instalarme el entorno para ejecutar PHP en el ordenador, y crearme el programita en este lenguaje. Con PHP si que tengo mucha experiencia, por haberlo usado durante años para hacer páginas web.

Y una tercera opción sería hacerlo en C, con Visual Studio, creando una aplicación de consola, o a pelo escribiendo el fuente en cualquier editor de texto que identifique C, como Geany, y compilando a mano con Mingw para hacer una aplicación de consola para el PC.


Entiendo una cosa, ambos micros son ARM, aunque uno es Cortex M4 y el otro Cortex M7. El compilador es siempre el mismo, GCC, luego el código fuente del programa sería exactamente el mismo, solo habría que cambiar las direcciones de memoria a las que apuntan las expresiones en el fichero kinetis.h, para que apunten a las direcciones de memoria del SAM S70 que aparecen en su Datasheet.

Tendría que cambiar la parametrización de la llamada al compilador para indicarle que es un Cortex M7, y reemplazar el Linker Script para que el enlazador sepa tamaño y ubicación de la Flash y la Ram, aparte de otras cosas que se indican en el Linker Script.

Y finalmente tendría que cambiar la parte del fuente en el que se indica la velocidad del oscilador de reloj del micro, que pasaría de 180Mhz a 300Mhz. Creo que no hay nada más, salvo que de M4 a M7 hayan diferencias importantes que desconozco a la hora de hacer el fuente en C.

Tema Interrupciones, DMA, SPI y USB es lo que tendría que revisar en profundidad, por si en el SAM S70 se tratan de otra forma.



« Última modificación: 22 de Mayo de 2017, 22:24:46 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #43 en: 22 de Mayo de 2017, 23:27:43 »
.

Me acabo de instalar Dev-C++. Para hacer aplicaciones sencillas en C/C++ para PC, va que chuta.

Así puedo crear un programita que barra y lea todo los fuentes buscando las expresiones, para saber cuales se utilizan, y ya miro en el Datasheet del S70 que direcciones de memoria necesito cambiar.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Mi primer proyecto con Cortex M7, un Atmel SAM S70 a 300Mhz
« Respuesta #44 en: 23 de Mayo de 2017, 02:32:24 »
En C, definitivamente no.
Mucho mejor Python, aunque tengas que aprender.
En cuanto a PHP no lo conozco lo suficiente, aunque sé que es un lenguaje script peor que Python puede que te sirva.

En cualquier caso tienes que empezar por hacerte una tabla de Excel con todos los datos importantes. Números de pin, direcciones de memoria, etc.
Luego viene el programa.

Saludos.


 

anything