реклама на сайте
подробности

 
 
> Обновление прошивки STR91X через внешний интерфейс (UART)
Zandy
сообщение Aug 11 2010, 09:57
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 5-03-05
Из: Москва
Пользователь №: 3 098



Я столкнулся с проблемой написания программы (бутлодера) для обновления софта на контроллере STR91X. Прошерстив форумы ST и Keil и перебробовав массу вариатов, угробив массу времени, в сухом остатке только нерабочие проекты. Я не детализирую свои вопросы (их очень много), т. к. хотелось бы знать, кто-нибудь делал такие рабочие проекты именно для STR91X?
Очень надеюсь на помощь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zandy
сообщение Aug 16 2010, 09:04
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 5-03-05
Из: Москва
Пользователь №: 3 098



Да, курсор в дизассемблере встает на 0 адрес. А далее вот что. Вот листинг дизасемблера по шагам:

Код
    50:         LDR     PC, Reset_Addr ddr
0x00000000  E59FF018  LDR       PC,[PC,#0x0018]

   137:         SaveContext r0,r3   ; Save the workspace plus the current
   138:                              ; return address lr_ und.
0x00000050  E1A00000  NOP       PC,[PC,#0x0018]
   140:        ldr r0,=Undefined_Handler PC}00080
0x00000054  E1A00000  NOP       PC,[PC,#0x0018]
   141:        ldr lr,=Undefined_Handler_end 0
0x00000058  E1A00000  NOP       PC,[PC,#0x0018]


   144: Undefined_Handler_end                  ; Reserved vector
0x0000005C  E1A00000  NOP       R0,R0,R0000000

   148:;****************************************************************************
***
   149:;* Function Name  : SWIHandler Save the workspace plus the current
   150:;* Description    : This function is called when SWI instruction executed.
   151:;* Input          : none ined_Addr
   152:;* Output         : none C,[PC,#0x0018]
   153:;****************************************************************************
***
   154:  4  E1A00000  NOP       PC,[PC,#0x0018]
   155: SWIHandler lr,=Undefined_Handler_end 0
0x00000060  E59F0110  LDR       R0,[PC,#0x0110]
   156:         SaveContext r0,r3   ; Save the workspace plus the current
   157:                              ; return address lr_ svc. ssed */
   158:
0x00000064  E59F1110  LDR       R1,[PC,#0x0110]
   159:         ldr r0,=SWI_Handler
0x00000068  E5801034  STR       R1,[R0,#0x0034]
   160:         ldr lr,=SWI_Handler_end
0x0000006C  E3A00315  MOV       R0,#0x54000000
   161:         bx r0                ; Branch to SWI_Handler.
   162:
   163: SWI_Handler_end
0x00000070  E3A01004  MOV       R1,#0x00000004
   164:         RestoreContext r0,r3; Return to the instruction following...
   165:                              ; ...the SWI instruction.
   166:;****************************************************************************
***
   167:;* Function Name  : PrefetchAbortHandler  SWI_Handler
   168:;* Description    : This function is called when Prefetch Abort
   169:;                   exception is entered
   170:;* Input          : none
   171:;* Output        : none
   172:;****************************************************************************
***
   173:  
   174: PrefetchAbortHandler
0x00000074  E5801000  STR       R1,[R0]
   175:         SUB    lr,lr,#4      ; Update the link register.
0x00000078  E3A01002  MOV       R1,#0x00000002
   176:         SaveContext r0,r3   ; Save the workspace plus the current ..
   177:                              ; return address lr_abt.
   178:    
0x0000007C  E5801004  STR       R1,[R0,#0x0004]
   179:        ldr r0,=Prefetch_Handler
0x00000080  E3A01000  MOV       R1,#0x00000000
   180:        ldr lr,=Prefetch_Handler_end
0x00000084  E580100C  STR       R1,[R0,#0x000C]
   181:        bx r0                ; Branch to Prefetch_Handler.
   182:
   183:
0x00000088  E3A02802  MOV       R2,#0x00020000


0x54000000  00000004  ANDEQ     R0,R0,R4
0x54000004  00000002  ANDEQ     R0,R0,R2
0x54000008  00000000  ANDEQ     R0,R0,R0


и т. д.


Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 16 2010, 16:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Zandy @ Aug 16 2010, 13:04) *
Да, курсор в дизассемблере встает на 0 адрес. А далее вот что. Вот листинг дизасемблера по шагам:

Лучше посмотрите не дизассемблер, а содержимое памяти с нулевого адреса. И сопоставьте с тем, что туда записывается.
Есть подозрение, что пишете на самом деле не то.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016