Sem hluti af fundinum 0x0A DC7831
Í þessari grein munum við lýsa því hvernig á að keyra fastbúnað tækisins í keppinautnum, sýna fram á samskipti við kembiforritið og framkvæma smá kraftmikla greiningu á fastbúnaðinum.
Forsaga
Langt síðan í vetrarbraut langt langt í burtu
Fyrir nokkrum árum á rannsóknarstofu okkar var þörf á að rannsaka fastbúnað tækis. Fastbúnaðinum var þjappað og pakkað upp með ræsiforriti. Hann gerði þetta á mjög flókinn hátt og færði gögnin í minni nokkrum sinnum. Og vélbúnaðinn sjálfur hafði síðan virkan samskipti við jaðartækin. Og allt þetta á MIPS kjarnanum.
Af hlutlægum ástæðum hentuðu tiltækir hermir okkur ekki, en við vildum samt keyra kóðann. Síðan ákváðum við að búa til okkar eigin keppinaut, sem myndi gera lágmarkið og gera okkur kleift að taka upp aðal fastbúnaðinn. Við prófuðum það og það virkaði. Við hugsuðum, hvað ef við bætum við jaðartækjum til að framkvæma einnig aðal fastbúnaðinn. Það var ekki mjög sárt - og það tókst líka. Við hugsuðum aftur og ákváðum að búa til fullgildan hermir.
Útkoman var tölvukerfahermi
Af hverju Kopycat?
Þar er leikið að orðum.
- apaköttur (enska, nafnorð [ˈkɒpɪkæt]) - eftirherma, eftirherma
- köttur (enska, nafnorð [ˈkæt]) - köttur, köttur - uppáhaldsdýr eins af höfundum verkefnisins
- Stafurinn „K“ er frá Kotlin forritunarmálinu
Copycat
Þegar keppinauturinn var búinn til voru mjög ákveðin markmið sett:
- getu til að búa til fljótt ný jaðartæki, einingar, örgjörvakjarna;
- getu til að setja saman sýndartæki úr ýmsum einingum;
- getu til að hlaða hvaða tvíundargögnum (fastbúnaði) sem er í minni sýndartækis;
- hæfni til að vinna með skyndimyndir (myndir af kerfisástandi);
- getu til að hafa samskipti við keppinautinn í gegnum innbyggða villuleitarforritið;
- gott nútímamál fyrir þroska.
Fyrir vikið var Kotlin valinn fyrir innleiðingu, strætóarkitektúrinn (þetta er þegar einingar hafa samskipti sín á milli í gegnum sýndargagnarútur), JSON sem tækjalýsingarsnið og GDB RSP sem samskiptareglur fyrir samskipti við kembiforritið.
Þróun hefur staðið yfir í rúm tvö ár og er í fullum gangi. Á þessum tíma voru MIPS, x86, V850ES, ARM og PowerPC örgjörva kjarna útfærð.
Verkefnið fer vaxandi og það er kominn tími til að kynna það fyrir almenningi. Við munum gera nákvæma lýsingu á verkefninu síðar, en í bili munum við einbeita okkur að því að nota Kopycat.
Fyrir þá óþolinmóðustu er hægt að hlaða niður kynningarútgáfu af keppinautnum frá
Rhino í keppinautnum
Við skulum minnast þess að fyrr fyrir SMARTRHINO-2018 ráðstefnuna var búið til prófunartæki „Rhinoceros“ til að kenna öfugt verkfræðikunnáttu. Ferli kyrrstöðugreiningar fastbúnaðar var lýst í
Nú skulum við reyna að bæta við „hátölurum“ og keyra fastbúnaðinn í keppinautnum.
Við munum þurfa:
1) Java 1.8
2) Python og mát
Fyrir Windows:
1)
2)
Fyrir Linux:
1) socat
Þú getur notað Eclipse, IDA Pro eða radare2 sem GDB viðskiptavin.
Hvernig virkar það?
Til þess að framkvæma fastbúnað í keppinautnum er nauðsynlegt að „setja saman“ sýndartæki, sem er hliðstæða raunverulegs tækis.
Raunverulega tækið („nashyrningur“) er hægt að sýna á blokkarmyndinni:
Keppinauturinn er með mátbyggingu og endanlegu sýndartækinu er hægt að lýsa í JSON skrá.
JSON 105 línur
{
"top": true,
// Plugin name should be the same as file name (or full path from library start)
"plugin": "rhino",
// Directory where plugin places
"library": "user",
// Plugin parameters (constructor parameters if jar-plugin version)
"params": [
{ "name": "tty_dbg", "type": "String"},
{ "name": "tty_bt", "type": "String"},
{ "name": "firmware", "type": "String", "default": "NUL"}
],
// Plugin outer ports
"ports": [ ],
// Plugin internal buses
"buses": [
{ "name": "mem", "size": "BUS30" },
{ "name": "nand", "size": "4" },
{ "name": "gpio", "size": "BUS32" }
],
// Plugin internal components
"modules": [
{
"name": "u1_stm32",
"plugin": "STM32F042",
"library": "mcu",
"params": {
"firmware:String": "params.firmware"
}
},
{
"name": "usart_debug",
"plugin": "UartSerialTerminal",
"library": "terminals",
"params": {
"tty": "params.tty_dbg"
}
},
{
"name": "term_bt",
"plugin": "UartSerialTerminal",
"library": "terminals",
"params": {
"tty": "params.tty_bt"
}
},
{
"name": "bluetooth",
"plugin": "BT",
"library": "mcu"
},
{ "name": "led_0", "plugin": "LED", "library": "mcu" },
{ "name": "led_1", "plugin": "LED", "library": "mcu" },
{ "name": "led_2", "plugin": "LED", "library": "mcu" },
{ "name": "led_3", "plugin": "LED", "library": "mcu" },
{ "name": "led_4", "plugin": "LED", "library": "mcu" },
{ "name": "led_5", "plugin": "LED", "library": "mcu" },
{ "name": "led_6", "plugin": "LED", "library": "mcu" },
{ "name": "led_7", "plugin": "LED", "library": "mcu" },
{ "name": "led_8", "plugin": "LED", "library": "mcu" },
{ "name": "led_9", "plugin": "LED", "library": "mcu" },
{ "name": "led_10", "plugin": "LED", "library": "mcu" },
{ "name": "led_11", "plugin": "LED", "library": "mcu" },
{ "name": "led_12", "plugin": "LED", "library": "mcu" },
{ "name": "led_13", "plugin": "LED", "library": "mcu" },
{ "name": "led_14", "plugin": "LED", "library": "mcu" },
{ "name": "led_15", "plugin": "LED", "library": "mcu" }
],
// Plugin connection between components
"connections": [
[ "u1_stm32.ports.usart1_m", "usart_debug.ports.term_s"],
[ "u1_stm32.ports.usart1_s", "usart_debug.ports.term_m"],
[ "u1_stm32.ports.usart2_m", "bluetooth.ports.usart_m"],
[ "u1_stm32.ports.usart2_s", "bluetooth.ports.usart_s"],
[ "bluetooth.ports.bt_s", "term_bt.ports.term_m"],
[ "bluetooth.ports.bt_m", "term_bt.ports.term_s"],
[ "led_0.ports.pin", "u1_stm32.buses.pin_output_a", "0x00"],
[ "led_1.ports.pin", "u1_stm32.buses.pin_output_a", "0x01"],
[ "led_2.ports.pin", "u1_stm32.buses.pin_output_a", "0x02"],
[ "led_3.ports.pin", "u1_stm32.buses.pin_output_a", "0x03"],
[ "led_4.ports.pin", "u1_stm32.buses.pin_output_a", "0x04"],
[ "led_5.ports.pin", "u1_stm32.buses.pin_output_a", "0x05"],
[ "led_6.ports.pin", "u1_stm32.buses.pin_output_a", "0x06"],
[ "led_7.ports.pin", "u1_stm32.buses.pin_output_a", "0x07"],
[ "led_8.ports.pin", "u1_stm32.buses.pin_output_a", "0x08"],
[ "led_9.ports.pin", "u1_stm32.buses.pin_output_a", "0x09"],
[ "led_10.ports.pin", "u1_stm32.buses.pin_output_a", "0x0A"],
[ "led_11.ports.pin", "u1_stm32.buses.pin_output_a", "0x0B"],
[ "led_12.ports.pin", "u1_stm32.buses.pin_output_a", "0x0C"],
[ "led_13.ports.pin", "u1_stm32.buses.pin_output_a", "0x0D"],
[ "led_14.ports.pin", "u1_stm32.buses.pin_output_a", "0x0E"],
[ "led_15.ports.pin", "u1_stm32.buses.pin_output_a", "0x0F"]
]
}
Gefðu gaum að færibreytunni vélbúnaðar kafla params er nafn skráar sem hægt er að hlaða inn í sýndartæki sem fastbúnað.
Sýndartækið og samskipti þess við aðalstýrikerfið má tákna með eftirfarandi skýringarmynd:
Núverandi prófunartilvik keppinautarins felur í sér samskipti við COM-tengi aðalstýrikerfisins (kemba UART og UART fyrir Bluetooth-eininguna). Þetta geta verið raunveruleg tengi sem tæki eru tengd við eða sýndar COM tengi (til þess þarftu bara com0com/socat).
Sem stendur eru tvær meginleiðir til að hafa samskipti við keppinautinn utan frá:
- GDB RSP samskiptareglur (samkvæmt því eru verkfærin sem styðja þessa samskiptareglu Eclipse / IDA / radare2);
- innri hermir skipanalína (Argparse eða Python).
Sýndar COM tengi
Til þess að hafa samskipti við UART sýndartækis á staðbundinni vél í gegnum flugstöð þarftu að búa til par af tengdum sýndar COM tengi. Í okkar tilviki er ein höfn notuð af keppinautnum og önnur er notuð af flugstöðvum (PuTTY eða skjár):
Notar com0com
Sýndar COM tengi eru stillt með uppsetningarforritinu úr com0com settinu (leikjaútgáfa - C:Program Files (x86)com0comsetupс.exe, eða GUI útgáfa - C:Program Files (x86)com0comsetupg.exe):
Merktu við reitina virkja umframkeyrslu á biðminni fyrir allar búnar sýndarhöfn, annars bíður keppinauturinn eftir svari frá COM tenginu.
Notar socat
Í UNIX kerfum eru sýndar COM tengi sjálfkrafa búin til af keppinautinum með því að nota socat tólið; til að gera þetta skaltu bara tilgreina forskeytið í gáttarheitinu þegar keppinauturinn er ræstur socat:
.
Innra skipanalínuviðmót (Argparse eða Python)
Þar sem Kopycat er stjórnborðsforrit, býður keppinauturinn upp á tvo skipanalínuviðmótsvalkosti til að hafa samskipti við hluti sína og breytur: Argparse og Python.
Argparse er CLI innbyggt í Kopycat og er alltaf í boði fyrir alla.
Annar CLI er Python túlkurinn. Til að nota það þarftu að setja upp Jep Python eininguna og stilla keppinautinn til að vinna með Python (Python túlkurinn sem er uppsettur á aðalkerfi notandans verður notaður).
Uppsetning Python einingarinnar Jep
Undir Linux er hægt að setja Jep upp í gegnum pip:
pip install jep
Til að setja Jep upp á Windows verður þú fyrst að setja upp Windows SDK og samsvarandi Microsoft Visual Studio. Við höfum gert það aðeins auðveldara fyrir þig og
pip install jep-3.8.2-cp27-cp27m-win_amd64.whl
Til að athuga uppsetningu Jep þarftu að keyra á skipanalínunni:
python -c "import jep"
Eftirfarandi skilaboð ættu að berast sem svar:
ImportError: Jep is not supported in standalone Python, it must be embedded in Java.
Í keppinautaskránni fyrir kerfið þitt (copycat.bat - fyrir Windows, eftirlíking - fyrir Linux) á lista yfir færibreytur DEFAULT_JVM_OPTS
bæta við viðbótarfæribreytu Djava.library.path
— það verður að innihalda slóðina að uppsettu Jep einingunni.
Útkoman fyrir Windows ætti að vera lína eins og þessi:
set DEFAULT_JVM_OPTS="-XX:MaxMetaspaceSize=256m" "-XX:+UseParallelGC" "-XX:SurvivorRatio=6" "-XX:-UseGCOverheadLimit" "-Djava.library.path=C:/Python27/Lib/site-packages/jep"
Ræsir Kopycat
Keppinauturinn er console JVM forrit. Ræsingin fer fram í gegnum stýrikerfisskipanalínuforskriftina (sh/cmd).
Skipun til að keyra undir Windows:
binkopycat -g 23946 -n rhino -l user -y library -p firmware=firmwarerhino_pass.bin,tty_dbg=COM26,tty_bt=COM28
Skipun til að keyra undir Linux með því að nota socat tólið:
./bin/kopycat -g 23946 -n rhino -l user -y library -p firmware=./firmware/rhino_pass.bin, tty_dbg=socat:./COM26,tty_bt=socat:./COM28
-g 23646
— TCP tengi sem verður opið fyrir aðgang að GDB netþjóninum;-n rhino
— heiti aðalkerfiseiningarinnar (samsett tæki);-l user
— nafn bókasafnsins til að leita að aðaleiningunni;-y library
— leið til að leita að einingum sem fylgja tækinu;firmwarerhino_pass.bin
— slóð að vélbúnaðarskránni;- COM26 og COM28 eru sýndar COM tengi.
Fyrir vikið birtist kvaðningur Python >
(Eða Argparse >
):
18:07:59 INFO [eFactoryBuilder.create ]: Module top successfully created as top
18:07:59 INFO [ Module.initializeAndRes]: Setup core to top.u1_stm32.cortexm0.arm for top
18:07:59 INFO [ Module.initializeAndRes]: Setup debugger to top.u1_stm32.dbg for top
18:07:59 WARN [ Module.initializeAndRes]: Tracer wasn't found in top...
18:07:59 INFO [ Module.initializeAndRes]: Initializing ports and buses...
18:07:59 WARN [ Module.initializePortsA]: ATTENTION: Some ports has warning use printModulesPortsWarnings to see it...
18:07:59 FINE [ ARMv6CPU.reset ]: Set entry point address to 08006A75
18:07:59 INFO [ Module.initializeAndRes]: Module top is successfully initialized and reset as a top cell!
18:07:59 INFO [ Kopycat.open ]: Starting virtualization of board top[rhino] with arm[ARMv6Core]
18:07:59 INFO [ GDBServer.debuggerModule ]: Set new debugger module top.u1_stm32.dbg for GDB_SERVER(port=23946,alive=true)
Python >
Samskipti við IDA Pro
Til að einfalda prófun notum við Rhino vélbúnaðinn sem frumskrá fyrir greiningu í IDA í formi
Þú getur líka notað aðal fastbúnaðinn án metaupplýsinga.
Eftir að Kopycat hefur verið ræst í IDA Pro, í kembiforritinu, farðu í hlutinn "Skipta um villuleit..." og veldu "Fjarlægur GDB kembiforrit". Næst skaltu setja upp tenginguna: valmyndina Villuleitarforrit - vinnsluvalkostir...
Stilltu gildin:
- Umsókn - hvaða gildi sem er
- Hýsingarheiti: 127.0.0.1 (eða IP tölu ytri vélarinnar þar sem Kopycat er í gangi)
- Port: 23946
Nú verður villuleitarhnappurinn tiltækur (F9 lykill):
Smelltu á það til að tengjast villuleitareiningunni í keppinautnum. IDA fer í villuleitarham, fleiri gluggar verða tiltækir: upplýsingar um skrár, um stafla.
Nú getum við notað alla staðlaða eiginleika kembiforritsins:
- skref fyrir skref framkvæmd leiðbeininga (Stígðu inní и Stígðu yfir — lyklar F7 og F8, í sömu röð);
- hefja og gera hlé á framkvæmd;
- búa til brotpunkta fyrir bæði kóða og gögn (F2 lykill).
Að tengja við villuleit þýðir ekki að keyra vélbúnaðarkóðann. Núverandi aftökustaða verður að vera heimilisfangið 0x08006A74
— upphaf aðgerða Reset_Handler. Ef þú flettir niður skráninguna geturðu séð aðgerðarkallið helstu. Þú getur sett bendilinn á þessa línu (heimilisfang 0x08006ABE
) og framkvæma aðgerðina Hlaupa þar til bendilinn (lykill F4).
Næst geturðu ýtt á F7 til að slá inn aðgerðina helstu.
Ef þú keyrir skipunina Halda áfram ferli (F9 lykill), þá birtist glugginn „Vinsamlegast bíðið“ með einum hnappi fresta:
Þegar þú ýtir á fresta framkvæmd vélbúnaðarkóða er stöðvuð og hægt er að halda áfram frá sama heimilisfangi í kóðanum þar sem það var truflað.
Ef þú heldur áfram að keyra kóðann muntu sjá eftirfarandi línur í skautunum sem eru tengdar við sýndar COM tengi:
Tilvist „state bypass“ línunnar gefur til kynna að sýndar Bluetooth-einingin hafi skipt yfir í þann hátt að taka á móti gögnum frá COM-tengi notandans.
Nú í Bluetooth útstöðinni (COM29 á myndinni) geturðu slegið inn skipanir í samræmi við Rhino samskiptareglur. Til dæmis mun „MEOW“ skipunin skila strengnum „mur-mur“ í Bluetooth-stöðina:
Herma mig ekki alveg
Þegar þú byggir keppinaut geturðu valið smáatriði/eftirlíkingu tiltekins tækis. Til dæmis er hægt að líkja eftir Bluetooth-einingunni á mismunandi vegu:
- tækið er að fullu líkt eftir með fullt sett af skipunum;
- AT skipanir eru herma eftir og gagnastraumurinn er móttekinn frá COM tengi aðalkerfisins;
- sýndartækið veitir fullkomna gagnaflutning til raunverulegs tækis;
- sem einfaldur stubbur sem skilar alltaf "OK".
Núverandi útgáfa af keppinautnum notar aðra nálgunina - sýndar-Bluetooth-einingin framkvæmir stillingar, eftir það skiptir hún yfir í „umboðsstillingu“ gagna frá COM-tengi aðalkerfisins yfir í UART-tengi keppinautarins.
Við skulum íhuga möguleikann á einföldum tækjabúnaði kóðans ef einhver hluti jaðarsins er ekki útfærður. Til dæmis, ef tímamælir sem ber ábyrgð á að stjórna gagnaflutningi til DMA hefur ekki verið búinn til (athugunin er framkvæmd í aðgerðinni ws2812b_bíddustaðsett á 0x08006840
), þá mun fastbúnaðurinn alltaf bíða eftir að fáninn verði endurstilltur upptekinnstaðsett á 0x200004C4
sem sýnir umráð DMA gagnalínunnar:
Við getum komist í kringum þessar aðstæður með því að endurstilla fánann handvirkt upptekinn strax eftir uppsetningu. Í IDA Pro geturðu búið til Python fall og kallað það í brotpunkt og sett brotpunktinn sjálfan í kóðann eftir að hafa skrifað gildið 1 í fánann upptekinn.
Brotpunktastjórnun
Fyrst skulum við búa til Python aðgerð í IDA. Matseðill File - Script skipun...
Bættu við nýjum búti í listann til vinstri, gefðu honum nafn (td. BPT),
Í textareitnum til hægri, sláðu inn aðgerðakóðann:
def skip_dma():
print "Skipping wait ws2812..."
value = Byte(0x200004C4)
if value == 1:
PatchDbgByte(0x200004C4, 0)
return False
Eftir það ýtum við á Hlaupa og lokaðu handritsglugganum.
Nú skulum við fara í kóðann kl 0x0800688A
, stilltu brotpunkt (F2 lykill), breyttu því (samhengisvalmynd Breyta brotpunkti...), ekki gleyma að stilla handritsgerðina á Python:
Ef núverandi fánagildi upptekinn jafngildir 1, þá ættir þú að framkvæma aðgerðina skip_dma í handritslínunni:
Ef þú keyrir fastbúnaðinn til keyrslu geturðu séð kveikjuna á brotpunktastjórnunarkóðanum í IDA glugganum Output eftir línu Skipping wait ws2812...
. Nú mun fastbúnaðurinn ekki bíða eftir að fáninn verði endurstilltur upptekinn.
Samskipti við keppinautinn
Ólíklegt er að eftirlíking til eftirbreytni valdi gleði og gleði. Það er miklu áhugaverðara ef keppinauturinn hjálpar rannsakandanum að sjá gögnin í minni eða koma á samspili þráða.
Við munum sýna þér hvernig á að koma á virkum samskiptum milli RTOS verkefna. Þú ættir fyrst að gera hlé á keyrslu kóðans ef hann er í gangi. Ef þú ferð í aðgerðina bluetooth_task_entry í vinnslugrein „LED“ skipunarinnar (heimilisfang 0x080057B8
), þá geturðu séð hvað er fyrst búið til og síðan sent í kerfisröðina ledControlQueueHandle einhver skilaboð.
Þú ættir að setja brotpunkt til að fá aðgang að breytunni ledControlQueueHandlestaðsett á 0x20000624
og haltu áfram að keyra kóðann:
Þar af leiðandi mun stöðvunin fyrst eiga sér stað á heimilisfangi 0x080057CA
áður en þú hringir í aðgerðina osMailAlloc, síðan á heimilisfangið 0x08005806
áður en þú hringir í aðgerðina osMailPut, svo eftir smá stund - á heimilisfangið 0x08005BD4
(áður en þú hringir í aðgerðina osMailGet), sem tilheyrir fallinu leds_task_entry (LED-verkefni), það er að segja að skipt var um verkefni, og nú fékk LED-verkefnið stjórn.
Á þennan einfalda hátt geturðu komist að því hvernig RTOS verkefni hafa samskipti sín á milli.
Auðvitað, í raun og veru, getur samspil verkefna verið flóknara, en með því að nota keppinaut verður það minna fyrirhafnarsamt að fylgjast með þessu samspili.
Ræstu með Radare2
Þú getur ekki hunsað svona alhliða tól eins og Radare2.
Til að tengjast keppinautnum með r2 myndi skipunin líta svona út:
radare2 -A -a arm -b 16 -d gdb://localhost:23946 rhino_fw42k6.elf
Ræsing í boði núna (dc
) og gera hlé á framkvæmd (Ctrl+C).
Því miður, eins og er, á r2 í vandræðum þegar unnið er með gdb vélbúnaðarþjóninum og minnisuppsetningu; vegna þessa virka brotpunktar og skref ekki (skipun ds
). Við vonum að þetta verði lagað fljótlega.
Að keyra með Eclipse
Einn af valkostunum til að nota keppinautinn er að kemba vélbúnaðar tækisins sem verið er að þróa. Til glöggvunar munum við einnig nota Rhino vélbúnaðinn. Þú getur halað niður vélbúnaðarheimildum
Við munum nota Eclipse úr settinu sem IDE
Til þess að keppinauturinn geti hlaðið fastbúnaði beint saman í Eclipse þarftu að bæta við breytu firmware=null
í ræsingarskipun keppinautarins:
binkopycat -g 23946 -n rhino -l user -y modules -p firmware=null,tty_dbg=COM26,tty_bt=COM28
Að setja upp villuleitarstillingar
Í Eclipse skaltu velja valmyndina Keyra - villuleitarstillingar... Í glugganum sem opnast, í hlutanum GDB vélbúnaðar villuleit þú þarft að bæta við nýrri stillingu, síðan á „Aðal“ flipanum tilgreindu núverandi verkefni og forrit fyrir villuleit:
Á flipanum „Kembiforrit“ þarftu að tilgreina GDB skipunina:
${openstm32_compiler_path}arm-none-eabi-gdb
Og sláðu líka inn færibreytur fyrir tengingu við GDB netþjóninn (gestgjafi og höfn):
Á „Startup“ flipanum verður þú að tilgreina eftirfarandi færibreytur:
- virkja gátreitinn Hlaða mynd (svo að samsetta vélbúnaðarmyndinni sé hlaðið inn í keppinautinn);
- virkja gátreitinn Hlaða tákn;
- bæta við ræsiskipun:
set $pc = *0x08000004
(stilltu tölvuskrána á gildið úr minni á heimilisfangi0x08000004
- heimilisfangið er geymt þar ResetHandler).
Borgaðu eftirtekt, ef þú vilt ekki hlaða niður vélbúnaðarskránni frá Eclipse, þá eru valkostirnir Hlaða mynd и Keyra skipanir óþarfi að gefa til kynna.
Eftir að hafa smellt á Debug geturðu unnið í villuleitarham:
- skref fyrir skref kóða framkvæmd
- samskipti við brotpunkta
Athugið. Eclipse hefur, hmm... nokkra sérkenni... og þú verður að lifa með þeim. Til dæmis, ef þegar kembiforritið er ræst birtast skilaboðin „Engin uppspretta tiltæk fyrir „0x0″“, þá skaltu framkvæma Step skipunina (F5)
Í stað þess að niðurstöðu
Að líkja eftir innfæddum kóða er mjög áhugavert. Það verður mögulegt fyrir tækjaframleiðanda að kemba fastbúnaðinn án raunverulegs tækis. Fyrir rannsakanda er það tækifæri til að framkvæma kraftmikla kóðagreiningu, sem er ekki alltaf mögulegt jafnvel með tæki.
Við viljum veita sérfræðingum tæki sem er þægilegt, í meðallagi einfalt og tekur ekki mikla fyrirhöfn og tíma að setja upp og keyra.
Skrifaðu í athugasemdirnar um reynslu þína af því að nota vélbúnaðarhermi. Við hvetjum þig til að ræða málin og svörum með ánægju spurningum.
Aðeins skráðir notendur geta tekið þátt í könnuninni.
Í hvað ertu að nota emulator?
-
Ég þróa (kemba) fastbúnað
-
Ég er að rannsaka fastbúnað
-
Ég kynni leiki (Dendi, Sega, PSP)
-
eitthvað annað (skrifaðu í athugasemdir)
7 notendur greiddu atkvæði. 2 notendur sátu hjá.
Hvaða hugbúnað notar þú til að líkja eftir innfæddum kóða?
-
QEMU
-
Unicorn vél
-
Proteus
-
eitthvað annað (skrifaðu í athugasemdir)
6 notendur greiddu atkvæði. 2 notendur sátu hjá.
Hvað viltu bæta í hermi sem þú ert að nota?
-
Ég vil hraða
-
Ég vil auðvelda uppsetningu/ræsingu
-
Ég vil fleiri möguleika til að hafa samskipti við keppinautinn (API, krókar)
-
Ég er ánægður með allt
-
eitthvað annað (skrifaðu í athugasemdir)
8 notendur kusu. 1 notandi sat hjá.
Heimild: www.habr.com