Cortex-M0 gcc problem

Petr Labaj labaj na volny.cz
Sobota Březen 30 22:16:48 CET 2013


A to je v tom poli blbe hned pri zavedeni do pameti?
Neni to staticka, ale globalni promenna. Takze v pripade nejake
chyby jinde muze byt snadno prepsana jinou (pretecenou) globalni
promennou.
Takze by to chtelo zjistit co tam uklada kompilator (z dissassebmly listingu),
jestli je to tam po zavedeni programu do pameti (tj. jestli spravne zafunguje
inicializace promennych) a kdy se tam objevi neco jineho.

PL

*******************************

From: "Jaroslav Buchta" <jaroslav.buchta na hascomp.cz>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Saturday, March 30, 2013 8:31 PM
Subject: Re: Cortex-M0 gcc problem


Ja mam na STM32F4 jinou zahadu dneska, asi je to moji neznalosti, jedna 
se o tento projekt: http://mcu.cz/news.php?extend.2800

Portoval jsem to bez problemu na GNU GCC s prostredim C::B bez problemu, 
fungovalo to skvele hned, ale jen bez optimalizace Os (bez to ma asi 
90kB, s asi 38kB)
Problem byl zde v souboru stm32f4_discovery.c zde:
GPIO_TypeDef* const GPIO_PORT[LEDn] = {LED4_GPIO_PORT, LED3_GPIO_PORT, 
LED5_GPIO_PORT,
                                  LED6_GPIO_PORT};

hloupe pole konstantnich ukazatelu, definovane mimo funkci cili staticky 
ale nebylo tam puvodne const. Po optimalizaci se to nejak zpotvorilo a 
prvni ukazatel byl OK, dalsi za konec RAM (aspon kdyz se prvrk pole 
predal jako parametr fce) a pak to pri pouziti to spadlo v void 
HardFault_Handler(void) do nekonecne smycky...

void STM32F4_Discovery_LEDInit(Led_TypeDef Led)
{
   GPIO_InitTypeDef  GPIO_InitStructure;

   /* Enable the GPIO_LED Clock */
   RCC_AHB1PeriphClockCmd(GPIO_CLK[Led], ENABLE);

   /* Configure the GPIO_LED pin */
   GPIO_InitStructure.GPIO_Pin = GPIO_PIN[Led];
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
TADY!   GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure);
}


Trosku mne to znervoznuje, nenapada me, proc to takhle dopadlo. Po 
doplneni const to ovsem zda se funguje normalne... Jen jsou asi 4 
warningy se zapnutou optimalizaci, to budu zkoumat pozdeji.
Prekvapilo me taky, ze projekt na obyc. VCP je tak rozsahly. Ted se 
pustim do zkoumani ethernetu ;-)



Další informace o konferenci Hw-list