78K, RL78 하드웨어 곱셈 나눗셈 유닛을 사용하기

기술노트 44885

아키텍처:

78K, RL78

컴포넌트:

general

업데이트:

2021-06-04 오전 3:45

소개

일부 RL78 및 78K 마이크로컨트롤러에는 하드웨어 멀티플라이어/디바이더(multiplier/divider) 장치가 있습니다. 이 장치에 대한 런타임 지원을 포함하려면 다음과 같이 진행하십시오.

IAR Embedded Workbench for RL78 버전 2.10 (혹은 상위 버전)

IDE의, Project Options>General Options>Library Configuration 페이지에서 "Disable Hardware Multiplier/Divider Unit" 옵션을 체크 해제합니다. 현재 선택된 디바이스 RL78가 하드웨어 멀티플라이어/디바이더 장치가 없는 경우, 이 옵션은 사용할 수 없습니다.

커맨드 라인에서 프로젝트를 빌드하는 경우, src\hw_multiply_division_units 디렉터리에 있는 어셈블러 파일 hwmdu_LibReplacement.s를 포함시켜야 합니다.

IAR Embedded Workbench for 78K or RL78 버전1.40 (혹은 하위 버전)

IDE의 Project Options>General Options>Library Configuration 페이지에서 "Use Hardware Multiplier/Divider Unit" 옵션을 선택합니다. 현재 선택된 디바이스 RL78가 하드웨어 멀티플라이어/디바이더 장치가 없는 경우, 이 옵션은 사용할 수 없습니다.

커맨드 라인에서 프로젝트를 빌드하는 경우, src\<lib>\hw_multiply_division_units 디렉터리에 있는 어셈블러 파일 hwmdu_LibReplacement.snn 혹은 hwmuldiv_LibReplacement.snn를 포함시켜야 합니다.

일반

만약 어떤 종류의 하드웨어 멀티플라이어/디바이더 장치가 디바이스에 장착되어 있는지 잘 모를 경우, config\devices 디렉터리에 위치한 장치 파일(.menu)을 확인합니다. 이 XML 파일의 항목 <muldiv>에는 다음 값 중 하나가 포함됩니다:

mul+div+mac = Has a HW multiplier, divider and MAC unit
mul+div = Has a HW multiplier and divider
mul = Has a HW multiplier
none = No support

또한 이러한 루틴이 원래 원래 라이브러리 기능을 대체하려면 다음과 같은 링커 옵션을 사용해야 합니다:

RL78 예제 (버전 2.10 혹은 상위 버전):

--redirect ?I_MUL_L02=HWMUL_16_16_16
--redirect ?L_MUL_L03=HWMUL_32_32_32
--redirect ?UC_DIV_L01=HWDIV_8_8_8
--redirect ?UI_DIV_L02=HWDIV_16_16_16
--redirect ?UL_DIV_L03=HWDIV_32_32_32
--redirect ?UC_MOD_L01=HWMOD_8_8_8
--redirect ?UI_MOD_L02=HWMOD_16_16_16
--redirect ?UL_MOD_L03=HWMOD_32_32_32
--redirect ?SC_DIV_L01=HWSDIV_8_8_8
--redirect ?SI_DIV_L02=HWSDIV_16_16_16
--redirect ?SL_DIV_L03=HWSDIV_32_32_32
--redirect ?SC_MOD_L01=HWSMOD_8_8_8
--redirect ?SI_MOD_L02=HWSMOD_16_16_16
--redirect ?SL_MOD_L03=HWSMOD_32_32_32

RL78 예제 (버전 1.40 혹은 이전 버전):

-eHWDIV_8_8_8=?UC_DIV_L01
-eHWDIV_16_16_16=?UI_DIV_L02
-eHWDIV_32_32_32=?UL_DIV_L03
-eHWMUL_16_16_16=?I_MUL_L02
-eHWMUL_32_32_32=?L_MUL_L03
-eHWSDIV_8_8_8=?SC_DIV_L01
-eHWSDIV_16_16_16=?SI_DIV_L02
-eHWSDIV_32_32_32=?SL_DIV_L03

78K0R/K0/K0S 예제:

-eHWMUL_16_16_16=?I_MUL_L02
-eHWMUL_32_32_32=?L_MUL_L03
-eHWDIV_8_8_8=?UC_DIV_L01
-eHWDIV_16_16_16=?UI_DIV_L02
-eHWDIV_32_32_32=?UL_DIV_L03
-eHWSDIV_8_8_8=?SC_DIV_L01
-eHWSDIV_16_16_16=?SI_DIV_L02
-eHWSDIV_32_32_32=?SL_DIV_L03

참고사항

상기의 목록은 완벽하지 않습니다. 각 목록은 IAR Embedded Workbench 릴리즈의 다른 목록이 될 수 있습니다.

특정 어셈블러 루틴에 라이브러리 함수가 대체 되는지 hwmuldiv_LibReplacement.snn 혹은 hwmdu_LibReplacement.s 소스 파일에 기술되어 있습니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.