홈 > 고객/기술지원 > Q & A
i.MX8M | MV8895 | MV8890 | MV7420 | MV5260 | MV5422 | MV4412TAB | MV4412 | S5PV210 | iMX6Q | AM3358
Android | Linux | Windows CE | Firmware
 
IAR Compiler Optimize Level 설정 TIP.
등록인 : 마이크로비젼 |

Question :

Optimize Level 을 혹시 부분적으로 줄수는 없습니까??
Output file SIZE 때문에 Optimize Level ( Medium ) 을 낮출수도 없고,
High Level 로 설정할 경우 동작이 되지 않습니다.



Answer :

IAR Compiler 를 사용하는 대부분의 사용자들이 상단의 Main Menu 중
\" Project - options - C/C++ Compiler - Optimizations \" 에서
None/ Low / Medium / High 등의 설정을 통하여 Optimize Level 을 설정하고 있습니다.

가장 보편적인 방법으로써 현재 프로젝트에 포함된 모든 소스를 설정된 Optimize Level 로 일률적으로 지정하게 됩니다.

소스가 너무 많을 경우에는 어쩔수없이 사용하게 되는데, 만약 문의 주신것과같은
문제가 발생이 되는 경우에는 이또한 여의치 않을 수 있습니다.


방법 1)

전체 Project 와는 별개로 각각의 소스에 별도의 Optimization 을 적용할 수 있습니다.

프로젝트 내에 소스를 오른쪽 버튼으로 클릭하게 되면, Project menu 에서 보았던 것처럼, option 항목을 찾을 수 있을 것입니다.
다만, 이 메뉴는 Project 의 Option 과는 틀리게 설정할 수 있는 항목이 2가지만 나오게 됩니다

- C/C++ Compiler
- Custome Build

C/C++ Compiler 의 세부 섹션을 살펴보면 Optimization 이 존재하며, 프로젝트 메뉴와 마찬가지로 Level 을 설정할 수 있게 됩니다.
사용 하실때는 [ Override inherited Settings ] 를 먼저 클릭하시고 사용하시면 됩니다.

물론, 이 옵션을 사용하게 되면, 설정하지 않는 다른 소스들은 기본 프로젝트의 설정을 따르게 됩니다.
( 단, 기본 프로젝트의 일부 설정이 변경될 수 있습니다. )


방법 2)

#pragma 지시자를 사용하는 방법입니다.

이것은 직접 함수에 Optimization 을 설정하는 방법으로써, 가장 정확하게 줄수 있는 방법이라고 할 수 있겠습니다.

#pragma optimize=token_1 token_2 token_3
where token_n is one of the following.

token_1 ******************************************
s Optimizes for speed
z Optimizes for size

token_2 ******************************************
2|none|3|low|6|medium|9|high specifies the level of optimization

token_3 ******************************************
no_code_motion Turns off code motion
no_cse Turns off common subexpression elimination
no_inline Turns off function inlining
no_tbaa Turns off type-based alias analysis


ex)
#pragma optimize=z low no_code_motion
void main(void)
{........


> size optimize, Level 은 Low, code motion optimize 는 설정하지 말것.


단, #pragma 지시자 사용법은 소스나 프로젝트에 설정된 Optimize Level 보다는 반드시 낮게 설정해하며, 또한, size 와 speed 설정을 동시에 실행하는 것은 불가능하다는 점 유의해주십시요.


좀더 자세한 내용은 Xlink liker Guide ( Part 2. Compiler reference page 221) 를 참고해주십시요.

마이크로비젼 기술지원팀.
덧글 0 | 엮인글 0
 





 
    11 / 2,670,666
서울특별시 구로구 구로3동 235번지 한신IT타워 1004호 TEL. 02-3283-0101 FAX. 02-3283-0160
사업자등록번호 : 116-81-51889 대표자 : 이현재 E-MAIL : sale@microvision.co.kr
COPYRIGHT 2004 (주)마이크로비젼 ALL RIGHTS RESERVED.
%3Cul+class%3D%22Klocation%22%3E%3Cli+class%3D%22first%22%3E%3Ca+href%3D%22..%2Fhome%2F%22%3EHOME%3C%2Fa%3E%3C%2Fli%3E%3Cli%3E%3Ca+href%3D%22..%2Fhome%2Fsub03.php%22%3E%EA%B3%A0%EA%B0%9D%2F%EA%B8%B0%EC%88%A0%EC%A7%80%EC%9B%90%3C%2Fa%3E%3C%2Fli%3E%3Cli%3E%3Ca+href%3D%22..%2Fhome%2Fsub03.php%3Fmid%3D51%22%3EQ+%26+A%3C%2Fa%3E%3C%2Fli%3E%3C%2Ful%3E