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

6 minutes ago, alag57 said:

А отлаживать в bin логичено?

А в контроллер по вашему пишется что? ну ведь не .elf (он же .out)...

Линкер выплевывает .elf файл, из которого получается бинарник, и в IAR есть опция.

Далее этот бинарник подписывается, и его и нужно загрузить в контроллер, он ведь по прежнему соответствует .out, адреса функций, переменных все осталось на своих местах.

Поэтому отладчик свободно берет инфу из elf, но в контроллер грузится бинарник.

Тут нет никакой магии.

Я же говорю, оно работает, просто контроллер прошивается дважды, сначала .out а потом hex...

мне не проблема создать bin или hex. С elf'ом нет желания возится... так то можно и его создать, и там уже опцией --debugfile указать.

Просто мне не верится, что подобной задачи (когда требуется некоторая постбилд обработка файла) ни у кого никогда не возникало.

И что нет простого и очевидного решения.

15 minutes ago, VladislavS said:

а вы в RAM или Flash отлаживаетесь?

Во Flash... 

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


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

1 hour ago, alag57 said:

Cравнивал с Keil, IAR раза в 4 быстрее на debug версии, что важно при отладке, в release Keil быстрее на 10%.

Это вы про время компиляции?

Вы в Keil в Options на вкладке Output снимите галочку с Browse Information... И увидите реальную скорость компиляции.

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


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

1 hour ago, UniSoft said:

С elf'ом нет желания возится...

Вы не поверите, но out это и есть elf.

31 minutes ago, UniSoft said:

И увидите реальную скорость компиляции

На вкладках и в IAR и в Keil установлены галки debug information в debug версии и не установлены в release.

Quote

Какая разница в чём образ прошивки и как он попал в память? Берём отладочную информацию и отлаживаем. Там даже кнопка есть "Debug without downloading".

Ну так создайте tool в IAR, грузите bin, и отлаживайте кнопочкой "Debug without downloading", если конечно сможете.

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


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

7 минут назад, alag57 сказал:

если конечно сможете.

UniSoft не сможет отлаживаться. Смешнее ничего не слышал :))))

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


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

On 2/7/2020 at 3:56 PM, UniSoft said:

Далее в post-build этот бинарник подписывается, получаем новый бинарник, пусть будет project_signed.bin...

А вот как подобное реализовать в IAR?

А как это - после подписи получить новый бинарник, а отлаживать по отладочной информации старого бинарника? 

Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом?  

Кстати, большие проекты IAR-ом не гружу.
Его загрузка сильно медленней чем загрузка через J-Flash.

В панели Tools задаю командную строку со скриптом J-Flash. И из меню Tools уже гружу и бинарники, и подписи и хэши, и генерю подписанные зашифрованные образы для транспортировки.
Редактирую тож не в IAR-е и никогда в нем не редактировал. 

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


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

24 minutes ago, alag57 said:

Вы не поверите, но out это и есть elf.

На вкладках и в IAR и в Keil установлены галки debug information в debug версии и не установлены в release.

Это Вы так троллите? 

Я знаю, что это elf, я же об этом написал в сообщении, зачем повторять?

У меня 20-летний опыт в реверс-инженеринге!

Читайте внимательнее! К тому же я писал про "Browse Information" а не про "debug information"... Это совершенно разные вещи.

 

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


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

24 минуты назад, AlexandrY сказал:

Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом?  

Их нужно не подгружать, а прошивать во flash.

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


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

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

Просто мне не верится, что подобной задачи (когда требуется некоторая постбилд обработка файла) ни у кого никогда не возникало.

У Вас какая-то странная задача. Подписывать и именно отладочный образ.... Зачем?

Мне кажется логичным отладочную сборку делать без подписывания и отлаживать её как обычно. А подписывать только release-сборку, которую отлаживать не нужно и прошивать её не IAR-ом, а сторонней тулзой?

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


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

3 minutes ago, AlexandrY said:

А как это - после подписи получить новый бинарник, а отлаживать по отладочной информации старого бинарника? 

Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом?  

Кстати, большие проекты IAR-ом не гружу.
Его загрузка сильно медленней чем загрузка через J-Flash.

В панели Tools задаю командную строку со скриптом J-Flash. И из меню Tools уже гружу и бинарники, и подписи и хэши, и генерю подписанные зашифрованные образы для транспортировки.
Редактирую тож не в IAR-е и никогда в нем не редактировал. 

Так а в чем проблема? Вы же не меняете положение функций и переменных... просто добавляется подпись в конец файла

подпись это RSA-2048... т.е. 256 байт... и нет, не проще скриптом, да и зачем, все же нормально работает, но не в IAR.

VS2019 + visualGDB - лучшего редактора не видел. 

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


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

24 минуты назад, jcxz сказал:

Подписывать и именно отладочный образ.... Зачем?

Без подписи прошивка не должна работать. Не?

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


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

25 минут назад, VladislavS сказал:

Без подписи прошивка не должна работать. Не?

Значит она где-то проверяет эту самую подпись. А значит условная компиляция - наше всё: отключаем проверку в debug-сборке и все дела.

41 минуту назад, UniSoft сказал:

Так а в чем проблема? Вы же не меняете положение функций и переменных... просто добавляется подпись в конец файла

подпись это RSA-2048... т.е. 256 байт... и нет, не проще скриптом, да и зачем, все же нормально работает, но не в IAR.

В IAR есть возможность подсчёта CRC образа прошивки. Всегда ею пользуюсь. Находится оно на вкладке "Options\Linker\Checksum". RSA там вроде нет среди методов, но может возможно как-то её добавить используя возможности этого пункта?

Ещё вариант: В post-build после создания .bin генерить по нему эту подпись и записывать её в .h-файл, в котором записывать её в некую константу: __root u8 volatile const rsa = ...;

Этот .h-файл включить в проект. Утилиту генерации подписи настроить так, чтобы если при генерации подписи получалось то же самое значение, то этот .h-файл не переписывался бы. Тогда, если что-то изменили в проекте (так что .bin-файл изменился), .h-файл изменится, жмём ещё раз "компилировать" - получаем новый выходной образ. Вот его уже загружаем и отлаживаем. Тут недостаток только в том, что придётся 2 раза жать кнопку "компилировать".

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


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

16 minutes ago, jcxz said:

У Вас какая-то странная задача. Подписывать и именно отладочный образ.... Зачем?

Мне кажется логичным отладочную сборку делать без подписывания и отлаживать её как обычно. А подписывать только release-сборку, которую отлаживать не нужно и прошивать её не IAR-ом, а сторонней тулзой?

В моем случае так проще...

Постоянно перешивать устройство на debug/release муторно...

это только основная прошивка, а там же еще есть и бутлоадер (точнее 2) которые не пропустят не подписанную прошивку. А это отдельные проекты.

Это нужно открывать и пере-компилировать каждый проект отдельно, плюс еще внешнюю утилиту.

А так подпись добавляется в автомате за миллисекунды, и не нужно никаких лишних движений.

На массовое производство я итак написал для шефа свою одно-кнопочную утилиту, которая и прошивает и защищает контроллер как нужно, без всяких jflash'ей и прочей хрени, лишь JLinkARM.dll.

У меня начальник китаец, хорошо знает как копировать девайсы, так как мы сами этим занимались неоднократно, отсюда и некоторые требования в плане защиты.

А я по больше степени реверсер, так что хорошо знаю, как усложнить жизнь таким же реверсерам как я.

---

P.S.: С IAR'ом я просто эксперементировал, просто интересно было попробовать. Не пользовался я им с 2014 года.

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

У меня в email уже множество запросов на то, чтобы обновил свой кейген IARkg14_Unis (хотя последняя версия была IARkg15_Unis, но я ее никогда не выкладывал).

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

Вот и пробовал IAR, так бы может хоть стимул появился... 

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


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

14 минут назад, UniSoft сказал:

 Вот и пробовал IAR, так бы может хоть стимул появился... 

Не бросайте IAR, он хороший  :)

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


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

В общем удалось как-то победить данную проблему, правда через ж... зад..

1. В постбилд'е переименовывается (копируется) firmware.out в firmware_orig.out

2. Своя утилита обрабатывает бинарник и запихивает его в elf файл firmware.out (одной секцией без дебаг инфы, если кому нужно, исходник функции во вложении)

3. Во вкладке Debugger включаем использование макроса

execUserReset()
{
  __var value;
  
  __message "---- execUserReset ----" ;
  
  // включаем возможность отладки в sleep (__WFI)
  value = __readMemory32(0xE0042004, "Memory");
  value |= 0x00000027;
  __writeMemory32(value, 0xE0042004, "Memory");
}

execUserPreload()
{
  __message "---- execUserPreload ----" ;
  // тут грузим отладочную инфу из оригинального elf
  __loadImage("C:\\projects\\Test\\EWARM\\firmware\\Exe\\firmware_orig.out", 0, 1);
}

execUserSetup()
{
  __message "---- execUserSetup ----" ;
}

 

elf.rar

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


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

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

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

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

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

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

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

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

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

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