2.4 링크 목록 링크 목록 (1)

 

 

링크 목록

링크했을 때의 링크 목록은 링크 지시어 파일에서 지정한 영역 , 섹션, 입력 파일에 나누어 출력됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

링크 옵션

링크 목록

연결리스트 파일을 출력 : (기본값)

아니오

 

 

"링크 목록 파일을 출력하는"옵션 링크 목록 파일을 출력하기에 앞서, "링크 목록 파일을 출력하는"옵션

(p)의지정이 필요하지만, 옵션은 기본적으로 설정되어 있습니다. 또한 출력 링크 목록 파일은 프로젝트 트리 빌드 생성 파일의 확장자 "***. map"에서 참조 가능합니다. 원하는 파일을 더블 클릭하면, 편집기에서 링크 목록 파일의 내용을 참조 있습니다.

 

   

컴파일 옵션

시작

표준 라이브러리 고정 영역을 사용 : (기본값)

아니오

 

 

표준 라이브러리 고정 영역

2-2 페이지에서 소개 한대로 시작은 가능한 표준 시작 (라이브러리) 사용하십시오. 그러나 표준 시작은 기본적으로 표준 라이브러리 고정 영역으로 186 바이트를 사용합니다. 만약 생성 시스템에서 표준 라이브러리 brk, sbrk, malloc, calloc, realloc, free, exit, rand, srand, div, ldiv, strtok, atof, strtod, 수학 함수, 부동 소수점 런타임 라이브러리를 사용하지 않기 때문에있는 당신이 표준 라이브러리 고정 영역은 삭제할 있습니다. 컴파일 옵션에서 시작 카테고리에있는 "표준 라이브러리 고정 영역을 사용하는"옵션을 "아니오" 설정하십시오. 다음 페이지에이 옵션이 ""때와 "아니오"시의 링크 목록을 제공합니다.

 

표준 라이브러리 고정 영역의 링크 목록 파일

표준 라이브러리 고정 영역을 사용하는 경우

표준 라이브러리 고정 영역을 사용하지 않는 경우

 

표준 라이브러리 고정 영역의 링크 목록 파일 슬라이드 상단이 기본 설정의 표준 라이브러리 고정 영역을 사용하는 경우 링크 목록 파일입니다 .

시작 @ cstart RAM 000BAH (186 바이트) 고정 영역을 사용하는 것을 있다고 생각합니다. 슬라이드 하단 표준 라이브러리 고정 영역을 사용하지 않는 경우의 링크 목록 파일입니다.

시작 @ cstart RAM 사용하던 공간이 약간 00002H (2 바이트) 감소 것을 있다고 생각합니다.

이상과 같은 시스템에서 표준 라이브러리 brk, sbrk, malloc, calloc, realloc, free, exit, rand, srand, div, ldiv, strtok, atof, strtod, 수학 함수, 부동 소수점 런타임 라이브러리를 사용하지 않는다면, "표준 라이브러리 고정 영역을 사용하는"옵션을 "아니오" 설정하십시오.

 

 

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 9  (0) 2013.04.05
RL78 컴파일러 사용 8  (0) 2013.04.05
RL78 컴파일러 사용 6  (0) 2013.04.05
RL78 컴파일러 사용 5  (0) 2013.04.05
RL78 컴파일러 사용 4  (0) 2013.04.05

 

2.1 시작 샘플 프로그램 시작 등록

 

 

 

시작 등록

프로젝트 생성시 시작은 기본 샘플 (표준 시작 라이브러리) 자동으로 연결되도록되어 있습니다. 따라서, 프로젝트 트리의 시작 폴더에 아무것도 등록되어 있지 않지만, 빌드는 문제없이 수행 있습니다.

그러나 사용자 시스템 쪽에서 시작을 수정해야 있다면, CubeSuite + 설치 폴더보다 시작 샘플 복사하고 원하는 프로젝트에 등록합니다. 필요한 시작 샘플 프로그램은 헤더 파일이 소스 파일이 하나 있습니다.

 

 

헤더 파일 : def.inc  

헤더 파일 : macro.inc  

소스 파일 : 표준 라이브러리를 사용하는 경우 cstart.asm 표준 라이브러리를 사용하지 않으면 cstartn.asm 3 개의 샘플 프로그램을 프로젝트 폴더에 복사하고 원본 파일 프로젝트에

등록하고,사용자 시스템 사정에 따라 내용을 수정합니다.

 

【주의 사항】 표준 시작 (라이브러리) 사용하지 않는 경우, 조립 옵션의 정의 매크로 항목에서 샘플 IF 제어 명령에서 참조하는 다양한 기호를 적절한 값으로 설정해야합니다. 따라서 시작에 관해서는 표준 시작 (라이브러리) 사용하는 것을 권장합니다.

 

 

표준 시작 사용 해제 만약 표준 시작이 아니라 사용자 시스템 고유의 시작을 사용하는 경우 컴파일 옵션설정이 필요합니다.

위의 설정은 표준 시작 사용을 해제합니다. 다음 페이지에서 위의 설정에서 사용 가능해진다

 

 

 

 

 

 

시작 샘플 프로그램입니다.

 

浮動小数点ライブラリの シンボル定義 (부동 소수점 라이브러리의 심볼 정의)

定義ドウェア初期化関数シンボル(사용자 정의 하드웨어 초기화 함수 기호)

スタックポインタやユ定義ドウェア初期化関数、スタック領域初期化関数C言語変数領域のスタトおよびエンドアドレスシンボルなどの外部参照指定 (스택 포인터와 사용자 정의 하드웨어 초기화 함수 스택 영역 초기화 함수 C 언어 변수 영역의 시작과 주소 기호 등의 외부 참조 지정)

スタック領域初期化関数シンボル (스택 영역 초기화 함수 기호)

スタック解決用シンボル (스택 해결 기호)

リセットベクタのスタトアッププログラムの先頭シンボル「_@cstart 」を設定 (리셋 벡터의 등록 시작 프로그램의 시작 기호 '_ @ cstart " 설정)

スタトアッププログラムの 先頭シンボル「_@cstart (시작 프로그램의 시작 기호 '_ @ cstart ")

 

レジスタバンクの設定(バンク0設定) (레지스터 뱅크의 설정 (뱅크 0으로 설정))

ミラー領域00000h0FFFFh/100001FFFFh)の設定 「ミラー領域指定」オプション(-mi)の反映

(미러 영역 (00000h ~ 0FFFFh/10000 ~ 1FFFFh) 설정 "미러 영역 지정"옵션 (-mi) 값을 반영)

スタックポインタの初期化(스택 포인터 초기화)

定義ドウェア初期化関数(사용자 정의 하드웨어 초기화 함수 호출)

スタック領域初期化 (스택 영역의 초기화)

saddr領域のゼロクリア (saddr 영역의 제로 클리어)

@@R_INITセクションから@@INITセクションへの初期値のコピ

(@ @ R_INIT 섹션에서 @ @ INIT 섹션에 초기 복사)

 

 

@@RLINITセクションから@@INITLセクションへの初期値のコピ

(@ @ RLINIT 섹션에서 @ @ INITL 섹션에 초기 값 복사)

@@DATAセクションのゼロクリア (@ @ DATA 섹션 제로 클리어)

@@DATALセクションのゼロクリア (@ @ DATAL 섹션 제로 클리어)

@@R_INISセクションから@@INISセクションへの初期値のコピ

(@ @ R_INIS 섹션에서 @ @ INIS 섹션에 초기 값 복사)

@@DATSセクションのゼロクリア (@ @ DATS 섹션 제로 클리어)

main関数 (main 함수 호출)

各種セクションの宣言 (각종 섹션 선언)

 

 

【주의 사항】 표준 시작 (라이브러리) 사용하지 않는 경우, 조립 옵션의 정의 매크로 항목에서 샘플 IF 제어 명령에서 참조하는 다양한 기호를 적절한 값으로 설정해야합니다. 따라서 시작에 관해서는 표준 시작 (라이브러리) 사용하는 것을 권장합니다.

 

 

1 : / *********************************************** ******************** /

2 : / * Sample for hdwinit.c * /

3 : / *************** ************************************************** ** /

4 : # pragma sfr / / Used Peripheral

5 :

6 : void hdwinit(void)

7 :

{8: / / 사용자 고유의 하드웨어 초기화 처리를 기술  

9 :}

 

hdwinit 함수는 주변 기능 (sfr) 초기 설정을하는 함수로 사용자가 필요에 따라 만들 있습니다.

hdwinit 함수를 작성하여 main 함수 실행 전에 초기 설정을 수있게됩니다.

사용자가 hdwinit 함수를 작성하지 않으면, 아무것도하지 않고 반환하는 함수가 연결됩니다.

 

 

 

사용자 정의 하드웨어 초기화 함수 (hdwinit 함수)

 

시작 샘플 프로그램은 main 함수 실행 전에 사용자 고유의 하드웨어 초기화 처리를위한 함수를 호출합니다.

함수는 "사용자 정의 하드웨어 초기화 함수"라고 함수 이름은 "hdwinit"인수와 반환 값은 모두 void 형입니다.

필요한 경우 원하는 함수를 정의하고 함수에 main 함수 실행 전에 하드웨어 초기화 처리를 기술하십시오.

예를 들어, 클럭 발생 회로 등의 설정을 기술하면 좋습니다.

또한, 사용자 정의 하드웨어 초기화 함수이다 hdwinit 함수를 반드시 작성해야한다 것은 없습니다.

만약 main 함수 실행 전에 하드웨어 초기화가없는 경우 작성도 문제 없습니다.

경우는 아무것도하지 않고 반환하는 컴파일러 제공 기능이 자동으로 연결되도록되어 있습니다.

다음 hdwinit 함수를 보여 둡니다.

 

: 고속 온칩 오실레이터를 CPU 클럭으로 사용하는

고속 시스템 클럭 (X1), 서브 시스템 클럭 (XT1) 발진시키는

 

# pragma sfr

void hdwinit(void)

{

CMC  = 0x51; / / X1 Clock Pin, SubClock Pin Enable

OSMC = 0x80; / / Used SubClock Only RTC & IntervalTimer

MSTOP = 0; / / X1 Clock is Ensable

XTSTOP = 0; / / Sub Clock is Ensble

HIOSTOP = 0; / / High Speed ​​OCO Enable

while(OSTC!  = 0xFF ) / / Wait X1 Stabilization Time (13.11ms (X1 =20MHz));

}


스택 해결 심볼 생성 시작 샘플 프로그램은 스택 포인터 설정에서 기호 이름 "_ @ STBEG" 참조하고 있습니다. 표준 시작을 사용하는 경우 원하는 기호는 자동으로 해결되기 때문에 옵션 설정은 필요하지 않지만 자신의 시작을 사용하는 경우 "스택 해결을위한 기호를 생성하는"옵션 (-s) 지정 필요합니다. 컴파일 옵션을 설정하여 스택 해결 심벌이다 "_ @ STBEG" "_ @ STEND" 생성됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 메모리 매핑 near 영역과 saddr 영역 배치 섹션 (내장 ROM64K / 내장 RAM5.5K 바이트 버전)

 

near 영역과 saddr 영역 배치 섹션 near 영역과 saddr 영역 배치 섹션은 연결시 번지 지정에 제약이 있습니다. 다음 섹션 종별마다 배치 장소의 제약 메모리 매핑을 보여줍니다.

 

(1) @ @ BITS @ @ INIS @ @ DATS

섹션은 saddr 영역 안에, sfr 영역과 범용 레지스터 영역을 제외한 RAM 배치합니다. RL78/G14 내장 RAM5.5K 바이트 버전이면 FFE20h ~ FFEB3h 배치 가능합니다.

 

(2) @ INIT @ @ DATA

섹션은 데이터 near 영역 안에, sfr 영역과 범용 레지스터 영역을 제외한 RAM 배치합니다. RL78/G14 내장 RAM5.5K 바이트 버전이면 FE900h ~ FFEB3h 배치 가능합니다. 그러나 셀프 프로그래밍기능 데이터 플래시 기능 사용시는 라이브러리가 작업 영역으로 사용할 FE900H-FED09H 영역이 금지됩니다.

 

(3) @ @ CNST 섹션은 00000h ~ 0FFFFh 또는 10000h ~ 1FFFFh ROM 배치합니다. RL78/G14 내장 ROM64K / 내장 RAM5.5K 바이트 버전이라면 02000h ~ 0E8FFh 배치 가능합니다.

 

(4) @ @ R_INIT @ @ R_INIS 섹션은 ROM이면 무엇 번지에서 (다른 영역과 중복해야) 배치 가능합니다. RL78/G14 내장 ROM64K 바이트 버전이라면 00000h ~ 0FFFFh 배치 가능합니다.

 

(5) @ LCODE @ @ CODE 이러한 섹션은 코드 near 영역 ROM 배치합니다. RL78/G14 내장 ROM64K 바이트 버전이라면 00000h ~ 0FFFFh 배치 가능합니다.

【주의 사항】

(4) (5) 관해서는 벡터 테이블 영역 CALLT 테이블 영역 옵션 바이트 영역 온칩 디버그 보안 ID 영역 온칩 디버거 모니터 영역에서 사용하는 영역 배치 없습니다.

 

far領域 (데이터 far 영역)

far領域 (코드 far 영역)

 

far 영역 섹션 far 영역 배치 섹션은 연결시 번지 지정에 제약이 없습니다. ROM / RAM 배치에 오류가 없으면 아무 번지라도 메모리 매핑이 가능합니다.

 

(1) @ @ INITL @ @ DATAL 섹션은 RAM 배치합니다.

(2) @ @ CNSTL @ @ RLINIT @ @ LCODEL @ @ CODEL 섹션은 ROM 배치합니다.

 

 

@ @ CNST 데이터 센터 near 공간 배치이다.

그러나 ROM 영역이어야한다.

그래서 미러 영역에 미러되는 ROM 배치한다.

MAA = 1 ROM 영역이 존재하는 경우 MAA = 0 ROM 영역을 모든 코드 부분 near 영역으로 사용할 있으며 코드 효율성을 향상시킬

 

 

 

미러 영역

 

@ @ CNST 섹션은 본래 데이터 near 영역의 ROM 저장해야합니다.

그러나 데이터 near 영역에는 ROM 존재하지 않기 때문에, 00000h ~ 0FFFFh 또는 10000h ~ 1FFFFh ROM 배치합니다.

이유는 near 영역 수있는 상위 주소 4 비트 명령어 인출하면 자동으로 0 **** h, 데이터 액세스하면 자동으로 F **** h입니다.

따라서 @ @ CNST 섹션을 00000h ~ 0FFFFh 또는 10000h ~ 1FFFFh ROM 배치해도 미러 영역으로 데이터 near 영역 F0000h ~ FFFFFh (하위 16 비트는 동일한 주소)에서 리드 가능하기 때문입니다.

또한 00000h ~ 0FFFFh 또는 10000h ~ 1FFFFh 중을 미러 영역에 반영 시킬지는 다음 페이지의 옵션에 의해 결정하고 표준 시작에서 자동으로 옵션 설정 영역이 미러 영역에 반영됩니다.

【주의 사항】 표준 시작 (라이브러리) 사용하지 않는 경우, 조립 옵션의 정의 매크로 항목에서 "MIRROR" 적절한 값으로 설정해야합니다.

 

 

 

컴파일 옵션

메모리 모델

미러 영역 지정 : MAA = 0 (기본값) , MAA-1

 

 

미러 영역 지정 옵션

00000h ~ 0FFFFh 또는 10000h ~ 1FFFFh 중을 미러 영역에 반영 시킬지는 위의 "미러 영역 지정"옵션 (-mi)에서 결정합니다. 덧붙여 "미러 영역 지정"옵션의 설정 값은 표준 시작하면 프로그램에서 자동으로 반영됩니다.

또한 RL78/G14 내장 ROM64K / 내장 RAM5.5K 바이트 버전의 경우, 내장 ROM 00000h ~ 0FFFFh 밖에없고 미러되지 않는 부트 클러스터 영역이나 내장 RAM 제외하면 MAA = 0 (-mi0) 선택 가능 이어 미러 가능한 영역 02000h ~ 0E8FFh입니다.

 

【주의 사항】 표준 시작 (라이브러리) 사용하지 않는 경우, 조립 옵션의 정의 매크로 항목에서 "MIRROR" 적절한 값으로 설정해야합니다.

 

2.3 링크 지시어 링크 지시어는

링크 지시어는 링커에 사용 가능한 메모리 영역 세그먼트의 배치 , 링크시의 각종 지시하기위한 명령어이며, 파일로 작성합니다 .

링크 지시문에는 종류가 있습니다.  

메모리 지시어 · 구현 메모리 주소를 선언합니다. · 메모리를 여러 영역으로 분할하여 메모리 영역을 지정합니다.  

세그먼트 배치 지시어 세그먼트에 주소 또는 메모리 영역을 지정합니다.

 

메모리 지시어의 형식 MEMORY 메모리 영역 이름 : (시작 주소 크기)/ 메모리 공간 이름

세그먼트 배치 지시어의 형식

MERGE 세그먼트 이름 : AT (시작 주소)] [= 메모리 영역 이름] [/ 메모리 공간 이름

MERGE 세그먼트 이름 : 조인 속성][= 메모리 영역 이름] [/ 메모리 공간 이름

메모리 공간 이름, 결합 특성은 선택적이며, C 언어의 개발 단일 작동하면 지정할 필요가 없습니다.

 

(1) 메모리 지시어

 

구현 메모리 주소를 선언합니다.

메모리를 여러 영역으로 분할하여 메모리 영역을 지정합니다.

 

세그먼트 배치 지시어

세그먼트 (섹션) 주소 또는 메모리 영역을 지정합니다.

 

  1. 메모리 지시어의 형식 MEMORY 메모리 영역 이름 : (시작 주소 크기) / 메모리 공간 이름
  2. 세그먼트 배치 지시어의 형식 MERGE 세그먼트 이름 : AT (시작 주소)] [= 메모리 영역 이름] [/

     

    메모리 공간 이름 MERGE 세그먼트 이름 : 조인 속성] [= 메모리 영역 이름] [/ 메모리 공간 이름

    또한 C 언어로 개발하면 결합 특성을 지정할 필요가 없습니다. 외부 메모리를 연결할 때로드 모듈을 분리 사용합니다. 단일 동작에서 사용할 때는 설정해야합니다.

    메모리 지시문

    · ROM1 영역을 02000h에서 1000h 바이트 확보

    · ROM2 영역을 03000h에서 2000h 바이트 확보

    세그먼트 배치 지시문

    섹션 "@ @ CODE" 02500h에서 배포

    섹션 "@ @ LCODE" ROM2 영역 04500h에서 배포

    섹션 "@ @ R_INIS ''@ @ R_INIT" ROM2 영역에 배치

     

     

     

    링크 지시어 설명 링크 지시문을 포함하는 파일 확장자 dr 또는 dir 만듭니다.

    메모리 지시어는 영역을 정의합니다. 또한 영역 이름은 다음 규칙이 적용됩니다.

    메모리 영역 이름에 사용할 수있는 문자는 A ~ Z, a ~ z, 0 ~ 9, _,? @입니다.  

    그러나 0-9 메모리 영역 이름 앞에는 사용할 없습니다.

    대소 문자를 다른 문자로 구분합니다.  

    대소 문자를 혼합 있습니다.  

    메모리 영역 이름의 길이는昀大256 자입니다.  

    메모리 영역 이름은 전체 메모리 공간을 통해 하나 않으면 안됩니다.  

    숫자 상수를 작성하려면 10 진수 또는 16 진수를 작성할 있습니다.

    • 16 진수의 경우昀後 "H" 지정합니다. 또한, 선두가 A ~ F 경우는 앞에 "0" 지정합니다.

     

    세그먼트 배치 지시문에서는 세그먼트 (섹션) 지정한 메모리 영역에 또는 특정 번지에 배치합니다. 또한 C 언어로 개발을 경우, 세그먼트 이름에는 다음 규칙이 적용됩니다.

    세그먼트 이름 컴파일러가 생성 섹션 이름을 설명합니다.

    지정된 섹션이없는 경우 오류가 발생합니다.  

    동일한 섹션의 세그먼트 배치 지시문을 여러 지정하면 오류가 발생합니다.  

    숫자 상수를 작성하려면 10 진수 또는 16 진수를 작성할 있습니다.  

    • 16 진수의 경우昀後 "H" 지정합니다. 또한, 선두가 A ~ F 경우는 앞에 "0" 지정합니다.

     

     

    링크 지시문은 대상 장치에 따라 자동으로 사용된다 (기본)

    필요한 경우 링크 지시어 파일을 만들어 프로젝트에 등록

     

     

    링크 지시어 파일의 등록 만든 링크 지시어 파일은 프로젝트 트리에 등록합니다. 이렇게 만든 링크 지시어 파일의 내용에 따라 연결이 이루어집니다. 덧붙여 만든 링크 지시어 파일에 기술되지 않은 부분은 기본적으로 링크가 이루어집니다. 따라서 링크 지시어 파일에 만든 시스템의 모든 섹션의 배치 정보를 작성할 필요가 없습니다. 어떤 이유로 특정 섹션을 특정 메모리 영역과 특정 번지에 배치 때만 링크 지시어 파일에 설명을 실시하면 좋은 것입니다.

     

     

    링크 옵션

    입력 파일

    사용하는 링크 지시문 파일 : 없음 (기본)

    파일 이름

     

     

    링크 지시어 파일의 설정 링크 지시어 파일을 만들고 프로젝트 트리에 등록하면 자동으로 링크 옵션에서 입력 파일의 "사용하는 링크 지시어 파일"옵션이 설정됩니다.

     

    메모리 지시문

    · WORK 영역을 FFEB4h에서 76 바이트 확보

    · SADDR 영역을 FFE20h에서 148 바이트 확보

    · STACK 영역을 FFC20h에서 512 바이트 확보

    · RAM 영역을 FE900h에서 4896 바이트 확보

    세그먼트 배치 지시문

    · @ @ DATS @ @ INIS @ @ BITS SADDR 영역에 배치

    · @ @ INIT @ @ DATA RAM 영역에 배치

     

    スタック解決用シンボル (스택 해결 용 기호 )

    기본 설정에있어서, 스택 영역는 링커가 RAM 영역의 Gap (여유 공간) 찾아 , 동적으로 확보합니다

     

     

    스택 크기 변경 기본 설정에서 스택 영역은 링커가 RAM 영역의 가장 Gap (공간) 찾아 자동으로 확보합니다. 따라서 시스템의 스택 영역이 동작에 문제 없다 크기 확보되어 있는지 여부는 애매합니다. 만약 스택 공간을 정확하게 확보하는 경우, 스택 영역을 확보 링크 지시어 파일을 작성하고 등록해야합니다. 위의 예는 스택 영역을 영역 이름 "STACK"에서 FFC20h에서 512 바이트 확보 것입니다.

     

     

    스택 영역 이름 지정

    스택 영역 이름을 링크 지시어 파일에서 확보 경우, 이미 소개 "스택 해결을위한 기호를 생성하는"옵션 (-s) 해당 영역에서 스택 해결 심볼이 생성 되도록 스택 영역 이름을 지정합니다.

    위와 같이 "영역 이름"으로 링크 지시어 파일에서 생성 영역 이름 "STACK" 지정하여 해당 영역에서 스택 해결 심벌 "_ @ STBEG" "_ @ STEND" 생성 있습니다.

     

     

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 8  (0) 2013.04.05
RL78 컴파일러 사용 7  (0) 2013.04.05
RL78 컴파일러 사용 5  (0) 2013.04.05
RL78 컴파일러 사용 4  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05

 

  1. 확장 언어 사양
  2. 키워드

     

    키워드 목록

     

    【주】 * ANSI-C 언어 사양 허용-za 옵션 지정시에는 무효가 됩니다

     

    키워드 목록 RL78 패밀리 컴파일러는 위에 설명 키워드를 지원하고 있습니다.

    또한 자세한 내용은 2 이상 차례로 소개합니다.

    그러나이 텍스트는

    • ASM

    절대 번지 배치 지정은 소개하지 않습니다.

    이러한 키워드에 대해서는 설명서를 참조하십시오.

    다음 페이지에 2 상수를 설명하는 키워드의사용을 보여줍니다.

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

     

    정수가 기술 가능한 위치에 2 상수를 작성할 있습니다. ·

    이진 상수는 접두사 0b 또는 0B 작성하고 0 또는 1 숫자로 표시합니다

     

    이진 상수 RL78 패밀리 컴파일러는 소스 프로그램 중에 2 진수 상수가 설명 가능합니다.

    이진 상수는 접두사 "0b"또는 "0B" 작성하고 다음 0 또는 1 열에서 숫자를 표현합니다.

     

     

     

     

     

     

     

    ANSI 규정 외의 기능을 무효로하고, ANSI 규정의 일부 기능을 사용합니다.

    구체적으로는 다음 작업을 수행합니다.

     

     

    다음은 예약어는 없습니다. callt / sreg / bit / boolean/ # asm / # endasm

    트라이 ​​그래프 시퀀스 (3 문자 표기) 적용됩니다.

    컴파일러 정의 매크로 __STDC__ 1이됩니다.

    □ far 포인터의 관계 연산을 3 바이트로 실시하는 것으로, 데이터를 64K 바이트의昀後 1 바이트에 배치 가능합니다.  

    int 이외의 비트 필드에 다음 경고를 출력합니다.(CC78K0R warning W0787 : Bit field type is not int)

    □ -qc-zp-zc 옵션에 대해-w2 지정시 다음 경고를 출력합니다.

    (CC78K0R warning W0029 : '-qc'option is not portable)

    (CC78K0R warning W0031 : '-zp'option is not portable)

    (CC78K0R warning W0032 : '-zc'option is not portable)

     □ 각종 # pragma 문에,-w2 지정시 다음 경고를 출력합니다.

    (CC78K0R warning W0849 : # pragma statement is not portable)

     □ __asm ​​문장에 대해,-w2 지정시 다음 경고를 출력하고 어셈블 출력됩니다.

    (CC78K0R warning W0850 : Asm statement is not portable)

    □ # asm ~ # endasm 블록에-w2 지정시 다음의 오류 등을 출력합니다.

    (CC78K0R error E0801 : Undefined control )

     

     

    ANSI-C 언어 사양 허용 옵션

    "ANSI 표준을 준수하는"옵션 (-za) '' 설정 경우, 위의 항목이 변경됩니다. 안에 1-26 페이지에서 소개 키워드의 일부가 무효화와 비트 필드의 형태 지정자로서, int 이외의 것을 사용하면 경고가 출력되는 것이 중요합니다.

    또한, 위의 슬라이드에있는 옵션의 내용은 다음과 같습니다. •-qc : "char 형을 unsigned char 간주"옵션 (3-8 참조)  •-zp : "C + + 형식의 주석 허용"옵션 (컴파일 옵션 확장 카테고리) •-zc : "댓글 중첩 허용"옵션 (컴파일 옵션 확장 카테고리) •-w2 : " 경고 수준 "옵션에 대한 자세한 출력 (컴파일 옵션 메시지 범주)

     

    1.5.2 섹션 구성 near 공간 배치의 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    함수

    @ @ CODE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    2

    라이브러리 함수

    @ @ LCODE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    3

    값을 변경하지 정적 변수

    @ @ CNST

    CSEG

    MIRRORP

    미러 영역에 미러되는 ROM

    4

    초기 값이없는 정적 변수

    @ @ DATA

    DSEG

    BASEP

    saddr 영역을 제외한 내장 RAM

    5

    초기 값의 정적 변수

    @ @ INIT

    DSEG

    BASEP

    saddr 영역을 제외한 내장 RAM

    6

    초기 값의 정적 변수의 초기

    @ @ R_INIT

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

     

     

    far 영역 배치 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    함수

    @ @ CODEL

    CSEG

    -

    2

    라이브러리

    함수

    @ @ LCODEL

    CSEG

    -

    3

    값을

    변경하지 정적 변수

    @ @ CNSTL

    CSEG

    PAGE64KP

    64K 경계를が않는 ROM

    4

    초기 값이없는 정적 변수

    @ @ DATAL

    DSEG

    UNIT64KP

    64K 경계를が않는 RAM

    5

    초기 값의 정적 변수

    @ @ INITL

    DSEG

    UNIT64KP

    64K 경계를が않는 RAM

    6

    초기 값있는 정적 변수의 초기

    @ @ RLINIT

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

     

     

    saddr 공간 배치의 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    초기 값없이 sreg 변수

    @ @ DATS

    DSEG

    SADDRP

    saddr 영역

    2

    초기 값이 sreg 변수

    @ @ INIS

    DSEG

    SADDRP

    saddr 영역

    3

    초기 값이 sreg 변수의 초기

    @ @ R_INIS

    CSEG

    UNIT64KP

    64K 경계를が않는 ROM

    4

    bit 변수

    @ @ BITS

    BSEG

    -

    saddr 영역

     

     

    다른 C 프로그램이 사용하는 메모리 영역

    배치되는

    섹션 이름

    세그먼트 유형

    재배치 특성

    배치

    1

    callt 함수 테이블

    @ @ CALT

    CSEG

    CALLT0

    callt 테이블 영역

    2

    인터럽트 함수 c allt 함수

    @ @ BASE

    CSEG

    BASE

    000CEh ~ 0FFFFh

    3

    벡터 테이블

    @ @ VECTnn

    CSEG

    AT 00mmH

    고정 영역

     

     

    섹션 구성 RL78 패밀리 컴파일러가 사용하는 섹션 구성 (기본) 목록을 보여줍니다. 링크의 링크 지시어는 섹션 단위로 번지 지정을 실시하기 때문에, C 언어 소스 프로그램과 섹션의 관계는 이해해야합니다.

     

     

    소스 프로그램 컴파일 결과

     

     

    함수 섹션 이름

    near 공간 배치의 함수는 섹션 이름 "@ @ CODE" 할당합니다. 섹션 "@ @ CODE"세그먼트 유형은 "CSEG"재배치 속성은 "BASE"입니다. far 공간 배치의 함수는 섹션 이름 "@ @ CODEL" 할당합니다. 섹션 "@ @ CODEL"세그먼트 유형은 "CSEG"입니다.

     

    라이브러리 함수 섹션 이름

    near 공간 배치의 라이브러리 함수는 섹션 이름 "@ @ LCODE" 할당합니다. far 공간 배치의 라이브러리 함수는 섹션 이름 "@ @ LCODEL" 할당합니다.

     

    * : 정렬 조건을 조정하기 위해 사용하지 않는 영역

     

     

    값을 변경하지 정적 변수 섹션 이름

    near 영역 배치의 값을 변경하지 정적 변수는 섹션 이름 "@ @ CNST" 할당합니다. 섹션 "@ @ CNST"세그먼트 유형은 "CSEG"재배치 속성은 "MIRRORP"입니다. far 공간 배치의 값을 변경하지 정적 변수는 섹션 이름 "@ @ CNSTL" 할당합니다. 섹션 "@ @ CNSTL"세그먼트 유형은 "CSEG"재배치 속성은 "PAGE64KP"입니다.

     

    초기 값없이 정적 변수 섹션 이름

    near 공간 배치의 초기 값없이 정적 변수는 섹션 이름 "@ @ DATA" 할당합니다. 섹션 "@ @ DATA"세그먼트 유형은 "DSEG"재배치 속성은 "BASEP"입니다. far 공간 배치의 초기 값없이 정적 변수는 섹션 이름 "@ @ DATAL" 할당합니다. 섹션 "@ @ DATAL"세그먼트 유형은 "DSEG"재배치 속성은 "UNIT64KP"입니다.

     

     

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

    * : 정렬 조건을 조정하기 위해 사용하지 않는 영역

     

    초기 값이 정적 변수 섹션 이름

    near 영역 배치 값을 초기 값이 정적 변수는 섹션 이름 "@ @ INIT" 할당합니다. 섹션 "@ @ INIT"세그먼트 유형은 "DSEG"재배치 속성은 "BASEP"입니다. far 공간 배치의 초기 값이 정적 변수는 섹션 이름 "@ @ INITL" 할당합니다. 섹션 "@ @ INITL"세그먼트 유형은 "DSEG"재배치 속성은 "UNIT64KP"입니다.

    초기 값이 정적 변수의 초기 값의 섹션 이름

    near 공간 배치의 초기 값이 정적 변수의 초기 값은 섹션 이름 "@ @ R_INIT" 할당합니다. 섹션 "@ @ R_INIT"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다. far 공간 배치의 초기 값이 정적 변수의 초기 값은 섹션 이름 "@ @ RLINIT" 할당합니다. 섹션 "@ @ RLINIT"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다.

     

     

     

     

     

    소스 프로그램 컴파일 결과

    ·  sreg / __sreg 선언 정적 변수는 saddr 영역에 자주 나타납니다.

    ·  saddr 영역에 대한 명령은 일반적으로 메모리에 대한 명령보다 짧은 코드 효율이 향상됩니다.

    ·  saddr 영역 FFE20H ~ FFEB3H (148 바이트) 배치 가능합니다.

     

     

    sreg / __sreg 선언

    sreg 선언 또는 __sreg 선언 외부 변수 함수에 static 변수 (이하 sreg 변수라고 부른다) saddr 영역에 할당합니다. saddr 영역에 대한 명령은 일반적으로 메모리에 대한 명령보다 짧은 코드 효율성을 향상시킬 있습니다.

    또한 saddr 영역 FFE20H ~ FFEB3H까지 148 바이트입니다. 이러한 영역을 초과하는 경우 컴파일 오류가 발생합니다.

    【작성 방법】 sreg 형명 변수 이름 / sreg static 형명 변수 이름 __sreg 형명 변수 이름 / __ sreg static 형명 변수 이름 extern sreg 형명 변수 이름 / extern __ sreg 형명 변수

     

     

    【제한 사항】

    • const , 또는 함수에 sreg / __sreg 지정한 경우 경고 메시지를 출력하고 sreg 선언을 무시합니다. • "ANSI-C 언어 사양 허용"옵션 (-za) 지정시는 __sreg에만 유효합니다.  • 2 바이트 크기의 변수의 경우 1로드 모듈 74 개까지 사용할 있습니다. 그러나 bit, boolean

    변수를 사용하는 경우 사용할 수있는 개수는 줄어 듭니다.

     

     

     

     

     

     

     

     

     

     

     

    소스 프로그램 컴파일 결과

     

    * :정렬 조건을 조정하기 위해 사용하지 않는 영역

     

     

    초기 값없이 sreg 변수 섹션 이름

    초기 값없이 sreg 변수는 섹션 이름 "@ @ DATS" 할당합니다. 섹션 "@ @ DATS"세그먼트 유형은 "DSEG"재배치 속성은 "SADDRP"입니다.

     

    초기 값이 sreg 변수 섹션 이름

    초기 값이 sreg 변수는 섹션 이름 "@ @ INIS" 할당합니다. 섹션 "@ @ INIS"세그먼트 유형은 "DSEG"재배치 속성은 "SADDRP"입니다.

     

    초기 값이 sreg 변수의 초기 값의 섹션 이름

    초기 값이 sreg 변수의 초기 값은 섹션 이름 "@ @ R_INIS" 할당합니다. 섹션 "@ @ R_INIS"세그먼트 유형은 "CSEG"재배치 속성은 "UNIT64KP"입니다.


    saddr 영역의 자동 할당 옵션 전항에서 소개 sreg 변수는 함수 static 변수이면 "static 변수를 saddr 영역에 할당"옵션 (-rs) 외부 변수 함수 외부 static 변수 경우 "외부 변수 saddr 영역에 할당 "옵션 (-rd) 의해 자동으로 saddr 영역에 할당 있습니다.

     

    소스 프로그램 컴파일 결과

     

    ·  bit / boolean 변수는 1 비트의 데이터로 간주, saddr 영역에 배치됩니다.

    ·  bit / boolean 변수는 초기 값없이 외부 변수처럼 취급합니다.

    · 비트 변수에 컴파일러는 비트 조작 명령을 출력합니다. · 정수 sreg 변수 (배열 요소, 구조체 제외) 자동으로 bit 변수로 사용할 있습니다.

     

     

    bit 변수 (bit), boolean 변수 (boolean / __boolean)

    bit / boolean / __boolean 변수는 1 비트의 데이터 (이하, bit 변수라고 부른다) 다루어 saddr 영역에 배치됩니다. 이러한 bit 변수는 초기 값없이 외부 변수처럼 취급 원하는 bit 변수에 컴파일러는 비트 조작 명령을 출력합니다. 또한 페이지까지 소개 sreg 변수 (배열의 요소 구조는 제외) 자동으로 bit 변수로 사용할 있습니다.

     

    【작성 방법】

    bit 변수 이름 / boolean 변수 이름 / __ boolean 변수 이름 extern bit 변수 이름 / extern boolean 변수 이름 / extern __ boolean 변수 이름 변수 이름. n (n 0 ~ 31, n 값은 형태에 따라 달라집니다)

     

    【제한 사항】

    배열 요소, 구조체 / 공용체의 멤버 함수의 인수, 자동 변수의 형식으로 사용할 없습니다.  

    초기 값이하고 선언 없습니다. 또한 주소 참조, sizeof 연산을 수행 없습니다.

    • "ANSI-C 언어 사양 허용"옵션 (-za) 지정시는 __boolean에만 유효합니다.  

    • bit 변수 1로드 모듈 昀大1184 개까지 사용할 있습니다. 그러나 sreg 변수를 사용했을 경우와 "saddr 공간 할당"옵션 (-rs-rd) 지정하면 사용 가능한 개수가 줄어 듭니다.

     

    bit 변수 섹션 이름 bit 변수는 섹션 이름 "@ @ BITS" 할당합니다. 섹션 "@ @ BITS"세그먼트 유형은 "BSEG"입니다.

     

    # pragma section 컴파일러 출력 섹션 이름 변경 섹션 이름 [AT 시작 주소]

    컴파일러 출력 섹션 이름 변경 시작 주소를 지정합니다.

    시작 주소를 생략하면 기본 배치됩니다.

    컴파일러 출력 섹션 이름과 기본 배치는 1.5.2 항을 참조하십시오.

    시작 주소는 생략하고 링크 지정할 있습니다.

     

    1 # pragma section @ @ CODE? CODE / / @ @ CODE 섹션을? CODE 변경

    __near void sub​​(void){}

     

    2 # pragma section @ @ DATA? DATA AT 0xFED00 / / @ @ DATA 섹션 ? DATA 변경

    __near int na; // 0xFED00 번지에 위치

    # pragma section @ @ DATA @ @ DATA/ / 이후는 기본 설정으로 복원

    __near int nb; // @ @ DATA 섹션에 배치

     

     

    3 # pragma section @ @ INIT ABC / / @ @ INIT 섹션을 ABC 변경

    __near int nc = 1;/ / 그러나 @ @ R_INIT 그대로

    # pragma section @ @ INIT XYZ/ / @ @ INIT 섹션을 XYZ 변경

    # pragma section @ @ R_INIT VW/ / @ @ R_INIT 섹션도 VW 변경

    __near int nd = 2;

     

     

    # pragma section으로 섹션 이름 변경

    컴파일러가 기본적으로 사용하는 섹션 이름은 # pragmasection 따라 변경 가능합니다.

    단순히 "변경하려는 컴파일러 출력 섹션 이름" "수정 부분 이름" 지정합니다.

    또한, 시작 주소 지정은 선택적이며 생략했을 때는 2 장의 링크 지시어 결정합니다. 다음 # pragma section 사용할 때의주의 사항을 언급한다.

     

    • # pragma 지시자는 C 언어 소스 위에합니다.  

    그러나 다음은 # pragma 지령 전에 설명 있습니다.

    - 댓글 - 전처리 지침 변수의 정의 / 참조 함수의 정의 / 참조를 생성하지 않습니다  

    • # pragma 지시문이 작성된 이후에 데이터를 작성하는 경우, 데이터를 변경 섹션에 배치합니다.  

    다시 변경 지령도 가능하며, 변경 지령 이후에 데이터를 작성하는 경우, 데이터를 다시 변경 섹션에 배치합니다.

     • 이전에 정의 데이터를 변경 다시 정의하면 다시 변경된 섹션에 배치합니다.

     • # pragma 이후 설명하는 키워드 컴파일러 출력 섹션 이름은 반드시 대문자로하십시오.

     • section, AT 대문자 소문자도 대소 문자 혼합으로 작성할 있습니다.  

    변경 섹션 이름의 형식은 어셈블러의 사양을 준수합니다 (세그먼트 이름은 8 자까지 가능).  

    시작 주소는 C 언어의 16 진수 어셈블러의 16 진수에만 적용 있습니다.  

     

    () 시작 샘플 프로그램과의 관계 초기 값의 정적 변수 섹션 이름을 변경하기 때문에 있으면

    변수 / 기본값 함께 섹션 이름을 변경하는 것을 권장합니다. 이유는 2 장의 샘플에서는 초기 값을 복사와 대상 섹션 이름을 1 1 결정되기 때문입니다.

     

     

     

    # pragma section 예제

     

    __near 공간 배치의 함수 섹션 이름

    # pragmasection __near 공간 배치의 함수 섹션 이름을 변경 것입니다. 컴파일 결과의 번째 행이 나타내는대로, sub 함수는 섹션 이름 "? CODE" 할당됩니다.

     

    __near 공간 배치의 초기 값이없는 변수 섹션 이름

    4 번째 줄의 # pragmasection __near 공간 배치의 초기 값이없는 변수 섹션 이름을 변경 묘비 주소 지정도 것입니다. 컴파일 결과 4 번째 줄에서 있듯이 변수 na 시작 주소 "0FED00h"섹션 이름 "? DATA" 할당됩니다.

    그러나 6 번째 줄의 # pragma section으로 __near 공간 배치의 초기 값이없는 변수는 기본 섹션에 다시 있기 때문에 변수 nb 기본 할당됩니다.

     

    __near 공간 배치의 초기 값이있는 변수 섹션 이름

    초기 값의 정적 변수는 섹션에 할당됩니다. 9 번째 줄의 # pragma section __near 공간 배치의 변수 섹션 이름을 변경 것입니다. 따라서 컴파일 결과 10 번째 줄에서 있듯이 변수 nc 할당 섹션 이름은 "ABC" 변경이됩니다 , 초기 값을 할당 섹션 이름은 컴파일 결과 13 행에서 있듯이, 기본값 "@ @ R_INIT"입니다.

    한편, 11 번째 줄에서 12 번째 줄의 # pragmasection에서 변수 할당 섹션 이름과 함께 초기 섹션 이름도 수정하고 있습니다. 따라서 컴파일 결과 16 번째 줄과 19 번째 줄에서 있듯이 변수 섹션 이름은 "XYZ"초기 섹션 이름은 "VW"입니다.

     

    1.5.3 매크로 이름

    매크로 이름 목록

    매크로 이름

    정의

    __LINE__

    시점에서 소스 번호 (10 진수)

    __ FILE__

    지정된 소스 파일의 이름 (문자열 상수)

    __ DATE__

    소스 파일의 번역 날짜 ( "M mm dd yyyy "형식을 가진 문자열 상수 여기서 이름은 ANSI 규격에서 규정 a sctime 함수로 생성되는 (영문자 3 줄로昀初 1 문자 대문자) 동일 . dd昀初문자 값이 10보다 작은 경우 공백합니다)

    __ TIME__

    소스 파일의 번역 시간 (as ctime 함수로 생성되는 시간과 같은 "hh : mm : ss" 형식을 가지는 문자 상수)

    __ STDC__

    10 진수 정수 1 (ANSI 정확한 처리를 지정할 정의)*

    __ K0R__

    10 진수 정수 1

    __ K0R_SMALL__

    10 진수 정수 1 (소형 모델 지정시)

    __ K0R_MEDIUM__

    10 진수 정수 1 (미디엄 모델 지정시)

    __ K0R_LARGE__

    10 진수 정수 1 (대형 모델 지정시)

    __ CHAR_UNSIGNED__

    10 진수 정수 1 (-qu 옵션을 지정한 경우 정의)

    __ RL78__

    10 진수 정수 1 (RL78 패밀리 장치 유형 지정시)

    __ RL78_1__

    10 진수 정수 1 (곱셈과 나눗셈 적화확장 명령어 탑재의 RL78 패밀리 장치 유형 지정시)

    __ RL78_2__

    10 진수 정수 1 (곱셈과 나눗셈 일본 재래의 주산 확장 명령 탑재의 R L78 제품군의 디바이스 유형 지정시)

    __ CA78K0R__

    10 진수 정수 1

    CPU 매크로

    타겟 CP U 나타내는 매크로 에서 10 진수 정수 1 장치 파일의 "품종 지정 이름"으로 표시되는 문자열의 앞에 "__" 끝에 "_" 붙인 것이 정의됩니다 (영문자는 대문자로하십시오)

    【주】 * ANSI-C 언어 사양 허용-za 옵션 지정시에 정의합니다

    매크로 이름 목록 RL78 패밀리 컴파일러는 ANSI 규격에 규정되어있는 매크로 이름 이외에 옵션 지정에 따라 매크로 이름이 ​​정의됩니다. 프로그램 속에서 옵션 설정을 판단 사용합니다.

     

     

     

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 7  (0) 2013.04.05
RL78 컴파일러 사용 6  (0) 2013.04.05
RL78 컴파일러 사용 4  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05

 

1.4 메모리 모델 메모리 모델 개요

 

 

메모리 모델 RL78 컴파일러에는 3 종류의 메모리 모델이 있습니다. 메모리 모델은 대상 장치의 메모리 스페이스는 사용자가 결정해야합니다.

소형 모델 코드 昀大64K 바이트 데이터 昀大64K 바이트의 128K 바이트 코드 / 데이터 모두 near 영역으로 컴파일합니다.

미디엄 모델 (기본) 코드 昀大1M 바이트 데이터 昀大64K 바이트의 1M 바이트 코드 부는 far 영역 데이터 부는 near 영역으로 컴파일합니다.

대형 모델 코드 昀大1M 바이트 데이터 昀大1M 바이트의 1M 바이트 코드 / 데이터 모두 far 영역으로 컴파일합니다.

 

코드 코드 near 영역昀大64K 바이트이며 00000h ~ 0FFFFh 배치됩니다. 그렇지 코드 부는 far 영역입니다,

昀大1M 바이트이며, 00000h ~ FFFFFh 배치됩니다.

데이터 데이터 부의 near 영역昀大64K 바이트이며 F0000h ~ FFFFFh 배치됩니다. 다른 데이터 부는 far 영역입니다,

昀大1M 바이트이며, 00000h ~ FFFFFh 배치됩니다.

 

 

메모리 모델의 옵션 설정 메모리 모델은 "메모리 모델의 종류" 컴파일 옵션 (-ms/-mm/-ml) 지정합니다. 기본값은 미디엄 모델이되고 있습니다.

 

소스 프로그램 소형 모델에서의 컴파일 결과

미디엄 모델의 컴파일 결과

대형 모델의 컴파일 결과

 

 

메모리 모델 코드 효율 메모리 모델 코드 효율은 위의 설명과 같습니다.

코드 / 데이터 모두昀大64K 바이트의 메모리 모델이 코드 효율 우수합니다.

예를 들어, 소형 모델과 미디엄 모델을 비교하면 데이터 부분은 함께昀大64K 바이트이기 때문에 변수 액세스 코드 효율은 동일합니다.

그러나 코드 부가昀大64K 바이트昀大1M 바이트의 차이가 있기 때문에 함수 호출 코드 효율 미디엄 모델이 나빠집니다.

또한 미디엄 모델 대형 모델을 비교하면 코드 부분은 함께昀大1M 바이트이기 때문에 함수 호출 코드 효율은 동일합니다.

그러나 데이터 부가昀大64K 바이트昀大1M 바이트의 차이가 있기 때문에 변수 액세스 코드 효율성 대형 모델이 나빠집니다.

 

또한, 메모리 모델의 near / far 영역은 프로그래머가 __near / __far 키워드를 지정하여 메모리 모델의 기본 설정에서 변경할 있습니다.

, 소형 모델로 생각하면 시스템 전체 코드 / 데이터 부분을 64K 바이트 이내에 넣을 필요는 없고,

다음 페이지에 표시된 __far 키워드를 지정하여 64K 바이트를 넘는 프로그램 만들기가 가능합니다.

 

 

정적 변수에 대한 near / far 형식 한정자 __near / __far 키워드는 const volatile 형식 변경자와 동일 취급입니다.

기본 변수이면 지정은 어렵지 않지만, 포인터 변수에 양자를 지정하는 경우 형식 한정자 설명 위치에 주의가 필요합니다.

 

함수에 대한 near / far 형식 한정자 함수에 대한 __near / __far 형식 한정자도 취급 변수와 동일합니다.

함수 자체에 대한 지정하면 어렵지 않지만 함수를 포인터 변수에 양자를 지정하는 경우 형식 한정자 설명 위치에 주의가 필요합니다.

 

 

 

 

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 6  (0) 2013.04.05
RL78 컴파일러 사용 5  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05
RL78 컴파일러 사용 1  (0) 2013.04.05

 

# pragma 목록

 

# pragma 지령

용도

# pragma sfr

SFR이름을 C 소스 레벨에서 설명하는

# pragma vect

# pragma interrupt

인터럽트 처리를 C 소스 레벨에서 설명하는

# pragma di

# pragma ei

DI / EI 명령을 소스 레벨에서 작성 하는

# pragma halt

# pragma stop

# pragma brk

# pragma nop

CPU 제어 명령을 C 소스 레벨에서 설명하는

# pragma section

컴파일러 출력 섹션 이름을 변경하여 섹션 배치를 지정하는

# pragma name

모듈 이름을 변경 하는

# pragma rot

로테이트 함수를 사용하는

# pragma mul

곱셈 함수를 사용하는

# pragma div

나누기 함수를 사용하는

# pragma mac

적화 연산 함수를 사용하는

# pragma bcd

BCD연산 함수를 사용하는

# pragma opc

데이터 삽입 함수 사용하는

# pragma rtos_interrupt

RI78V4 (실시간 OS) 인터럽트 핸들러를 C 소스 레벨에서 설명하는

# pragma rtos_task

RI78V4 (실시간 OS) 태스크 함수를 C 소스 레벨에서 설명하는

# pragma ext_func

부트 영역에서 플래시 영역에 함수 호출을

# pragma inline

표준 라이브러리 함수 me mcpy, memset 인라인

【주】 # pragma 이후의 키워드는 대소 문자로 작성할 있습니다

 

# pragma 처리기 명령 목록 RL78 패밀리 컴파일러는 위에 설명 # pragma 전처리 명령어를 지원하고 있습니다.

또한 자세한 내용은 2 이상 차례로 소개합니다. 그러나이 텍스트는

 

# pragma name

 

 

• # pragma rtos_interrupt, rtos_task  

• # pragma ext_func

• # pragma inline 소개하지 않습니다.

# pragma 처리기 명령에 관해서는 설명서를 참조하십시오.

다음 페이지에 CPU 제어명령을 설명하는 # pragma 사용 예를 보여줍니다.

 

 

소스 프로그램 컴파일 결과

 

# pragma 이후의 키워드는 대소 문자로 작성할 있습니다.

그러나 함수에서 사용할 대문자로합니다.

 

CPU 제어 명령의 # pragma 사용 # pragma 이후의 키워드는 대소 문자로 작성할 있습니다.

그것은 다른 # pragma 처리기 명령도 마찬가지입니다.

그러나 CPU 제어 명령에 관해서는 함수 내에서 사용할 때는 대문자입니다.

만약 소문자 함수 이름으로 경우는 CPU 제어 명령에는 배포되지 않고 일반 함수 호출 명령입니다.

 

 

한계

내용

한계

복합 , 반복 제어 구조 선택 제어 구조의 중첩 수준 (, c ase 레이블 수에 따라)

45

조건 내장 중첩 수준

255

1 개의 선언 하나의 산술, 구조체 공용 체형 또는 불완전 형식을 한정하는 포인터, 배열 함수 선언자

12

전체 선언자 괄호로 둘러싸인 선언자의 중첩 수준

591*

전체 괄호로 둘러싸인 식의 중첩 수준

32

매크로 이름의 유효 선두 문자

256

외부 식별자의 유효 선두 문자

249

내부 식별자의 유효 선두 문자

249

하나의 번역 단위의 외부 식별자의

1024* 1

기본 블록에서 선언 가능한 블록 범위 지정된 식별자

255

하나의 번역 단위에서 동시에 정의 가능한 매크로 식별자

32767

하나의 함수 정의의 가인, 그리고 하나의 함수 호출의 실제 인수

39* 1

개의 매크로 정의의 가인

31

하나의 매크로 호출의 실제 인수의

31

하나의 논리적 소스 행의 문자

2048*

하나의개체 크기 (데이터를 나타내는)

65535

포함 파일에 대한 중첩 수준

50

1 개의 s witch 글에 대한 case 레이블 (중첩되는 경우 그것도 포함)

257

1 컴파일 단위의 소스

65535*

함수 호출 중첩

40*

단일 구조 또는 단일 공유 체내의 멤버

256

단일 열거 형의 열거 정수의

255

단일 구조체 선언의 줄의 구조 또는 공용체 정의 중첩 수준

15

초기화 자식 요소의 중첩

15

1 소스 모듈 파일의 함수 정의

4095

매크로 중첩

200

포함 파일 경로 지정

64

【주】 * 붙어있는 값은 보증 값이며, 이상의 값으로도 가능한 경우도 있지만, 동작은 보증 되지 않습니다.

 

 

한계 RL78 패밀리 컴파일러에도 한계는 존재하지만, 10k 행이나 20k 행이 소스 프로그램을 입력하지 않으면 한계를 만지는 것은 거의 없습니다.

한계 값은 특별히 신경 쓰지 않아도 괜찮다고 생각합니다.

 

 

1.2 빌드 도구의 옵션 시스템 전체에 대한 빌드 도구의 옵션 설정

 

시스템 전체에 대한 빌드 도구의 옵션 설정 시스템 전체에 대한 빌드 도구의 옵션 설정은 프로젝트 트리 CA78K0R (빌드 도구)에서합니다.

원하는 도구를 클릭 일반 옵션을 포함하여 도구마다 탭이 나누어 있기 때문에, 필요한 도구를 선택하고 카테고리별로 옵션을 설정합니다.

또한 기본 옵션 설정은 일반적으로 표시합니다. 만약 굵게 표시가 있으면, 그것은 기본 옵션 설정이 아님을 의미합니다.

또한 설정은 드롭 다운 메뉴 또는 더블 클릭으로 설정을 변경할 있습니다.

 

 

빌드 설정 시스템을 만드는 동안 특정 소스 파일에 대해서만 컴파일 옵션을 설정해야합니다.

소스 파일 개별적으로 컴파일 옵션을 설정하는 경우, 목적의 소스 파일의 "빌드 설정"탭을 선택하고 "빌드"카테고리에서 "개별 컴파일 옵션 설정"항목을 "" 전환합니다.

 

 

개별 컴파일 옵션 설정 , "개별 컴파일 옵션"탭은 개별적으로 컴파일 옵션을 설정합니다.

또한 앞의 페이지의 슬라이드에있는대로 개별 컴파일 옵션이 설정되어있는 파일의 아이콘에 녹색 체크가 들어갑니다.

따라서 프로젝트 트리의 아이콘을 보면 개별 컴파일 옵션이 설정되어있는 원본 파일은 쉽게 확인이 있습니다.

 

 

1.3 이동성에 관련된 컴파일 옵션 비트 필드 멤버 할당, 구조체 멤버 포장

 

비트 필드 멤버 할당, 구조체 멤버 포장 비트 필드 멤버 할당 구조체 멤버의 포장에 관해서는, 이식성을 고려하여 언어 사양을 변경할 있습니다.

비트 필드의 멤버 할당에 관해서는 이미 1.1 절에서 소개 된이기 때문에, 다음 페이지에 "구조체 멤버를 포장하는"옵션 (-rc) 설정했을 멤버 할당을 보여줍니다.

 

 

 

 

구조체 멤버의 포장 효과

포장 구조체 비트 필드는 멤버 구성에 관계없이 정렬 조건이 1이됩니다.

그러나 전체 크기가 2 바이트 이상의 경우 구조체의 선두는 2 바이트에 배치됩니다.

따라서 어떤 기준에 의해 규정 형식을 만들 사용하십시오.

그러나 정렬 조건 2 바이트와 4 바이트 데이터 버스 액세스가 분리되기 때문에 성능을 저하시킬 있기 때문에,

어떤 표준에 의해 규정 데이터 형식 선언에만 사용할 것을 좋습니다.

 

 

char 형의 부호

 

비트 필드 멤버 할당, 구조체 멤버 포장 이외에도 처리 정의 항목에서는 부호 지정되지 않은 char 형의 역할을 수정하는 것이 가능합니다.

"char 형을 unsignedchar 간주"옵션 (-qu) 지정하여 부호 지정되지 않은 char 형은 unsigned char 형으로 처리 있습니다.

그러나 상위 옵션 "昀適"옵션에서 "고급" 선택했을 때만 지정할 있습니다. 기본 "昀適"옵션 설정에서 변경할 없기 때문에주의가 필요합니다.

또한 RL78 제품군의 경우 char 형의 부호는 코드 효율성과 속도 등의 효율성으로 이어지는 중요한 항목이기 때문에이 옵션은 "昀適" 범주에 배치되어 있습니다.

자세한 내용은 3-8 페이지에서 소개합니다.

 

 

 

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 5  (0) 2013.04.05
RL78 컴파일러 사용 4  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05
RL78 컴파일러 사용 1  (0) 2013.04.05
RL78 컴파일러  (0) 2013.04.05

 

 

배열과 포인터

항 번

항목

RL78 패밀리 용 컴파일러 사양

1

포인터 형 데이터의 크기

near : 2 바이트 far : 4 바이트

2

배열의 크기의昀大값 (size_t 형)

unsigned int 형

3

다른 형식에 대한 포인터끼리의 변환 결과

오류 확인은하지 않습니다.

4

포인터 형식을 정수로 변환

(포인터 형의 크기 정수 크기)

__ far void * pa = (__far void *) 0x12345;

 short a = (short) pa;

포인터 형식의 하위 바이트의 값이됩니다 . a의 값은 0x2345이다.

5

포인터 형식을 정수로 변환

(포인터 형의 크기 <정수 크기)

__ near void * pa = (__near void *) 0xFFFE;

long a = (long) pa;

변수 포인터는 상위 0 x000F 추가 합니다

(0은 예외 0 확장합니다).

 함수 포인터는 0 확장합니다. a의 값은 1048574이된다. (0x000FFFFE)

6

정수에서 포인터 형식으로 변환 (정수 크기 포인터 형의 크기)

정수의 하위 바이트의 값이됩니다.

7

정수형에서 포인터 형식으로 변환 (정수 크기 <포인터 형의 크기)

제로 확장합니다.

8

동일한 배열의 포인터 사이의 차이를 유지하는 데 필요한 정수 형 (ptrdiff_t 형)

int

주 : 항 번 3 ~ 항 번 7 모든 캐스트 연산자를 사용하는 경우의 내용입니다.

 

배열과 포인터의 사양 RL78 패밀리 용 컴파일러는 1.4 절에서 설명하는 3 종류의 메모리 모델을 가지고 있습니다.

각 메모리 모델과near / far 형식 한정자 설정은 포인터 형 데이터의 크기가 변경됩니다.

또한, size_t 형의 사양이나 ptrdiff_t 형태의 사양은 기종에 맞는 데이터 형식이기 때문에 문제 없다고 생각하고 좋습니다.

 

스칼라의 정렬 조건

항목 번호

데이터 크기

정렬 조건

1

char

1 바이트

1 바이트

2

unsigned char

3

short

2 바이트

2 바이트

4

unsigned short

5

int

2 바이트

 

6

unsigned int

7

long

4 바이트

 

8

unsigned long

9

float

4 바이트

 

10

double

11

long double

12

포인터

2 바이트 4 바이트

 

 

 

스칼라의 정렬 조건 (정렬) RL78 패밀리 용 컴파일러는 2 바이트 이상의 데이터는 워드 경계에 배치합니다.

• 1 바이트 크기의 스칼라 변수는 정렬 조건 1 (바이트)이다.

• 2 바이트 크기 이상의 스칼라 변수는 정렬 조건이 2 (워드 경계)가 된다.

또한, 기본 변수이면 정렬 조건의 차이에 의한 이동성 문제가 발생하지 않을 것입니다.

정렬 조건의 차이에 의한 문제는 집성 형, 즉 구조체 나 공용체,

비트 필드에서만 발생하지 않습니다. 기본형 인 한 문제 없다고 생각 될 수 있습니다.

 

 

 

 

 

 

구조체, 공용체, 열거, 비트 필드의

사양번

항목

RL78 컴파일러 사양

1

다른 형식의 멤버에 액세스하는 공유 체형의 멤버 참조

참조 할 수 있지만, 값은 보장하지 않습니다.

2

구조체 멤버 정렬 조건 * 1

2 바이트 이상의 구조체는 2 바이트에 배치하고 각 멤버는 정렬 조건에 따라 패딩이 들어가 있습니다.

3

공용체 멤버의 정렬 조건

공용체의 선두는 2 바이트에 배치합니다.

4

단지 i nt 형의 비트 필드의 부호

unsigned int 형

5

비트 필드의 할당 순서 * 2

하위 비트 (오른쪽)에서 할당합니다.

6

할당 비트 필드의 크기가 남아있는 크기를 초과 할 때 할당 방법

다음 영역에 할당합니다.

7

비트 필드에서 허용되는 형식 지정자

char, unsigned char, short, unsigned short, int, unsigned int

8

열거 값을 표현하는 정수형

다음 형식에서 모든 열거 상수를 표현할 수있는昀初것입니다. signed char, unsignedchar, signed int

【주】 * 1-rc 옵션을 지정하여 정렬 조건을 1로 변경 가능합니다.

 

구조체, 공용체, 열거, 비트 필드의 사양 RL78 패밀리 용 컴파일러는 구조체 비트 필드의 각 멤버는 정렬 조건에

따라 배치하기 때문에 멤버의 선언 순서에 따라 빈 공간 ( 패딩)가 들어갑니다.

공용체는 짧게 2 바이트에 배치되지만, 배열로 선언했을 때의 미사용 영역은 들어 가지 않습니다.

또한 부호 지정이없는 비트 필드는 unsigned 형의 부호 없음으로 처리, 비트 필드의 할당 순서는 하위 비트 (LSB)의 오른쪽에서 할당합니다.

다음 페이지 이후에 구체적인 할당을 보여줍니다.

 

<구조체 멤버 할당>

 

  1. 전체 크기가 1 바이트 때는 사용하지 않는 공간을 차지하지 않고 무엇 번지라도 배치 가능합니다.
  2. • struct c1은 전체가 1 바이트이기 때문에 n 번지 배치입니다.
  3. 전체 크기가 2 바이트 이상일 때는 각 멤버를 정렬 조건에 맞게 사용되지 않는 공간이 존재한다.

     

  4. • struct c2는 int 형 멤버가 있기 때문에 정렬 조건은 2에 맞춘 미사용 영역이 존재한다.
  5. • struct c3, struct c4는 long 형 멤버가 있기 때문에 정렬 조건은 2에 맞춘 미사용 영역이 존재한다.

     

    공용체의 멤버 할당

    1. 전체 크기에 관계없이 항상 2 바이트에서 배포한다.

    2. 그러나 사용되지 않는 공간은 존재하지 않기 때문에 배열로 선언하면 크기에 따라 홀수 번지 배치된다.

     

    [주의 사항】 현재의 RL78 패밀리 용 컴파일러는 홀수 크기의 공용체 배열의 2 바이트 이상의 멤버는 홀수 번지에서 배치 될 수 있습니다.

    그 경우, 홀수 번지에서 배치 된 2 바이트 이상의 멤버가 제대로 액세스 할 수 있습니다.

    공용체를 배열로 선언하는 경우, 반드시 전체 크기가 짝수 크기가 되도록 멤버 구성을 조정하십시오.

    ( LBS 부터 정의 된다.)

    15 5 4 2 1 0

     

    struct b1 {

    short a:2;

    short b:3;

    } x;

     

    struct b2 {

    short a:2;

    short :5;

    short b:3;

    } y;

     

     

    struct b3 {

    char a:5;

    char b:4;

    } z;

     

    struct b4 {

    char a:5;

    char :0;

    char b:3;

    } v;

     

     

    비트 필드 멤버 할당 (LSB)

     

    struct b1 예를 위와 같이 RL78 패밀리 용 컴파일러는 비트 필드 멤버는 하위 비트 (LSB)의 오른쪽에서 할당합니다.

    또한 struct b2의 예와 같이, 무명의 비트 필드는 지정된 비트 폭을 비우는 것을 의미합니다.

    이식성 문제에서 피해 주셨으면 코딩 예는 struct b3입니다. 형식 지정자를 넘는 비트 폭을 선언하면

    자동으로 다음 필드에 배치되어 사용하지 않는 비트 (패딩)가 들어갑니다.

    struct b4의 비트 폭 0의 지정은 ANSI 규격대로 다음 필드로 비우고 있지만 문법 위반 개발 환경이 많이

    존재하기 때문에 사용은 피하는 것이 좋습니다.

     

     

    struct b1 {

    short a:2;

    short b:3;

    } x;

     

    struct b2 {

    short a:2;

    short :5;

    short b:3;

    } y;

     

    struct b3 {

    char a:5;

    char b:4;

    } z;

     

    struct b4 {

    char a:5;

    char :0;

    char b:3;

    } v;

    비트 필드 멤버 할당 (MSB) RL78 패밀리 용 컴파일러에서는 "비트 필드를 MSB에서 할당"옵션 (-rb)는

    비트 필드 멤버 할당 순서를 상위 비트 (MSB)의 오른쪽에서 변경 될 수 있습니다.

    또한, 할당 순서를 변경해도,

    • 무명의 비트 필드  

    • 필드를 넘는 비트 폭  

    • 비트 폭 0의 비트 필드에 대한 취급은 동일합니다.

     

     

     

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 4  (0) 2013.04.05
RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 1  (0) 2013.04.05
RL78 컴파일러  (0) 2013.04.05
일본 RL78 세미나 자료  (0) 2013.04.05

 

 

  1. RL78 패밀리 용 컴파일러 언어 사양

    제 1 장과 제 2 장 목적

제 1 장과 제 2 장의 목표

 

C 언어의 문법은 ANSI에 의해 국제 표준 규격이 정해져 있습니다 만, 그것은 문법의 세부 사항까지 규정하고있는 것이 아니라 일부는 처리 계 정의 항목이 있습니다.

그 대표적인 예는 그림에있는대로, char 형의 부호와 int 형의 크기입니다. 이들은 사용하는 MCU 및 개발 환경에 따라 변화합니다.

그래서 제 2 장에서는 RL78 패밀리 용 컴파일러의 처리 계 정의 항목의 취급을 소개합니다.

또한 C 언어를 기본 용도의 프로그램 개발 언어로 사용하는 경우, 문법 규정 외의 품목이다 번지 결정 방법 및 재설정에서 main 함수를 시작할 때까지 시작 단계를 이해 해야 합니다.

이들도 사용하는 MCU와 개발 환경에 따라 변화하기 때문에, 제 2 장에서는 문법 규정 외의 항목에 대한 취급을 소개합니다.

 

식별자

사양번

항목

RL78 패밀리 용 컴파일러 사양

1

외부 결합되지 않는 식별자 (내부 이름)의 유효 문자

249 문자까지 유효합니다.

2

외부 조인되는 식별자 (외부 이름)의 유효 문자

249 문자까지 유효합니다.

3

외부 조인되는 식별자 (외부 이름)의 대소 문자 구분

대소 문자를 구별합니다.

 

 

문자의

사양번

항목

RL78 패밀리 용 컴파일러 사양

1

소스 문자 세트 및 실행 환경 문자 집합의 요소

모두 ASCII 문자 집합입니다. 그러나 코멘트는 한자 코드를 작성할 수 있습니다.

2

char 값

signed char 형과 같은 범위를가집니다. *

주】 *-qu 옵션을 지정하여 unsigned char 형과 같은 범위를가집니다

 

식별자의 사양과 문자 사양

 

RL78 패밀리 용 컴파일러에서는 문자는 ASCII 코드이며, 주석이면 한자 코드를 작성할 수 있습니다.

식별자는 내부 이름 · 외부 이름 모두 약 249 문자까지 유효하며, 대소 문자를 구분하여 처리합니다.

그리고 이동성의 관점에서 문제가되는 항목은 char 형의 부호입니다. RL78 패밀리 용 컴파일러에서는 부호 지정되지 않은 char 형은 signed char 형과 같은 범위를 가집니다.

이것은 부호 지정되지 않은 char 형을 문자 상수를 저장하는 데에만 사용하고 있으면 문제가 발생하지 않지만, 다음과 같이 수치 계산에 사용하는 경우는 주의가 필요합니다.

 

 

char a; a = 200; if( a == 200 )

printf("TRUE");

else

printf("FALSE"); // RL78

 

 

 


정수와 그 값의 범위

값의 범위

데이터 크기

char (signedchar 형)*

-128 ~ 127

바이트

signed char

-128 ~ 127

바이트

unsigned char

0 ~ 255

바이트

short

-32768 ~ 32767

2 바이트

unsigned short

0 ~ 65535

2 바이트

int

-32768 ~ 32767

2 바이트

unsigned int

0 ~ 65535

2 바이트

long

-2147483648 ~ 2147483647

4 바이트

unsigned long

0 ~ 4294967295

4 바이트

【주】 *-qu 옵션을 지정하여 값의 범위는 0 ~ 255입니다

 

 

연산 동작의 영향

항 번

항목

RL78 패밀리 용 컴파일러 사양

1

정수 값이 더 짧은 크기의 부호 정수 또는 부호없는 정수를 동일한 크기의 부호 정수로 변환했을 때의 값 (결과 값이 대상 형식으로 표현할 수없는 경우)

 signed short a = 0x12345678;

 

정수 값의 하위 바이트가 변환 된 값입니다.

 

 a의 값은 0x5678이다.

2

부호있는 정수에 대한 비트 연산의 결과

signed short a = 32767 / / 0x7FFF

signed short b = -32768; / / 0x8000

a | b / / 평가 결과?

 

부호의 값이됩니다. 평가 결과는 -1이된다.

 

 

정확하게는 int 형 -1이된다.

3

정수 나누기의 나머지의 부호

-5 % 2 / / 평가 결과?

5 % -2 / / 평가 결과?

 

피제수의 부호와 같은 부호입니다.

평가 결과는 -1이된다.

평가 결과는 1이된다.

4

부의 값 부호 스칼라의 오른쪽 시프트의 결과

signed short a = -4 / / 0xFFFC

 a >> 1 ;/ / 평가 결과?

 

부호 비트를 유지합니다.

 

평가 결과는 -2가된다.

 

정수와 그 값의 범위 정수형 값의 범위에 관해서는 이전 페이지에서 소개 한 부호 지정되지 않은 char 형의 부호와 함께 int와 unsigned int 형의 크기에주의를 기울여야합니다.

RL78 패밀리 용 컴파일러는 int 및 unsigned int 형을 16 비트의 2 바이트로 취급합니다.

 

long sec;

printf(" One day is %ld sec.", sec = 24 * 60 * 60 ); // V850,RX : One day is 86400 sec.

// RL78,R8C: One day is 20864 sec.

 

 

                   

 

부동소수점 형의 내부 표현 RL78 패밀리 용 컴파일러에서 부동 소수점의 내부 표현은 IEEE의 규격이며, 모든 부동 소수점 형식을 단정 형식 (32 비트)에서 취급합니다.

 

 

 

'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 3  (0) 2013.04.05
RL78 컴파일러 사용 2  (0) 2013.04.05
RL78 컴파일러  (0) 2013.04.05
일본 RL78 세미나 자료  (0) 2013.04.05
RL78 관련 일본 블러그  (0) 2013.03.20

RL78을 개발 하기 위해선 RL78 컴파일러가 필요 하다.


http://kr.renesas.com







사이트에 가면  개발환경에 가면 CubeSuite+ 를 다운 받을수 있다. 


다운 받을 것이 너무 많아서 고민이 되는데 한가지만 받으면 된다.


[Evaluation Software] CubeSuite+ V1.03.00 (Single Download)


이것을 인스톨 하면  컴파일러에 필요한 것을 한번에 깔 수 있다. 


완전히 받으면 업그레이드를 할것 인지 물어 보는데 업그레이드는 착실하게 하면 된다. 







'공부 > RL78' 카테고리의 다른 글

RL78 컴파일러 사용 2  (0) 2013.04.05
RL78 컴파일러 사용 1  (0) 2013.04.05
일본 RL78 세미나 자료  (0) 2013.04.05
RL78 관련 일본 블러그  (0) 2013.03.20
RL78 개발 환경  (0) 2013.03.20

+ Recent posts