Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010

STM8 IAR... нюансы

02.02.2017, 13:25. Показов 3587. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал свой криптозагрузчик... сделал все красиво, с индикацией на дисплее режима ожидания, индикацией процесса загрузки, для этого использовал несколько прерываний...
НО в конце с удивлением обнаружил, что таблица векторов прерываний в STM8 намертво прибита к начальному адресу флэша... я то дума что просто переопределю поле векторов на адрес загруженной прошивки и все... но не тут то было...

Пришлось убрать все прерывания, чтобы в векторах разместить переадресацию на поле векторов загружаемой прошивки.
Вроде без прерываний по минимуму реализовал те же функции, но в итоге опять уперся в вопрос как именно заменить адреса переходов в поле векторов загрузчика.
Порылся в интернете, вроде в сети есть несколько примеров реализации загрузчиков, но там либо какой то нестандартный способ размещения загрузчика, например вверху флэша, либо не IAR а RAISONANSE, и т.д.

Думаю - ну пока не разобрался как это сделать красиво, силами компилятора - попробовал реализовать нестандартно...
Первым делом решил что загрузчик сам может переписать адреса в своей таблице векторов при первом старте, а уже потом закрыть доступ к записи в UBC... но почему то у меня это не получилось... в отладчике вижу как команды отрабатываются но почему то запись в поле векторов не происходит... хотя тот же код пользовательскую прошивку нормально пишет... при этом, при первом старте защита UBC отключена, она программно должна активироваться только после перезаписи адресов в векторном пространстве... в общем не получилось таким способом...

Пока что решил так - открываю HEX загрузчика в STVP и вручную меняю адреса векторов (кроме первого) на адреса соответствующих векторов пользовательской программы )))))))))))))

В общем вопрос такой, как это просто и красиво сделать в IAR-е.
Т.е. нужно вместо адресов векторов рассчитываемых компилятором, прописать статические адреса вручную?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2017, 13:25
Ответы с готовыми решениями:

кто сделает экспорт SDCC STM8 -> IAR STM8 ?
а то труды пропадут... https://github.com/eddyem/STM8_samples

IAR for STM8 V2.10
Коллеги, ни у кого не завалялась инсталляха IAR for STM8 V2.10? Можно и не крякнутый. На официальном сайте только 3.0, но она на моём...

IAR, STM8, C++, Наследование
Доброе время суток. Начал писать программку для свежесобранного девайса, но вот с первых же строк уперся в стену. До этого момента не...

5
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
02.02.2017, 20:34
Спасибо конечно, за столь широкий выбор материала, но если вас не затруднит, ткните меня носом в том месте где там говорится о том, как можно IAR-а попросить поставить в таблице вместо рассчитанных им векторов прерываний - нужные мне значения...

Может я не совсем правильно изложил, чего именно я хочу добиться...
проще так... при компиляции загрузчика (не пользовательской программы) нужно чтобы первые 128 байт кекса (кроме первых 4 байт) были конкретно вот такими:
Code
1
2
3
4
5
6
7
8
00008000    xx xx xx xx   82 00 88 04   82 00 88 08   82 00 88 0C
00008010    82 00 88 10   82 00 88 14   82 00 88 18   82 00 88 1C
00008020    82 00 88 20   82 00 88 24   82 00 88 28   82 00 88 2C
00008030    82 00 88 30   82 00 88 34   82 00 88 38   82 00 88 3C
00008040    82 00 88 40   82 00 88 44   82 00 88 48   82 00 88 4C
00008050    82 00 88 50   82 00 88 54   82 00 88 58   82 00 88 5C
00008060    82 00 88 60   82 00 88 64   82 00 88 68   82 00 88 6C
00008070    82 00 88 70   82 00 88 74   82 00 88 78   82 00 88 7C
Как я уже сказал, пока что заменяю вручную, что конечно в наш 21 век не очень солидно )
Как вариант, загрузчик сам может поменять таблицу при первом запуске, но я пока не разобрался почему у меня этот вариант не сработал (...

ЗЫ
Сразу оговорюсь, вариант от Den1s, когда нужно заливать за один раз обе (пользовательскую и бут) прошивки мне не подходит...

Вариант от Omkit5o тоже, там бут висит вверху и не защищен от перезаписи...

В AN2659 я вообще слова IAR не нашел... (хотя нет... извиняюсь... ctrl+f выделил эти три буквы в составе слова "subsidiaries")...
0
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
02.02.2017, 23:14
А по образу и подобию телодвижений в COSMIC, из официального pdf?
Еще инфа - https://github.com/Zepan/hairBoot

И IAR не лучший выбор для STM8...
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
03.02.2017, 00:13
Цитата Сообщение от dosykus_2
А по образу и подобию телодвижений в COSMIC, из официального pdf?
Не охота рыться во внутренностях IAR-а, по системным файлам проекта пробежался, нигде вроде не нашел описания векторной таблицы, ну и .....
проще все таки разобраться почему сам контроллер не пишет в таблицу, там один цикл то добавить и все...

Цитата Сообщение от dosykus_2
Ха... весело)
Этот дядя как я понял тоже вручную меняет таблицу...
1. Install IAR for stm8, add xxx\IAR Systems\Embeddid workbench 6.5\stm8\bin to Environment var Path
2. Run make.bat to get bin, run out2hex to get hex
3. fyx all interrupt vectors except the vecter 0. change vector n to 0x82008200 + 4*n, eg vector 1: 82008204
4. fymished! you get the bin/hex/out now~
Цитата Сообщение от dosykus_2
И IAR не лучший выбор для STM8...
Ну уж времени нет все на свете попробовать... что попало под руку, с тем и мучаемся...
В принципе до сих все устраивало... правда редактор там - жуть... редактирую пока в pn, а остальное в оболочке...
0
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
03.02.2017, 15:50
Цитата Сообщение от ShodS
решил что загрузчик сам может переписать адреса в своей таблице векторов при первом старте, а уже потом закрыть доступ к записи в UBC... но почему то у меня это не получилось... в отладчике вижу как команды отрабатываются но почему то запись в поле векторов не происходит... хотя тот же код пользовательскую прошивку нормально пишет... при этом, при первом старте защита UBC отключена, она программно должна активироваться только после перезаписи адресов в векторном пространстве... в общем не получилось таким способом...
Вроде напал на след... Тут описал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2017, 15:50
Помогаю со студенческими работами здесь

Новый IAR для STM8
Мне пришла рассылка - вышла новая версия 2.1 IAR для STM8. Бесплатная лицензия как обычно до 8к кода. Кто-нибудь пользовался? Есть...

IAR for STM8 - license out of date
У кого-нибудь была такая проблема? скачал ИАР, демо на 8кб, выдали мне лицензию на почту. устанавливаю, ввожу лицензию, установщик ее...

Начало файла проекта STM8 IAR
Добрый день Помогите с правильным описанием переменных в файле написал простенький код на асме - подергать ножкой при запуске в...

IAR for stm8 под windows8.1x64
Приветствую. Кто нибудь ставил IAR for stm8 под win8.1x64?

IAR(1.30.2) - Не получается прошить в stm8-discovery
stm8-discovery, решил попробовать чё нить написать... Тут то и начались странные проблемы, вернее первая проблемка которую я чтото так и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru