SBC310에서 AMP 모드로 동작시 각각의 코어들이 메모리를 공유하여 데이터를 주고 받을 수 있다. 커널 Configuration에서는 설정을 할수 없고(BSP Version 2.0/1.3 버전까지는...) BSP 폴더내의 rsSBC310.h를 열어 조작해야한다. 코드를 열어 INCLUDE_SM_HIGH_MAP을 설정해 주면된다. 이로써 Core0과 Core1은 SBC_SHARED_MEM_ADRS 주소를 통해 SBC_SHARED_MEM_SIZE 만큼의 공유 영역을 가지게 된다.
- /* Define to move the intercore shared */
/* memory component to the top of */
/* core 1 physical memory */
#define INCLUDE_SM_HIGH_MAP
#ifdef INCLUDE_SM_HIGH_MAP
#define SBC_SHARED_MEM_ADRS 0xF8000000
#define SBC_SHARED_MEM_SIZE 0x04000000
#else /* INCLUDE_SM_HIGH_MAP */
#define SBC_SHARED_MEM_ADRS 0xFEE00000
#define SBC_SHARED_MEM_SIZE 0x00100000
#endif /* INCLUDE_SM_HIGH_MAP */
우측 콘솔이 Core0이고 좌측 콘솔이 Core1이다. 우측콘솔에 임의의 값을 넣었을때 좌측콘솔에서도 변경된 값을 확인할 수가 있다.
0xFEE00000 의 영역을 사용하지 않은 이유는, 해당 영역을 시스템 자원들도 사용하기 때문에 사용자가 사용할시 예기치 않은 상황이 발생할 수 있기 때문이다.
이 글은 스프링노트에서 작성되었습니다.