답변 찾기가 오래되었습니다. 미안하지만 나는 그것을 정말로 발견 할 수 없다.링커 스크립트, init C 변수
저는 gcc, ld, gcc (어셈블러 컴파일 용)를 사용합니다.
SECTIONS
{
.text : *{.text}
}
LS_size = (SIZEOF(.text) + 2048) & (0xF800) >> 9 ;
내가 어셈블러에서 사용 LS_size 시도 :
나는 LD 스크립트를 작성_rom_size:
.byte LS_size
그 작업 벌금을,하지만 C 코드에 나는 변수에 값을 설정할 수 없습니다 :
struct my_struct vari = {
.codesize = LS_size,
}
외부 LS_ 크기 인 경우 :
error: initializer element is not constant
ld 스크립트에서 생성 된 변수에서 상수 C 변수의 기본값을 어떻게 설정합니까?
LS_size는 링커 스크립트 변수이므로 컴파일시 알 수 없습니다. C 코드에서'extern const size_t LS_size;'선언을 추가하고'vari.codesize'의 초기화를 어떤 함수로 옮길 수 있습니다. – Michael
그럼 asm (.S) 소스를 컴파일합니다 : 0x00, (_rom_size). 하지만 그때 나는 그것을 가지고 링크 : 0x04. 이것은 링크 단계에 쓸 데이터가 어떤 객체 파일인지 지정할 수 있음을 의미합니다. 하지만 C 코드에서이 코드를 어떻게 써야할지 모르겠다. – ASM
글쎄, 내가 틀릴 수도 있지만 구조체를 초기화 할 때 선언 할 때 RHS가 컴파일 타임 상수 여야한다고 생각합니다. 그러므로 나의 이전 코멘트에서 초기화를 옮길 것을 제안한다. – Michael