Помилка в обробці ключа -v+
В avreal версій з 1.28r2 по 1.28r6 є помилка в обробці ключа -v+, тобто ключа -v з модифікатором +.
Помилково виконується перевірка на чистоту всього обсягу пам’яті мікроконтролера, а не лише адрес, не зайнятих вмістом hex-файлу. В результаті після першої ж верифікації робота припиняється і подальші операції, наприклад, запис fuses, не виконуютьcя.
Ключ -v без модифікатора працює нормально, тому рекомендується використовувати його.
Помилка не критична, буде виправлена в черговій версії avreal.
Чесно кажучи, я вже і не пам’ятаю з яких міркувань в avreal було додано можливість перевірки на 0xFF
не задіяних у вхідному HEX-файлі позицій. Чи хтось колись просив зробити, чи мені самому раптом захотілося. Зараз от думаю, що особливої потреби в цьому і нема — при записові після стирання вони і так мали б бути стерті, а якщо дуже хочеться, можна ключ -b додати. При дозаписові якихось таблиць без стирання нема сенсу перевіряти на чистоту, бо в незайнятих цим HEX-файлом позиціях розміщено основний код.
А місце для внесення помилок додалося. Кажуть же, що «простота — запорука здоров’я» 🙂
Може, пізніше я цей модифікатор приберу зовсім.
Помилку виправлено у версії 1.28r7.
Ошибка также касается ключа -w+, происходит в точности все тоже самое
Спасибо.
-w+ более полезный ключ, чем -v+, надо ремонтировать.
Вот под scmRTOS v4.00 порты/примеры AVR/GCC, AVR/IAR дотяну в эти выходные и сразу после этого в avreal полезу.
Поэкспериментировал с версией 1.28r6 — по -w+ всё правильно делает.
Т.е. пишем по -w какие-то данные на весь размер EEPROM.
Затем пишем также по -w поверх предыдущих данных (без стирания) файл с «дырками» — в «дырках» остаются данные от предыдущего файла.
Затем пишем так же без стирания, но с -w+ — в «дырках» получаем FF.
Ну а для -v+ ошибку нашёл, пересоберу для всех поддреживаемых ОС и выложу.