|
EWARM 5.10 |
|
|
10 страниц
1 2 3 > »
|
 |
Ответов
(1 - 99)
|
Jun 27 2007, 18:29
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
В новостях на их сайте еще ничего нет, как и на фтп. Я думаю, что это кто-то из ихних веб-дизайнеров сильно поспешил или просто опечатался. P.S. кстати на страничке ИАР ЕВ430 тоже бардак какой-то. Номер версии еще тот же числится (3.42), а в анонсе уже поддержка новых кристаллов указана, которых в текущей версии (3.42) нету. Цитата • Support for new devices: MSP430F2232, MSPF2252, MSPF2272, MSP430F2330, MSPF2350, and MSPF2370, MSP430F2416, MSP430F2417, MSP430F2418, MSP430F2419 MSP430F2616, MSP430F2617 MSP430F2618, MSP430F2619 MSP430F4351, MSP430F4361, MSP430F4371 MSP430FG4250, MSP430FG4260, MSP430FG4270
|
|
|
|
|
Jul 2 2007, 14:08
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(MALLOY2 @ Jun 29 2007, 10:26)  Ну если несчстать 20% прирост производительности (это ихние слова), за счет исправления багов в мемори акселераторе, то там еще добавлено пару регистров в АЦП. Ну так добавить эти регистры в .h .ddf и все. Или я чего то не понял?
|
|
|
|
|
Jul 11 2007, 22:08
|

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

|
Итак, появились и 4.42 и 5.10 версии. 4.42 - честно отдают, а вместо 5.10 подсовывают 4.41A В 5.10 главная изюмина: Код ARM EABI compliance The IAR compiler, assembler, linker and debugger comply with ARM EABI 2.0, the Embedded Application Binary Interface for ARM, based on ELF/DWARF 3.0. The advantage of AEABI compliance is that any such module can be linked with any other AEABI compliant module, even modules provided by other vendors. С 4.42 полет нормальный. 200K проект похудел на 32 байта. Код местами разбух, местами похудел. Надо будет завтра попугаемер собрать и посмотреть.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 12 2007, 15:41
|

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

|
Запустил попугаемер aka DHRYSTONE 1.1 - получил провал на 3% рассмотрение кода показало, что 4.42 не заинлайнил один кусочек по сравнению с 4.41 компилятором. Поднял inline_threshold до 4 вместо 2 попугаи поднялись на 17,5% (77618 в секунду на без малого 60MHz LPC2148, ARM Mode, Flash, MAM=2) по отношению к 4.41. Более чистого эксперимента не делал, поскольку 4.41 уже снес  . День работы на новом - все нормально.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 12 2007, 17:58
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Цитата(zltigo @ Jul 12 2007, 19:41)  Запустил попугаемер aka DHRYSTONE 1.1 ... А где взять aka DHRYSTONE 1.1? подскажите ссылку!
|
|
|
|
|
Jul 12 2007, 18:19
|

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

|
Цитата(lebiga @ Jul 12 2007, 20:58)  подскажите ссылку! Да исходники валяются с середины 80x везде  . В приложении из поставки Keil-а - они на них крутость демонстрируют  P.S. Для сравнения разных компиляторов его лучше не пользовать, ибо этот тест туп и если компилятор хорошо заточен на поиск бессмысленного кода, то он, например, выбрасывает многочисленные strcpy одного и того-же стринга в один и тот-же и получает рекордные попугаи, хотя на реальном коде все не так блестяще. Надо будет, V2.1 запихнуть, да руки как-то не доходят
Сообщение отредактировал zltigo - Jul 12 2007, 20:22
Прикрепленные файлы
DHRY.rar ( 9.11 килобайт )
Кол-во скачиваний: 142
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 13 2007, 08:10
|

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

|
Цитата(bookevg @ Jul 13 2007, 10:36)  По старому... 1. Проверено, обе версии принимают самодельные лицензии. Вопрос 'как' обсуждался неоднократно и настоятельно прошу в этой ветке его больше не обсуждать. 2. Инструментарий, IDE и проекты у 5.10 другие - ставить в отдельную директорою. 3. Ассемблерный синтаксис поменялся сильно - два вагона воплей - надо разбираться 4. Хидеры для чипов переползли в соответствующие директории - давно пора было порядок навести 5. Remarks добавилось изрядно, что радует, правда у меня ввлезли уж совсем мелочные и никак не обходимые, кроме как подавлением, что огорчает  А теперь ОБЛОМЫ  для Evolution Цитата The object files generated by the compiler are in an encrypted form and will only be readable by the IAR ILINK linker. The linker will also read AEABI compliant ELF/DWARF code for linking of legacy and third party code. Другому линкеру не подсунуть  - ЧТО ОЧЕНЬ ОБИДНО! Цитата Compiler assembly list output is disabled. Без комментариев
Сообщение отредактировал zltigo - Jul 13 2007, 09:24
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 13 2007, 10:11
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата Другому линкеру не подсунуть  - ЧТО ОЧЕНЬ ОБИДНО! А какому вы еще линкеру код подсовываете ? я чет всегда думал что линкер с компилятором тесно связан. Код Compiler assembly list output is disabled Это типа теперь не смогу посмотреть что он там на компилил ? это облом большой.
|
|
|
|
|
Jul 13 2007, 12:09
|

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

|
Цитата(SpiritDance @ Jul 13 2007, 14:04)  Ни фига себе. Зачем такая кака? И утилитки нет для конверсии? Ну проект он конветирует автоматом. Ну а в ASM ручками править, впочем, как и "C" исходники. У меня стиль написания совпал с "новым" и исправлений было минимум. А вообще довольно много разных вариантов фич похерили. Читайте "Migration Guide" Цитата(MALLOY2 @ Jul 13 2007, 13:11)  я чет всегда думал что линкер с компилятором тесно связан. Или связан, или нет, если использует унифицированные форматы. В данном случае в 5.1 имеет место быть переход на стандартизированный ARM-ом формат. Это значит совместимость с Keil и свежими GNU. Кстати, насчет линковки - скорее всего они только отладочную информацию шифруют и как следствие линкеры линковать будут.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 13 2007, 14:10
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(zltigo @ Jul 13 2007, 11:10)  1. Проверено, обе версии принимают самодельные лицензии. Вопрос 'как' обсуждался неоднократно и настоятельно прошу в этой ветке его больше не обсуждать. 2. Инструментарий, IDE и проекты у 5.10 другие - ставить в отдельную директорою. 3. Ассемблерный синтаксис поменялся сильно - два вагона воплей - надо разбираться 4. Хидеры для чипов переползли в соответствующие директории - давно пора было порядок навести 5. Remarks добавилось изрядно, что радует, правда у меня ввлезли уж совсем мелочные и никак не обходимые, кроме как подавлением, что огорчает  А теперь ОБЛОМЫ  для Evolution Другому линкеру не подсунуть  - ЧТО ОЧЕНЬ ОБИДНО! Без комментариев  Странно, у меня все четыре чекбокса на вкладке лист доступны. Соответственно есть и *.lst и *.s
|
|
|
|
|
Jul 13 2007, 15:50
|

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

|
Цитата(MALLOY2 @ Jul 13 2007, 14:11)  Код Compiler assembly list output is disabled Это типа теперь не смогу посмотреть что он там на компилил ? это облом большой.  А у меня выдается и листинг и чистый asm файл но вот синтаксис они совсем поменяли  В догонку: Так теперь нет XLINK (универсального для всех чипов) у ARM свой линкер ILINKARM лежит в ARM/bin и вместо xcl файлов теперь icf
|
|
|
|
|
Jul 13 2007, 17:01
|

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

|
Цитата(KRS @ Jul 13 2007, 18:50)  А у меня выдается и листинг и чистый asm файл Подтверждаю - работает. Обманули, значит  Цитата но вот синтаксис они совсем поменяли  Поменяли, в принципе что в лоб, что по лбу. Но! Что-то там еще поломали  Отказывается ассемблировать ранее понимаемый код, причем диагностическое сообщение хоть стой, хоть падай. Поломал голову, но нашел методом тыка. Для желающих потренироваться в расшифровке диагностики - файл в приложении  Цитата Так теперь нет XLINK (универсального для всех чипов) у ARM свой линкер ILINKARM лежит в ARM/bin и вместо xcl файлов теперь icf Ага, и mapfile просто никакой  и что-то я линковочных наворотов имевшихся у xlink пока не найду. Похоже они его наскоро из GNU слепили.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 14 2007, 13:06
|

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

|
Цитата(IgorKossak @ Jul 14 2007, 15:16)  ИАРовцы удивили в очередной раз. На самом деле если не удивили, то порадовали. 1. Компилятор (в прямом смысле этого слова) явно стал генерить шустрее код, похоже, за счет глобальной оптимизации. До более менее объективных оценок производительности еще не добрался  - осваиваю инструмент, но разница заметна почти невооруженным взглядом. 2. Библиотеки ПЕРЕПИСАЛИ! По крайней мере невыносимо тупой IARовский memcpy() ускорился на копировании невыровненного массива с некрасивой длинной в 63 байта почти в четыре раза и стал вровень с писанным на ASM. С остальным иструментарием - все поменяли и он сыроват даже при поверхностном знакомстве  Завязались на binutils и выкинули из линкера в отдельную утилиту ichecksum, но забыли  приложить юниксовый шелл.... Про ASM уже писал - рихтовать надо и отупел он несколько  Свой листинг выбрасыает прямо в stdio - прикольно смотрится компиляция в IDE. IDE я пользовался мало, но пока пользовался - разок уронил и все замеченные мной ранее интерфейсные глючки на месте остались  . Линкер многократно доводил до воппля 'internal error'. В линкере документированы вкусности, но чего-то не удалось даже красиво прилинковать секцию с конца RAM - либо витеевато ругался, либо 'в данной версии не поддерживается'. Обойти, конечно, обошел. При линковке ROM, пока не вынес последнюю секцию из общего списка в отдельный - линковал уже за ней кусок даных для инициализации. И вообще конструция типа Код place in RAM { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK }; не только в вышеупомянутом случае работает неправильно, ибо __section_begin() возвращает для всех болоков один адрес, а в ASM все нормально. Документация на новое плохая  , например, если судить по ней, то ichecksum нужно сразу в мусорник засунуть, я уж было собирался свою писать, но случайно заметил в логе, как она используется изнутри линкера. Однако, чуть было не выбросил вторй раз, если-бы случайно не догадался попробовать для того, что-бы вычесть 1 при указании range прибавить -1  . Но в принципе, уже почти все нюансы (шел от сложных к простым) портирования победил, остались мелочи которые не получиться не могут.
Сообщение отредактировал zltigo - Jul 14 2007, 15:01
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 15 2007, 14:16
|

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

|
В общем с EWARM 5.10 все в порядке. В пределах необходимых для нескольких текущих проектов за выходные дни освоил. Несколько тонких мест в "С" исходниках пришлось вынести под __IAR_SYSTEMS_ICC__ >= 7 (кстати 7 а не 6, как в документации на 5.1 описано). Startup-ы переписаны заново, ASM файлы подогнаны под совместимый вариант, конфигурации линкера естественно совсем другие. Подсчет контрольных сумм и конвертировку в другие форматы теперь делает не линкер, посему добавились инструментов (пользователям IAR IDE теперь придется на Postbuild cmd файл вешать  ). Подсовывать объектики другому линкеру не пробовал - завтра займусь, но GCC и ADS библиотеки линкуются, что очень хорошее подспорье. С ImageCraftV7 что-то не заладилось. Большие проекты (при максимальной оптимизации), как уже писал, чуть чуть уменьшаются по объему, но тестовый проектик в 20K разбух до 24K. Выберу минутку bootloader попробую портировать с минимизацией размера. Dhrystones 2.1 выдал 83544 попугаев против 73088 при компиляции 4.42 это больше 14%.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 15 2007, 21:26
|

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

|
Цитата(KRS @ Jul 15 2007, 21:31)  Получается что лишнии функции выкидываться не будут или надо делать кучу файлов по одной. Естественно при использовании стандартных форматов не выбрасывает. Фича была неплохая, но не общепринятая. Отсутствие ее в общем-то привычно. P.S. Библиотеки, конечно разбухли - bootloader не влез, ибо разбух почти на килобайт при оптимизации по размеру. Весь код примерно на том-же уровне остался (обычно чуть поменьше) но библиотечные функции разбухли. Таже резко пошустревшая memcpy() стала около 190 байтов, вместо нескольких десятков. printf() раза в полтора увеличился. Пришлось писать свои - результат почти 2K экономии. Кстати, у линкера нет доставшего xlink-овского глюка http://electronix.ru/forum/index.php?showt...10&hl=xlink заполняет все под завязку. ichecksum работает хреново  в непонятных случаях ломается на границах ASM и 'С' секций даже если они стык в стык линкуются. Вопит, что содержит неинициализированные области а при попытке ему-же приказать заполнить находит зону стартовый адрес которой на единицу меньше конечного  . Обойти не удалось  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 16 2007, 13:33
|
Группа: Новичок
Сообщений: 12
Регистрация: 4-07-07
Пользователь №: 28 883

|
подскажите , пожалуйста , ссылочку на мигрейшн гид... и кто нибудь может помочь с рихтованием асмовского кода под новую версию ?
|
|
|
|
|
Aug 28 2007, 10:20
|

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

|
Цитата(Kitsok @ Aug 28 2007, 13:08)   Весьма вероятно, что я буду подождать, пока выйдет FreeRTOS c примерами, компилябельными под 5.10  Совершенно неразумно. Если Вы сами отпортировать под 5.10 (а в примерах собственно портировать особо нечего и нюансов просто никаких) не сможете, то дальше будет хуже - будете ждать, пока все кажущиеся Вам нужными исходники не оппортируют?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 28 2007, 10:21
|
Местный
  
Группа: Свой
Сообщений: 256
Регистрация: 4-11-04
Из: Болгария
Пользователь №: 1 050

|
H-JTag 0.4.4 заработал у меня. Попробовал с AT91Sam7S64. Но ест проблем при отладке в асемблер файл когда работаем из флаш. Если в опции дебагера галочка Stack установлена невозможно пошаговое изполнение. Цитата [RDI Error: 148] No more breakpoints left for this type of memory (RAM/ROM) Tue Aug 28 13:08:48 2007: Unable to execute: driver error. а если не установлена такой проблем ест при пошаговой отладки C кода. Такой проблем с Raven-a нет. Но ето не проблем H-JTag-a.
|
|
|
|
|
Aug 28 2007, 20:23
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
zltigo, возвращаясь к вопросу кей гена (просьба не бить)... Поставил 30-тидневную версию 5.10, через месяц работать прекратила. После этого удалил ИАР, все файлы из c:\windows\system32, очистил реестр. Попробовал поставить с новым 30-тидневным ключем - не помогло. Уникряк, после "лечения", убивает ИАР: при загрузке проекта ИАР вылетает с ошибкой (вываливается в отладчик визуал студии). Изначально поставить иар с номером и ключем, который генерирует иарид и иаркг не получилось, т.к. он делает только 06_WIN, а нужен, судя по всему, 12_WIN (пробовал сувать ему 06 - пишет, что ключ не от того продукта). Нужно проект быстрее заканчивать, а тут такое дело...  P.S. Шаманство в реестре, в C:\Program Files\Common Files\IAR Systems и в менеджере лицензий тоже эффекта не доло.
|
|
|
|
|
Aug 28 2007, 20:43
|

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

|
Цитата(Kitsok @ Aug 28 2007, 15:16)  но... нельзя ли просто взять cstartup.s из 5.10 и заменить им cstartup.S79 из 4.xx? Имеется ввиду базовые штатные? Если Вы ранее ими без изменения пользовались, то скорее всего они для такого использования и предназначены  . Я сам на них и не cмотрел, ибо не устраивают совсем. Цитата На первый взгляд я не обнаружил сильных различий. Собственно сам ASM код содержит только несколько изменений при инициализации стеков, остальное правится достаточно очевидно почитывая Migration Guide Цитата Кроме этого, я глянул на .xcf и на .icf и в общем-то, по сути (не по формату, естественно) не обнаружил никаких различий.... Аналогично вышесказанному. Но отличия принципиальные, для реального применения, тем не менее есть  - попробуйте, например, для LPC зарезервировать место под Protect Key, посчитать контрольные суммы, получить адрес конца программы,.... Механически это не переносится, а первое удалось сделать исключительно через заднепроходное отверстие. Цитата(Pasha 111 @ Aug 28 2007, 23:23)  он делает только 06_WIN, а нужен, судя по всему, 12_WIN (пробовал сувать ему 06 - пишет, что ключ не от того продукта). НУ ТАК ИСПРАВЬТЕ ВНУТРИ KEYGEN СТРОЧКУ xx_WIN НА ЛЮБОЙ НУЖНЫЙ WIN И ПОЛУЧИТЕ НУЖНЫЙ KEYGEN.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 28 2007, 21:19
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 6-11-05
Из: Москва
Пользователь №: 10 515

|
Цитата НУ ТАК ИСПРАВЬТЕ ВНУТРИ KEYGEN СТРОЧКУ xx_WIN НА ЛЮБОЙ НУЖНЫЙ WIN И ПОЛУЧИТЕ НУЖНЫЙ KEYGEN. Что значит внутри? Там ведь 2 .exe файла?
|
|
|
|
|
Aug 28 2007, 21:27
|

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

|
Цитата(Pasha 111 @ Aug 29 2007, 00:19)  Там ведь 2 .exe файла? Я понятия не имею о чем Вы говорите, сходите, на FTP, может и возьмите один файл и исправте. Ну поиском попользуйтесь, ну нельзя-же, право каждый раз по появлении очередногоо релиза из пустого в порожнее переливать....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 29 2007, 07:39
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
zltigoВроде вчера удалось скомпилировать и запустить, но при запуске шедулера сразу возникает DataAbort, причем он меня просто вводит в ступор. При создании задач формируются стеки этих задач, соответственно, туда кладется содержимое регистров задачи, это понятно. Первым в стек суется адрес возврата, вторым - содержимое R14 (LR), равное 0xaaaaaaaa. Остальные регистры забиваются тоже чепухой. Понятное дело, после переключения туда (в стек задачи) будут записаны реальные значения. Потом при старте шедулера, выполняется vPortStartFirstTask, который на самом деле запрещает прерывания и вызывает portRESTORE_CONTEXT, коий я приведу тут целиком: Код portRESTORE_CONTEXT MACRO
; Set the LR to the task stack. LDR R1, =pxCurrentTCB LDR R0, [R1] LDR LR, [R0]
; The critical nesting depth is the first item on the stack. ; Load it into the ulCriticalNesting variable. LDR R0, =ulCriticalNesting LDMFD LR!, {R1} STR R1, [R0]
; Get the SPSR from the stack. LDMFD LR!, {R0} MSR SPSR_cxsf, R0
; Restore all system mode registers for the task. LDMFD LR, {R0-R14}^ NOP
; Restore the return address. LDR LR, [LR, #+60]
; And return - correcting the offset in the LR to obtain the ; correct address. SUBS PC, LR, #4
ENDM На строке LDMFD LR, {R0-R14}^ во все регистры записывается соответствующий мусор (оно и правильно, первый запуск), а вот в LR записывается вот то самое 0xaaaaaaaa, которое было записано в стек, а не адрес возврата. Понятно, на LDR LR,[LR, #+60] мы имеем DAbort. При этом в случае с 4.х после выполнения этой инструкции LR просто увеличивается, как ему и положено. Вот такие чудеса.
|
|
|
|
|
Aug 29 2007, 14:58
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(alexander55 @ Aug 29 2007, 13:55)  Не знаю, о чем речь (подозреваю о прикручивании каких-то колес), но судя тексту у Вас pxCurrentTCB не правильно инициализируется где-то выше. Речь о прикручивании FreeRTOS к новой версии Очень верное замечание! Раньше стек выравнивался к 4 байтам, а теперь - к 8. Буду копать, спасибо за наводку!
|
|
|
|
|
Aug 29 2007, 18:03
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Aug 29 2007, 19:44)  Я не знаю, куда Вы там 'закопались', но с портированием ядра FreeRTOS проблем нет. Совсем нет. Тупо за полчаса поверхностного изучения линкера и ассемблера портируется. Поблемы вылезают, но не на банальной демке ядра. Я тоже так подумал, поменял во всех ассемблерных исходниках имена сегментов, подставил стартап-файлы из поставки 5.10 и теперь имею реальный полтергейст с инструкцией LDMIA. Там, где работает: Код ДО SP=0xFEA4 LR=0x34EC 0x34EC-0x3527: 00 00 00 00 01 01 01 01 02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05 06 06 06 06 07 07 07 07 08 08 08 08 09 09 09 09 10 10 10 10 11 11 11 11 12 12 12 12 28 35 00 00 aa aa aa aa
portRESTORE_CONTEXT 000001F4 E8DE7FFF LDMIA LR, {R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,SP,LR}^
ПОСЛЕ SP=0xFEA4 LR=0x34EC В новом компиляторе: Код ДО SP=0x3290 LR=0x40CC 0x40CC-0x412C: 00 00 00 00 01 01 01 01 02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05 06 06 06 06 07 07 07 07 08 08 08 08 09 09 09 09 10 10 10 10 11 11 11 11 12 12 12 12 08 41 00 00 aa aa aa aa
portRESTORE_CONTEXT 0000232C E8DE7FFF LDMIA LR, {R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,SP,LR}^
ПОСЛЕ SP=0x4108 LR=0xAAAAAAAA Я не понимаю, почему так, буду разбираться с режимом процессора.
|
|
|
|
|
Aug 29 2007, 19:07
|

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

|
Цитата(Kitsok @ Aug 29 2007, 21:03)  Я тоже так подумал, поменял во всех ассемблерных исходниках имена сегментов Совсем не обязательно - пусть будут самостоятельным сегментом, никаких проблем. Я вообще ничего не менял во FreeRTOS асмовских исходниках при переходе под 5.10 Цитата подставил стартап-файлы из поставки 5.10 Без понятия, что там 'в поставке' - подправил свой. И линковый скрипт с чистого листа. Цитата Я не понимаю, почему так, буду разбираться с режимом процессора. Я в ARM моде гоняю. Пересобрал в Thumb (при этом ядро стало больше похоже на родное, поскольку пришлось вернутся к штатным CRITICAL_SECTION, ибо мои исключительно под ARM Mode заточены) - естественно, неизменно превосходный результат.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 30 2007, 06:59
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Aug 29 2007, 23:07)  Я в ARM моде гоняю. Пересобрал в Thumb (при этом ядро стало больше похоже на родное, поскольку пришлось вернутся к штатным CRITICAL_SECTION, ибо мои исключительно под ARM Mode заточены) - естественно, неизменно превосходный результат. Я про другие режимы Собственно, проблема обнаружилась в том, что при подходе к main() старые стартапы переводили процессор в supervisor mode, а новые в другой режим. Так что, придется разбираться в стартапах, хоть и не хотелось.
|
|
|
|
|
Aug 31 2007, 07:02
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
В общем, после адаптации старых стартапов к новому компилеру вроде завелось, но как-то странно. Во-первых, пришлось в лоб в startup.s задавать начало памяти, бо раньше (поправьте если не так) можно было пользоваться именами из .xcl, а в новом - фиг, по крайней мере, у меня не получилось. Во-вторых, не знаю почему, но в случае если таблица векторов объявляется не как b <туда-то>, а как ldr pc,[pc,#+24], и в соответствующих местах размещать b или прямо код (в случае с FIQ), то при первом-же прерывании возникает undefined instruction. Подозреваю, что что-то не так с thumb/arm, но разобраться не получилось. В общем, поскольку этот переход затянулся, я откатился на 4.х. На всякий случай, вот полу-рабочие стартапы и конфиг. comments are welcome
Прикрепленные файлы
new.rar ( 5.21 килобайт )
Кол-во скачиваний: 53
|
|
|
|
|
Aug 31 2007, 08:04
|

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

|
Цитата(Kitsok @ Aug 31 2007, 10:02)  Во-первых... Во-первых я свои startup и скрипрт выкладывал, причем было-стало и рабочие. Цитата а в новом - фиг, по крайней мере, у меня не получилось. Нет, конечно. Цитата случае если таблица векторов объявляется не как b <туда-то>, а как.. Нет, конечно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 31 2007, 09:26
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Нашел 2 голюка, прошу проверить  , глюки не критичны. 1) у меня свой в проекте файл х.icf, если этот файл править из визарда в среде (я првил START ROM)и нажать save, то исчезает точка с запятой в конце файла что приводит к ошибке  , потом ручками ставить надо 2) второй глюк связан с симулятором. У меня стратап состоит из 2 файлов, в первом инициализация стеков, памяти и переход на майн, во втором вектора прерываний и обработчики прерываний. Привожу немного кода первого файла. Всякие дефайны выкинул для экономии места. Код MODULE ?program_start SECTION IRQ_STACK:DATA:NOROOT(3) SECTION FIQ_STACK:DATA:NOROOT(3) SECTION UND_STACK:DATA:NOROOT(3) SECTION ABT_STACK:DATA:NOROOT(3) SECTION SVC_STACK:DATA:NOROOT(3) SECTION CSTACK:DATA:NOROOT(3) SECTION .text:CODE:NOROOT(2) PUBLIC __iar_program_start EXTERN ?main CODE32
__iar_program_start: NOP ; execute some instructions to access CPU registers after wake NOP ; up from Reset, while waiting for OSC stabilization NOP NOP NOP NOP NOP NOP NOP ; --- Initialize Stack pointer registers ; Enter each mode in turn and set up the stack pointer MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit ; No interrupts LDR SP, =SFE(FIQ_STACK)
MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit ; No interrupts LDR SP, = SFE(IRQ_STACK)
MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit ; No interrupts LDR SP, = SFE(ABT_STACK) MSR CPSR_c, #Mode_UND|I_Bit|F_Bit ; No interrupts LDR SP, = SFE(UND_STACK)
MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit ; No interrupts LDR SP, = SFE(SVC_STACK) ; --- Set bits 17-18 (DTCM/ITCM order bits) of the Core Configuration Control Register MOV r0, #0x60000 MCR p15,0x1,r0,c15,c1,0 ; --- Now change to USR/SYS mode and set up User mode stack, MSR CPSR_c, #Mode_SYS ; IRQs & FIQs are now enabled LDR SP, = SFE(CSTACK) ; --- Now enter the C code B ?main ; Note : use B not BL, because an application will ; never return this way LTORG END 2 файл с векторами Код IMPORT __iar_program_start SECTION .intvec:CODE(2) ;<- эта секция расположена с 0 адреса CODE32 ;******************************************************************************* ; Import exception handlers ;******************************************************************************* IMPORT Undefined_Handler IMPORT SWI_Handler IMPORT Prefetch_Handler IMPORT Abort_Handler IMPORT FIQ_Handler ;******************************************************************************* ; Export Peripherals IRQ handlers table address ;*******************************************************************************
;******************************************************************************* ; Exception vectors ;*******************************************************************************
LDR PC, Reset_Addr LDR PC, Undefined_Addr LDR PC, SWI_Addr LDR PC, Prefetch_Addr LDR PC, Abort_Addr NOP ; Reserved vector LDR PC, IRQ_Addr LDR PC, FIQ_Addr ;******************************************************************************* ; Exception handlers address table ;******************************************************************************* Reset_Addr DCD __iar_program_start Undefined_Addr DCD UndefinedHandler SWI_Addr DCD SWIHandler Prefetch_Addr DCD PrefetchAbortHandler Abort_Addr DCD DataAbortHandler DCD 0 ; Reserved vector IRQ_Addr DCD IRQHandler FIQ_Addr DCD FIQ_Handler ; Branch to fiq_handler
LTORG
END Глюк заключается в метке __iar_program_start, если ее переименовать на __my_start (в обеих файлах естественно  ), то в симуляторе всь код игнорируется и переход делается на __iar_program_start, правда откуда он берется загадка, но если посмотрить листинг с 0 адреса то все нормально, стоит переход на мой стартап, при загрузке проца все нормально работает, а в симуляторе код игнорируется после чего отладчик начинает ругаться что стек начинается с нулевого адреса и т.д. то есть симулятор не выполнил мой сартап код. Вот такая фишка, а может где я чего не понял ?
|
|
|
|
|
Aug 31 2007, 09:36
|

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

|
Цитата(MALLOY2 @ Aug 31 2007, 12:26)  Глюк заключается в метке __iar_program_start Это типа не баг,это фича  у них такая появилась - имя, блин, зарезервировали... Тоже наступил, потом уже документ прочитал. Цитата правда откуда он берется загадка... Линкуется 'готовый'. По поводу первого бага - не скажу, визардами никогда не пользуюсь - своих ошибок, если надо, сделаю
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 31 2007, 09:55
|
Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136

|
Цитата(zltigo @ Aug 31 2007, 12:04)  Нет, конечно. Нет - нельзя пользоваться теперь, нельзя было пользоваться раньше, неправильно задавать начало-конец памяти напрямую в startup.s? Цитата Нет, конечно. Нет - это не связано с переходами между thumb и arm?
|
|
|
|
|
Aug 31 2007, 10:05
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата По поводу первого бага - не скажу, визардами никогда не пользуюсь - своих ошибок, если надо, сделаю я тоже не пользуюсь, но так как линкер порубали и править теперь там толком нечего, решил визарт попробывать и вот грабли  . Еще блин потратил 2 дня что бы прилинковать 3 бинарных файла к проэкту, раскажу мож кому пригодится  . В версии 4.х в линк файле можно было задать такую строку Код --image_input= "Путь к файлу", SYMBOL, SEGMENT Сейчас такую фичу естесно не принимает, выход вставлять эту строку в Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды.
|
|
|
|
|
Aug 31 2007, 10:19
|

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

|
Цитата(MALLOY2 @ Aug 31 2007, 13:05)  но так как линкер порубали и править теперь там толком нечего Ну Вы не правы - линкер вполне управляем и синтаксис приятнее (правда кое-что из документированного у меня не сработало  ) и не хуже прежднего, ну разве только некоторые, в общем-то несвойственные линкеру функциии, теперь binutils и другие приблуды выполняют. Цитата Сейчас такую фичу естесно не принимает, выход вставлять эту строку в Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды. ну и куда их wizard дальше вставляет?  - в тот-же скрипт. Ну а вообще правильнее пользовать абсолютно переносимый вариант с конвертацией в массив с последующей компиляцией и линковкой в нужное место.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 31 2007, 10:56
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата ну и куда их wizard дальше вставляет? - в тот-же скрипт. нет он передает командной строкой  сам скрип не подерживает такой фичи, хотя должна быть команда INCBIN помоему так кличется но м мануале гдето читал что она не потдержана. Цитата Ну а вообще правильнее пользовать абсолютно переносимый вариант с конвертацией в массив с последующей компиляцией и линковкой в нужное место. да както файлы прошивок FPGA и DSP не красиво выглядят в массивах учитывая их размер  да и время забирает это преобразование....
|
|
|
|
|
Sep 3 2007, 06:05
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(starmos @ Sep 1 2007, 13:07)  Подскажите, как в IAR узнать время работы участка кода? В машинных циклах или тактах синхронизации. Не могу найти и всё. Туплю, что ли. У меня EWARM 5. В Keil это есть в EWA никогда не видел. Цитата(MALLOY2 @ Aug 31 2007, 14:05)  Сейчас такую фичу естесно не принимает, выход вставлять эту строку в Project -> Options -> Linker -> Extra Option, снимаем галочку и вставляем подобные команды. У меня Linker выругался, когда я ввел туда некорректные значения -Z(CODE)... -Z(DATA)... Позже я разобрался с этим вопросом. Но по ходу дела нашел файлы с расширением .icf (подключаюся на основной странице конфигурации Linker) и там путем тупого редактирования все делается попроще, на мой взляд. В примерах к 5.10 есть образцы, на что ссылается и Migration Guide.
|
|
|
|
|
Sep 3 2007, 07:54
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата Подскажите, как в IAR узнать время работы участка кода? В машинных циклах или тактах синхронизации. Не могу найти и всё. Туплю, что ли. У меня EWARM 5. В иар в дебагере есть профайлер, view -> profiling, но в его точности у меня есть сомнения, а если еще им пользоваться не в симуляторе, а через jtag, так это вобще извращение. Лучший способ это таймером, к примеру так Код unsigned int start, stop, overhead; start = start_timer(); /* измерение времени запуска*/ stop = stop_timer(); /* таймера */ overhead = stop − start; start = start_timer(); //вызов функции для которой делается измерение stop = stop_timer(); printf(”cycles: %ld\n”,(unsigned long)(stop − start – overhead));
|
|
|
|
|
Sep 5 2007, 20:27
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата Спасибо за помощь. Но я тоже нашел. В симуляторе, Registers - CPU Registers - CYCLECOUNTER. Только нестоит забывать что этот "CYCLECOUNTER" на самом деле "COMANDCOUNTER" то есть счетчик команд, и с циклами (точнее с временем выполнения никак не связан), а это значит что толку от него никакого. Цитата Я подозреваю компоновщик, но как проверить? Если не вериш своим глазам, точнее тому что написал в линкере, тогда включи генерацию map файла и посмотрю что где лежит. Цитата Цитата (starmos @ Sep 5 2007, 15:11) Софт отлажен, шъётся нормально - не работает. P0.14 куда подтянут? еще добавлю, по адресу 0x0000 0014 правельная контрольная сумма стоит ? P.S. может я что путаю и в 22хх уже нету этой заморочки.
|
|
|
|
|
Sep 6 2007, 03:50
|
Частый гость
 
Группа: Свой
Сообщений: 174
Регистрация: 4-10-04
Из: Челябинск
Пользователь №: 769

|
P0.14 подтянут куда надо  Я уже проверил. Контрольная сумма правильная, считал из памяти и проверил. Интересную вещь обнаружил, но ещё не осмыслил. Программа запускается из утилиты LPC 2000 Flash Utility, там есть Flash Buffer, а там кнопка Run from Address. Так вот этой кнопкой запускается, а сбросом нет. PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling.
|
|
|
|
|
Sep 6 2007, 04:37
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(starmos @ Sep 6 2007, 07:50)  P0.14 подтянут куда надо  Я уже проверил. Контрольная сумма правильная, считал из памяти и проверил. Интересную вещь обнаружил, но ещё не осмыслил. Программа запускается из утилиты LPC 2000 Flash Utility, там есть Flash Buffer, а там кнопка Run from Address. Так вот этой кнопкой запускается, а сбросом нет. PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling. Тут есть такой интересный момент. Утилита Philips программирования ISP сама счтает дополнительный код и подставляет в 0x14. Для корректного подсчета надо, чтобы там был 0 (иначе облом).
|
|
|
|
|
Sep 6 2007, 05:46
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата PS. CYCLECOUNTER - счётчик циклов именно. Значения совпадают с view -> profiling. А вы запишите в порт значение 3 раза подряд и посмотрите сколько циклов покажет  , он покажет 3. P.S. считать циклы в ядрах с конвеером, да еще когда куча перефирии работающей на разной частоте проктически невозможно, слишком много всяких параметров надо вводить в симулятор.
|
|
|
|
|
Sep 21 2007, 16:27
|

Участник

Группа: Свой
Сообщений: 70
Регистрация: 22-06-04
Из: Москва
Пользователь №: 109

|
Цитата Интересно, а чем Вас Hex или mot не устраивают (они получаются Converter и содержат информацию о размещении)? Насколько я понял для SAM-BA нужен .bin, можно наверное программировать и по другому, но для начала попробую на SAM-BA. Цитата Postbuild опишите в проекте. Спасибо попробую разобраться!
|
|
|
|
|
Sep 21 2007, 18:21
|

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

|
Цитата(Vict59 @ Sep 21 2007, 20:36)  работает, а когда пробую записать Post-build Command line: $PROJ_DIR$\Release\Exe\objcopy.exe -O binary -S file.out file.bin - Для начала кокого-то путь objcjpy зачем-то указан и причем явно не правильно - А что проект называется 'file'  ? Цитата Выбрасывает ошибку. Видимо все-таки я не врубаюсь.... :-( Немедленно найдите  , куда он ее выбросил и разберитесь на что жалуется....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 21 2007, 19:37
|

Участник

Группа: Свой
Сообщений: 70
Регистрация: 22-06-04
Из: Москва
Пользователь №: 109

|
Цитата - Для начала кокого-то путь objcjpy зачем-то указан и причем явно не правильно Точно! Ошибся! Цитата - А что проект называется 'file' file - это файл, который я хочу превратить в .bin Цитата Немедленно найдите , куда он ее выбросил и разберитесь на что жалуется.... Куда он ее кинул я пока не разобрался, но все-таки в Post-build Command line заработала строка: $TOOLKIT_DIR$\bin\objcopy.exe -O binary -S $PROJ_DIR$\Release\Exe\file.out $PROJ_DIR$\Release\Exe\file.bin СПАСИБО ЗА ПОДДЕРЖКУ!
|
|
|
|
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|