Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 bootloader
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Страницы: 1, 2, 3
ViKo
Осенило - а что, если разместить серийный номер в конце сектора от загрузчика? Раз записал, номер обновил ST-Link Utility, защиту от записи установил ей же. Остальное - в основной программе.
ViKo
Так и сделал. Только не в конце, а так же, после векторов прерываний.
И еще один вопросик появился. Как в startup.s передать строковую переменную, конкретно, VERSION?
Допустим, в Main.h есть #define VERSION "3.50". Как эту строку забить в ассемблерную DCB команду?
ViKo
Попробую спросить еще раз. Где бы почитать, как задать переменные в asm "file.s" из внешнего "defines.h"? Что-то ничего не нахожу.

P.S. Скачал с ARM сайта документы, но... решил обойтись иначе. Ни к чему мне хранить строки в asm-файле. Для работы загрузчика нужно только хранить размер кода. И серийный номер буду записывать вручную по выбранному адресу, а читать чисто указателем на этот адрес.
SSerge
Цитата(ViKo @ Apr 7 2015, 18:43) *
Попробую спросить еще раз. Где бы почитать, как задать переменные в asm "file.s" из внешнего "defines.h"? Что-то ничего не нахожу.

С такими запросами только на IAR переходить sm.gif - он синтаксис С-препроцессора понимает.
Судя по http://infocenter.arm.com/help/index.jsp?t...sm_chebabgi.htm
можно разве что в asm-файле определить символ через GBLS, а потом передать его значение через командную строку (--predefine ... ).
AHTOXA
Почему "только"? sm.gif GCC тоже понимает!
(gcc -x assembler-with-cpp file.S).
SSerge
Впрочем есть ещё одно особо тонкое извращение - пропустить этот файл через препроцессор С, а результат уже скармливать ассемблеру.
Кейловский с-компилер должен уметь выдавать результат работы препроцессора в файл.
x893
Цитата(AHTOXA @ Apr 7 2015, 18:32) *
Почему "только"? sm.gif GCC тоже понимает!
(gcc -x assembler-with-cpp file.S).

Да и в Keil почти всё можно сделать. По крайне мере, что здесь обсуждается - давно уже описано. И вычисление CRC подстановкой в нужное место, и размеры секций сразу можно в нужные места подставить. Лучше всего Help посмотреть - там есть всё и даже больше.

А можно вместо armcc просто использовать в Keil gcc, если сильно хочется.
toweroff
Цитата
Теперь задача - зашифровать-расшифровать прошивку.
Попробовал XTEA. Пока только закодировал. Не знаю, сколько времени будет декодироваться в микроконтроллере.


У меня на CM3 (LPC175x) влезло в 4КБ - CRC32 (программное, аппаратного нет), USART, протокол обменя, AES-128 (CBC mode), XTEA (тоже CBC)
Время на 1КБ на 16МГц (PLL не запущена)
- CRC32 - менее 1мс
- XTEA - 2мс
- AES-128 - 32мс
ViKo
Поэкспериментировав с размещением в стартапе дополнительных констант, решил-таки залезать в дыру в векторах, в адрес 0x0020. Там (в секторе 1) внешней программой - шифровальшиком сохраняю размер файла. Туда же (но в загрузчике, в секторе 0) ST-Link Утилитой записываю серийный номер. И никаких изменений в startup.s не требуется.
А строковые константы - производитель, модель, версия программы - куда компилятор положит, оттуда программа и возьмет.
У меня тоже дешифруется быстро. Время засечь не могу (та же беда с точками останова, что описывал в другой теме; проще новый проект создать, чем в этом копаться).
toweroff
Цитата(ViKo @ Apr 8 2015, 12:31) *
У меня тоже дешифруется быстро. Время засечь не могу (та же беда с точками останова, что описывал в другой теме; проще новый проект создать, чем в этом копаться).

я запускал таймер на секунд 10 и поднимал флаг. В цикле расшифровывал, увеличивал счетчик, выходил по флагу, считал время
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.