МИЦРОЦХИП логоМПЛАБ® КСЦ8 Ц компајлер верзија 2.41 Напомене о издању за АВР® МЦУ
Упутство за употребу

Софтвер за развој компајлера МПЛАБ КСЦ8 Ц

ОВАЈ ДОКУМЕНТ САДРЖИ ВАЖНЕ ИНФОРМАЦИЈЕ КОЈЕ СЕ ОДНОСЕ НА МПЛАБ КСЦ8 Ц КОМПИЛАТОР КАДА ЦИЉАТЕ МИЦРОЦХИП АВР УРЕЂАЈЕ.
МОЛИМ ВАС ПРОЧИТАЈТЕ ГА ПРИЈЕ ПОКРЕТАЊА ОВАЈ СОФТВЕР. ПОГЛЕДАЈТЕ НАПОМЕНЕ О ИЗДАВАЊУ МПЛАБ КСЦ8 Ц КОМПИЛАТОРА ЗА ПИЦ ДОКУМЕНТ АКО КОРИСТИТЕ КОМПИЛЕР ЗА 8-БИТНЕ ПИЦ УРЕЂАЈЕ.

Готовоview

1.1. Увод
Ово издање Мицроцхип МПЛАБ® КСЦ8 Ц компајлера садржи неколико нових функција и исправки грешака.
1.2. Датум израде
Званични датум израде ове верзије компајлера је 8. фебруар 2023.
1.3. Претходна верзија
Претходна верзија МПЛАБ КСЦ8 Ц компајлера била је 2.40 направљена 3. јула 2022.
1.4. Приручник за функционалну безбедност
Приручник за функционалну безбедност за компајлере МПЛАБ КСЦ доступан је у пакету документације када купите лиценцу за функционалну безбедност.
1.5. Лиценце и верзије компоненти
МПЛАБ КСЦ8 Ц компајлер за АВР МЦУ алате је написан и дистрибуиран под ГНУ општом јавном лиценцом (ГПЛ) што значи да се његов изворни код слободно дистрибуира и доступан јавности.
Изворни код за алате под ГНУ ГПЛ може се преузети одвојено од Мицроцхип-а webсајту. Можете да прочитате ГНУ ГПЛ у датотеци под називом која се налази у поддиректоријуму вашег директоријума лиценце.ткт авр/доц. Општа дискусија о принципима на којима се заснива ГПЛ може се наћи овде.
Код подршке обезбеђен за датотеке заглавља, скрипте повезивача и библиотеке времена извршавања су власнички код и нису покривени ГПЛ-ом.
Овај компајлер је имплементација ГЦЦ верзије 5.4.0, бинутилс верзије 2.26 и користи авр-либц верзију 2.0.0.
1.6. Системски захтеви
МПЛАБ КСЦ8 Ц компајлер и софтвер за лиценцирање који користи доступни су за различите оперативне системе, укључујући 64-битне верзије следећег: Професионална издања Мицрософт® Виндовс® 10; Убунту® 18.04; и мацОС® 10.15.5. Бинарне датотеке за Виндовс су потписане кодом. Бинарне датотеке за мацОС су потписане кодом и оверене код нотара. МПЛАБ КСЦ Нетворк Лиценсе Сервер је доступан за различите 64-битне оперативне системе, укључујући Мицрософт Виндовс 10 и новије; Убунту 18.04 и новији; или мацОС 10.15 и новији. Сервер такође може да ради на разним другим оперативним системима укључујући Виндовс Сервер, Линук дистрибуције, као што су Орацле® Ентерприсе Линук® и Ред Хате Ентерприсе Линук, као и старије верзије подржаних оперативних система. Међутим, МПЛАБ КСЦ Нетворк Лиценсе Сервер није тестиран на овим оперативним системима. МПЛАБ КСЦ мрежни сервер лиценци се може покренути на виртуелним машинама подржаног ОС-а користећи лиценцу виртуелне машине за мрежне лиценце (СВ006021-ВМ). Све 32-битне верзије МПЛАБ КСЦ мрежног сервера се укидају почевши од верзије 3.00.
Подржани уређаји
Овај компајлер подржава све доступне 8-битне АВР МЦУ уређаје у тренутку издавања. Погледајте (у директоријуму компајлера) листу свих подржаних уређаја. Ове датотеке такође наводе
авр_цхипинфо.хтмл подешавања битова конфигурације документа за сваки уређај.

1.7. Издања и надоградње лиценце
МПЛАБ КСЦ8 компајлер се може активирати као лиценцирани (ПРО) или нелиценцирани (бесплатни) производ. Морате да купите кључ за активацију да бисте лиценцирали свој компајлер. Лиценца омогућава виши ниво оптимизације у поређењу са бесплатним производом. Нелиценцирани компајлер може радити неограничено без лиценце. Компајлер МПЛАБ КСЦ8 Фунцтионал Сафети мора бити активиран уз лиценцу за функционалну безбедност купљену од Мицроцхипа. Компајлер неће радити без ове лиценце. Када се активира, можете изабрати било који ниво оптимизације и користити све функције компајлера. Ово издање МПЛАБ КСЦ компајлера функционалне безбедности подржава лиценцу мрежног сервера.
Погледајте документ Инсталирање и лиценцирање МПЛАБ КСЦ Ц компајлера (ДС50002059) за информације о типовима лиценци и инсталацији компајлера са лиценцом.

1.8. Инсталација и активација
Такође погледајте одељке Проблеми и ограничења миграције за важне информације о најновијем менаџеру лиценци укљученом у овај компајлер.
Ако користите МПЛАБ ИДЕ, обавезно инсталирајте најновију МПЛАБ Кс ИДЕ верзију 5.0 или новију пре инсталирања овог алата. Затворите ИДЕ пре инсталирања компајлера. Покрените (Виндовс), (Линук) или (мацОС) .еке .рун .апп апликацију за инсталацију компајлера, нпр. и пратите упутства на екрану. КСЦ8-1.00.11403-виндовс.еке Препоручује се подразумевани инсталациони директоријум. Ако користите Линук, морате да инсталирате компајлер користећи терминал и са роот налога. Инсталирајте помоћу мацОС налога са администраторским привилегијама.
Активација се сада врши одвојено од инсталације. Погледајте документ Лиценсе Манагер за МПЛАБ® КСЦ Ц компајлере (ДС52059) за више информација.
Ако одлучите да покренете компајлер под лиценцом за процену, сада ћете добити упозорење током компилације када будете у року од 14 дана од краја периода евалуације. Исто упозорење се издаје ако сте у року од 14 дана од краја ваше ХПА претплате.
КСЦ Нетворк Лиценсе Сервер је засебан инсталатер и није укључен у инсталациони програм компајлера за једног корисника.
КСЦ Лиценсе Манагер сада подржава роминг плутајућих мрежних лиценци. Намењена корисницима мобилних уређаја, ова функција омогућава да се fiлирајућа лиценца на кратко искључи са мреже. Користећи ову функцију, можете прекинути везу са мрежом и даље користити свој МПЛАБ КСЦ компајлер. Више о овој функцији потражите у фасцикли доц КСЦЛМ инсталације.
МПЛАБ Кс ИДЕ укључује прозор Лиценце (Алатке > Лиценце) за визуелно управљање ромингом.

1.8.1. Решавање проблема са инсталацијом
Ако наиђете на потешкоће при инсталацији компајлера под било којим од оперативниһ система Виндовс, покушајте са следећим сугестијама.
Покрените инсталацију као администратор.
Подесите дозволе апликације за инсталацију на „Пуна контрола“. (Кликните десним тастером миша на датотеку, изаберите Својства, картицу Безбедност, изаберите корисника, уредите.)
Поставите дозволе привремене фасцикле на „Пуна контрола“.
Да бисте одредили локацију привремене фасцикле, откуцајте %темп% у команду Покрени (тастер са логотипом Виндовс + Р).
Ово ће отворити дијалог истраживача датотека који приказује тај директоријум и омогућиће вам да одредите путању до тог директоријума.
1.9. Документација компајлера
Кориснички водичи компајлера могу се отворити са ХТМЛ странице која се отвара у вашем претраживачу када кликнете на плаво дугме помоћи на МПЛАБ Кс ИДЕ контролној табли, као што је приказано на снимку екрана.

Ако градите за 8-битне АВР циљеве, Упутство за употребу компајлера МПЛАБ® КСЦ8 Ц за АВР® МЦУ садржи информације о оним опцијама и карактеристикама компајлера које су применљиве на ову архитектуру.

Софтвер за развој компајлера МИЦРОЦХИП МПЛАБ КСЦ8 Ц -

1.10.Цустомер Суппорт
Мицроцхип поздравља извештаје о грешкама, сугестије или коментаре у вези са овом верзијом компајлера. Молимо вас да све извештаје о грешкама или захтеве за функције упутите преко система подршке.

Ажурирања документације

За онлајн и ажурне верзије МПЛАБ КСЦ8 документације, посетите Мицроцхипову онлајн техничку документацију webсајту. Нова или ажурирана АВР документација у овом издању:

  • Упутство за коришћење МПЛАБ® КСЦ8 Ц компајлера за АВР® МЦУ (ревизија Г)
  • АВР® ГНУ Тоолцхаин на МПЛАБ® КСЦ8 водич за миграцију (ревизија А)
  • Хекмате упутство за употребу (ревизија Б)

Водич за миграцију АВР® ГНУ алата на МПЛАБ® КСЦ8 описује промене у изворном коду и опције изградње које би могле бити потребне ако одлучите да мигрирате пројекат заснован на Ц са АВР 8-битног ГНУ ланца алата на Мицроцхип МПЛАБ КСЦ8 Ц компајлер. Референтни водич за обједињену стандардну библиотеку Мицроцхип описује понашање и интерфејс за функције дефинисане Мицроцхип Унифиед Стандард Либрари, као и намеравану употребу типова библиотека и макроа. Неке од ових информација су раније биле садржане у Упутству за употребу компајлера МПЛАБ® КСЦ8 Ц за АВР® МЦУ. Информације о библиотеци специфичне за уређај су и даље садржане у овом водичу за компајлер.
Ако тек почињете са 8-битним уређајима и МПЛАБ КСЦ8 Ц компајлером, МПЛАБ® КСЦ8 Кориснички водич за уграђене инжењере – АВР® МЦУ (ДС50003108) садржи информације о постављању пројеката у МПЛАБ Кс ИДЕ и писању кода за ваш први МПЛАБ КСЦ8 Ц пројекат. Овај водич је сада дистрибуиран са компајлером.
Упутство за употребу Һекмате-а је намењено онима који користе Һекмате као самосталну апликацију.

Шта је ново

Следе нове функције АВР циља које компајлер сада подржава. Број верзије у поднасловима означава прву верзију компајлера која подржава функције које следе.
3.1. Верзија 2.41
Подршка за покретање система (КСЦ8-3053) Компајлер ће поставити садржај било које секције са префиксом ат.боотров адресе 0к860000 у ХЕКС датотеку. Ови одељци се користе за БООТРОВ меморију, која је дизајнирана за складиштење кључева и других безбедних информација које би требало да буду доступне само покретачу.

Елиминација редундантног повратка (КСЦ8-3048) Компајлер ће сада елиминисати сувишне инструкције у рет функцијама са скоком на реп када се користе прилагођене скрипте повезивача. Ово је слична оптимизација оној која је извршена раније, али се сада изводи на свим одељцима без родитеља, чак и ако се користи прилагођена скрипта повезивача и није у игри најбоља шема алокације. Промена типа времена (КСЦ8-2982, 2932) Тип стандардне библиотеке Ц99 је промењен из тиме_т у тип, што даје побољшања величине кода у неким дугим дугим функцијама везаним за време, као што је нпр. унсигнед лонг мктиме()
Нев ноп (КСЦ8-2946, 2945) Макро је додат. Овај макро умеће но-НОП() ноп упутство за рад у излаз.
Ажурирање на КСЦЛМ (КСЦ8-2944) Менаџер лиценци који се користи са компајлером је ажуриран и сада боље реагује када проверава детаље лиценце компајлера.
Trampподређени позиви (КСЦ8-2760) Компајлер сада може да изврши замену дугих инструкција позива са краћим релативним позивима када би релативни облици инструкција нормално били ван домета њиховог одредишта. У овој ситуацији, компајлер ће покушати да замени инструкцијама да позове рцалл инструкцију која ће 'трampолине' извршење на тражену адресу, нпрampле: јмп
рцалл трamp_фоо ;је био позив фоо
...
рцалл трamp_фоо
...
tramp_фоо:
јмп фоо

Ову оптимизацију, заједно са сличним оптимизацијама тока програма, контролише опција -мрелак.

3.2. Верзија 2.40
Подршка за нове уређаје је сада доступна за следеће АВР делове: АТ90ПВМ3, АВР16ДД14, АВР16ДД20, АВР16ДД28, АВР16ДД32, АВР32ДД14, АВР32ДД20, АВР32ДД28, АВР32ДД32, АВР64ЕА28, АВР64ЕА32, АВРЕА64ЕАВР и АВР48ЕАXNUMXЕАВР.
Побољшана процедурална апстракција Алат за оптимизацију процедуралне апстракције (ПА) је побољшан тако да код који садржи инструкцију за позив функције (/) може да се наведе. Ово ће се десити само позивом рцалл ако се стек не користи за прослеђивање аргумената нити за добијање повратне вредности из функције. Стек се користи када се позива функција са листом променљивих аргумената или када се позива функција која узима више аргумената него што има регистара одређених за ову сврху. Ова функција се може онемогућити коришћењем опције, или процедурална апстракција може бити потпуно онемогућена за објектну датотеку или функцију коришћењем - и, респективно, или коришћењем атрибута (специфиер) селективно са функцијама.
мно-па-оутлине-цаллс -мно-па-он-file -мно-па-он-фунцтион нопа Макро покривања кода Компајлер сада дефинише макро ако је наведена важећа опција __нопа __ЦОДЕЦОВ -мцодецов.
Опција резервисања меморије Управљачки програм ће сада прихватити опцију кц8-цц -мресерве=спаце@старт:енд када гради за АВР циљеве. Ова опција резервише специфицирани меморијски опсег у меморијском простору података или програма, спречавајући линкер да попуни код или објекте у овој области. Паметнији паметни ИО Учињено је неколико побољшања у функцијама Смарт ИО, укључујући општа подешавања кода принтф језгра, третирање %н спецификације конверзије као независне варијанте, повезивање у варарг поп рутинама на захтев, коришћење краћих типова података где је то могуће за руковање Аргументи ИО функције и факторинг уобичајеног кода у ширини поља и прецизном руковању. Ово може резултирати значајном уштедом кода и података, као и повећањем брзине извршавања ИО-а.

3.3. Верзија 2.39 (издање функционалне безбедности)
Лиценца мрежног сервера Ово издање компајлера за функционалну безбедност МПЛАБ КСЦ8 подржава лиценцу мрежног сервера.
3.4. Верзија 2.36
Ниједан.

3.5. Верзија 2.35
Подршка за нове уређаје Подршка је доступна за следеће АВР делове: АТТИНИ3224, АТТИНИ3226, АТТИНИ3227, АВР64ДД14, АВР64ДД20, АВР64ДД28 и АВР64ДД32.
Побољшано пребацивање контекста Нова опција -мцалл-иср-прологуес мења начин на који функције прекида чувају регистре при уласку и како се ти регистри враћају када се рутина прекида заврши. Ради на сличан начин као опција -мцалл-прологуес, али утиче само на функције прекида (ИСР).
Још побољшано пребацивање контекста Нова опција -мгас-иср-прологуес контролише код за пребацивање контекста генерисан за мале рутине сервиса прекида. Када је омогућена, ова функција ће натерати асемблер да скенира ИСР за коришћење регистра и да сачува ове коришћене регистре само ако је потребно.
Конфигурабилно флеш мапирање Неки уређаји у породици АВР ДА и АВР ДБ имају СФР (нпр. ФЛМАП) који одређује који одељак програмске меморије од 32к ће бити мапиран у меморију података. Нова опција – мцонст-дата-ин-цонфиг-маппед-прогмем може се користити да би повезивач поставио све податке квалификоване за конст у један одељак од 32к и аутоматски иницијализовао релевантни СФР регистар како би се осигурало да су ови подаци мапирани у меморију података простор, где ће му се ефикасније приступати.
Мицроцхип Унифиед Стандард Либрариес Сви МПЛАБ КСЦ компајлери ће делити Мицроцхип Унифиед Стандард Либрари, која је сада доступна уз ово издање МПЛАБ КСЦ8. Упутство за употребу компајлера МПЛА# КСЦ8 Ц за АВО МЦУ више не укључује документацију за ове стандардне функције. Ове информације се сада могу наћи у Референтном водичу за обједињену стандардну библиотеку Мицроцхип-а. Имајте на уму да неке функције које је претходно дефинисао авр-либц више нису доступне. (Погледајте Лила функционалност.)
Смарт И0 Као део нових обједињених библиотека, функције И0 у породицама принтф и сцанф сада се генеришу по мери за сваку верзију, на основу начина на који се ове функције користе у програму. Ово може значајно смањити ресурсе које користи програм.
Опција Смарт ИЦИ помоћи Приликом анализирања позива паметних И0 функција (као што су принт ф () или сцанф ()), компајлер не може увек да одреди из стринга формата или да закључи из аргумената оне спецификације конверзије које захтева позив. Раније, компајлер увек не би правио никакве претпоставке и обезбедио да је 10 потпуно функционалних функција повезано у коначну слику програма. Додата је нова опција – мсмарт-ио-формат=фмт тако да компајлер уместо тога може да буде обавештен од стране корисника о спецификацијама конверзије које користе паметне И0 функције чија је употреба двосмислена, спречавајући повезивање претерано дугих 10 рутина. (Погледајте опцију смарт-ио-формат за више детаља.)
Постављање прилагођених секција Раније је опција -В1, –сецтион-старт постављала наведени одељак на тражену адресу када је скрипта повезивача дефинисала излазни одељак са истим именом. Када то није био случај, одељак је постављен на адресу коју је изабрао линкер и опција је у суштини занемарена. Сада ће опција бити поштована за све прилагођене одељке, чак и ако скрипта повезивача не дефинише одељак. Имајте на уму, међутим, да за стандардне одељке, као што је . текст, . бсс или . података, алокатор који најбоље одговара и даље ће имати потпуну контролу над њиховим постављањем, а опција неће имати ефекта. Користите опцију -тон, -Тсецтион=аддр, као што је описано у корисничком водичу.
3.6. Верзија 2.32
Навођење стека Доступно са ПРО лиценцом за компајлер, функција навођења стека компајлера може се користити за процену максималне дубине било ког стека који користи програм. Он конструише и анализира граф позива програма, одређује употребу стека за сваку функцију и производи извештај из којег се може закључити дубина стекова које програм користи. Ова функција је омогућена преко опције командне линије -мцхп-стацк-усаге. Резиме употребе стека се штампа након извршења. Детаљан извештај о групи је доступан на мапи file, који се може затражити на уобичајен начин.
Подршка за нове уређаје Подршка је доступна за следеће АВР делове: АТТИНИ427, АТТИНИ424, АТТИНИ426, АТТИНИ827, АТТИНИ824, АТТИНИ826, АВР32ДБ32, АВР64ДБ48, АВР64ДБ64, АВР64ДБ28, АВР32ДБ, АВР28ДБ и АВР64. Подршка за увучене уређаје Подршка више није доступна за следеће АВР делове: АВР32ДА32, АВР48ДА16 и, АВР28ДА16.
3.7. Верзија 2.31
Ниједан.
3.8. Верзија 2.30
Нова опција за спречавање иницијализације података Нова опција драјвера -мно-дата-инит спречава иницијализацију података и брисање бсс секција. Ради тако што потискује излаз података до копирања и чисти бсс симболе у ​​асемблеру fileс, што ће заузврат спречити укључивање тих рутина од стране повезивача.
Побољшане оптимизације Направљено је више побољшања оптимизације, укључујући уклањање сувишних инструкција за враћање, уклањање неких скокова након инструкције прескочи-ако-бит-је, и побољшану процедурална апстракција и могућност понављања овог процеса. Додатне опције су сада доступне за контролу неких од ових оптимизација, посебно -ф секција-сидра, што омогућава приступ статичним објектима који се обављају у односу на један симбол; -мпа-итератионс=н, што дозвољава да се број итерација процедуралне апстракције промени са подразумеваног од 2; и, -мпа-цаллцост-схортцалл, који изводи агресивнију процедуру апстракције, у нади да линкер може опустити дуге позиве. Ова последња опција може повећати величину кода ако се основне претпоставке не реализују.
Подршка за нове уређаје Подршка је доступна за следеће АВР делове: АВР16ДА28, АВР16ДА32, АВР16ДА48, АВР32ДА28, АВР32ДА32, АВР32ДА48, АВР64ДА28, АВР64ДА32, АВР64ДА48, АВР64ДА64, АВР128ДБ28, АВР128ДБ, АВР32 128ДБ48. Подршка за увучене уређаје више није доступна за следеће АВР делове: АТА128, АТА64, АТА5272Н, АТА5790, АТА5790, АТА5791, АТА5795, АТА6285Ц, АТА6286Ц, АТА6612К, АТА6613ЦАТА6614Ц, АТА6616ЦАТА6617.
3.9. Верзија 2.29 (издање функционалне безбедности)
Хеадер file за уграђене компоненте компајлера Да би се обезбедило да компајлер може да буде у складу са језичким спецификацијама као што је МИСРА, заглавље file, који је аутоматски укључен од , је ажуриран. Ово заглавље садржи прототипове за све уграђене функције, као што су буилтин_авр_ноп () и уграђени авр делаи_цицлес () . Неки уграђени модули можда нису компатибилни са МИСРА; они се могу изоставити додавањем дефинеКСЦСТРИЦТ_МИСРА у командну линију компајлера. Уграђени елементи и њихове декларације су ажурирани да користе типове фиксне ширине.
3.10. Верзија 2.20
Подршка за нове уређаје Подршка је доступна за следеће АВР делове: АТТИНИ1624, АТТИНИ1626 и АТТИНИ1627.
Боља алокација најбољег прилагођавања Најбољи алокатор најбољег прилагођавања (БФА) у компајлеру је побољшан тако да се секције додељују редоследом који омогућава бољу оптимизацију. БФА сада подржава именоване адресне просторе и боље рукује иницијализацијом података.
Побољшана процедурална апстракција Оптимизације процедуралне апстракције се сада изводе на више секвенци кода. Претһодне ситуације у којима је ова оптимизација могла повећати величину кода решаване су тако што је код за оптимизацију био свестан процеса сакупљања смећа повезивача.
Одсуство АВР асемблера АВР асемблер више није укључен у ову дистрибуцију.
3.11. Верзија 2.19 (издање функционалне безбедности)
Ниједан.
3.12. Верзија 2.10
Покривеност кода Ово издање укључује функцију покривености кода која олакшава анализу обима до које је изворни код пројекта извршен. Користите опцију -мцодецов=рам да бисте је омогућили. Након извршавања програма на вашем хардверу, информације о покривености кода ће бити поређане у уређају, а МПЛАБ Кс ИДЕ их може пренети и приказати преко додатка за покривеност кода. Погледајте ИДЕ документацију за информације о овом додатку које можете добити. #прагма ноцодецов се може користити за искључивање наредних функција из анализе покривености. Идеално би било да се прагма дода на почетак file да се то у целини искључи file из анализе покривености. Алтернативно, _аттрибуте_ ( (ноцодецов) ) се може користити да се искључи одређена функција из анализе покривености.
Опис уређаја fileс Нови уређај file под називом авр_цхипинфо . хтмл се налази у директоријуму докумената дистрибуције компајлера. Ово file наводи све уређаје које подржава компајлер. Кликните на назив уређаја и отвориће се страница која приказује све дозвољене поставке битова конфигурације/вриједност за тај уређај, са нпр.ampлес. Процедурална апстракција
Процедуралне оптимизације апстракције, које замењују уобичајене блокове асемблерског кода позивима екстраховане копије тог блока, додате су компајлеру. Они се обављају од стране посебне апликације, коју аутоматски позива компајлер када бира нивое 2, 3 или с оптимизације. Ове оптимизације смањују величину кода, али могу смањити брзину извршавања и отклањање грешака кода. Процедурална апстракција се може онемогућити на вишим нивоима оптимизације помоћу опције -мно-па, или се може омогућити на нижим нивоима оптимизације (у зависности од ваше лиценце) коришћењем -мпа. Може се онемогућити за објекат file користећи -мно-па-он-file=fileиме, или онемогућено за функцију коришћењем -мно-па-он-фунцтион=фунцтион. Унутар вашег изворног кода, процедурална апстракција се може онемогућити за функцију коришћењем атрибута ( (нопа) ) са дефиницијом функције или коришћењем нопа, који се проширује на атрибут ( (нопа, ноинлине) ) и на тај начин спречава уметање функције и постоји апстракција уметнутог кода.
Подршка за закључавање у прагма Конфигурација #прагма сада се може користити за спецификацију АВР битова за закључавање као и других битова конфигурације. Проверите авр_цхипинфо . хтмл file (горе поменуто) за парове подешавања/вредност који ће се користити са овом прагмом. Подршка за нови уређај Подршка је доступна за следеће делове: АВР28ДАл28, АВР64ДАл28, АВР32ДА 128 и АВР48ДА 128.
3.13. Верзија 2.05
Више новца за ваш новац. МацОС верзија овог компајлера и менаџера лиценци је сада 64-битна апликација. Ово ће осигурати да ће се компајлер инсталирати и покренути без упозорења на најновијим верзијама мацОС-а.
Цонст објекти у програмској меморији Компајлер сада може да смешта објекте квалификоване за конст у флеш меморију програма, уместо да их има у РАМ-у. Компајлер је модификован тако да се глобални подаци квалификовани цонс т чувају у флеш меморији програма и овим подацима се може директно и индиректно приступити коришћењем одговарајућих инструкција програмске меморије. Ова нова функција је подразумевано омогућена, али се може онемогућити помоћу опције -мно-цонст-дата-ин-прогмем. За авркмега3 и авртини архитектуре, ова функција није потребна и увек је онемогућена, пошто је програмска меморија мапирана у адресни простор података за ове уређаје.
Стандардне за бесплатне нелиценциране (бесплатне) верзије овог компајлера сада дозвољавају оптимизације до и укључујући ниво 2. Ово ће омогућити сличан, иако не идентичан, излаз ономе што је раније било могуће коришћењем стандардне лиценце.
Добродошли АВРАСМ2 АВРАСМ2 асемблер за 8-битне уређаје је сада укључен у инсталатер компајлера КСЦ8. Овај асемблер не користи компајлер КСЦ8, али је доступан за пројекте засноване на ручно писаном асемблерском извору.
Подршка за нови уређај Подршка је доступна за следеће делове: АТМЕГА1608, АТМЕГА1609, АТМЕГА808 и АТМЕГА809.

3.14. Верзија 2.00
Драјвер највишег нивоа Нови драјвер, назван кц8-цц, сада се налази изнад претһодног драјвера авр-гцц и кц8 драјвера и може позвати одговарајући компајлер на основу избора циљног уређаја. Овај драјвер приһвата опције у ГЦЦ стилу, које се или преводе за или прослеђују компајлеру који се извршава. Овај драјвер омогућава да се сличан скуп опција са сличном семантиком користи са било којим АВР или ПИЦ циљем и стога је препоручени начин за позивање компајлера. Ако је потребно, стари авр-гцц драјвер се може позвати директно користећи опције старог стила које је приһватао у ранијим верзијама компајлера.
Заједнички Ц интерфејс Овај компајлер сада може да се прилагоди МПЛАБ Цоммон Ц интерфејсу, омогућавајући да се изворни код лакше пренесе на све МПЛАБ КСЦ компајлере. Опција -мект=цци заһтева ову функцију, омогућавајући алтернативну синтаксу за многе језичке екстензије.
Нови драјвер библиотекара Нови драјвер библиотекара је позициониран изнад претходног ПИЦ библиотекара библиотекара и АВР авр-ар библиотекара. Овај драјвер прихвата опције у стилу ГЦЦ-архивера, које се или преводе или прослеђују библиотекару који се извршава. Нови драјвер омогућава сличан скуп опција са сличном семантиком да се користи за креирање или манипулисање било којом ПИЦ или АВР библиотеком file и стога је препоручени начин за позивање библиотекара. Ако је потребно за застареле пројекте, претходни библиотекар се може позвати директно користећи опције старог стила које је прихватао у ранијим верзијама компајлера.

Миграциона питања

Следе карактеристике којима компајлер сада рукује другачије. Ове промене могу заһтевати модиfiкцију вашег изворног кода ако се код преноси на ову верзију компајлера. Број верзије у поднасловима означава прву верзију компајлера која подржава промене које следе.

4.1. Верзија 2.41
Уклоњене нетачне фма функције (КСЦ8-2913) Стандардна библиотека Ц99 фма 0 -фамили фунцтионс ( ) није израчунао множење-сабирање са бесконачном прецизношћу за једно заокруживање, већ је уместо тога акумулирао грешке заокруживања са сваком операцијом. Ове функције су уклоњене из испоручене библиотеке.
4.2. Верзија 2.40
Ниједан.
4.3. Верзија 2.39 (издање функционалне безбедности)
Ниједан.
4.4. Верзија 2.36 Ништа.
4.5. Верзија 2.35
Руковање базама стринг-то (КСЦ8-2420) Да би се обезбедила конзистентност са другим КСЦ компајлерима, КСЦ8 функције стринг-то, попут стртол () итд., више неће покушавати да конвертују улазни низ ако је наведена база већа од 36 и уместо тога ће поставити еррно на ЕИНВАЛ. Ц стандард не специфицира понашање функција када је ова основна вредност прекорачена.
Неприкладне оптимизације брзине Оптимизације процедуралне апстракције су биле омогућене приликом избора оптимизације нивоа 3 (-03). Ове оптимизације смањују величину кода на рачун брзине кода, тако да их није требало изводити. Пројекти који користе овај ниво оптимизације могу да виде разлике у величини кода и брзини извршавања када су направљени са овим издањем.
Функционалност библиотеке Код за многе функције стандардне Ц библиотеке сада долази из Мицроцхип-ове Унифиед Стандард Либрари, која би у неким околностима могла да покаже другачије понашање у поређењу са оним које је пружала бивша библиотека авр-либц. Фор екampда, више није потребно да се повезујете у 1принтф флт библиотеци (опција -1принтф_флт) да бисте укључили формат I0 подршка за спецификације флоат формата. Паметан I0 карактеристике Мицроцхип Унифиед Стандард Либрари чине ову опцију сувишном. Додатно, употреба рутина са суфиксом _П за стрингове и меморијске функције (нпр. стрцпи_П ( ) итд.) које раде на конст стринговима у фласх-у више није неопходна. Стандардне Ц рутине (нпр. стрцпи) ће исправно радити са таквим подацима када је омогућена функција цонст-дата-ин-програм-мемори.

4.6. Верзија 2.32
Ниједан.
4.7. Верзија 2.31
Ниједан.
4.8. Верзија 2.30
Ниједан.
4.1. Верзија 2.29 (издање функционалне безбедности)
Ниједан.
4.2. Верзија 2.20
Промењен ДФП изглед Компајлер сада претпоставља другачији изглед који користе ДФП-ови (Пакети породице уређаја). То ће значити да старији ДФП можда неће радити са овим издањем, а старији преводиоци неће моћи да користе најновије ДФП-ове.
4.3. Верзија 2.19 (издање функционалне безбедности)
Ниједан.
4.4. Верзија 2.10
Ниједан
4.5. Верзија 2.05
Константни објекти у програмској меморији Имајте на уму да ће подразумевано бити смештени објекти квалификовани за константност и приступити им у програмској меморији (као што је описано нијанса). Ово ће утицати на величину и брзину извршавања вашег пројекта, али би требало да смањи употребу РАМ-а. Ова функција се може онемогућити, ако је потребно, помоћу опције -мноцонст-дата-ин-прогмем.
4.6. Верзија 2.00
Конфигурациони осигурачи Осигурачи за конфигурацију уређаја сада се могу програмирати коришћењем конфигурационе прагме праћене паровима вредности и вредности да би се одредило стање осигурача, нпр.
#прагма цонфиг ВДТОН = СЕТ
#прагма цонфиг БОДЛЕВЕЛ = БОДЛЕВЕЛ_4В3
Апсолутни објекти и функције Објекти и функције сада могу бити смештени на одређену адресу у меморији користећи ЦЦИ (адресни) спецификатор, нпрampле:
#инцлуде
инт фообар_ат(0к800100);
цһар __ат(0к250) гетИД(инт оффсет) { … }
Аргумент овог спецификација мора бити константа која представља адресу на којој ће бити смештен први бајт или инструкција. РАМ адресе су означене коришћењем офсета од 0к800000. Омогућите ЦЦИ да користи ову функцију.
Нова синтакса функције прекида Компајлер сада прихвата спецификацију ЦЦИ _интеррупт (нум) да назначи да су Ц функције руковаоци прекида. Спецификатор узима број прекида, нпрampле:
#инцлуде
воид __интеррупт(СПИ_СТЦ_вецт_нум) спи_Иср(воид) { … }

Поправљени проблеми

Следе исправке које су унете у компајлер. Ово би могло да поправи грешке у генерисаном коду или да промени рад компајлера на оно што је предвиђено или специфицирано у корисничком водичу. Број верзије у поднасловима означава прву верзију компајлера која садржи исправке за проблеме који следе. Ознаке у заградама у наслову представљају идентификацију тог проблема у бази података за праћење. Ово може бити корисно ако треба да контактирате подршку.
Имајте на уму да су неки проблеми специфични за уређај исправљени у пакету породице уређаја (ДФП) који је повезан са уређајем. Погледајте МПЛАБ менаџер пакета за информације о променама учињеним у ДФП-овима и за преузимање најновијиһ пакета.

5.1. Верзија 2.41
Проблеми са кључем на Вентура (КСЦ8-3088) кључевима који се користи за лиценцирање компајлера можда није правилно прочитан на мацОС Вентура хостовима, што је резултирало неуспехом лиценцирања. Промене КСЦЛМ менаџера лиценци решавају овај проблем.
Нетачна индикација алокације меморије (КСЦ8-2925) Покушај додељивања СИЗЕ_МАКС бајтова (или вредности блиске овој) меморије коришћењем функција управљања меморијом стандардне библиотеке (маллоц () ет ал) је погрешно успео. Није узето у обзир да су додатни бајтови потребни поред блока који се захтева када се користи имплементација једноставне динамичке алокације меморије. НУЛЛ показивач ће сада бити враћен и еррно постављен на ЕНОМЕМ у таквим ситуацијама.
Уклоњене су нетачне фма функције (КСЦ8-2913) Стандардна библиотека Ц99 фма ( ) -породичне функције ( ) није израчунао множење-сабирање са бесконачном прецизношћу за једно заокруживање, већ је уместо тога акумулирао грешке заокруживања са сваком операцијом. Ове функције су уклоњене из испоручене библиотеке.
Лоше руковање конверзијом стрингова (КСЦ8-2921, КСЦ8-2652) Када је 'предметна секвенца' за конверзију од стране стртод Цр садржала оно што је изгледало као број са помичним зарезом у експоненцијалном формату и постојао је неочекивани знак после е/Е карактера, онда где је наведен ендптр, додељена му је адреса која да је указивао на знак после е/Е, док је требало да указује на сам е/Е знак, пошто он није конвертован. Фор екampле, стртод (“100екк”, &еп) би требало да врати 100.00 и подеси еп да показује на део стринга “екк”, док је функција враћала тачну вредност, али је постављала еп да показује на део стринга “кк” .

5.2. Верзија 2.40
Превише опуштено (КСЦС-2876) Када је користио опцију -мрелак, компајлер није додељивао неке секције заједно, што је резултирало мање оптималним величинама кода. Ово се могло догодити са кодом који је користио нове МУСЛ библиотеке или са слабим симболима.
Функција мапирања није онемогућена као што је наведено у упозорењу (КСЦ8-2875) Функција цонст-дата-ин-цонфиг-маппедпрогмем се ослања на омогућену функцију цонст-дата-ин-прогмем. Ако је функција цонст-дата-инцонфиг-маппед-прогмем експлицитно омогућена коришћењем опције и функција цонст-дата-инпрогмем је онемогућена, корак повезивања није успео, упркос поруци упозорења у којој се наводи да је цонст-дата-ин-цонф фиг- маппед-прогмем функција је била аутоматски онемогућена, што није било сасвим тачно. Функција цонст-дата-ин-цонфиг-маппед-прогмем је сада потпуно онемогућена у овој ситуацији.
ДФП промене за исправан приступ НВМЦТРЛ (КСЦ8-2848) Код покретања током извршавања који користе АВР64ЕА уређаји није узео у обзир да је НВМЦТРЛ регистар био под заштитом од промене конфигурације (ЦЦП) и није могао да постави И0 СФР на страницу коју користи цонст-дата-ин-цонфигмаппед-прогмем карактеристика компајлера. Промене направљене у АВР-Ек_ДФП верзији 2.2.55 омогућиће коду за покретање да исправно упише у овај регистар.
ДФП промене које треба избегавати флеш мапирање (КСЦ8-2847) Заобилазно решење за проблем са функцијом уређаја за флеш мапирање пријављеним у АВР128ДА28/32/48/64 Силицон Еррата (Д580000882) је имплементирано. Функција компајлера цонст-дата-ин-цонфиг-маппед-прогмем неће се подразумевано примењивати за погођене уређаје, а ова промена ће се појавити у АВР-Дк_ДФП верзији 2.2.160.
Грешка при изради са синхф или цосхф (КСЦ8-2834) Покушаји коришћења библиотечких функција синхф () или цосхф () довели су до грешке везе, која описује недефинисану референцу. Функција која недостаје сада је укључена у дистрибуцију компајлера.
Грешке при изради са нопа (КСЦ,8-2833) Коришћење атрибута нопа са функцијом којој је име асемблера наведено помоћу асм ( ) покренуло је поруке о грешци од асемблера. Ова комбинација није могућа.
Променљива грешка функције са аргументима показивача (КСЦ8-2755, КСЦ8-2731) Функције са променљивим бројем аргумената очекују да се 24-битни (тип мемк) показивачи прослеђују на листу променљивих аргумената када је омогућена функција цонст-дата-ин-прогмем. Аргументи који су били показивачи на меморију података прослеђивани су као 16-битни објекти, узрокујући неуспех кода када су на крају прочитани. Када је функција цонстдата-ин-прогмем омогућена, сви аргументи 16-битних показивача се сада конвертују у 24-битне показиваче.
Функције библиотеке стртоккк не раде (КСЦ8-2620) Када је омогућена функција цонст-дата-ин-прогмем, параметар ендптр у функцијама библиотеке стртоккк није правилно ажуриран за аргументе изворног стринга који нису у меморији програма.
Упозорења за неважеће цаст (КСЦ8-2612) Компајлер ће сада издати грешку ако је омогућена функција цонст-ин-прогмем и ако је адреса стринговог литерала експлицитно пребачена у адресни простор података (испуштајући квалификатор цонст), нпр.ampле, (уинт 8_т *) „Хелло Ворлд!“. Упозорење је проблем ако адреса може бити неважећа када се показивач константних података експлицитно пребаци на простор адресе података.
Постављање неиницијализованих цонст објеката (КСЦ8-2408) Неиницијализовани цонст и цонст волатиле објекти нису били смештени у програмску меморију на уређајима који мапирају целу или део своје програмске меморије у адресни простор података. За ове уређаје, такви објекти су сада смештени у програмску меморију, чинећи њихов рад у складу са другим уређајима.

5.3. Верзија 2.39 (издање функционалне безбедности)
Ниједан.
5.4. Верзија 2.36
Грешка приликом одлагања (КСЦ8-2774) Мање промене у подразумеваним оптимизацијама слободног режима спречиле су константно савијање израза операнда у уграђене функције кашњења, што је довело до тога да се оне третирају као неконстанте и доводе до грешке: уграђени авр делаи_цицлес очекује целобројну константу времена компајлирања.
5.5. Верзија 2.35
Континуална алокација помоћу _ат (КСЦ8-2653) Континуална алокација више објеката у одељку са истим именом и коришћењем _ат ( ) није функционисала исправно. Фор екampле:
цонст цхар арр1[] __аттрибуте__((сецтион(.мисец”))) __ат (0к500) = {0кАБ, 0кЦД};
цонст цхар арр2[] __аттрибуте__((сецтион(.мисец”))) = {0кЕФ, 0кФЕ};
требало је поставити арр2 одмах после арр1.
Одређивање почетних адреса секција (КСЦ8-2650) Тхе -В1, –сецтион-старт опција је тихо пропустила да постави секције на номиновану почетну адресу. Овај проблем је решен за све одељке са прилагођеним називима; међутим, неће радити ни за једну стандардну секцију, као што је . текст или . бсс, који се мора поставити помоћу опције -В1, -Т.
Линкер се руши при опуштању (КСЦ8-2647) Када је омогућена оптимизација -мрелак и постоје одељци кода или података који се не уклапају у доступну меморију, линкер се срушио. Сада, у таквим околностима, уместо тога се издају поруке о грешци.

Без повратка (КСЦ8-2646) Тхе –нофаллбацк опција није правилно имплементирана, нити документована. Ово се сада може изабрати како би се осигурало да се компајлер неће вратити на ниже поставке оптимизације ако компајлер није лиценциран, и да ће уместо тога издати грешку.

Неприкладне оптимизације брзине (Кс03-2637) Оптимизације процедуралне апстракције су биле омогућене приликом избора оптимизације нивоа 3 (-03). Ове оптимизације смањују величину кода на рачун брзине кода, тако да их није требало изводити.
Лош ЕЕПРОМ приступ (КСЦ8-2629) Тхе еепром_реад_блоцк рутина није исправно радила на Ксмега уређајима када је опција -мцонст-дата-ин-прогмем била омогућена (што је подразумевано стање), што је резултирало неисправним читањем ЕЕПРОМ меморије.
Неважећа додела меморије (КСЦ8-2593, КСЦ8-2651) Када -Ттект или -Тдата линкер опција (нпрampје наведен кроз опцију -вл драјвера), одговарајуће порекло региона текста/података је ажурирано; међутим, крајња адреса није прилагођена у складу са тим, што је могло довести до тога да регион премашује опсег меморије циљног уређаја.
Пад са прекомерно приписаном функцијом (КСЦ8-2580) Компајлер се срушио ако је функција декларисана коришћењем више од једног атрибута прекида, сигнала или нми, нпр. атрибута ( ( сигнал , прекид )).
Неважећи АТтини код прекида (КСЦ8-2465) Када се гради за АТтини уређаје и оптимизације су онемогућене (-00), функције прекида су можда покренуле поруке асемблера који је ван опсега.
Опције се не пролазе кроз (КСЦ8-2452) Када користите опцију са више опција повезивача одвојених зарезима, нису све опције повезивача прослеђене повезивачу.
Грешка при индиректном читању програмске меморије (Кс03-2450) У неким случајевима, компајлер је произвео интерну грешку (непрепознатљив инсн) приликом читања вредности од два бајта из показивача у меморију програма
5.6. Верзија 2.32
Други приступ од библиотека не ради (КСЦ8-2381) Позивање Виндовс верзије кц8-ар. .еке архивер библиотеке други пут да приступи постојећој архиви библиотеке можда није успео јер није могао да преименује поруку о грешци.
5.7. Верзија 2.31
Необјашњиви компајлер кварови (КСЦ8-2367) Када се ради на Виндовс платформама које имају системски привремени директоријум постављен на путању која укључује тачку „. карактера, компајлер можда није успео да изврши.
5.8. Верзија 2.30
Глобалне налепнице заметнуте након описа (КСЦ8-2299) Ручно писани асемблерски код који поставља глобалне ознаке унутар низова склопова који су раздвојени процедуралним апстракцијама можда није правилно репозициониран.
Опуштајући судар (КСЦ8-2287) Коришћење опције -мрелак је можда довело до пада линкера када су оптимизације опуштања скока репа покушале да уклоне рет инструкције које нису биле на крају одељка.
Пад приликом оптимизације ознака као вредности (КСЦ8-2282) Код који користи проширење језика ГНУ Ц „Ознаке као вредности“ је можда проузроковао пад оптимизације процедуралне апстракције, са грешком поправљања обриса опсега ВМА опсега.
Није тако константно (КСЦ8-2271) Прототипови за ст рстр ( ) и друге функције из више не наводи нестандардни цонст квалификатор на враћеним стринговима када је функција -мцонст-дата-инпрогмем онемогућена. Имајте на уму да је код уређаја авркмега3 и авртини ова функција трајно омогућена.
Изгубљени иницијализатори (КСЦ8-2269) Када је више од једна променљива у јединици превођења је смештена у секцију (користећи _сецтион или _аттрибуте_ ( (сецтион) )), а прва таква променљива је била иницијализована нула или није имала иницијализатор, иницијализаторе за друге варијабле у истој јединици превођења које су постављене у истом одсеку су изгубљени.
5.1. Верзија 2.29 (издање функционалне безбедности)
Ниједан.
5.2. Верзија 2.20
Грешка са дугим командама (КСЦ8-1983) Када се користи АВР циљ, компајлер је можда стао са а file грешка није пронађена, ако је командна линија била изузетно велика и садржала посебне знакове као што су наводници, обрнуте косе црте итд.
Недодељени одељак родата (КСЦ8-1920) АВР линкер није успео да додели меморију за прилагођене родата секције приликом изградње за авркмега3 и авртини архитектуре, потенцијално стварајући грешке преклапања меморије
5.3. Верзија 2.19 (Функционално безбедносно издање)
Ниједан.
5.4. Верзија 2.10
Неуспеси пресељења (КСЦ8-1891) Најприкладнији алокатор је остављао меморијске 'рупе' између секција након опуштања линкера. Осим фрагментације меморије, ово је повећало могућност да дође до грешака при премештању линкера у вези са скоковима у односу на рачунар или позивима који су изван домета.
Инструкције које нису трансформисане релаксацијом (КСЦ8-1889) Релаксација линкера се није десила за инструкције скока или позива чији циљеви постају доступни ако су опуштени.
Недостаје функционалност (КСЦ8Е-388) Неколико дефиниција из , као што су цлоцк_див_т и цлоцк_пресцале сет () , нису дефинисани за уређаје, укључујући АТмега324ПБ, АТмега328ПБ, АТтини441 и АТтини841.
Недостају макрои Макрои претпроцесора _КСЦ8_МОДЕ_, _КСЦ8_ВЕРС ИОН, _КСЦ и _КСЦ8 нису аутоматски дефинисани од стране компајлера. Ови су сада доступни.
5.5. Верзија 2.05
Интерна грешка компајлера (КСЦ8-1822) Приликом израде под Виндовс-ом, можда је настала интерна грешка компајлера приликом оптимизације кода.
Преливање РАМ-а није откривено (КСЦ8-1800, КСЦ8-1796) Програме који су премашили доступну РАМ меморију компајлер није открио у неким ситуацијама, што је резултирало грешком кода током извршавања.
Изостављена флеш меморија (КСЦ8-1792) За авркмега3 и авртини уређаје, делови флеш меморије су можда остали непрограмирани од стране МПЛАБ Кс ИДЕ.
Неуспешно извршавање главног (КСЦ8-1788) У неким ситуацијама у којима програм није имао дефинисане глобалне променљиве, стартни код за време извршавања није изашао и главна ( ) функција никада није била достигнута.
Нетачне информације о меморији (КСЦ8-1787) За уређаје авркмега3 и авртини, програм величине авр је извештавао да подаци само за читање троше РАМ уместо програмске меморије.
Нетачно очитавање програмске меморије (КСЦ8-1783) Пројекти компајлирани за уређаје са програмском меморијом мапираном у адресни простор података и који дефинишу објекте користећи ПРОГМЕМ макро/атрибут можда су прочитали ове објекте са погрешне адресе.
Интерна грешка са атрибутима (КСЦ8-1773) Дошло је до интерне грешке ако сте дефинисали објекте показивача са
_ат () или аттрибуте() токени између имена показивача и дереференцираног типа, нпрampле, цхар *
_ат (0к800150) цп; Сада се издаје упозорење ако се наиђе на такав код.
Неуспешно извршавање главног (КСЦ8-1780, КСЦ8-1767, КСЦ8-1754) Коришћење ЕЕПРОМ променљивих или дефинисање осигурача помоћу конфигурационе прагме је могло да изазове нетачну иницијализацију података и/или закључано извршавање програма у коду за покретање током извршавања, пре него што дође до главног ( ).
Грешка осигурача са сићушним уређајима (КСЦ8-1778, КСЦ8-1742) Аттини4/5/9/ 10/20/40 уређаји су имали нетачну дужину осигурача наведену у заглављу fileкоји доводе до грешака повезивача када покушавате да направите код који дефинише осигураче.
Сегментација грешка (КСЦ8-1777) Повремена грешка сегментације је исправљена.
Пад асемблера (КСЦ8-1761) Авр-ас асемблер се можда срушио када је компајлер покренут под Убунту 18.
Објекти нису очишћени (КСЦ8-1752) Неиницијализовани статички објекти трајања складиштења можда нису били обрисани кодом за покретање времена извршавања.
Конфликтна спецификација уређаја је занемарена (КСЦ8-1749) Компајлер није генерисао грешку када је коришћено више опција спецификације уређаја и назначио је различите уређаје.
Оштећење меморије услед гомиле (КСЦ8-1748) Тхе Симбол _хеап_старт је био погрешно постављен, што је резултирало могућношћу да обичне променљиве буду оштећене од стране гомиле.
Грешка при премештању линкера (КСЦ8-1739) Грешка при премештању линкера је можда била емитована када је код садржао рјмп или рцалл са циљем удаљеном тачно 4к бајта.
5.6. Верзија 2.00
Ниједан.

Познати проблеми

Следе ограничења у раду компајлера. То могу бити општа ограничења кодирања или одступања од информација садржаних у корисничком приручнику. Ознаке у заградама у наслову представљају идентификацију тог проблема у бази података за праћење. Ово може бити од користи ако треба да контактирате подршку. Оне ставке које немају ознаке су ограничења која описују моди операнди и која ће вероватно остати на снази трајно.
6.1. МПЛАБ Кс ИДЕ Интеграција
МПЛАБ ИДЕ интеграција Ако компајлер треба да се користи из МПЛАБ ИДЕ, онда морате да инсталирате МПЛАБ ИДЕ пре инсталирања Цомпилер-а.
6.2. Генерисање кода
Сегфаулт са опцијом сецтион-анцхорс (КСЦ8-3045) Програм који је дефинисао функције са листама променљивих аргумената и који користи опцију -фсецтион-анцхорс можда је покренуо интерну грешку компајлера: Грешка сегментације.
Информације о отклањању грешака нису синхронизоване (КСЦ8-2948) Када оптимизација опуштања линкера смањи упутства (нпрampле цалл то рцалл упутства), мапирања изворне линије до адресе можда неће остати синхронизована када се у одељку дешава више од једне операције скупљања.
У доњем прampле, постоје два позива на фоо који завршавају опуштено у односу на релативне позиве.
Грешка при додели ПА меморије (КСЦ8-2881) Када се користе оптимизатори процедуралне апстракције, линкер може пријавити грешке у алокацији меморије када је величина кода близу количини доступне програмске меморије на уређају, иако би програм требао бити у стању да стане у расположиви простор.
Не тако паметан Смарт-И0 (КСЦ8-2872) Функција смарт-ио компајлера ће генерисати важећи, али субоптималан код за функцију снпринт ф ако је функција цонст-дата-ин-прогмем онемогућена или ако уређај има сав свој флеш мапиран у меморију података.
Још мање паметан Смарт-И0 (КСЦ8-2869) Функција смарт-ио компајлера ће генерисати валидан, али субоптималан код када се користе опције -флто и -фно-буилтин.
Неоптимално постављање података само за читање (КСЦ8-2849) Линкер тренутно не зна за меморијске одељке АППЦОДЕ и АППДАТА, нити за поделе [Но-Реад-Вхиле-Врите] у меморијској мапи. Као резултат тога, постоји мала шанса да ће линкер доделити податке само за читање у неприкладну област меморије. Шанса за погрешно постављене податке се повећава ако је омогућена функција цонст-дата-ин-прогмем, посебно ако је омогућена и функција цонст-дата-ин-цонфиг-маппед-прогмем. Ове функције се могу онемогућити ако је потребно.
Објекат file обрада налога (КСЦ8-2863) Редослед којим се објекти fileс које ће обрадити линкер може се разликовати на основу употребе оптимизације процедуралне апстракције (опција -мпа). Ово би утицало само на код који дефинише слабе функције у више модула.
Грешка повезивача са апсолутним (КСЦ8-2777) Када је објекат апсолутизован на адреси на почетку РАМ-а и неиницијализовани објекти су такође дефинисани, може се покренути грешка повезивача.
Кратки ИД-ови за буђење (КСЦ8-2775) За АТА5700/2 уређаје, ПХИДО/1 регистри су дефинисани само као широки 16 бита, а не 32 бита.
Пад линкера при позивању симбола (КСЦ8-2758) Линкер би могао да се сруши ако се опција драјвера -мрелак користи када изворни код позива симбол који је дефинисан помоћу опције -цц., –де ф сим линкер.
Нетачна иницијализација (КСЦ8-2679) Постоји је неслагање између места где су почетне вредности за неке глобалне/статичке објекте величине бајта смештене у меморију података и где ће се променљивама приступати током извршавања.
Лоши индиректни позиви функција (КСЦ8-2628) У неким случајевима, позиви функција упућени преко показивача функције који је ускладиштен као део структуре могу да не успеју.
стртоф враћа нулу за хексадецималне флоат (КСЦ8-2626) Библиотечке функције стртоф ет ал и сцанф ( ) ет ал, увек ће конвертовати хексадецимални број са покретним зарезом који не наводи експонент у нулу. Фор екampле:
стртоф („Окл“, &ендптр) ;
вратиће вредност 0, а не И.
Нетачне поруке саветника за стек (КСЦ8-2542, КСЦ8-2541) У неким случајевима, упозорење саветника за стек у вези са рекурзијом или неодређеним стеком који се користи (могуће коришћењем аллоца()) се не емитује.
Грешка са дуплираним кодом прекида (КСЦ8-2421) Тамо где више од једне функције прекида има исто тело, компајлер може имати излаз за једну функцију прекида позива другу. Ово ће довести до непотребног чувања свих регистра који су блокирани позивима, а прекиди ће бити омогућени чак и пре него што се покрене епилог тренутног руковаоца прекида, што може довести до неуспеха кода.
Лош излаз са неважећом ДФП путањом (КСЦ8-2376) Ако је компајлер позван са неважећом ДФП путањом и 'спецификацијом' file постоји за изабрани уређај, компајлер не пријављује фамилијарни пакет уређаја који недостаје и уместо тога бира „спецификације“ file, што онда може довести до неисправног излаза. 'спецификација' fileс можда нису ажурирани са дистрибуираним ДФП-овима и били су намењени само за употребу са интерним тестирањем компајлера.
Преклапање меморије није откривено (КСЦ8-1966) Компајлер не открива преклапање меморије објеката који су постали апсолутни на адреси (преко _ат ( )) и других објеката који користе спецификацију одељка ( ) и који су повезани са истом адресом.
Грешка са библиотечким функцијама и _мемк (КСЦ8-1763) Позване либгцц флоат функције са аргументом у мемк адресном простору можда неће успети. Имајте на уму да се библиотечке рутине позивају из неких Ц оператора, па нпрampле, утиче на следећи код:
ретурн регФлоатВар > мемкФлоатВар;
Ограничена имплементација либгцц (АВРТЦ-731) За АТТини4/5/9/10/20/40 производе, имплементација стандардне Ц/Матх библиотеке у либгцц је веома ограничена или није присутна.
Ограничења меморије програма (АВРТЦ-732) Ланац алата подржава слике програмске меморије веће од 128 кб; међутим, познати су случајеви прекида везе повезивача без опуштања и без корисне поруке о грешци уместо генерисања потребних заглавља функције када се користи опција -мре лак.
Ограничења простора за име (АВРТЦ-733) Именовани адресни простори су подржани од стране ланца алата, подложни ограничењима поменутим у одељку водича за кориснике Посебни квалификатори типа.
Временске зоне Тхе функције библиотеке претпостављају ГМТ и не подржавају локалне временске зоне, тако да ће лоцалтиме ( ) вратити исто време као и гмтиме ( ), нпр.ampле.

file:///Апплицатионс/мицроцхип/кц8/в2.41/доцс/Реадме_КСЦ8_фор_АВР.хтм

Документи / Ресурси

Софтвер за развој компајлера МИЦРОЦХИП МПЛАБ КСЦ8 Ц [пдф] Упутство за употребу
МПЛАБ КСЦ8 Ц, МПЛАБ КСЦ8 Ц софтвер за развој компајлера, софтвер за развој компајлера, развојни софтвер, софтвер

Референце

Оставите коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена *