Перейти к содержанию
    

Впрочем есть ещё одно особо тонкое извращение - пропустить этот файл через препроцессор С, а результат уже скармливать ассемблеру.

Кейловский с-компилер должен уметь выдавать результат работы препроцессора в файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему "только"? :) GCC тоже понимает!

(gcc -x assembler-with-cpp file.S).

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

 

А можно вместо armcc просто использовать в Keil gcc, если сильно хочется.

Изменено пользователем x893

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь задача - зашифровать-расшифровать прошивку.

Попробовал XTEA. Пока только закодировал. Не знаю, сколько времени будет декодироваться в микроконтроллере.

 

У меня на CM3 (LPC175x) влезло в 4КБ - CRC32 (программное, аппаратного нет), USART, протокол обменя, AES-128 (CBC mode), XTEA (тоже CBC)

Время на 1КБ на 16МГц (PLL не запущена)

- CRC32 - менее 1мс

- XTEA - 2мс

- AES-128 - 32мс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэкспериментировав с размещением в стартапе дополнительных констант, решил-таки залезать в дыру в векторах, в адрес 0x0020. Там (в секторе 1) внешней программой - шифровальшиком сохраняю размер файла. Туда же (но в загрузчике, в секторе 0) ST-Link Утилитой записываю серийный номер. И никаких изменений в startup.s не требуется.

А строковые константы - производитель, модель, версия программы - куда компилятор положит, оттуда программа и возьмет.

У меня тоже дешифруется быстро. Время засечь не могу (та же беда с точками останова, что описывал в другой теме; проще новый проект создать, чем в этом копаться).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня тоже дешифруется быстро. Время засечь не могу (та же беда с точками останова, что описывал в другой теме; проще новый проект создать, чем в этом копаться).

я запускал таймер на секунд 10 и поднимал флаг. В цикле расшифровывал, увеличивал счетчик, выходил по флагу, считал время

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...