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

 
 
> Что за “Reserved Address” ?, фантомный код изменяет адресс
Beginning
сообщение Dec 27 2007, 10:54
Сообщение #1


Знающий
****

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



Есть достаточна большая программа. Вся программа работает из внешнего ОЗУ. Грузится bootloaderom из внешнего ПЗУ. Вначале программы есть модуль проверяющий корректность программы. Он подсчитывает CRC всей программы (находящуюся в ОЗУ) и сверяет с заранее установленным значением. Все переменные находятся вне прошивки, и поэтому не влияют на подсчёт. В старых версиях IAR (4…) всё работало прекрасно. Но поставил версию 5.1 и на тебе, CRC всё время не совпадает. Начал копать и выкопал что, во всей прошивке меняется один адрес (4 байта), находящийся по адресу 0x34. Посмотрел ассемблерный текст, а по этому адресу такая строка:
Цитата
DCD 0 ; Reserved Address

Я нигде в программе не использую этот адрес. В настройках линкера никаких checksum не задействовано. Пытался найти, что за зараза туда лезет в дебагере, но ничего не вышло. Приходится пропускать большие аппаратно зависимые участки кода, а в месте программы, где в железе уже есть изменения этого адреса, в дебагере нет изменений. Господа, какие будут мысли?


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VladislavS
сообщение Dec 28 2007, 17:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



"Reservid adres" как раз понятно почему. Если откроешь стартап с таблицей векторов прерываний, то увидишь, что между Data abort и IRQ нет одного вектора, а это как раз 0x34. В icf вроде все в порядке. Кроме как поймать в отладчике вариантов не вижу. Чудес не бывает. Если до main память дошла неизмененная, то дальше только косяки программы. Кстати, не совсем понятно зачем программа проверяет свою цнлостность? Разве это не дело загрузчика? Хотя это и не отменяет поиск барабашки!
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 29 2007, 10:09
Сообщение #3


Профессионал
*****

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



Цитата(VladislavS @ Dec 28 2007, 20:51) *
между Data abort и IRQ нет одного вектора, а это как раз 0x34

Только адрес у него, не 0x34, а 0x14
Go to the top of the page
 
+Quote Post



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

 


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


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