AM263x 소프트웨어 설정


STEP 1 : 코어 선정

easyDSP 측면에서 코어는 총 4가지 종류로 구분됩니다.
노란색 코어 : easyDSP Pod가 연결되고 easyDSP 모니터링 수행되는 코어
주황색 코어 : easyDSP Pod가 연결되지는 않지만 easyDSP 모니터링이 수행되는 코어
파란색 코어 : easyDSP 모니터링이 수행되지 않는 코어
회색 코어 : 동작하지 않는 코어입니다.


AM263x 시리즈는 최대 4개의 코어가 제공되므로, 사용자 시스템에 맞춰 해당 코어를 선정하세요.
파란색 코어와 회색 코어는 easyDSP와 관련 없으므로 easyDSP 관련 작업을 수행하지 않습니다.
따라서 노란색 코어, 주황색 코어를 선정해야 합니다. AM263x의 어떤 코어든 선정 가능합니다.
또한 데이타 캐시 사용 여부 등에 따라 아래와 같이 여러 케이스로 구성할 수 있습니다.

Case 1 :

본 경우는 easyDSP가 여러 코어 (core a, b)에 대해 모니터링을 수행하며, 그 중 데이타 캐시를 사용하는 코어가 하나라도 있고, IPC RPMessage를 사용할 수 있는 경우입니다.
easyDSP pod는 UART0을 거쳐 core a에 연결되며, core a 변수가 저장된 메모리는 core a가 억세스합니다.
그리고 캐시 일관성 문제를 회피하기 위해, core b 변수가 저장된 메모리는 core b가 억세스합니다. 이를 구현하기 위한 코어간 통신은 IPC RPMessage를 사용합니다.
easyDSP 모니터링을 위해 데이타가 이동하는 경로는 화살표를 참조하세요.

 

Case 2 :

Case 1 경우이지만 코어간 통신을 위해 IPC RPMessage를 사용할 수 없는 경우입니다.
각각의 코어에 easyDSP pod를 연결해야 하며 이 경우 하기와 같은 구성이 됩니다.

Case 3 :

easyDSP가 여러 코어에 대해 모니터링을 수행하지만, 그 중 데이타 캐시를 사용하는 코어가 하나도 없는 경우입니다.
이 경우 easyDSP pod이 연결된 코어에서 직접 해당 메모리를 접근하여 변수 모니터링을 수행합니다.

Case 4 :

easyDSP가 하나의 코어에 대해서만 모니터링을 수행하는 경우입니다. 해당 코어의 데이타 캐시 사용 여부와 상관없습니다.

 

STEP 2 : SysConfig 설정

easyDSP는 SysConfig 기반 생성된 코드를 사용합니다. 하기에서는 SysConfig 1.13.0기준으로 설명드립니다.
easyDSP는 MCU와 통신시 UART0을 사용하므로, Debug Log > Enable UART Log를 비활성화거나, 사용이 필요할 경우 UART0이 아닌 다른 곳으로 설정합니다.

 

easyDSP Pod가 연결된 코어 (STEP1의 노란색 코어)에 대해서 UART 관련 설정을 하기와 같이 수행합니다.
먼저 이름은 반드시 EZDSP_UART이어야 하며,  Baudrate는 사용자가 적절히 선정 가능하지만 easyDSP 프로젝트 설정값과 동일해야 합니다.
8비트 데이타, 하나의 stop bit, no parity bit의 데이타 규격을 사용하며, 인터럽트 순위는 최하순위(값 15)로 선정합니다.
UART0을 사용하셔야 하며, MUXMODE 0인 TX, RX 핀을 할당해야 합니다. 예외적으로 STEP1의 core f는 UART0이 아닌 다른 UART를 사용합니다.
기타 부분은 하기 그림 참조 바랍니다.


IPC RPMessage를 사용하는 코어(core a, b)에 대해서 IPC 설정이 필요합니다.
통신 방식은 'IPC Notify + IPC RP Message', 버퍼 개수는 최소 1, 버퍼 사이즈는 최소 64가 필요합니다.
사용자가 별도의 목적으로 IPC RPMessage를 사용할 경우, 이 값 이상으로 선정할 수 있습니다.
또한 IPC RPMessage 사용시 공유 버퍼로 사용되는 메모리 영역 (0x72000000) 의 Non Cached 설정이 필요합니다.


easyDSP가 모니터링을 수행하는 모든 코어에서 (core a, b, e, f, g, h, i) 변수가 위치한 메모리 영역을 easyDSP가 읽고 쓸 수 있도록 해당 메모리 영역을 Supervion RD+WR으로 설정합니다 (User 설정은 상관없음).

  

 

STEP 3 : easyDSP 프로젝트 및 사용자 프로젝트

STEP1의 경우에 맞게, 노란색 코어에 대해 easyDSP 프로젝트를 생성하며, 노란색 및 주황색 코어에 대해 사용자 MCU 프로젝트를 easyDSP 모니터링이 가능하도록 수정해야 합니다.

노란색 및 주황색 코어에 대해, easyDSP 통신용 파일 (easyAM_v*.*.h, easyAM_v*.*.c)을 사용자 프로젝트에 포함하시기 바랍니다. 버전에 따라 파일명이 달라질 수 있습니다. 해당 파일은 easyDSP 프로그램이 인스톨된 폴더에서 \source\AM2x 에서 찾을 수 있습니다.
그리고 아래 헤더 파일을
사용 환경에 맞춰 설정하시기 바랍니다.

그리고 사용자 프로그램에서 각종 초기화 함수가 호출된 이후, easyDSP_init()을 호출하므로써, easyDSP 모니터링이 가능하게 합니다.

 
 

하기에서 STEP 1의 케이스별로 상세 설명합니다.

Case 1 :

먄약 core a, b, c, d가 각각 CPU1, 2, 3, 4일 경우 하기처럼 프로젝트를 설정합니다. 
easyDSP와 통신하는 코어로 CPU1, CPU2를 선정하며, 실제 동작하는 모든 코어의 출력 파일을 등록합니다.

 

헤더 파일은 하기와 같이 설정합니다. 코어간 통신에 IPC RPMessage를 사용하며 2개의 엔드포인트 값(m, n)을 설정해야 합니다.
easyDSP pod 연결 여부만 차이가 나며, 나머지 변수는 동일한 값입니다.

사용자 프로젝트 

노란색 코어

주황색 코어

 easyAM.h 설정

EASYDSP_POD_IS_CONNECTED_TO_THIS_CORE = 1
EASYDSP_IS_COMMUNICATING_WITH_MULTI_CORES =
1
D_CACHE_IS_ENABLED = 1
MAIN_CORE_SERVICE_END_PT = m
REMOTE_CORE_SERVICE_END_PT = n

EASYDSP_POD_IS_CONNECTED_TO_THIS_CORE = 0
EASYDSP_IS_COMMUNICATING_WITH_MULTI_CORES =
1
D_CACHE_IS_ENABLED = 1
MAIN_CORE_SERVICE_END_PT = m
REMOTE_CORE_SERVICE_END_PT = n

Case 2 :

만약 core e, f, c, d가 각각 CPU1, 2, 3, 4일 경우, core e용 easyDSP 프로젝트는 하기처럼 설정합니다.


core f 용 easyDSP 프로젝트 설정은 하기와 같습니다.

램부팅 및 플래시 프로그래밍을 수행하려면 easyDSP Pod가 연결될 코어는 반드시 UART0를 거쳐 연결되어야 합니다.
따라서 UART0이 연결된 코어 core e의 easyDSP 프로젝트에 동작하는 모든 코어의 출력파일을 등록하며 램부팅 및 플래시 프로그래밍을 수행합니다.
UART0이 연결되지 않는 코어 core f의 easyDSP 프로젝트에서는 모니터링만 가능하므로 램부팅 및 플래시 프로그래밍을 수행하지 마세요.
코어 f의 사용자 프로그램이 변경되고 이를 코어 e의 easyDSP 프로젝트에서 램부팅 또는 플래시 프로그래밍하게 되면, 코어 f의 easyDSP 프로젝트는 출력 파일을 다시 읽어서 변수 정보를 갱신하게 됩니다.
이는 코어 e와 코어 f의 easyDSP 프로젝트가 하나의 PC에서 수행될 때 자동적으로 수행되며 이후 코어 f의 easyDSP 프로젝트에서 하기 메시지를 송출합니다.

만약 코어 e와 코어 f의 easyDSP 프로젝트가 별도의 PC에서 수행될 때에는 사용자가 코어 f의 easyDSP 프로젝트에서 메뉴 MCU > Reload *.out 을 직접 수행해야 합니다.

헤더 파일은 하기와 같이 설정합니다. 

사용자 프로젝트 

노란색 코어

 easyAM.h 설정

EASYDSP_POD_IS_CONNECTED_TO_THIS_CORE = 1
EASYDSP_IS_COMMUNICATING_WITH_MULTI_CORES =
0

Case 3 :

만약 core g, h, c, d가 각각 CPU1, 2, 3 , 4일 경우, core g용 easyDSP 프로젝트 설정은 하기와 같습니다. easyDSP와 통신하는 코어로 CPU1, CPU2를 선정하며, 실제 동작하는 모든 코어의 출력 파일을 등록합니다.

 

헤더 파일은 하기와 같이 설정합니다.

사용자 프로젝트 

노란색 코어

 easyAM.h 설정

EASYDSP_POD_IS_CONNECTED_TO_THIS_CORE = 1
EASYDSP_IS_COMMUNICATING_WITH_MULTI_CORES =1
D_CACHE_IS_ENABLED = 0

Case 4 :

만약 core i, j, c, d가 각각 CPU 1, 2, 3 , 4일 경우, core i 용 easyDSP 프로젝트 설정은 하기와 같습니다. easyDSP와 통신하는 코어로 CPU1을 선정하며, 실제 동작하는 모든 코어의 출력 파일을 등록합니다.



헤더 파일은 하기와 같이 설정합니다. 

사용자 프로젝트 

노란색 코어

 easyAM.h 설정

EASYDSP_POD_IS_CONNECTED_TO_THIS_CORE = 1
EASYDSP_IS_COMMUNICATING_WITH_MULTI_CORES =0



 

STEP 4 : 링커 파일 주의 사항

모든 코어에 대해 램 시작번지를 0x7004.0000 또는 이보다 큰 값으로로 설정 바랍니다.
이는 TI 예제와 동일합니다.

STEP 5 : 변수 이름

주의 사항입니다.
easyDSP가 한 개의 코어하고만 통신할 경우 사용자가 지정한 변수 이름이 그대로 표시되나, 여러 개의 코어와 통신할 경우 각 코어의 변수 이름을 구분하기 위해 CPUn(n=1,2,3,4)의 경우 'n:변수이름'처럼 사용자가 지정한 변수 이름 앞에 'n:'이 덧붙이게 됩니다.

STEP 6 : IDE 설정

1. 각 코어의 프로젝트를 컴파일할 때마다 각 코어의 rprc 파일이 생성되어 출력 파일과 동일한 폴더에 동일한 이름으로 위치하도록 개발 환경을 설정 해주세요 (TI CCS 기본 설정). rprc 파일은 램 부팅 및 플래시 프로그래밍할 때 사용됩니다.
2. easyDSP로 변수를 억세스하기 위해서는, 출력 파일(예:*.out)에 debug information이 반드시 포함되어야 합니다 (TI CCS 기본 설정).

3. 최적화 또는 링커 세팅에 따라, 선언되었지만 실제 사용되지 않는 변수는 debug information에 포함되지 않아 easyDSP에서 모니터링되지 않을 수 있습니다. 
이 경우에도 변수가 포함되게 하기 위해서라면 하기 옵션 설정하세요.