Palīdzība vajadzīgs 32 Intel Hex formāts

B

btbass

Guest
Hi guys, man ir vajadzīga palīdzība, lai izprastu, kā atšifrēt paplašinātā lineāro adresi ieraksta Intel Hex 32 Format hex failu.Es rakstu var bootloader uz DSPIC Micros, Intel Hex 32 formāts ir tas, ko kompilators ģenerē.
Es izlasīju info, paskatījās hex failu, bet dzīvē man, nevaru redzēt adresi.HELP!
Quote:

Pagarināts 32-bitu adrese, hex formātā, ir līdzīgas hex 8 formāta
izņemot to, ka pagarināts lineārā adrese ieraksts ir izejas arī izveidot
augšējais 16 biti Datu adresi.Tas ir galvenokārt izmanto 16-bitu kodols
ierīcēm, jo to adres programmas atmiņas pārsniedz 64 kbytes.

Katrā datu ieraksts sākas ar 9 zīmju prefiksu un beidzas ar
2 zīmju kontrolsumma.Katrā ierakstā ir šādā formātā:

: BBAAAATTHHHH .... HHHCC
kur:

BB divciparu heksadecimālā baitu skaits, kas pārstāv skaits datu baitu
, kas parādīsies uz līnijas.

AAAA četrciparu heksadecimālo adresi, kas pārstāv sākuma adresi
datu ieraksts.

TT divu ciparu ieraksta tipa:

00 - Datu ieraksts
01 - beigas File ieraksts
02 - Segment adrese ieraksts
04 - Linear adrese ieraksts

HH divciparu heksadecimālā datu baitu, uzrāda zemu baits / augsts baitu
kombinācijām.

CC divciparu heksadecimālais kontrolsumma, kas ir divas komandas no
kopsummu no visiem iepriekšējiem baiti ierakstā.

 
Iespējams, tas varētu palīdzēt:

http://www.precma.it/download/intelhex.pdf
http://www.cs.net/lucid/intel.htm

 
Nu, es esmu šobrīd lasa šādi 6 reizes, un, err, 4 pumpuriem un lielu kopīgu nepalīdzēja, tas ir angļu valodā?
Es domāju, ka es ņemšu Vodka Martini "un iet gulēt.

32-bit Extended Linear Adrese ieraksts tiek izmantots, lai norādītu uz Linear Base Adrese (LBA), 16-31 biti kur biti 0-15 no LBA ir nulle.Bits 16-31 no LBA tiek saukti par augšējās Linear Base Adrese (ULBA).
Absolūtā atmiņas adrese saturs baits ar nākamo datu ierakstu iegūst, pievienojot LBA lai kompensētu aprēķina, saskaitot LOAD OFFSET jomā, kurā iekļauti dati Ierakstīt, lai indeksu baits ir datu ieraksta (0, 2 1, , ... n).Šī kompensētu papildus tiek veikta modulo 4G (ti, 32 bits), ignorējot jebkādu veikt, lai kompensētu wrap-ap iekraušana (no OFFFFFFFFH līdz OOOOOOOOOH) rezultātu iesaiņošana aptuveni no gala līdz sākumam 4G lineāro adresi nosaka LBA.Lineārā adrese, kurā īpaši baits tiek iekrauti aprēķina šādi:
(LBA DRLO DRI) MOD 4G
kur:
DRLO ir LOAD OFFSET jomā Datu ieraksts.
DRI ir datu baits indekss, kas datu ieraksta.

 
Es, ka ir lietderīgi apskatīt faktisko hex failu identificēt Linear Adrese Records ...

Ir maz informācijas par šo tematu, par Forum.Microchip;

http://forum.microchip.com/tm.asp?m=97196

Regards, Mike

 
Visi tiešām saka, ir jāņem 16 bitu no paplašinātā Lineārais adrese veida ierakstu, un tack to priekšā standarta 16-bit adresi, lai saņemtu pilnu 32-bitu adrese pirmā datu baits.

 
Jā, tāpēc es domāju, bet apskatīt šo fragmentu.

Intel hex failu

: 020000040000fa
: 102a00000f80200060ff200000018800000000000f

Programma atmiņa

2689 01500 20800F mov.w # 0x800, 0x001e
2690 01502 20FF60 mov.w # 0xff6, 0x0000
2691 01504 880.100 mov.w 0x0000, 0x0020
2692 01506 000.000 NOP

Ja man to, ko jūs teiktu man 00002a00
kas binārā ir 0010 1010 0000 0000

tas ir nodoti 01.500
kas binārā ir 0001 0101 0000 0000

tas ir atcelts tiesības 1 vietu?
Kur, kas nāk no?Pievienots pēc 22 minūtēm:Es domāju, ka man to!
RTFM!
Programma atmiņa vietas vārds saskaņots un tādējādi palielina par 2.

 
<address> In tipa 00 "datu ieraksts" baiti ir BYTE adreses, ne WORD adreses ...

Regards, Mike

 
True Mike, bet veids DSPIC darbi ir trīs baiti uz vienu adresi vietā.Instrukcija opcode ir 24 bitu plata.Programma counter porcijām pa 2 katru reizi no programmas LSB counter vienmēr ir 0.

 
Tas ir viens no veidiem, apstrādes vārds adresāciju.Šajā gadījumā tās izmanto baitu risināt ar hex kodu.Reālā kods izmanto vārdu risināšanā, tādēļ ir tulkojums no "baits", adrese un vārdu (instrukciju) adresi.

 

Welcome to EDABoard.com

Sponsor

Back
Top