UniSoft 15 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 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... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 1 hour ago, alag57 said: Cравнивал с Keil, IAR раза в 4 быстрее на debug версии, что важно при отладке, в release Keil быстрее на 10%. Это вы про время компиляции? Вы в Keil в Options на вкладке Output снимите галочку с Browse Information... И увидите реальную скорость компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alag57 0 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 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", если конечно сможете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 7 минут назад, alag57 сказал: если конечно сможете. UniSoft не сможет отлаживаться. Смешнее ничего не слышал :)))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба On 2/7/2020 at 3:56 PM, UniSoft said: Далее в post-build этот бинарник подписывается, получаем новый бинарник, пусть будет project_signed.bin... А вот как подобное реализовать в IAR? А как это - после подписи получить новый бинарник, а отлаживать по отладочной информации старого бинарника? Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом? Кстати, большие проекты IAR-ом не гружу. Его загрузка сильно медленней чем загрузка через J-Flash. В панели Tools задаю командную строку со скриптом J-Flash. И из меню Tools уже гружу и бинарники, и подписи и хэши, и генерю подписанные зашифрованные образы для транспортировки. Редактирую тож не в IAR-е и никогда в нем не редактировал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 24 minutes ago, alag57 said: Вы не поверите, но out это и есть elf. На вкладках и в IAR и в Keil установлены галки debug information в debug версии и не установлены в release. Это Вы так троллите? Я знаю, что это elf, я же об этом написал в сообщении, зачем повторять? У меня 20-летний опыт в реверс-инженеринге! Читайте внимательнее! К тому же я писал про "Browse Information" а не про "debug information"... Это совершенно разные вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 24 минуты назад, AlexandrY сказал: Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом? Их нужно не подгружать, а прошивать во flash. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 2 часа назад, UniSoft сказал: Просто мне не верится, что подобной задачи (когда требуется некоторая постбилд обработка файла) ни у кого никогда не возникало. У Вас какая-то странная задача. Подписывать и именно отладочный образ.... Зачем? Мне кажется логичным отладочную сборку делать без подписывания и отлаживать её как обычно. А подписывать только release-сборку, которую отлаживать не нужно и прошивать её не IAR-ом, а сторонней тулзой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 3 minutes ago, AlexandrY said: А как это - после подписи получить новый бинарник, а отлаживать по отладочной информации старого бинарника? Не проще ли грузить исходный бинарник, а подпись (сколько там? Десяток байт? ) подгружать скриптом? Кстати, большие проекты IAR-ом не гружу. Его загрузка сильно медленней чем загрузка через J-Flash. В панели Tools задаю командную строку со скриптом J-Flash. И из меню Tools уже гружу и бинарники, и подписи и хэши, и генерю подписанные зашифрованные образы для транспортировки. Редактирую тож не в IAR-е и никогда в нем не редактировал. Так а в чем проблема? Вы же не меняете положение функций и переменных... просто добавляется подпись в конец файла подпись это RSA-2048... т.е. 256 байт... и нет, не проще скриптом, да и зачем, все же нормально работает, но не в IAR. VS2019 + visualGDB - лучшего редактора не видел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 24 минуты назад, jcxz сказал: Подписывать и именно отладочный образ.... Зачем? Без подписи прошивка не должна работать. Не? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 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 раза жать кнопку "компилировать". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 16 minutes ago, jcxz said: У Вас какая-то странная задача. Подписывать и именно отладочный образ.... Зачем? Мне кажется логичным отладочную сборку делать без подписывания и отлаживать её как обычно. А подписывать только release-сборку, которую отлаживать не нужно и прошивать её не IAR-ом, а сторонней тулзой? В моем случае так проще... Постоянно перешивать устройство на debug/release муторно... это только основная прошивка, а там же еще есть и бутлоадер (точнее 2) которые не пропустят не подписанную прошивку. А это отдельные проекты. Это нужно открывать и пере-компилировать каждый проект отдельно, плюс еще внешнюю утилиту. А так подпись добавляется в автомате за миллисекунды, и не нужно никаких лишних движений. На массовое производство я итак написал для шефа свою одно-кнопочную утилиту, которая и прошивает и защищает контроллер как нужно, без всяких jflash'ей и прочей хрени, лишь JLinkARM.dll. У меня начальник китаец, хорошо знает как копировать девайсы, так как мы сами этим занимались неоднократно, отсюда и некоторые требования в плане защиты. А я по больше степени реверсер, так что хорошо знаю, как усложнить жизнь таким же реверсерам как я. --- P.S.: С IAR'ом я просто эксперементировал, просто интересно было попробовать. Не пользовался я им с 2014 года. С тем, чем пользуюсь сейчас, таких проблем у меня даже не возникало. У меня в email уже множество запросов на то, чтобы обновил свой кейген IARkg14_Unis (хотя последняя версия была IARkg15_Unis, но я ее никогда не выкладывал). Вы же знаете, что он более не справляется с последней версией EWARM, уверен данная тенденция продолжится и на остальные продукты. Вот и пробовал IAR, так бы может хоть стимул появился... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 9 февраля, 2020 Опубликовано 9 февраля, 2020 · Жалоба 14 минут назад, UniSoft сказал: Вот и пробовал IAR, так бы может хоть стимул появился... Не бросайте IAR, он хороший :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба В общем удалось как-то победить данную проблему, правда через ж... зад.. 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба Серьёзный подход :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться