나는배치하는 방법을 변수 - PIC 18 MPASM 링커 스크립트
INCLUDE 18f14K50_g.lkr
내가 내 인터럽트 서비스 변수는 ACCESS 은행에 가고 싶어 시작하는 링커 스크립트가 있습니다. (내 프로그램은 너무 작아서 나중에는 너무 작을 수 있습니다 ...). 그래서
SECTION NAME=VarsModemISR RAM=accessram
에서 어떤 결과 :
MPLINK 4.39, Linker
Device Database Version 1.1
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - section 'VarsModemISR' has a memory 'accessram' which is not defined in the linker command file.
Errors : 1
나는 그것을 믿고 포함 된 파일을 검사. 어느 쪽이든 아니면 확장 모드로 작업하고 있으며 "gpre"가 있습니다. #IFDEF를 사용하여 확인할 수 있습니다. 그 결과 "gpre"가 아닌 "accessram"을 사용하려고했습니다.
ACCESSBANK NAME=accessram START=0x0 END=0x5F
SECTION NAME=VarsModemISR RAM=accessram
이 날 혼란이 오류
MPLINK 4.39, Linker
Device Database Version 1.1
Copyright (c) 1998-2011 Microchip Technology Inc.
Error - duplicate definition of memory 'accessram'
Errors : 1
결과 : 내가 선을 복사하여 명시 적으로 액세스 은행을 정의하려고 어쩌면 경우
는이 파일을 포함에서. Assembler/Linker 문서에 따르면 RAM 옵션이있는 SECTION을 사용합니다. RAM은 ACCESSBANK, SHAREBANK 또는 DATABANK를 사용하여 이전에 선언 된 위치입니다. 그것은 작동해야합니다.
감사 - 리처드
저는 현재 수동으로 A를 설정하고 있으므로 좋을 것입니다. 이것은 링커를 사용하여 코드의 위치를 코드화합니다. 나는 여러개의 소스 파일을 가지고있어서 늦게 찾아 다니는 것이 좋다. 나는 udata_acs를 시험해보고 SECTION 선언을 생략 할 것입니다. –
물론, 이것이 유일한 방법입니다 ... :) –
그건 효과가있었습니다. 의견의 공간 제약으로 인해 나는 다른 답변으로 전체 정보를 게시하고 있습니다. –