| |
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#91 [08.11.09, 19:13] ARMPC
Так уж сложилось, что отдельной темы для armpc на форуме нет. А пакет время от времени обновляется, и обновления остаются многими незамеченными. ARM Patch Compiler - набор для компиляции патчей. Делал я его для себя, делал так, как удобно работать мне. В качестве компилятора в пакете используется FASMARM. Обновления и исходники можно взять на http://arm.flatassembler.net/ (следует учесть, что компилятор в armpc может отличаться от того, что на официальном сайте). Дальше пойдёт набор бессвязных фактов - Многие не знают, но fasmarm вполне можно использовать и вне armpc, он даёт на выходе бинарник. - make.bat с давних пор нужно передавать максимум два параметра - имя исходника и имя raw/cxc файла. Базовый адрес передавать не нужно, он определяется автоматически. Если внутри make.bat указать полное имя наиболее часто используемого raw/cxc файла, при запуске make.bat достаточно указать только имя исходника. - Файл x.inc содержит описания макросов. ADR и MOVL - это не команды, это макросы. Некоторые ключевые слова в x.inc заменяются на макросы ( code16, code32, ldr, org), поэтому комплияция со включением x.inc и без него даёт разный результат. - Макросы в fasmarm, в отличие от команд, регистрозависимы. Макросы ldr/code16/code32/movl продублированы и в верхнем регистре, а вот org нет. Поэтому если вы собираете патч, используйте org, а если вы хотите получить простой бинарник, вам нужен ORG. - В исходниках можно использовать переменные системного окружения (свойства системы, дополнительно, переменные среды). Для себя я добавил переменную FASMINC, в значении которой указал полный путь к каталогу, где лежит armpc (помните, для вступления действия в силу иногда может потребоваться перезагрузка). Так можно компилировать исходники, лежащие в любых папках, без указания полного пути к x.inc. Код: include "%fasminc%\x.inc" FAR+ARMPCМало кто использует FAR Manager в повседневности, а вот я в нём постоянно. И компиляцию запускаю из FAR так, как мне удобно. А конкретней - простое нажатие enter на исходнике собирает патч для z610, нажатие ctrl+pgdn выдаёт меню со списком прошивок, для которых будет собираться патч. Делается оно легко: f9 -> commands -> file associatoins -> ins -> маска файла *.asm -> описание какое вам нужно -> нужная команда на выполнение для enter и ctrl+pgdn. У меня команды выглядят примерно так: Код: make.bat "!.!" C702_R3EF001 или для ручного ввода имени таргета: Код: make.bat "!.!" !?$armpc$target?Z610_R6DA001! Нужно учесть, что если для типа файла есть только одно действие (как у меня на enter), то оно выполняется молча, а если несколько разных (ассоциация с *.asm добавлена несколько раз, команды на выполнение для ctrl+pgdn отличаются), то показывается меню. В последней версии armpc компилятор чуть поправлен: - теперь он понимает movs/cmps/adds и прочие "s" в thumb безо всяких макросов (arm режим в патчах используется нечасто, но кто-то мог допустить ошибку, убирая s у арм-команд); - ldr и adr работают с адресами без скобок, макрос для этого больше не нужен; - du в качестве аргумента должны подаваться строки в utf8 (т.е. сам исходник при этом должен быть сохранен в utf8 без BOM). BOM - специальный маркер, позволяющий другим приложениям однозначно идентифицировать этот файл. В частности сохранить файл с BOM или без BOM можно во встроенном редакторе FAR и в notepad. Скачать текущую версию маска файла *.asm - [ Редактировано den_po в 28.5.15 13:50 ]
promt is better than google translate
|
Спасибо сказали: UltraShot, -DeJaVu-, 273308715, MNS81, MahmudS, DuXeN0N, Olegat0r, ipod, Se-MaG, Slawwan, Ax, JohnNorth, Zormax, SEVENI, Alex1992, MAVER145, PRO100light, vodoo999, Blend, Alex_E, Oganyan-Arthur, TahaSpawn, BigHercules, Therion, Pixel, russ123, H0sseiN, KIBER-DEMON, Melodic_Death, clisto, Vov4ик, farid, LiNkMaN, a6b6
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#92 [16.09.12, 13:46] Re: ARMPC
Legas2, ты слишком увлёкся своими "улучшениями". всё работает.
promt is better than google translate
|
Спасибо сказали: E1kolyan, SEVEN7, a6b6
|
Legas
Expert
Регистрация: 30.4.09 Сообщений: 444 Репутация: 1407
|
#93 [16.09.12, 14:26] Re: ARMPC
я сегодня повторил на твоём скрипте ещё раз перед тем как написал то сообщение. ждём ответа от bill_kevin....
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#94 [16.09.12, 15:05] Re: ARMPC
promt is better than google translate
|
Legas
Expert
Регистрация: 30.4.09 Сообщений: 444 Репутация: 1407
|
#95 [09.12.12, 23:15] Re: ARMPC
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#96 [09.12.12, 23:26] Re: ARMPC
не хочу видео. давай по шагам, как скачать, распаковать, что куда положить, как запустить, чтоб получить ошибку.
promt is better than google translate
|
Legas
Expert
Регистрация: 30.4.09 Сообщений: 444 Репутация: 1407
|
#97 [10.12.12, 15:18] Re: ARMPC
положи прошивку в %firmwares%\%target%\%target%.mbn и положи копию прошивки в %firmwares%\%target%.mbn при наличии двух файлов прошивки а1 в переменной cmdlineargs, файл на выходе будет out1.vkp перепроверял на чистой винде. Предположение с raw оказалось ошибочным, тк оказалось, что бат скрипт просто некорректно работает с сетевыми дисками (по крайней мере, if exist).
Однако, надо ещё перепроверить повторит это проблему, но если не закрывать окно cmd, а запускать повторно скрипт, то переменная cmdlineargs по окончанию работы скрипта не обнуляется. То есть, она накапливает в себе список прошивок при каждом последующем перезапуске скрипта (при всё том же открытом окне cmd!) - это тоже может повторить проблему (даже при отстутствии копий прошивок).
Кстати, исправление для батника по пробелам в путях к прошивкам в выложеном батнике ещё отсутствуют...
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#98 [10.12.12, 22:41] Re: ARMPC
Legas2 пишет: положи прошивку в %firmwares%\%target%\%target%.mbn и положи копию прошивки в %firmwares%\%target%.mbn при наличии двух файлов прошивки а1 в переменной cmdlineargs, файл на выходе будет out1.vkp
каким должен быть результат? а каким он должен быть, если файлы прошивок имеют одно имя, но содержимое их отличается? Однако, надо ещё перепроверить повторит это проблему, но если не закрывать окно cmd, а запускать повторно скрипт, то переменная cmdlineargs по окончанию работы скрипта не обнуляется. То есть, она накапливает в себе список прошивок при каждом последующем перезапуске скрипта (при всё том же открытом окне cmd!) - это тоже может повторить проблему (даже при отстутствии копий прошивок).
это да. голой комстрокой не пользуюсь - фар гораздо удобней, а из фара такой проблемы нет. поправлю Кстати, исправление для батника по пробелам в путях к прошивкам в выложеном батнике ещё отсутствуют...
правда?
promt is better than google translate
|
Legas
Expert
Регистрация: 30.4.09 Сообщений: 444 Репутация: 1407
|
#99 [10.12.12, 23:32] Re: ARMPC
den_po пишет: каким должен быть результат? а каким он должен быть, если файлы прошивок имеют одно имя, но содержимое их отличается?
допустим, для каждой прошивки создастся отдельный файл out%1.vkp. Или, для каждой прошивки он скомпилит с одинаковым именем out.vkp, но содержимое затрётся последним. В любом случае, сейчас происходит ни первый вариант, ни второй, и скрипт такой результат не обрабатывает это да. голой комстрокой не пользуюсь - фар гораздо удобней, а из фара такой проблемы нет. поправлю
можно ещё просто перетаскивать асм на батник, если в нём провально прописан set target. Но и чинится оно просто - быть может достаточно добавить Код: set cmdlineargs= перед заполнением в него значений... Кскати, вместо Код: if ""=="%cmdlineargs%" set... рекомендую Код: IF NOT DEFINED cmdlineargs set... тк кавычки внутри значения переменной могут всё заломать правда?
ну, или: тоже, что и второе, только кавычки выставлены внутри батника: Код: target = "K800 SW-R8BF003 GEN" flat assembler for ARM version 1.70.03 (739242 kilobytes memory) 4 passes, 772 bytes. elf2vkpex by den_po v1.03 (Aug 3 2011) unable to read 'E:\SE_DEV\Main"K800'
мы это уже как-то обсуждали... тут остался тебе фрагмент на заметку: http://supertrubka.org/newbb_plus/viewtopic.php?topic_id=4458&post_id=213505#213505
|
den_po
Developer/Admin
Регистрация: 27.3.06 Сообщений: 3279 Репутация: 10763 Откуда: Чебоксары
|
#100 [10.12.12, 23:52] Re: ARMPC
извращенец
пробелы в именах не люблю со времён 95-й винды
promt is better than google translate
|
Legas
Expert
Регистрация: 30.4.09 Сообщений: 444 Репутация: 1407
|
#101 [11.12.12, 01:02] Re: ARMPC
зато они красиво задают имя прошивки в шапке патча пробелы не любит винда (вернее, командная строка), а не её пользователи в выложеной мной версии батника есть решение на эти проблемы. Только, я там не учёл случай, когда таргет указан в кавычках... может, если руки дойдут, сделаю это в следущей версии своего батника.
|
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.
|
|
|