Bienvenido a los foros de FT81x Manía. Te invitamos a regístrate totalmente gratis. Disfruta de tu experiencia con un grandes amigos y Staff.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Thread Contributor: TFTLCDCygVariante STM32F746IG para el Core Generic de danieleff

#1
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffEsta es la primer versión de la variante F746IG.

Procedimiento de instalación:

1 Copiar la carpeta F746IG en la carpeta variants del core genérico.

2 Sobreescribir el archivo boards.txt de la carpeta STM32, ubicada en el core genérico.

Al reiniciar el IDE, debería aparecer la variante después de la Discovery_F746NG


Attached Files
.zip   (Variante F746IG).zip (Size: 7.78 KB / Downloads: 3)
Reply
#2
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffAdjunto el proyecto STM32CubeMX con los dispositivos activos. Tocaría activar el GPIO correspondiente a la SDRAM.

También se podría afinar el conjunto de frecuencias, es mi segundo intento oficial tratando de agregar variantes al core genérico, se aceptan sugerencias y bienvenidas las mejoras al proyecto


Attached Files
.zip   F746IG.zip (Size: 2.29 KB / Downloads: 4)
Reply
#3
0
Buenas. He probado la variante con la placa Open7XXI-C con micro STM32F746IGT y he detectado que en el proyecto STM32CubeMX  la velocidad del cristal externo estaba ajustada a 25Mhz y no a 8Mhz que es la velocidad del cristal que  usa (el ejemplo del blink Led con delay(1000) iba casi 4 veces más lento).
He guardado el proyecto CubeMX con los nuevos ajustes y copiado la función SystemClock_Config(void) sustituyendo a la que está en variant.cpp.

Además he modificado lo siguiente en el archivo STM32GENERIC/STM32/system/STM32F7/HAL_Src/system_stm32f7xx.c cambiando el valor de:

#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
#endif /* HSE_VALUE */

por:

#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz */
#endif /* HSE_VALUE */


En el archivo boards.txt:
Cambio:
F746IG.build.extra_flags=-DSTM32F746IG -DDATA_IN_ExtSDRAM
por:

F746IG.build.extra_flags=-DSTM32F746IG -DDATA_IN_ExtSDRAM -DHSE_VALUE=8000000

Para el soporte hardware de la unidad de coma flotante he corregido un error en los flags, cambiando en boards.txt:

F746IG.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard


por:


F746IG.build.mcu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard

Subo los archivos del variant rectificados:


Attached Files
.zip   Variante_F746IG.zip (Size: 7.44 KB / Downloads: 1)
<<<RndMnkIII>>>
rndmnkiii@gmail.com
Reply
#4
0
Mejor pensado redefinire estos cambios como otra variante de la placa Open746I-C de WaveShare que lleva
el micro STM32F746IGT, ya que otras placas pueden incorporar cristales a otra velocidad diferente tales como las STM Discovery.
<<<RndMnkIII>>>
rndmnkiii@gmail.com
Reply
#5
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffAl final me he basado en el STM32GENERIC para probar la placa CORE746I-C. Como comenté anteriormente hay que hacer varias modificaciones para poder compilar desde el Arduino IDE el código para estas placas, con soporte de para cálculos de coma flotante mediante FPU y utilizando la librería matemática CMSIS DSP que utiliza el soporte  hardware de cálculo.



Adjunto copia de mis archivos platform.txt y boards.txt asi como ejemplo del supertoroide adaptado para el micro STM32F746.

Saludos!


1. Debemos instalar un compilador con soporte para la arquitectura ARM M7, ya que el que tenemos instalado por defecto (versión 4.8.3) no lo incluye. Optamos por la versión 5.4 que es la sugerida por el desarrollador del core STM32GENERIC.
Lo descomprimo en mi caso usando la misma carpeta raíz que el 4.8.3:
C:/Users/<usuario>/AppData/Local/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/5_4-2016q2/bin/
Importante en plataformas windows sustituir la barra invertida '\' por la normal '/' a la hora de especificar las rutas en los archivos de configuración.

Ahora modificamos en el platform.txt la ruta al compilador con:
compiler.path=C:/Users/<usuario>/AppData/Local/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/5_4-2016q2/bin/
sustituyendo <usuario> por el nombre del usuario del equipo donde estéis trabajando
2. Debemos añadir opciones de compilación para el soporte de los cálculos de coma flotante añadiendo los flags adecuados en boards.txt
 flags de: F746IG.build.mcu:

F746IG.build.mcu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard

3. Para añadir soporte para la librería CMSIS DSP, copiar la carpeta GCC que hay dentro de 
C:/Users/<Usuario>/AppData/Local/Arduino15/packages/arduino/tools/CMSIS/d4.5.0/CMSIS/Lib/GCC a
C:/Arduino/hardware/STM32GENERIC/STM32/system/CMSIS, sustituyendo <usuario> por el nombre del usuario del equipo donde estéis trabajando,quedando tal como se ve en la captura:
?magehay que enlazar con el archivo de librería arm_cortexM7lfsp_math.lib añadiendo los flags necesarios en platform.txt:

recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--start-group {object_files} "{build.path}/{archive_file}" "{build.system.path}/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a" -lc -Wl,--end-group -lm -lgcc --specs=nano.specs -u _printf_float

## recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--start-group {object_files} "{build.path}/{archive_file}" -lc -Wl,--end-group -lm -lgcc --specs=nano.specs
En el ejemplo adjunto se puede observar que es necesario definir una directiva con la que indicamos a la librería CMSIS DSP que arquitectura hardware
vamos a utilizar a la hora de generar el código, con #define ARM_MATH_CM7:

#define ARM_MATH_CM7
#define __FPU_PRESENT = 1
#include "arm_math.h" 
#include <math.h>

Además es necesario habilitar la unidad de coma flotante mediante la siguiente rutina en ensamblador que hay que ejecutar antes de realizar ningún cálculo en coma flotante:

// Enable the FPU (Cortex-M4 - STM32F4xx and higher)
// http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/BEHBJHIG.html
void enablefpu() {
  __asm volatile
  (
    "  ldr.w r0, =0xE000ED88    \n"  /* The FPU enable bits are in the CPACR. */
    "  ldr r1, [r0]             \n"  /* read CAPCR */
    "  orr r1, r1, #( 0xf << 20 )\n" /* Set bits 20-23 to enable CP10 and CP11 coprocessors */
    "  str r1, [r0]              \n" /* Write back the modified value to the CPACR */
    "  dsb                       \n" /* wait for store to complete */
    "  isb"                          /* reset pipeline now the FPU is enabled */
  );
}
P.D.: hay q modificar el archivo platform.txt para adaptar la ruta absoluta al compilador a la especifica de vuestro sistema. Para que funcione el ejemplo hay q eliminar toda referencia a la libreria Sdfat desde la libreria GD2UB ya que no funciona el soporte SDIO en la variante para las STM32F746I del core STM32GENERIC. He tenido que comentar las lineas de las funciones loadImageSdFat y safeloadSdFat. Ademas he comentado  lineas de codigo del core STM32GENERIC donde se definan puertos SPI superiores al SPI2.


Attached Files
.zip   FT8XX_donut_Render_SIN_Sensor_gd2writebufF746IGT.zip (Size: 3.26 KB / Downloads: 4)
.zip   Variante_F746IG_cambios.zip (Size: 6.79 KB / Downloads: 7)
<<<RndMnkIII>>>
rndmnkiii@gmail.com
Reply
#6
0
Genial a la espera de la F746I que he pedido hace una semana, todavía no sale de China jejeje.

Este es el link para descargar el soporte para cortex M7: 5-2016q2

Debe ser alguno de los paquetes comprimidos, dependiendo del sistema operativo
Reply
#7
0
Tras un par de dias cargados de experimentos, y de varias cesiones de prueba y error, por fin pude hacer funcionar la Core7XXI que arribó hace un par de días.

La variante que armé partiendo de las bases establecidas por danieleff, no dió los frutos esperados, el chip cortex M7 tiene varios relojes, para ajustar los valores adecuados, hace falta bastante conocimiento en el manejo de frecuencias de cada uno de los periféricos que posee el chip. Aparentemente alguno de los relojes lo llevé más allá de sus parámetros seguros. Tengo que aprender aún más acerca del seteo de dispositivos en los chips STM32.

Afortunadamente tenemos a mano más repositorios para experimentar. Entre ellos está el de huaweiwx

En él hay una variante para la placa base para Core7XXI llamada F746S. Para activarla, hay que seguir estos pasos:

1. Descomprimir la carpeta WAVESHARE_F746IG, en la ruta: 
   C:\arduino-1.8.3\hardware\STM32GENERIC_danielefF\STM32\variants

2. Copiar todas las líneas del archivo boards.txt incluido en el zip adjunto, al final del archivo boards.txt ubicado en la ruta 
   C:\arduino-1.8.4\hardware\STM32GENERIC_danielefF\STM32

Guardamos los cambios e iniciamos el IDE de arduino.

?mage

?mage

?mage


Attached Files
.zip   F746IG_Waveshare.zip (Size: 93.83 KB / Downloads: 7)
Reply
#8
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffHice algunos ajustes con la finalidad de acercar la variante a las características de la placa, pues el core principal sin la motherboard, no tiene instalados leds de prueba, botones, acelerómetro, flash o eeprom. El único periférico es una memoria SRAM externa..

Procedimiento de instalación de la variante

1) Extraer en la carpeta de variantes del core STM de genérico danieleff, la carpeta llamada Core7XXI. Puede haber variaciones en la ruta dependiendo del IDE arduino y del nombre que se haya asignado al core genérico. En este ejemplo, ésta es la ruta:

C:\arduino-1.8.4\hardware\STM32GENERIC_danielefF\STM32\variants

2) Copiar el contenido del archivo Complemento para board, en el archivo boards.txt, ubicado en la ruta:

C:\arduino-1.8.4\hardware\STM32GENERIC_danielefF\STM32

3) Reiniciar el IDE de arduino para activar la variante en el selector de placas
 


Attached Files
.zip   Core7XXI.zip (Size: 93.3 KB / Downloads: 9)
Reply
#9
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffEjemplos usando la placa Core7XXI

En los ratos libres he podido experimentar con la Core7XXI el trazado de funciones. Una vez que se encuentran los puntos clave, es posible dibujar gráficas en el plano XY:

1) Ajustar los datos del eje Y, considerando que este eje está invertido en cualquier TFT
2) Escalar los valores del eje Y para que se puedan acotar a las dimensiones de la pantalla

Con estos dos puntos conseguiremos trazar correctamente funciones en la pantalla.

Adjunto un ejemplo mediante el cual podemos trazar 7 funciones, para cambiar la gráfica correspondiente, basta con tocar la fórmula mostrada en pantalla. Las funciones sin, cos y tan, activan el ajuste de los parámetros A y B en cada una de ellas.

Aunque las fórmulas se pueden manejar con el comando GD.cmd_text, decidí usar el comando que permite convertir texto en imagenes, recientemente incorporado por James en la librería para gameduino 2 y que ya tenemos en GD2UB.

El trazo lo podemos conseguir también partiendo de arrays de datos o de vectores unidimensionales como este:


const short  y_data[] = {
939, 940, 941, 942, 944, 945, 946, 947, 951, 956,
962, 967, 973, 978, 983, 989, 994, 1000, 1005, 1015,
1024, 1034, 1043, 1053, 1062, 1075, 1087, 1100, 1112, 1121,
1126, 1131, 1136, 1141, 1146, 1151, 1156, 1164, 1172, 1179,
1187, 1194, 1202, 1209, 1216, 1222, 1229, 1235, 1241, 1248,
1254, 1260, 1264, 1268, 1271, 1275, 1279, 1283, 1287, 1286,
1284, 1281, 1279, 1276, 1274, 1271, 1268, 1266, 1263, 1261,
1258, 1256, 1253, 1251, 1246, 1242, 1237, 1232, 1227, 1222,
1218, 1215, 1211, 1207, 1203, 1199, 1195, 1191, 1184, 1178,
1171, 1165, 1159, 1152, 1146, 1141, 1136, 1130, 1125, 1120,
1115, 1110, 1103, 1096, 1088, 1080, 1073, 1065, 1057, 1049,
1040, 1030, 1021, 1012, 1004, 995, 987, 982, 978, 974};


Attached Files
.zip   F746_Graph4a.zip (Size: 2.17 KB / Downloads: 1)
Reply
#10
1
Better response on post Variante STM32F746IG para el Core Generic de danieleffSaludos!

Hace un tiempo compre el Open746I-C Standard ARM Cortex-M7 STM32F746IGT6 MCU STM32F7 Development Board atraves de eBay. Estoy usando Windows 8 y 10.  Que IDE me recomiendan para Windows y el programador (veo que en el foro se conectand al JTAG/SWD con alambres individuales)?  Se puede usar ST-Link?



Disculpen la ignorancia,

ahermida
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)