Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дамп BSL от MSP430
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
oleg1000
Возникла надобность немного покопаться в коде BSL от MSP430F1232. Никогда с MSP430 не работал, самому пока снять нечем. Немного разобрал код загружаемого BSL (благодаря плагинам для IDA с этого форума), хотелось бы и на код в ROM посмотреть.
rezident
Возмите программу Kurt-а MSPFET Programmer, снимите полный дамп памяти, вычлените из него область BSL и дизассемблируйте его себе на здоровье. У меня нет под рукой такого кристалла, а то бы снял дамп. Это недолго и несложно.
oleg1000
Цитата(rezident @ Jul 30 2008, 13:49) *
Возмите программу Kurt-а MSPFET Programmer, снимите полный дамп памяти, вычлените из него область BSL и дизассемблируйте его себе на здоровье. У меня нет под рукой такого кристалла, а то бы снял дамп. Это недолго и несложно.
Всё это будет только в сентябре, а пока в отпуске, снять будет нечем. Я так понял в программаторе Kurt'а BSL можно снять отдельно от всего.
А у разных подвидов ROM BSL сильно отличается ?
Если несложно, можете разместить здесь реальный BSL от любых кристаллов, что под рукой ?
_3m
Цитата(oleg1000 @ Jul 30 2008, 16:43) *
Если несложно, можете разместить здесь реальный BSL от любых кристаллов, что под рукой ?

Слил с помощью mspfet
bsl от msp430f1232 Нажмите для просмотра прикрепленного файла
и на всякий случай id чипа Нажмите для просмотра прикрепленного файла
oleg1000
_3m спасибо за помощь.
rezident
Цитата(oleg1000 @ Jul 30 2008, 18:43) *
Всё это будет только в сентябре, а пока в отпуске, снять будет нечем. Я так понял в программаторе Kurt'а BSL можно снять отдельно от всего.
Прочитать содержимое памяти MSP430 можно через 4-х проводный JTAG или 2-х проводный Spy-Bi-Wire, если не пережжен fuse. Или через интерфейс BSL (программный UART, поддерживаемый внутренней BSL-firmware), если имеется пароль доступа к Flash.
А вот с чтением firmwire BSL из ROM сложнее. Мне удалось снять dump только с помощью программы Курта (у нее есть специальная опция DUMP BSL) и LPT-ного FET (MSP-FET430PIF) через 4-х проводный JTAG. Через USB-FET и этой же программы, прочитать дамп BSL не удается. Читается какая-то ерунда. Видимо сам адаптер MSP-FET430UIF блокирует чтение области BSL. cranky.gif Программой от Elprotronic FET-PRO430 тоже не удается считать дамп BSL, т.к. она просто не дает выбрать диапазон адресов области памяти BSL, ругается "Read Address Range Error! Main Memory Start Address must be high then 0x1000". laughing.gif
Цитата(oleg1000 @ Jul 30 2008, 18:43) *
А у разных подвидов ROM BSL сильно отличается ?
Отличаются версии BSL. См. подробнее об интерфейсе и версиях BSL в документе Application of Bootstrap Loader in MSP430 With Flash Hardware, Software Proposal (Rev. D).
Цитата(oleg1000 @ Jul 30 2008, 18:43) *
Если несложно, можете разместить здесь реальный BSL от любых кристаллов, что под рукой ?
Под рукой были MSP430F1161 и MSP430F248. На всякий случай сохранил дампы BSL в двух форматах TI-TXT и Intel HEX.

Update. Удалил файлы, т.к. по ходу проверки они были считаны неверно, с ошибками.
_3m
Цитата(rezident @ Jul 30 2008, 22:20) *
...
Видимо сам адаптер MSP-FET430UIF блокирует чтение области BSL.

Нет, адаптер не блокирует. C-SPY через ez430, подключенный по Spy by wire прекрасно выдает дамп всей памяти, включая код bsl. Скорее всего софт программатора тупо дает отлуп при попытке обращения к области памяти вне флэш. У Курта для чтения bsl предусмотрена специальная функция.
rezident
Цитата(_3m @ Jul 31 2008, 01:58) *
Нет, адаптер не блокирует. C-SPY через ez430, подключенный по Spy by wire прекрасно выдает дамп всей памяти, включая код bsl. Скорее всего софт программатора тупо дает отлуп при попытке обращения к области памяти вне флэш. У Курта для чтения bsl предусмотрена специальная функция.
Да, не блокирует. Были какие-то глюки при чтении. Видимо потому, что питался кристалл прямо от FET. Сейчас попробовал еще раз с внешней запиткой кристалла. Но все равно dump BSL, считанный с помощью программы Курта через USB-FET и через LPT-FET не совпадают на 100%. В USB-ном варианте дампа один байт ближе к концу как 0xFF читается, а в считанном через LPT-FET дампе как 0x00. Считывал, перепроверял и сравнивал несколько раз. См. в аттачменте.
oleg1000
Цитата(rezident @ Jul 31 2008, 00:57) *
Да, не блокирует.

Первая половина BSL есть, а вторая, где одни 00, получается не прочиталась.
oleg1000
Понимаю, что для участников этой ветки мой вопрос будет тупым, но учиться никогда не поздно.
В прошлом году с модулем Курта для IDA разобрал BSL по "косточкам", но чего тогда хотел добиться пока ещё не получил, теперь появилась возможность продолжить "исследования".
Итак имеется разобранный в IDA исходный код BSL и надо сделать его "понятным" для Phyton Project 430 1.10.15 . При попытке компилляции исходника выдаётся сообщение об одной ошибке

Error[A17] msp_bsl.mca(5,45): Expression <> current relocation

Код
;-----------------------------------------------------------------------------
            .OSEG __RAM, DATA
            .ORG     00200h  
;-----------------------------------------------------------------------------
word_200:       .DS 2
word_202:       .DS 2
word_204:       .DS 2
unk_206:        .DS 1
byte_207:       .DS 1
unk_208:        .DS 1
byte_209:       .DS 1
unk_20A:        .DS 1
byte_20B:       .DS 1
byte_20C:       .DS 1
byte_20D:       .DS 1
word_20E:       .DS 2
word_210:       .DS 2
word_212:       .DS 2
word_214:       .DS 2
byte_216:       .DS 1

;-----------------------------------------------------------------------------
            .ASEG __code, CODE
            .ORG     00C00h                 ; Program Start
;-----------------------------------------------------------------------------

; ---------------------------------------------------------------------------
; ===========================================================================

; Segment type: Pure code
                .DCB  04h
                .DCB  0Ch
                .DCB  0Eh
                .DCB  0Ch

                mov     #220h, SP      ; set SP
                clr     R11            ; clear Flags
                clr.b   byte_216       ; set Baud rate 9600
                dint                   ; disable all interupt


C IAR понятно (через #define byte_216 (0x0216)), а как мне здесь описать метки в RAM, чтобы компиллятор не ругался ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.