Так уж сложилось, что отдельной темы для 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.
Прошивки могут лежать в папке %firmwares% в одном из видов, которые можно подглядеть в make.bat, сработает любой вариант, а если их несколько - первый из них:
; Full range dimming ; Allows you to adjust the brightness from 0 to 100% ; Message "By increasing the brightness ..." does not appear ; Name config "Brightness.ini" ; Names of images "Background.png", "Level_Normal.png", "Level_Up_Max.png", "Level_Down_Max.png" ; Path to config and image "/ card / other / ZBin / Config / Brightness" ; Text color / stroke and font size specified in HEX ; V. 3Fix ; (C) IronMaster, E1kolyan ; (p) Bill_Kevin ; English include "x.inc" include "./lib/W580_R6CA001_Orange.lib.asm" CODE16 org 0x4530AD2A;0x453DCC10 LDR R3, off_453DCC18 BLX R3 NOP align 4
sub_45CF1BF0: PUSH {LR} SUB SP, SP, 4 BL off_45CF1570 ADD SP, SP, 4 POP {PC}
aBrightness db "Brightness",0 db 0 off_45CF1C08 dw aBackground_png dw aLevel_normal_p dw aLevel_up_max_p dw aLevel_down_max aTitleTextColor db "Title Text Color: %x",0xD,0xA db "Title Overlay Color: %x",0xD,0xA db "Title Coordinates: %d,%d,%d,%d",0xD,0xA db "Title Align: %d",0xD,0xA db "Title Font: %x",0xD,0xA db "Percent Text Color: %x",0xD,0xA db "Percent Overlay Color: %x",0xD,0xA db "Percent Coordinates: %d,%d,%d,%d",0xD,0xA db "Percent Align: %d",0xD,0xA db "Percent Font: %x",0xD,0xA db "Background Coordinates: %d,%d",0xD,0xA db "Level Coordinates: %d,%d",0xD,0xA,0 aCardOtherZbinC du "/tpa/user/other/ZBin/Config/Brightness",0 db 0 db 0 aBrightness_ini du "Brightness.ini",0 db 0 db 0 aBackground_png du "Background.png",0 db 0 db 0 aLevel_normal_p du "Level_Normal.png",0 db 0 db 0 aLevel_up_max_p du "Level_Up_Max.png",0 db 0 db 0 aLevel_down_max du "Level_Down_Max.png",0 db 0 db 0 aBrightnessLeve du "Brightness level: %d%%",0 db 0 db 0 aGui_bright db "GUI_Bright",0 db 0
[ Редактировано bill_kevin в 14.9.12 14:56 ]
W200->W300->W810->W580 Marielina te amo como a mi W580 SW-R6CA001
недавно заметил, что если в папке с прошивкой есть и mbn и raw, то elf2vkpex на выходе может создать файл с именем out1.vkp. Оригинальный батник на такое название не рассчитан, так что это может быть причиной проблемы bill_kevin
Legas2, меня стремают твои называния ОРИГИНАЛ и ещё кйото. Под ещё КЕМ-ТО понятно что твой вариант компиляции, при использовании тех же инструкций и команд дэна. Так что в этой теме не стоит внушать доверие твоему или моему коду... пиши в личку или ещё, но не засоряйте тему, в КОТОРОЙ ЕДИНСТВЕННЫЙ ДЭН даёт нам новые версии компиля!
den_po пишет: что значит не расчитан? не может найти mbn - использует raw. может найти mbn - его и использует
я говорю, что если есть именно в обоих форматах прошивка. По крайней мере, заметил такое когда добавил в папку с mbn ещё и raw. Но компилировать для а1 приходится редко...
при использовании тех же инструкций и команд дэна.
да. Что, кроме меня ни у кого не повторяется на скрипте от den_po? и, я не засоряю тему проблемами своего скрипта. В своём я молча исправляю
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.