TOG 0 19 апреля Опубликовано 19 апреля · Жалоба Товарищи, делаю бутлоадер и немного затупил с форматом HEX-файла. После первой строки с адресом сегмента (сегмент 0x1000 в данном примере), обязательно ли компилятор размещает данные в HEX-файле непрерывно в пределах одного сегмента памяти ? Тут в примере данные размещены непрерывно по адресам: 0x1000C200 (16 байт данных E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD) 0x1000C210 (16 байт данных FFFFF6F50EFE4B66F2FA0CFEF2F40EFE) 0x1000C220 (16 байт данных F04EF05FF06CF07DCA0050C2F086F097) 0x1000C230 (16 байт данных F04AF054BCF5204830592D02E018BB03) А мог бы он скажем после адреса 0x1000C210 вместо адреса 0x1000C220 поставить какой-то другой адрес(например 0x1000D000) ? Мало ли как там программист разместил RO-данные в программе. Или при появлении разрыва в данных в HEX-файле обязательно появится запись с объявлением сегмента (типа :020000021000EC) ? :020000021000EC :10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 :10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 :10C22000F04EF05FF06CF07DCA0050C2F086F097DF :10C23000F04AF054BCF5204830592D02E018BB03F9 :00000001FF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 19 апреля Опубликовано 19 апреля · Жалоба 30 минут назад, TOG сказал: А мог бы он скажем после адреса 0x1000C210 вместо адреса 0x1000C220 поставить какой-то другой адрес(например 0x1000D000) ? Может и делает. Для того .hex и нужен. PS: И вообще - странный вопрос. Вроде должно быть очевидно, что иного ответа в принципе быть не может. Попробуйте подумать почему. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 19 апреля Опубликовано 19 апреля · Жалоба 34 minutes ago, jcxz said: Может и делает. Для того .hex и нужен. PS: И вообще - странный вопрос. Вроде должно быть очевидно, что иного ответа в принципе быть не может. Попробуйте подумать почему. Не так уж это и очевидно. Я немного поэкспериментировал с размещением RO-данных в прошивке. Например делаю размещение данных ближе к концу флэш памяти и вот как компилятор создает HEX-файл: :020000040801F1 :1068000004133443000000000000000000000000FD :020000040801F1 :106810000408010F0000000000000000000000006E :020000040801F1 :106820000429000000000000000000000000000036 :020000040801F1 :10683000A0D202F9A377C00000000000000000003F Хоть фактически данные размещаются непрерывно (0x08016800, 0x08016810, 0x08016820, 0x08016830), но компилятор дополнительно снабдил их все адресом сегмента 0x0801 (хоть сегмент и не меняется). А если разместить RO-данные ближе к началу флэш памяти, то HEX-файл представляет единый монолит: Вначале объявлен адрес сегмента и дальше все данные идут по порядку до самого конца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 19 апреля Опубликовано 19 апреля · Жалоба 1 hour ago, TOG said: После первой строки с адресом сегмента (сегмент 0x1000 в данном примере), обязательно ли компилятор размещает данные в HEX-файле непрерывно в пределах одного сегмента памяти ? Может быть как угодно. Поэтому люди стараются не использовать hex для загрузки, а придумывают разные dfu, uf2 и прочее. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 19 апреля Опубликовано 19 апреля · Жалоба 3 часа назад, TOG сказал: Не так уж это и очевидно. Совершенно очевидно. Так как вы не указали конкретный генератор .hex и конкретную версию с условиями её работы, значит вопрос относится ко всем существующим в мире генераторам: "Все ли существующие в мире генераторы .hex генерят без дырок?" Очевидно, что ответить "да" на это может только человек, проверивший все существующие в мире генераторы .hex, всех версий, в том числе и разрабатываемые сейчас и будущие. А это невозможно. Значит только = "нет, дырки могут быть". 3 часа назад, TOG сказал: Я немного поэкспериментировал с размещением RO-данных в прошивке. И что? Зачем эти телодвижения? Завтра поменяется ваша программа, поменяется версия компилятора или ещё чего-нить и .hex-файл станет другим. С совсем другим расположением секций данных. Вы после каждой компиляции будете просматривать .hex-файл? 3 часа назад, x893 сказал: Поэтому люди стараются не использовать hex для загрузки, а придумывают разные dfu, uf2 и прочее. Это неправда. Не надо говорить за всех, говорите только за себя. Всегда использовал, использую и буду использовать .hex для загрузки прошивок. Это удобный и простой формат. Поддерживаемый кучей софта. В отличие от всяких специфичных, типа вышеприведённых. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 19 апреля Опубликовано 19 апреля · Жалоба 1 hour ago, jcxz said: Это неправда. Не надо говорить за всех, говорите только за себя. Да используйте, что хотите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 20 апреля Опубликовано 20 апреля · Жалоба On 4/19/2024 at 4:16 PM, jcxz said: Всегда использовал, использую и буду использовать .hex для загрузки прошивок. Это удобный и простой формат. Поддерживаемый кучей софта. В отличие от всяких специфичных, типа вышеприведённых. Откройте для себя :)) моторолловский .s19 и .s37 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 20 апреля Опубликовано 20 апреля · Жалоба И саму Моторолу (((-8Ж в смысле, где она та Моторола... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться