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

Собственный Bootloader для MSP430

Не могли бы подсказать где находится оригинальный bootloader от TI.

Сейчас пытаюсь с компилировать из примеров. Компилятор говорит что мало место под прошивку в области BSL.

Про какой именно кристалл MSP430 вопрошаете?

 

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


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

Интересует кристалл MSP430F5528. И возможно прошить область BSL под работу с USB.

Открываете оригинальный даташить на контроллер:

http://www.ti.com/lit/ds/symlink/msp430f5528.pdf и поиском по слову memory находим на 22й странице "Table 6. Memory Organization"

Как видно из таблицы часть флеш памяти отведена под USB bootloader "Bootstrap loader (BSL) memory (flash)"

Если памяти мало и бутлоадер родной не нужен, можно эту память использовать для своих нужд.

 

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


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

Добрый день

 

Спасибо за ответ. Пробывал передать управление в область BSL виснет процессор.

Смотрю в отладчике значение памяти 0x3fff. Возникает сомнение в наличие там кода.

Чем можно записать BSL область или как правильно передать управление.

 

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


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

Добрый день

 

Спасибо за ответ. Пробывал передать управление в область BSL виснет процессор.

Смотрю в отладчике значение памяти 0x3fff. Возникает сомнение в наличие там кода.

Чем можно записать BSL область или как правильно передать управление.

Скорее всего Вы затерли BSL. Вот здесь есть софт чтоб перезаписать в область BSL, а вот где сам код взять - не знаю, наверное на TI

 

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


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

Спасибо за ответы.

Разобрался у MSP430F55xx стандартный загрузчик HID устройство с PID 0x0200 VID 0x2047.

Я в программе на РС изменил PID на 0x0301 и устройство не определялось.

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


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

Привет всем. Делаю блютуз-бутлоадер для msp430. Флеш будет разбит на 2 части. По стартовым адресам сидит бутлоадер и проверяет, есть ли новый файл прошивки. Если есть - шьет. Если нет - переходит в область флеш, где записана основная прошивка.

Вопрос: как правильно настроить ИАР, чтобы он генерировал файл без отладочной инфо и всякого барахла, чтобы бутлоадр мог его писать сразу во флеш?

 

поставил во вкладку options->linker->output маркер other, выбрал output format: msp430-txt.

но меня смущает размер данных в получившемся файле - 2.5 кБ, а при билде иар сообщает, что размер кода должен быть около 900 байт. Что нужно еще настроить?

post-81165-1440758988_thumb.png

post-81165-1440759008_thumb.png

post-81165-1440759016_thumb.png

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


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

Если вместо формата "msp430-txt" выбрать в том-же списке формат "raw-binary" - то получится файл с расширением *.BIN, и готовым машинным кодом.

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


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

Привет всем. Пишу бутлоадер для msp430f6721 в IAR.

Память разбил на 3 части:

- бутлоадер (E000-FFFF) - в памяти пока записан только он;

- рабочая программа (B000-DFFF);

- файл прошивки (8000-AFFF);

Пытаюсь записать бутлоадером тестовую страницу памяти (512 байт) по адресу 0x8000 - пишет правильно, но после повторного запуска отладки страница оказывается забита какими-то левыми данными.

Когда пытаюсь писать по адресу 0xC000 - все ок.

Помогите пожалуйста разобраться. грешу на настройки линкера. на всякий случай вот ф-ция записи флеш:

uint8_t flash_write(int addr, uint8_t *data)
{
 flash_erase(addr);

 char *addr_ptr;
 char *data_ptr;
 addr_ptr = (char*)(addr);
 data_ptr = (char*)(data);

 __disable_interrupt();
 FCTL3 = FWKEY;                        // Clear Lock bit
 FCTL1 = FWKEY + WRT;                  // Set WRT bit for write operation

 for (uint16_t i = 0; i < MCU_PAGE_SIZE; i++)
 {
   *addr_ptr++ = *data_ptr++;
 }

 FCTL1 = FWKEY;                        // Clear WRT bit
 FCTL3 = FWKEY + LOCK;            // Set LOCK bit
 while(BUSY & FCTL3);
 __enable_interrupt();

 addr_ptr = (char*)(addr);
 data_ptr = (char*)(data);
 for (uint16_t i = 0; i < MCU_PAGE_SIZE; i++)
 {
   if ((*data_ptr++) != (*addr_ptr++))
   {
     return MCU_FLASH_WRITE_ER;
   }
 }
 return MCU_FLASH_WRITE_OK;
}

 

вот файл линкера для бутлоадера:

// -------------------------------------

// Code

//

 

-Z(CODE)CSTART,ISR_CODE,CODE_ID=E000-FF7F

-P(CODE)CODE,CODE16=E000-FF7F

 

// -------------------------------------

// Interrupt vectors

//

 

-Z(CODE)INTVEC=FF80-FFFF

-Z(CODE)RESET=FFFE-FFFF

post-81165-1441003495_thumb.png

post-81165-1441003511_thumb.png

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


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

но меня смущает размер данных в получившемся файле - 2.5 кБ, а при билде иар сообщает, что размер кода должен быть около 900 байт.

Это нормально. Т.к. значение байта во флеше отображено обычными символами (формат то текстовый выбрали), причём тремя. 1 символ на каждую декаду байта плюс пробел. Вот и получается 900 * 3 = 2700 байт.

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


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

Привет всем. Пытаюсь разобраться с разблокированием JTAG на msp430f6721. Использую программатор MSP-FET (который черный, версия прошивки по утверждению MSPFlasher_1.3.8 - последняя), в качестве ПО - BSL_scripter v3.1.0.0. Win7 x64

после чтения бесчисленной документации от TI я пришел к выводу, что можно через BSL залить в МК прошивку, которая стирает адреса 0x17fc-0xf17ff (устанавливает в ff), тем самым сбрасывая лок JTAG-a

Проблема в том, что я не могу достучаться через BSL до МК - скриптер пытается что-то делать, довольно долго. Но содержимое флеш не меняется

Вот мой скрипт:

LOG
MODE 6xx UART COM5
VERBOSE
RX_PASSWORD pass32_wrong.txt
MASS_ERASE
RX_DATA_BLOCK jtag_unlock.txt
TX_DATA_BLOCK 0x17f0 0x10 Data_Read.txt

COM5 в моей системе - MSP Application UART1

 

Схема включения:

МК                      MSP-FET
RST/SBWTDO  -    TDO/TDI (pin1)
TEST/SBWTCK -    TCK       (pin7)
VCC            -    VCC_TOOL (pin2)
GND            -     GND (pin9)
BSL_TX        -     UART_TXD (pin12)
BSL_RX        -     UART_RXD (pin14)

 

пробовал эту схему включения, тоже без результата https://e2e.ti.com/cfs-file/__key/community...-Connection.png

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

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


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

Для обращения к области BSL её надо разблокировать, иначе - сброс по ресету.

 

да, я знаю. я пробовал лочить JTAG из кода - получается. Теперь тем же кодом хочу его разлочить (только записывая ff). Но не могу его залить с помощью MSP-FET и BSL Scripter

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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