Перейти к содержанию
    

Как прочесть бутлоадер

Подскажите пожалуйста есть ли возможность прочесть бутлоадер у LPC2478.

Насколько я понял, при старте бутлоадер размером в 8кБ отображается на адресах 0x7FFEE000...

Но при попытке чтения из своего кода получаю только FF. Или защита от чтения этой области, или я что-то не так делаю. Может есть вариант где-то скачать уже слитый бутлоадер чтобы посмотреть внутренности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каком-нибудь IARе под отладчиком на остановленном контроллере, без затей, в окошке "Memory" посмотреть всё что душе угодно и сохранить понравившееся ;-)
Больше скажу: задав соответственный PC, тут же дизассемблировать требуемое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, planetzeus said:

Подскажите пожалуйста есть ли возможность прочесть бутлоадер у LPC2478.

Интереса ради: а зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, haker_fox said:

Интереса ради: а зачем?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 hours ago, planetzeus said:

Насколько я понял, при старте бутлоадер размером в 8кБ отображается на адресах 0x7FFEE000...
Но при попытке чтения из своего кода получаю только FF.

Мне кажется, у вас с адресом ошибка. От этого 0x7FFEE000 до 0x8000'0000 - целых 68 килобайт. Попробуйте читать чуть дальше.

 

(я, правда, могу путать. С 2368 я работал лет 8 назад...).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 minutes ago, esaulenka said:

Мне кажется, у вас с адресом ошибка. От этого 0x7FFEE000 до 0x8000'0000 - целых 68 килобайт.

 

Не, интересует только область между 0x7FFEE000 до 0x7FFF0000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, planetzeus сказал:

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

Лучше бы тратили время на поиск документированных "штук". В мануале. Тогда меньше было бы таких странных желаний.

А если некий код чего-то там читает в ROM, то как раз в мануале должно быть описано, что это и для чего. Пробовали его открывать? Ведь тогда не нужно будет тратить время на бесполезную ерунду (типа дизассемблирования чего-то там).

33 минуты назад, planetzeus сказал:

Не, интересует только область между 0x7FFEE000 до 0x7FFF0000

Если в мануале на МК содержимое этой области не описано, то ваша затея - бесперспективна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, jcxz said:

Лучше бы тратили время на поиск документированных "штук". В мануале. Тогда меньше было бы таких странных желаний.

А если некий код чего-то там читает в ROM, то как раз в мануале должно быть описано, что это и для чего. Пробовали его открывать? Ведь тогда не нужно будет тратить время на бесполезную ерунду (типа дизассемблирования чего-то там).

Если в мануале на МК содержимое этой области не описано, то ваша затея - бесперспективна.

Спасибо за конструктивный ответ. Если я пришел к такому вопросу, значит этого нет в мануале, не пробовали догадаться?

В слитой прошивке я вижу обращение к этому адресу. И дальнейшее использование этого значение.

На самом деле я пробовал подбирать, перебрать 4 байта не такая уж проблема. Но проблема в том, что нет четкого условия определения правильно ли это значение. Прочитать это значение своим кодом не получилось, точнее получил (-1), что явно неверно судя по коду. Поэтому пытаюсь понять что это за значение. В мануале на карте памяти есть эта область, написано буквально следующее "The Flash portion of the boot block is 8 kB in size and resides in the top portion (starting
from 0x0007 E000) of the on-chip Flash memory." Поэтому и спрашиваю у более знающих что это и как получить эту часть памяти. А так же почему из своей прошивки эта область недоступна для чтения.

Мне нужно решить задачу и возможно использовать такой же подход, так как это рабочее решение. В чем бесполезность ерунды?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, planetzeus сказал:

В чем бесполезность ерунды?

В том, что раз содержимое ROM недокументировано, то производитель не гарантирует неизменность этого содержимого. И в следующей партии чипов оно может измениться.

На кой тогда оно вам сдалось? Неизвестно что и без каких-либо гарантий....

28 минут назад, planetzeus сказал:

В слитой прошивке я вижу обращение к этому адресу. И дальнейшее использование этого значение.

Либо написатель этой "слитой" смог найти в мануале то, чего вы не смогли. Либо это слитое смело отправляйте в мусорку (почему - см.выше).

 

05.09.2021 в 19:18, planetzeus сказал:

Насколько я понял, при старте бутлоадер размером в 8кБ отображается на адресах 0x7FFEE000...

PS: Открыл мануал, через минуту нашёл, что BOOT-ROM начинается не с 0x7FFEE000, а с 0x7FFFE000.

И не "отображается туда при старте", а наоборот - находится там всегда, а при старте (после reset-а) дополнительно отображается на адрес 0. После передачи управления пользовательской прошивке это отображение видимо отключается, но доступ к 0x7FFFE000 скорей всего должен остаться. Хотя и смысла в нём нет, если содержимое не описано нигде в документации.

rom_lpc2xxx.thumb.png.eb7d3841a17c646d5b2ffb56e84140ed.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 minutes ago, jcxz said:

В том, что раз содержимое ROM недокументировано, то производитель не гарантирует неизменность этого содержимого. И в следующей партии чипов оно может измениться.

PS: Открыл мануал, через минуту нашёл, что bootloader начинается не с 0x7FFEE000, а с 0x7FFFE000.

И не "отображается туда при старте", а наоборот - находится там всегда, а при старте (после reset-а) дополнительно отображается на адрес 0. После передачи управления пользовательской прошивке это отображение видимо отключается, но доступ к 0x7FFFE000 скорей всего должен остаться. Хотя и смысла в нём нет, если содержимое не описано нигде в документации.

Еще раз повторюсь, мне нужно решить задачу. Какие партии и кто что гарантирует никак не касается задачи.

Мне нужен способ прочесть эту часть памяти. Остальные вопросы здесь обсуждать нет смысла. В любом случае, спасибо за ваш ответ.

 

 

pic.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если уж сильно нужно именно содержимое BOOT FLASH, то можно его поискать там, где написано "BOOT FLASH" (выделено) - на вершине FLASH-а:

boot-flash_lpc2xxx.thumb.png.5d0c4892e21bec403bf6f84149ff44d1.png

 

Также следует посмотреть на регистр MEMMAP, и занести в него необходимые значения.

05.09.2021 в 19:18, planetzeus сказал:

Но при попытке чтения из своего кода получаю только FF.

Видимо там ничего нет (FF в LPC - стёртое состояние флеша).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, jcxz said:

Также следует посмотреть на регистр MEMMAP, и занести в него необходимые значения.

Спасибо, я посмотрю в их прошивке инициализацию этого регистра. Возможно из-за него недоступна эта часть памяти в моем случае

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, planetzeus said:

Ну и кроме того, весьма полезно для изучения посмотреть как устроен бутлоадер.

Хм... возможно. Если нужно шить МК своим загрузчиком, то воспользуйтесь IAP.

Устройство бутлоадера лучше поискать по форуму. Этих тем тут с разнообразными алгоритмами как на бутлоадерном заводе)))

Право же, я Вас не отговариваю. Но заинтригован в общем-то бесполезной идеей) Почему бесполезной, уже выше сказали: содержимое может меняться от ревизии к ревизии. А попробуйте задать вопрос техподдержке NXP? Может быть их код и вовсе не секретный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 часов назад, haker_fox сказал:

Право же, я Вас не отговариваю. Но заинтригован в общем-то бесполезной идеей) Почему бесполезной, уже выше сказали: содержимое может меняться от ревизии к ревизии. А попробуйте задать вопрос техподдержке NXP? Может быть их код и вовсе не секретный.

Как выяснилось к последним сообщениям ТС, прочитать он хочет код некоего бутлоадера, не того, который произведён NXP и находится в ROM, а пользовательского находящегося во FLASH. См. карту адресов выше.

Т.е. - это бутлоадер, который туда записал видимо какой-то производитель устройства на этом МК (а не NXP) и ТС зачем-то хочет его считать. Видимо ПО, прошитое в этот девайс, состоит из бутлодера+рабочего_ПО. Рабочее ПО автор считал (или где-то слямзил иными путями), увидел что в нём идёт обращение в область обозначенную как BOOT-FLASH, и хочет тоже прочитать это место. А в его МК это место или стёрто (содержит 0xFF) или просто не отмаплено на верхние адреса (MEMMAP).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Логика моего вопроса очень простая. Я вижу в коде обращение по адресу 0x7FFEExxx и пытаюсь понять что это, как это используется и как этим правильно пользоваться. Сам не могу найти решение, поэтому спрашиваю у тех, кто в теме.

Зачем думать о ревизии процессора? Это штучное устройство и пользователь конечного устройства не имеет возможности перепрошить девайс или заменить проц. Процессор + ПО = единый продукт. Будет другая ревизия процессора, слегка модифицируем ПО.

Если есть возможность прошить именно в этот процессор свой загрузчик в другую область памяти, то я об этом просто не знаю, ни в даташите, ни в других местах я этого не нашел.

Quote

Т.е. - это бутлоадер, который туда записал видимо какой-то производитель устройства на этом МК (а не NXP) и ТС зачем-то хочет его считать. Видимо ПО, прошитое в этот девайс, состоит из бутлодера+рабочего_ПО. Рабочее ПО автор считал (или где-то слямзил иными путями), увидел что в нём идёт обращение в область обозначенную как BOOT-FLASH, и хочет тоже прочитать это место. А в его МК это место или стёрто (содержит 0xFF) или просто не отмаплено на верхние адреса (MEMMAP).

Подскажите, где об этом можно посмотреть и почитать. Что плохого в том, чтобы поучиться у других делать то, чего не умеешь. Если кто-то сделал такое решение и это работает, то почему бы не сделать подобное решение в своем продукте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...