Memoria STM32F4 Discovery

184 views
Skip to first unread message

Alejandro Capa

unread,
May 13, 2016, 3:22:50 PM5/13/16
to Embebidos32
Hola!
Tengo una placa Discovery con un cortexM4. La misma tiene 1Mb de Flash y 192Kb de RAM.

Mi duda es que no entiendo bien donde se almacena mi programa *.hex y los datos del programa.

Viendo el datasheet del microcontrolador STM32F407VGT6, tengo el siguiente mapa de memoria:

Pero nose bien donde se almacena mi programa y el tamaño máximo que puede tener mi *hex.

Desde ya muchas gracias.
Saludos.

Fernando Lichtschein

unread,
May 13, 2016, 3:41:19 PM5/13/16
to embebidos32@
Tu programa se almacena en la memoria flash y puede tener hasta 1 MB, habría que ver cómo informa el compilador que estés usando cuánta memoria está utilizando el programa, generalmente sale un mensaje cuando termina el "build".

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Henrique Magarotto

unread,
May 14, 2016, 1:25:46 AM5/14/16
to Embebidos32
Alejandro,

Your program is placed at Flash memory located from 0x0800 0000 to 0x080F FFFF (2^20 address bits, totaling 1MB).

Program data are placed at SRAM which is segmented in 3 blocks:
- 64KB from 0x1000 0000 to 0x1000 FFFF (CCM)
- 112kb from 0x2000 0000 to 0x2001 0x2001 BFFF
- 16kb from 0x2001 C000 to 0x2001 FFFF

This segmentation is made because each block is connected differently internamente.

The first block (CCM) is directly connect to CPU, so if some DMA operation is locking data bus in diferent block, the CPU can continue run on first block. With diferent blocks is possibe to run concurrent DMA operations too.



Português: 

O seu programa é colocado na memória Flash localizada em 0x0800 0000 a 0x080F FFFF (2^20 address bits, total=1MB).

Os dados de programa (variaveis, não contantes) são colocados na SRAM que é segmentada em 3 blocos:
- 64KB - 0x1000 0000 a 0x1000 FFFF (CCM)
- 112kb - 0x2000 0000 a 0x2001 0x2001 BFFF
- 16kb - 0x2001 C000 a 0x2001 FFFF

Esta segmentação é feita porque cada bloco é conectado diferentemente internamente através do BusMatrix.

O primeiro bloco (CCM) é conectado diretamente a CPU, então se alguma operacão DMA estiver travando um barramento em um bloco diferente, a CPU continue rodando o código do primeiro bloco. Com diferentes blocos também é possível rodar operacões DMA simultaneas.

Veja o Manual de Referencia capitulo 2.


Lo siento, yo sólo hablo portugués y un poco de Inglés
Salutos
Henrique
Reply all
Reply to author
Forward
0 new messages