Угу В общем в связке sdcc,sdld и силабовская IDE не работает
В программе написал
#pragma codeseg CSEG15bl
кучка функций
К компилятору добавил ключ --codeseg CSEG15bl
Если, как указано у Силабса, в качестве линкера использую sdcc, то указания --codeseg CSEG15bl игнорируются, а указание -b CSEG15bl=0x1c00 объявляются ошибочными
Если же в качестве линкера указываю sdld с соответсвующими ключами, то sdld отрабатывает, а вот программировать IDE ничего не находит.
В общем попробую новую IDE, потом и SDCC. Ну на крайняк попробую бесплатный кейл
Добавление:
Решил, надо было вниметльней документцацию читать (ну и немного подумать). Напишу, может ещё есть такие же не внимательные страдальцы:
В основном файде надо написать #pragma codeseg CSEG (хотя из документации следует, что это подразумевается по умолчанию)
В те файлы, в которых лежат функции, что я хочу положить с какого-то конкретного адреса надо написать #pragma codeseg CSEG14bl (CSEG14bl - это новый сегмент данных) Первая ошибка была - эта прагма работает к целому файлу, а не с того места, где я её поставил.
Далее дорабатывал настройки проекта, что автоматически выставляются в IDE при выборе компилятора SDCC.
В IDE к настройкам компилятора надо добавить --codeseg CSEG14bl --codeseg CSEG (последнее вроде бы подразумевается по умолчанию)
В IDE к настройкам линкера (где так же вызывыается всё тот же sdcc) надо добавить -Wl -bCSEG=0x0000 -Wl -bCSEG14bl=0x1c00 -Wl -bCONST=0x1df0
Вторая ошибка была, что я не ставил ключ -Wl. После = стаят адреса, с которых начинается соответсвующий сегмент.
Ну и бонус обнаружил - для констант предусмотрен свой сегмен CONST, который можно так же засунуть куда по дальше