|
Что за “Reserved Address” ?, фантомный код изменяет адресс |
|
|
|
Dec 27 2007, 10:54
|

Знающий
   
Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053

|
Есть достаточна большая программа. Вся программа работает из внешнего ОЗУ. Грузится bootloaderom из внешнего ПЗУ. Вначале программы есть модуль проверяющий корректность программы. Он подсчитывает CRC всей программы (находящуюся в ОЗУ) и сверяет с заранее установленным значением. Все переменные находятся вне прошивки, и поэтому не влияют на подсчёт. В старых версиях IAR (4…) всё работало прекрасно. Но поставил версию 5.1 и на тебе, CRC всё время не совпадает. Начал копать и выкопал что, во всей прошивке меняется один адрес (4 байта), находящийся по адресу 0x34. Посмотрел ассемблерный текст, а по этому адресу такая строка: Цитата DCD 0 ; Reserved Address Я нигде в программе не использую этот адрес. В настройках линкера никаких checksum не задействовано. Пытался найти, что за зараза туда лезет в дебагере, но ничего не вышло. Приходится пропускать большие аппаратно зависимые участки кода, а в месте программы, где в железе уже есть изменения этого адреса, в дебагере нет изменений. Господа, какие будут мысли?
--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
|
|
|
|
|
 |
Ответов
|
Dec 29 2007, 11:02
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(KRS @ Dec 29 2007, 13:09)  Только адрес у него, не 0x34, а 0x14 Ну да, вы правы. Вектор действительно 0x14. По нему команда ldr pc,[pc,#24], а по адресу 0x34 собственно адрес функции-обработчика. Так IAR-вский стартап устроен. Я как раз это и подразумевал - не думал, что надо разжевывать очевидное.
|
|
|
|
|
Dec 29 2007, 14:02
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(VladislavS @ Dec 29 2007, 14:02)  Ну да, вы правы. Вектор действительно 0x14. По нему команда ldr pc,[pc,#24], а по адресу 0x34 собственно адрес функции-обработчика. Так IAR-вский стартап устроен. Как раз в IAR стартапе, этот адрес пропущен! что видно в исходниках от 5.xx Код SECTION .intvec:CODE:NOROOT(2)
PUBLIC __vector PUBLIC __vector_0x14 PUBLIC __iar_program_start EXTERN Undefined_Handler EXTERN SWI_Handler EXTERN Prefetch_Handler EXTERN Abort_Handler EXTERN IRQ_Handler EXTERN FIQ_Handler
ARM __vector: ; All default exception handlers (except reset) are ; defined as weak symbol definitions. ; If a handler is defined by the application it will take precedence. LDR PC,Reset_Addr ; Reset LDR PC,Undefined_Addr ; Undefined instructions LDR PC,SWI_Addr ; Software interrupt (SWI/SVC) LDR PC,Prefetch_Addr ; Prefetch abort LDR PC,Abort_Addr ; Data abort __vector_0x14: DCD 0 ; RESERVED LDR PC,IRQ_Addr ; IRQ LDR PC,FIQ_Addr ; FIQ
Reset_Addr: DCD __iar_program_start Undefined_Addr: DCD Undefined_Handler SWI_Addr: DCD SWI_Handler Prefetch_Addr: DCD Prefetch_Handler Abort_Addr: DCD Abort_Handler IRQ_Addr: DCD IRQ_Handler FIQ_Addr: DCD FIQ_Handler
|
|
|
|
Сообщений в этой теме
Beginning Что за “Reserved Address” ? Dec 27 2007, 10:54 Baser ИАР может добавлять в код какие-то свои идентифика... Dec 27 2007, 12:58 Beginning Цитатано посколько это ни на что не влияло
Да в мо... Dec 27 2007, 13:26 vmp А это случайно не контрольная сумма для LPCxxxx? Dec 27 2007, 14:43 KRS Цитата(vmp @ Dec 27 2007, 17:43) А это сл... Dec 28 2007, 07:22 Beginning Процессор SHARP LH525. Вообще странное явление. Ан... Dec 28 2007, 08:20 VladislavS icf в студию. И раз уж отладxиком залезли, то не в... Dec 28 2007, 14:50 Beginning /*###ICF### Section handled by ICF editor, don... Dec 28 2007, 16:02    VladislavS Цитата(KRS @ Dec 29 2007, 17:02) Как раз ... Dec 30 2007, 16:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|