0
베어 메탈 프로젝트에서 ROM 섹션의 시작 주소를 전용 주소에 써야합니다.ROM의 전용 위치에 섹션의 시작 주소를 쓰는 방법
MEMORY{
ROM (rx) : ORIGIN = 0x00018000, LENGTH = 0x8000
UICR (r) : ORIGIN = 0x10001000, LENGTH = 0x400
}
SECTIONS {
.bootloader_addr 0x10001014 :
{
KEEP(*(.bootloader_addr))
} > UICR
}
와 나는 C++ 파일에이 곳을 추가 할 수 0x10001014에 배치 될 값 정의 :
std::uint32_t uicr_bootloader_start_address
__attribute__((section(".bootloader_addr"),used)) =
0x18000;
을 링커 스크립트에서이 정의 같은 일이 내가 지금까지 발견 한 것입니다
정수 정수를 선언하고 링커를 사용하여 코드 섹션의 시작 주소를 직접 작성하지 않아도되는 이유는 누구입니까? 0x10001014
?
고마워요, 그것은 매력처럼 작동합니다. 아니요, ROM 메모리의 시작 주소를 평가하는 방법을 알아야하기 때문에 시작 주소를 복사 할 필요가 없습니다. –
@TorstenRobitzki 나는'ROM_ region에 심벌'rom_start_address'를 놓은 다음'LONG (rom_start_address)'를 붙여서 할 수있을 것이라고 생각한다. – hcs
나는 그것을 내일 시도하고 그것이 효과가 있었는지보고 할 것이다. –