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