|
|
  |
STM32 bootloader, написание собственного бута |
|
|
|
Mar 25 2015, 10:00
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Сергей Борщ @ Mar 25 2015, 12:52)  Пойдет, но я бы не экономил. Потом когда-нибудь будете портировать на более продвинутый кортекс у которого это место в таблице занято и будете долго искать причину неработы. Это раз. Второе - будет довольно сложно заставить линкер класть размер в уже занятое векторами место. А сразу за векторами никто ему мешать не будет. Полистал книжку по Cortex-M4, там тоже дыра. Можно и после векторов прерываний разместить, но и там сдвиг возможен в новых микроконтроллерах, даже с большей вероятностью. Линкером класть не умею (вернее, вычислять размер не умею). Буду своей программой записывать, туда же CRC, туда же и серийный номер. STM32 ST-Link Utility умеет перезаписывать флэш (ей серийный номер и обновляю). Э-э, CRC туда поместить нельзя. Иначе при расчете нужно проскакивать ее. Ее лучше в конец приписать, чтобы полный расчет дал 0.
|
|
|
|
|
Mar 26 2015, 12:36
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(AHTOXA @ Mar 26 2015, 08:30)  Напишите перед использованием объявление: extern uint16_t Serial; Так не пробовал. У меня же строка. А extern char *Serial; компилируется, но не работает. Потому что не указатель. А extern char[] Serial не компилируется. Как-то надо создать указатели на строки в ассемблерном файле. Неужели вручную? Сообразил: TxBuffer_write((char *)&Serial);
|
|
|
|
|
Mar 26 2015, 13:09
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ViKo @ Mar 26 2015, 14:36)  А extern char *Serial; компилируется, но не работает. Потому что не указатель. А extern char[] Serial не компилируется. " А кто из телепатов не догадался, что там у меня в исходнике и как ругается компилятор - я не виноват". Цитата(ViKo @ Mar 26 2015, 14:36)  Сообразил: TxBuffer_write((char *)&Serial); Какое-то масло масляное. Как теперь объявлен Serial?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 26 2015, 13:14
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Сергей Борщ @ Mar 26 2015, 16:09)  " А кто из телепатов не догадался, что там у меня в исходнике и как ругается компилятор - я не виноват". Какое-то масло масляное. Как теперь объявлен Serial? Я, вроде, всё описал выше. В startup.s: Код EXPORT Serial ALIGN 4 Serial DCB "0002",0 В Main.h: Код extern const char Serial; Использую: Код TxBuffer_write((char *)&Serial);
|
|
|
|
|
Mar 26 2015, 14:11
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(ViKo @ Mar 26 2015, 15:14)  Я, вроде, всё описал выше. Про main.h не было. И текста ругани компилятора не было. Вот так должно работать: Код extern const char Serial[];
TxBuffer_write(Serial); Цитата(ViKo @ Mar 26 2015, 15:14)  Код extern const char Serial; А, тогда понятно, почему потребовалось брать адрес и грубой силой приводить его к другому типу.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 7 2015, 14:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(ViKo @ Apr 7 2015, 18:43)  Попробую спросить еще раз. Где бы почитать, как задать переменные в asm "file.s" из внешнего "defines.h"? Что-то ничего не нахожу. С такими запросами только на IAR переходить  - он синтаксис С-препроцессора понимает. Судя по http://infocenter.arm.com/help/index.jsp?t...sm_chebabgi.htmможно разве что в asm-файле определить символ через GBLS, а потом передать его значение через командную строку (--predefine ... ).
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|