Segment 3 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба Вообщем шняга какаято. Вопрос возник изза того что LPC2000 flash utility выдает ошибку lpc21isp version 1.48 File main.hex: loaded... New Extended Linear Address Record [04] out of memory range Current Memory starts at: 0x00000000, new Address is: 0x40000000 Компиляция проходит успешно, никаких варнингов нету. Вот кусок кода когда при котором возникает ошибка при прошивке static uart_config_t config = { .controller = 0, .baudrate = 9600, .length = 8, .stop = 1 }; int main( void ) { char buffer[256] = { 0 }; cpu_init(); uart_init( &config ); while(1) { ... } } А вот при таком коде ошибки НЕ возникает int main( void ) { uart_config_t config = { .controller = 0, .baudrate = 9600, .length = 8, .stop = 1 }; char buffer[256] = { 0 }; cpu_init(); uart_init( &config ); while(1) { ... } } Вообще ничо понять не могу, воощем нид хелп. ЗЫ Вложил crt0.s и LPC2129-ROM.ld Кстати, и не только при этом возникает ошибка, я первый раз заметил это при использовании malloc стандартного, при любом использовании malloc - прошивать отказываеца.. :crying: arch.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба так у вас копия инициализированных данных вместо флеша лежит в ОЗУ надо секции .data размещать во флеше что то типа .data : /* collect all initialized .data sections that go into RAM */ { _data = .; /* create a global symbol marking the start of the .data section */ *(.data) /* all .data sections */ _edata = .; /* define a global symbol marking the end of the .data section */ } >RAM AT >ROM /* put all the above into RAM (but load the LMA copy into FLASH) */ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Segment 3 27 января, 2009 Опубликовано 27 января, 2009 · Жалоба /* .data section which is used for initialized data */ /*.data : AT (_etext)*/ .data : { _data = .; *(.data) *(.data.*) *(.gnu.linkonce.d*) SORT(CONSTRUCTORS) /* mt 4/2005 */ . = ALIGN(4); *(.fastrun) /* "RAM-Functions" */ } > RAM Добавил AT >ROM и заработало! Спасибо. А вот fastrun тогда будет в ROM чтоли? Короче где почитать как эффективно писать такие скрипты и как правильно их писать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 28 января, 2009 Опубликовано 28 января, 2009 · Жалоба Добавил AT >ROM и заработало! Спасибо. А вот fastrun тогда будет в ROM чтоли? Короче где почитать как эффективно писать такие скрипты и как правильно их писать? Нет тоже будет в RAM (после того как стартап скопирует данные и эти функции в RAM). AT >ROM сообщает линкеру что данные надо положить в ROM, но реально они будут в RAM. Почитать можно например здесь http://www.codesourcery.com/gnu_toolchains.../doc2866/ld.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться