컨트롤러"인텔은

B

btbass

Guest
안녕, 얘들아 인텔의 16 진수를 어떻게 32 진수 파일 형식 확장 선형 주소 레코드를 해독해서 이해하는 도움이 필요합니다.내가 dsPIC 마이크로위한 부트 로더를 할 수 작성중, 인텔의 16 진수 32 포맷 컴파일러는 무엇을 생성합니다.
내가 읽고 정보를 16 진수로 파일을 보였지만, 내 삶에 대한, 제가 주소를 볼 수 없잖.도와주세요!
인용구 :

확장된 32 비트 주소는 16 진수 형식의 16 진수 8 형식이 비슷합니다
제외하고 확장 선형 주소 레코드 출력도 구축하는 것입니다
데이터 주소의 상위 16 비트.이것은 주로 사용되는 16 비트 코어
자신의 주소 지정 프로그램이 메모리를 초과 이후 64 kbytes 장치.

각 데이터 레코드 9 - 문자 접두어로 끝나는 시작
2 - 캐릭터 체크섬.각 레코드는 다음과 같은 형식으로되어있습니다 :

: BBAAAATTHHHH .... HHHCC
여기서 :

BB와 두 자리의 16 진수 바이트 카운트 데이터의 바이트 수를 나타내는
그 라인에 나타납니다.

AAAA 4 자리의 16 진수 주소의 시작 주소를 나타내는
데이터를 기록합니다.

TT 두 자리를 기록 종류 :

00 - 데이터 레코드
파일 레코드의 01 - 끝
02 - 세그먼트 주소를 기록
04 일 - 리니어 주소 레코드

두 자리의 16 진수 데이터를 바이트, HH를 바이트로 표시 낮은 / 높은 바이트
조합.

그 두 가지의 보완이 CC 두 자리 16 진수 체크섬
기록에있는 모든 앞의 바이트 형님.

 
어쩌면이 도움이 될 수도 :

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

 
글쎄요, 전 이제, 다음과 같은 6 번 쯤 읽었어요, 도움이되지 않았다 4 꽃봉오리와 공동으로 큰 잘못이 영어인가요?
난 보드카 마티니해야하며 침대로 갈 것 같아요.

32 비트 선형 주소 기록 연장이 어디 0-15 비트 LBA를 0 개있습니다 선형 자료의 주소 지정 (LBA)의 16-31 비트를 지정하는 데 사용됩니다.16-31 비트 LBA를의 어퍼 선형 자료 주소 (ULBA)라고도합니다.
이후의 데이터 레코드에있는 콘텐츠 바이트의 절대적인 메모리 주소의 부하 OFFSET과 필드를 추가하여 계산을 상쇄 LBA를 추가하여 얻은 데이터를 기록 (0, 1, 2 바이트의 인덱스가 포함된 데이터를 기록 , ... n)이.이 오프셋을뿐만 아니라, 모든 수행을 무시하고, 그래서 modulo 4G (즉, 32 비트) 이루어집니다 오프셋 랩 - 주위를로드 OFFFFFFFFH (원본 OOOOOOOOOH)에 마지막에서 4G 선형 주소에 의해 정의의 시작 부분에 주위에 배치 결과 LBA를.어느 특정 바이트로 계산됩니다 로드된 선형 주소 :
지정 (LBA DRLO DRI) 4G MOD
여기서 :
DRLO 데이터 레코드의 부하 OFFSET과 필드입니다.
DRI 데이터가 데이터 레코드 내의 바이트의 인덱스입니다.

 
나는 그것을 실제 16 진수로 파일을 보는 데 도움이 선형 주소 레코드를 식별하는 찾았을 때 ...

Forum.Microchip에는이 항목에서 약간의 정보가;

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

감사합니다, 마이크

 
전부 진짜로 16 일 걸릴 것입니다 - 레코드의 확장 선형 주소 유형에서 비트, 그리고 압정이 표준 16 비트 앞에서 완전한 32 비트 데이터의 첫 번째 바이트의 주소를 주소를했습니다.

 
네, 저도 그렇게 생각하지만,이 인간 좀 봐.

인텔 16 진 파일

: 020000040000fa
: 102a00000f80200060ff200000018800000000000f

프로그램 메모리

2,689 01,500 20800F mov.w # 0x800, 0x001e
2,690 01,502 20FF60 mov.w # 0xff6, 0x0000
2,691 01,504 880,100 mov.w 0x0000, 0x0020
2692 01506 000000 nop

만약 내가 00002a00 얻을 무슨 말을 할
어떤 바이너리 0010 1010 0000 0000입니다

그것 01500에 배치 됐어요
어떤 바이너리 0001 0101 0000 0000입니다

바로 1 장소를 옮겨 있었던 거지?
어디에서 왔을까?추가 22 분 후 :내가 알아낸 거 같아요!
RTFM!
프로그램의 메모리 공간이 단어 정렬과 이렇게 증가된 2.

 
타입 00 "데이터 기록"에 <address>의 바이트 바이트 주소, 주소도 안 빼먹고 ...입니다

감사합니다, 마이크

 
진정한 마이크,하지만 방법은 dsPIC 작품을 하나의 주소를 위치에 3 바이트입니다.명령 opcode를 24 비트 폭입니다.2 프로그램 카운터는 각 단위 시간, 프로그램의 LSB가 카운터는 항상 0입니다.

 
그것을 해결 단어를 처리하는 하나의 방법.이 경우, 그들은 16 진수 코드에 대한 대응 바이트를 사용합니다.실제 코드는 단어에 대응, 그래서 거기에 "바이트"주소와 단어 (명령어) 주소 사이의 변환 사용합니다.

 

Welcome to EDABoard.com

Sponsor

Back
Top