XC8/Pic18/MPLABX5.50 -поведение на линкера
Нов проект, съвсем прост-мигалка, стотина байта код .
Никакви указания за линкера - кодът се раполага в най-старшите адреси на флаша. Ако заложа някакви ограничения - граници на РОМа, кодеофсет-
линкерът се подчинява - но пак с тенденции да разполага в старшите адреси на разрешения ром. Като махнах ограниченията - пак го засили към
0xffff. Интересно е и ,че в самото начало се ориентираше към 0x1ffff (mcu-то е със 128кБ).
Друг проект, създаден със сорсове- взети от Codeflow, началният хекс се ориентираше към 0x1000 ( същият Пик-18f87k22, има някакво определение за бут блок с избираем размер 1к или 2к). При опитите с кодеофсет и ограничения - се държеше прилично, но с опити да освободи
колкото може повече адреси между 0 и 0x1000. Премахването на ограниченията върна поведението от началото.
Оригиналнота компилация под Флоукоде също разполага кода от адрес 1000 ( и малко код в началото , адрес 0 - ресет вектор и доста байтове от функцията на прекъсването - може би цялата функция).
В "Properties" на XC8 за двата проекта не виждам нищо , което да задава подобно поведение и съм озадачен.
В папките на XC8 виждам две ексета , eдното pic18cc.exe , предполагам е
същинския тунингован компилатор....който може и да не е много добре тунингован.
Не че е нещо фатално, но ми е странно и ме притеснява. ....
////////
При сорсовете от флоукоде имаше следния проблем
Даваше грешка на първия двоен диез. Oправи се като минах от C99 на С90 и чекнах препроцесорът да работи по правилата на CCS.
Някой може ли да ми разясни кое какво е и защо?
Двойният диез е знак за конкатенация?