BSACPLD 9 21 декабря, 2019 Опубликовано 21 декабря, 2019 · Жалоба Коллеги, нужна ваша помощь. Пишу код под PicoRV32 и столкнулся со следующей проблемой. Если компилировать проект под ядро RV32IM, то все работает. Если включить RV32IMC (compressed instruction set), то при выполнении программа падает из-за того, что процессору требуется код выравненный по 4 байтам, а IAR выравнивает по 2 байтам. Можно ли настроить IAR так чтобы он выравнивал все инструкции по 4 байтам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 21 декабря, 2019 Опубликовано 21 декабря, 2019 · Жалоба есть #pragma pack но это больше относится к данным Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 21 декабря, 2019 Опубликовано 21 декабря, 2019 (изменено) · Жалоба ALIGHNROM 2 ? Изменено 21 декабря, 2019 пользователем Obam степенью двойки обшибся Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 22 декабря, 2019 Опубликовано 22 декабря, 2019 · Жалоба 18 hours ago, Zeal0t said: есть #pragma pack но это больше относится к данным Это только к данным. 18 hours ago, Obam said: ALIGHNROM 2 ? Линкер ругается: Error[Li005]: no definition for "ALIGHNROM 2" [referenced from <internal module>] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 22 декабря, 2019 Опубликовано 22 декабря, 2019 · Жалоба Виноват: во-первЫх, ALIGN; во-вторых, или ALIGNRAM, а ALIGNROM нету как у аэрэма :-( Секцию с кодом в файле конфигурации линкера (.icf) назначить с требуемым выравниванием (with alignment). А команды-то сами 2х-байтные? Эт тогда между командами дырки (по 2 байта) будут? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 22 декабря, 2019 Опубликовано 22 декабря, 2019 · Жалоба Команды 2 или 4 байта в зависимости от типа команды. Можно пример *.icf для линкера? Мне нужно чтобы линкер выравнивал весь код. И startup и остальную программу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 23 декабря, 2019 Опубликовано 23 декабря, 2019 · Жалоба Документ DRISCV-2, т.е. IAR С/С++ Development Guide, стр. 80, а вторая часть со стр. 373 - must read. (черти иаровские для всех архитектур одно и то же делают ;-) ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 24 декабря, 2019 Опубликовано 24 декабря, 2019 · Жалоба Прочитал, но так и не понял, как прописать выравнивание для startup кода :( Для RAM понятно. Там выравнивание задается при объявлении области памяти через define. А как это сделать для startup? Мы же его не через define задаем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 24 декабря, 2019 Опубликовано 24 декабря, 2019 · Жалоба В настройках линкера заказать создание .map-файла, откуда узнать, куда, в какую секцию попадает стартап (если не можете принудительно приказать ликеру куда размещать стартап), а после задать выравнивание этой секции. Вот как-то так... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться