STM32 tablice we Flash i RAM

Jan 10, 2012 12 Replies

Czesc. Program pisany na STM32 w Keil Jak rozroznic umieszczenie tablic w pamieci Flash i RAM? Dla przykładu chce w pamieci flash umiescic tablice z obrazem dla wyswietlacza LCD, ktora jest tylko do odczytu i mają być to wartosci uint8_t OBRAZ[] = {0x08, //itd oraz inna w pamieci RAM: uint8_t ch0[8]={24, 4, 4, 10, 18, 18, 17,



0}; //własne znaki

Jak je rozroznic aby trafily do FLASH a druga do RAM i jak je potem odczyta?


W dniu 2012-01-10 12:49, slawek7 pisze:

Te mające być we flaszu deklaruj jako const. Na przykład const char http_content_type[15] = {0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65,

0x3a, 0x20, };

A te powędrują do RAM.

Po kompilacji zobaczysz w pliku .map gdzie powędrowały. Jeśl i Keil używał do kompilacji gcc a zdaje mi się ze tak jest. blok .text to flash, d.data - dane zainicjowane, .bss dane niezainicjowane.

Tylko jak zoabczyc gdzie sa umieszczone te tablice? Otwieram plik .map cos tam jest tylko jak z tego wylonic to co potrzeba? Jak to bedzie opisane?

Znalazlem na samyk koncu takie sekcje: RO Size, RW Size, ROM Size. Nie wiem czy dobrze rozumiem, ale czy RO znaczy Read Only? a RW Read/ Write? To czym sie rozni ROM od RO? jedno tylko do czytania i drugie?

U¿ytkownik "slawek7" snipped-for-privacy@wp.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@i26g2000vbt.googlegroups.com...

W gcc pisa³em kiedys tak uint8_t const moja_tablica_rom[]={1,1,1,1} PROGMEM; pgm_read_byte(*); // dostêpne w pgmspace.h

W dniu 10.01.2012 14:25, Ukaniu pisze:

Ale to raczej w AVR, a nie ARM ;-)

Pozdrawiam Grzegorz

To jak w Keilu sprawdzic ilosc zajetych pamieci (Ram, Flash)?

W dniu 2012-01-11 08:45, slawek7 pisze:

Się popsuł. Spróbuj ten:

formatting link

Ten jest ok. Zastanawiam sie dlaczego dla ROM podaja "ROM Size = Code + RO Data + RW Data" i w takim razie co znacza skroty RO i RW?

To wyjasnilo, dzieki. A jaki poziom kompilacji nalezy wybrac. W keilu sa od 0 do 3 natomiast w WinAVR zawsze ustawialo sie na -Os. Jest tu jakis odpowiednik?

W dniu 11.01.2012 12:28, slawek7 pisze:

kod wykonywalny + dane Read Only (stałe) + dane Read and Write(kopiowane do ram na starcie)

w ramie będzie RW, stack i obszary inicjalizowane zerami

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required