This repository has been archived by the owner on Jan 31, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
loader.txt
54 lines (34 loc) · 1.82 KB
/
loader.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//$Id: loader.txt,v 1.2 2004-03-17 11:34:16 peter Exp $
Описание работы загрузчка
Загрузчик(loader) - это программа прошиваемая в MSP микроконтроллер для
выполнения операций "самопрограммирования". В начале работы управление
передается этому загрузчику, а потом основной программе. В основной программе
необходим фиксированный адрес входа, который зависит от версии кристала
MSP430F149 - адрес входа 1000h
Загрузчик после окончания таймаута будет передавать управление по данному
фиксированному адресу.
Алгоритм работы (обмена) с загрузчиком по последовательному порту
- обмен на скорости 115200
запрос версии (0x23) - при отправке данного пакета в загрузчик в ответ должен
придти пакет (0x24) который будет содержать идентификатор версии загрузчика
и различные аппаратные характеристики системы
набор комманд 0x1D,0x1E,0x1F служит для авторизации доступа к загрузчику
после авторизации необходимо коммандами 0x20, 0x21 считать сектор 0, который
содержит векторную таблицу существующей прошивки кристалла
адреса векторных таблиц в кристаллах:
MSP430F149 FFE0h-FFFFh
считать из входного файла (файл прошивки) сектор с адресом 0 и заменить
в этих данных вектор инициализации на те данный, которые были в секторе 0
выданных загрузчиком.
адрес векторов инициализации:
MSP430F149 FFFEh-FFFFh
провести процедуру программирования сектора 0.
Процедура перепрограммирования сектора:
- передать загрузчику данные для программирования (0x1B)
- проконтролировать передачу данных в буфер (0x1С,0x25)
- дать команду очистки сектора (0x22)
- дать команду запись в сектор данных из промежуточного буфера (0x26)
- проконтролировать запись чтением флеш (0x20,0x21)
провести процедуру программирования остальных блоков данных.
В секторе, где хранится фиксированный адрес входа необходимо подставить
векторный адрес из входного файла(файл прошивки).