реклама на сайте
подробности

 
 
> EWARM 5.10
zltigo
сообщение Jun 27 2007, 16:28
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Сергей Борщ подсказал, что только что на сайте IAR появилась ссылка на 5.10 версию! Однако скачивается старая 4.41. Но наверное вскоре будет.

Что еще интересно возникло упоминание и о 4.42
Код
Note: Cortex-M3 and the ARM VFP is not supported in this release. If you need support for Cortex-M3 or ARM VFP you must use version 4.42A.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
10 страниц V  « < 6 7 8 9 10 >  
Start new topic
Ответов (105 - 119)
VladislavS
сообщение Nov 25 2007, 19:59
Сообщение #106


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Еще один вопрос созрел. Мне нужен файл прошивки в simple-code. В документации вот что сказано:
Цитата
BUILD CONSIDERATIONS
When you build an application that will be downloaded to flash, special consideration
is needed. Two output files must be generated. The first is the usual ELF/DWARF file
out) that provides the debugger with debug and symbol information. The second file
(is a simple-code file (filename extension sim) that will be opened and read by the flash
loader when it downloads the application to flash memory.
The simple-code file must have the same path and name as the ELF/DWARF file except
for the filename extension. This file is automatically generated by the linker.


Когда запускаешь отладку с прописанным флэшлоадером и правда появляется файл в simple-code. Но ведь как-то линкеру передаётся указание его сделать. Мистическое "This file is automatically generated by the linker" не может происходить самом собой. Как линкер узнает что НАДО ДЕЛАТЬ SIM?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 25 2007, 20:47
Сообщение #107


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(VladislavS @ Nov 24 2007, 19:58) *
Непонятно ЗАЧЕМ? Неужели для совместимости c другими компиляторами?

Упаси бог - "совместимость" ни причем, скорее нарочитая несовместимость для того что-бы непонимающие сути сидели вечно на на одном компиляторе smile.gif. Вообще никогда не стоит пользоваться хидерами "любезно" предоставленными IAR, да и многими другими производителями тоже. Переписываете без специфичных наворотов и пользуетесь c любым компилятором.




Цитата(VladislavS @ Nov 25 2007, 21:59) *
Как линкер узнает что НАДО ДЕЛАТЬ SIM?

Не линкер.
Запускается objcopy и делает чего угодно из выходного файла линкера.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Nov 26 2007, 05:10
Сообщение #108


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(zltigo @ Nov 25 2007, 23:47) *
Не линкер.

В приведенной мной цитате говорится что именно линкер.

Цитата
Запускается objcopy и делает чего угодно из выходного файла линкера.

Вот насчет "чего угодно" я что-то не нашел в его хэлпе ключа для simple-code. Не подскажете?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 26 2007, 09:19
Сообщение #109


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(VladislavS @ Nov 26 2007, 07:10) *
Вот насчет "чего угодно" я что-то не нашел в его хэлпе ключа для simple-code. Не подскажете?

Не пользовался отладкой, не подскажу. Натравите на полученный "simple-code" objdump - что скажет?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Nov 26 2007, 12:09
Сообщение #110


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата
C:\IAR\EWARM510\ARM\BIN\OBJCOPY.EXE: spi_loader.sim: File format not recognized


Вот. Всёже линкер, но как ему приказать?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 26 2007, 13:00
Сообщение #111


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(VladislavS @ Nov 26 2007, 14:09) *
Вот.

Вообще-то речь шла об objdump, хотя, видимо и objcopy должен сказать чего-нибудь более разумное.
Цитата
Всёже линкер, но как ему приказать?

Ну так просто посмотрите командные строки линкера в одном и другом случае.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Nikola Kirov
сообщение Nov 26 2007, 13:14
Сообщение #112


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050



Для 4 версии бъило:
Project Options -> Linker -> Output -> Format -> Debug information for C-SPY -> Allow C-SPY extra output file поставит галочку
Project Options -> Linker -> Extra Output -> Generate Extra Output File поставит галочку
Project Options -> Linker -> Extra Output -> Format -> Output format = simple-code

Для 5 кажется что так
Project Options -> Linker -> Output -> Include debug information in output
файл после компиляции в exe директории с разширением .sim
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Nov 26 2007, 13:43
Сообщение #113


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(zltigo @ Nov 26 2007, 16:00) *
Вообще-то речь шла об objdump, хотя, видимо и objcopy должен сказать чего-нибудь более разумное.
Ну так просто посмотрите командные строки линкера в одном и другом случае.


objdump вообще как рыба об лёд, а командные строки я первым делом посмотрел - однохренственные до последнего символа.


PS:

С какого он секцию .intvec размером 0x40 размещает с 0x00000000 по 0x00000040 ? Раньше ему для этого хватало 0x00-0x3F и c 0x40 можно было что-то другое размещать. Теперь же только с 0x48.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Dec 23 2007, 08:03
Сообщение #114


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(VladislavS @ Nov 26 2007, 16:43) *
С какого он секцию .intvec размером 0x40 размещает с 0x00000000 по 0x00000040 ? Раньше ему для этого хватало 0x00-0x3F и c 0x40 можно было что-то другое размещать. Теперь же только с 0x48.


В 5.11 пофиксили. Теперь .intvec как и прежде умещается в 0x00-0x3F.


Когда выдается совсем свободное время пробую перетаскивать проекты в 5-ю версию. С конфигами и кодом вроде никаких проблем - всё по migration guide получается. Один небольшой проект даже работает на железе. А вот отладка в C-SPY что-то не идет почеловечески никак. Работаю с J-Link. Макросы все те же. Но как-то непредсказуемо отладчик работает. То "застрянет" в любом месте, то наоборот вместо шага понесется дальше, то вообще на какое-нибудь прерывание свалится... И это даже на работающем проекте.
Go to the top of the page
 
+Quote Post
elcielo
сообщение Dec 24 2007, 06:43
Сообщение #115


Участник
*

Группа: Eng
Сообщений: 66
Регистрация: 26-09-05
Пользователь №: 8 941



I want EWARM 5.11.
plz help me.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 22 2008, 09:09
Сообщение #116


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(VladislavS @ Nov 8 2007, 23:20) *
А есть у кого __iar_data_init() в исходниках? А то привык в проекте cstartup.s79 , low_level_init.c и segment_init.c иметь. Пока только щупаю 5.10 - рабочие проекты на него еще не перевожу, но уже подумываю.


Т.к. пока приходится отлаживать через openOCD (в IAR 5.11 есть поддержка GDB server). Пришлось переходить на 5 IAR. Я тоже люблю цеплять свой стартап. Поэтому разобрался с принципиальным отличием 5 от перыдущих.
Раньше необходимые данные для инициализации сегментов генерил компилер в виде:
Код
PUBWEAK ?init?tab?DATA_Z
        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_Z:
        DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        PUBWEAK ?init?tab?DATA_I
        RSEG DATA_ID:CONST:SORT:NOROOT(2)
`?*?DATA_ID`:

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_I:
        DCD      sfe(DATA_I) - sfb(DATA_I), sfb(DATA_I), sfb(DATA_ID)

        END

и т.п. всякими хитрыми метками и директивами. что бы полностью выкинуть этот стартап. можно было в своем стартапе определить
Код
        PUBLIC ?init?tab?DATA_I
?init?tab?DATA_I:
        PUBLIC ?init?tab?DATA_Z
?init?tab?DATA_Z:

и сегмент INITTAB не создавался и можно спокойно было инитить сегменты или не инитить...

Теперь принципиально идеология не поменялась просто все это свалили на линкер, поэтому он и не стандартный. Линкер генерит аналог INITTAB ( в который еще похоже добавили адрес функции инициализирующей...).

Но есть способ просто от этого всего избавится!
использовать do not initialize ( в том числе и для DATA_Z и заполнять 0 самому)
и initialize manually для сегментов, которые надо копировать (из флеша например)
ну и указать имя точки входа Override default program entry.

Для Coretx-M3 вообще можно обойтись без ASM, т.к. стек изначально сам проц инитит

Код
uint32_t const __vector_table@".intvec" =
{
    STACK_TOP,
    (uint32_t)main,
            ......
};

а в icf файле
place at start of ROM { section .intvec};
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 22 2008, 11:52
Сообщение #117


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(elcielo @ Dec 24 2007, 08:43) *
I want EWARM 5.11.
plz help me.

Download 30-day evaluation edition, V5.11
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 18 2008, 09:10
Сообщение #118


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Недавно заметил тут такую штуку.
Создаю структуру:

typedef struct _MY_STRUCT
{
BYTE Cmd;
BYTE Rsv;
WORD K1;
DWORD Status;
BYTE K2;
}MY_STRUCT, *pMY_STRUCT;

BYTE TxData[100];
pMY_STRUCT pMyStr = TxData;
-----
делаю вызов функции Func(TxData, sizeof(MY_STRUCT));

И вижу, что sizeof(MY_STRUCT) возвращает не 9 (как написано в книжках по C/C++), а 12!
Понятно, что это делается для выравнивания данных в OЗУ по 4 байтным словам.
Жутко не удобно постоянно для каждой структуры объявлять длину через дерективы препроцессора.
Может можно это отключить, и сделать так, чтобы sizeof() возвращал количество байт?

Сообщение отредактировал Vitaliy_ARM - Mar 18 2008, 09:11


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
KRS
сообщение Mar 18 2008, 09:24
Сообщение #119


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Vitaliy_ARM @ Mar 18 2008, 12:10) *
И вижу, что sizeof(MY_STRUCT) возвращает не 9 (как написано в книжках по C/C++), а 12!
Понятно, что это делается для выравнивания данных в OЗУ по 4 байтным словам.
Жутко не удобно постоянно для каждой структуры объявлять длину через дерективы препроцессора.

Это делается по стандарту, что бы структуры можно было объеденить в массив. (данные внутри одной структуры и так выравнены)
Единтсвенный известный мне способ - это #pragma pack. Но при этом если обращаться к такой структуре через указатель будет большой оверхид потому что компилер не будет знать выравнена она или нет.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Mar 18 2008, 09:34
Сообщение #120


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(KRS @ Mar 18 2008, 12:24) *
Это делается по стандарту, что бы структуры можно было объеденить в массив. (данные внутри одной структуры и так выравнены)
Единтсвенный известный мне способ - это #pragma pack. Но при этом если обращаться к такой структуре через указатель будет большой оверхид потому что компилер не будет знать выравнена она или нет.


Думаю придется обойтись директивами. Не хочется лишний раз использовать #pragma.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

10 страниц V  « < 6 7 8 9 10 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01527 секунд с 7
ELECTRONIX ©2004-2016