Цитата
1.Если править memorymap файл из IDE, то после правки ИДЕ вылетает сославшись на внутреннюю ошибку и запускается только если восстановить родной мем-мап для проца (он почему-то усекается до нескольких кб)
Есть такое, побороться так же не удалось. Видимо, глюк самой среды.
Цитата
2.BIN. Если делать не только эльф, то почему-то иногда проект клинит, так что надо создавать новый. А косяк такой : размер бина = 512 или 256 Мб !!! Если делать хекс, то и он кривой хоть и маленький.
Угу. Если программа предназначена для работы из SDRAM и линкеру выставлены соответствующие настройки, то в BIN он пихает весь диапазон изпользованных адресов - от 0х00000000 (векторы) до последнего использованного адреса SDRAM (0х2.......), отсюда и такой размер бинарника. Я обошел эту фичу следующим образом: помещаю в опциях линкера вектора в начальный адрес SDRAM, а при инициализации контролера (после инициализации стеков) копирую область 0х20000000-0х2000003F (вектора и адреса исключений) в SRAM по адресу 0х00000000. Область 0x00000000 0х0000003F я выделил в отдельный сегмент, что бы линкер его не трогал.
Цитата
3.В проект добавляю скрипт загрузчика, в ИДЕ не дает менять тип файла и при отладке периодически ругается что типа не найден объект во второй строке. Лечиться правкой файла проекта руками, путем установки типа файла
Тоже столкнулся и тоже не нашел путей обхода, кроме как ручной правки файла проекта.
Цитата
5.Захотел в SDRAM выделить себе буферок под 10 Мб (ну надо!), ну и чтобы по игротски описал его, как сегмент без конкретного адреса, но с размером. Пока нормально – компилится размещается. Описываю в проге на него ссылку типа extern unsigned int __seg_start__; далее использую это число как адрес начала буфера. И вот тута начинается. Дохожу отладчиком на место присвоения адреса своему указателю и:
a.Подвожу курсор на переменную сегмента – адрес совпадает на 100%
b.А переменной присваивается на 26 меньше, хотя бывают и другие расхождения.
А вот это уже странно. Вообще, это легко обходится созданием указателя сразу в виде массива - uinsigned int pt[1] __attribute__ ((segment ("__seg_start__"))); (могу ошибиться в точном синтаксисе).
Но должен срабатывать и Ваш подход. Можно кусок исходников с инициализацией адреса и присвоением адреса указателю?