Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
1

STM8 IAR... нюансы

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

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

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

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

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

В общем вопрос такой, как это просто и красиво сделать в IAR-е.
Т.е. нужно вместо адресов векторов рассчитываемых компилятором, прописать статические адреса вручную?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
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? Можно и не крякнутый. На...

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

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

5
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
02.02.2017, 17:34 2
http://www.st.com/content/ccc/resource/ ... 176595.pdf

http://omkit5a.narod.ru/stm8/boot1.html

http://we.iosyitistromyss.ru/STM8/bootl ... zduhu.html
0
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
02.02.2017, 20:34 3
Спасибо конечно, за столь широкий выбор материала, но если вас не затруднит, ткните меня носом в том месте где там говорится о том, как можно IAR-а попросить поставить в таблице вместо рассчитанных им векторов прерываний - нужные мне значения...

Может я не совсем правильно изложил, чего именно я хочу добиться...
проще так... при компиляции загрузчика (не пользовательской программы) нужно чтобы первые 128 байт кекса (кроме первых 4 байт) были конкретно вот такими:
Код
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
dosykus_2
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 4,017
02.02.2017, 23:14 4
А по образу и подобию телодвижений в COSMIC, из официального pdf?
Еще инфа - https://github.com/Zepan/hairBoot

И IAR не лучший выбор для STM8...
0
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
03.02.2017, 00:13 5
Цитата Сообщение от 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
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
03.02.2017, 15:50 6
Цитата Сообщение от ShodS
решил что загрузчик сам может переписать адреса в своей таблице векторов при первом старте, а уже потом закрыть доступ к записи в UBC... но почему то у меня это не получилось... в отладчике вижу как команды отрабатываются но почему то запись в поле векторов не происходит... хотя тот же код пользовательскую прошивку нормально пишет... при этом, при первом старте защита UBC отключена, она программно должна активироваться только после перезаписи адресов в векторном пространстве... в общем не получилось таким способом...
Вроде напал на след... Тут описал...
0
03.02.2017, 15:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2017, 15:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

Загрузчик под IAR для STM8
Задача: написать свой загрузчик(встроенный не канает), в инете нарыл примеры, но для COSMIC,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.