** 해당 포스팅은 ST-LINK Utility 버전 4.3.0 에서 작성되었습니다. 이전버전에서는 적용되지 않습니다.


일반적으로 TrueStudio에서 빌드 후 ST-Link로 hex파일을 이식하기 위해서 ST-LINK Utility 프로그램을 사용합니다.



하지만 프로젝트 빌드 후 이 소프트웨어를 키고 hex파일을 불러와서 프로그램 주입(program verify) 하기에 너무 귀찮다.


찾아보니 단축키 하나로 프로그램을 넣을 수 있는 방법이 있었습니다.


설정방법은 


실행 -> 외부도구 -> 외부 도구 구성 으로 갑니다.



왼쪽 트리에 "프로그램" 을 더블클릭하면 하단에 새_구성이 생깁니다.


아래와 같이 위치, 작업 디렉토리, 인수를 작성합니다.




위치 필드는 설치된 ST-LINK Utility폴더 내에 ST-LINK_CLI.exe의 경로로 설정해 줍니다.


작업 디렉토리 필드에는 "작업공간 찾아보기"를 클릭하여 프로젝트를 선택합니다.


인수 필드에는 -c ID=0 SWD UR LPM -P "프로젝트_빌드_헥사파일_절대경로.hex"  로 설정해 줍니다.


빌드 output이 .hex파일이 생성되기 위해서는 [TrueStudio].hex 파일이 생성되도록 빌드하기 를 참조해주세요.



세 필드를 채워 넣고 "실행"버튼을 누르면 아래와 같이 프로젝트를 빌고 프로그램이 주입됩니다.





단축키(컨트롤 +F11)를 눌러 프로그램을 넣기 위해서 아래와 같이 설정합니다.


실행 -> 실행 구성



Launch Group을 더블클릭하면 새_구성이 생성되고 오른쪽에 "Add..." 버튼을 클릭합니다.



그러면 아래 창이 나옵니다.

Launch Mode를 run으로 두고, 외부 도구 구성에서 생성한 것을 클릭 후 확인 버튼을 클릭합니다.



위 설정이 완료되면 단축키(컨트롤 + F11)를 눌러 프로그램 됩니다. 


단, ST-LINK Utility 프로그램 버전이 4.3.0 이상부터 가능합니다.


프로그램이 끝나면, 디바이스를 리셋해주어야 동작됩니다.






반응형

Dead Code: 사용되지 않는 코드 및 데이터


TrueStudio에서 기본적으로 Dead Code를 지워 Linker를 최적화 해줍니다. 


설정 위치는 프로젝트 특성 -> C/C++ Build -> Settings -> Tool Settings 탭 -> C Linker -> Optimization에서 Dead code removal 을 체크하여 설정합니다.






또한 같은 창에서 Page size allocation for malloc() 설정도 있습니다.


기본적으로 malloc을 사용하면 heap 메모리 영역에 할당됩니다. 이 heap 메모리 영역의 size를 설정하는 옵션으로


128bytes와 4096bytes 두 옵션이 있습니다. 128bytes보다 큰 heap 영역이 필요하다면 이 옵션을 4096bytes으로 설정하여야 합니다.

반응형

GNU C/C++ 컴파일러는 6개 레벨의 컴파일러 옵티마이저 속성을 가집니다.


최적화 없는 -O0 부터 -O3, 속도 최적화를 위한 -Ofast, size 최적화를 위한 -Os, 디버깅을 위한 -Og가 있습니다.


자세한 최적화 내용에 대해서는 다음 링크를 참조하세요.


https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html


설정을 위해서는 프로젝트 특성 -> C/C++ Build -> Settings -> C Compiler -> Optimization -> Tool Settings 탭에서 설정 할 수 있습니다.





Configuration을 Debug로 설정하면 기본적으로 Optimization Level이 None -O0로 설정되어있고, Release에서는 Size 최적화인 -Os로 설정됩니다.


코드 블록 단위로 최적화를 하기 위해서는 아래와 같은 방법으로 할 수 있습니다.


 

void __attribute__((optimize("O1"))) myFunc(unsigned char data)

{

     // The code the needs to have the –O1 optimizing 







반응형

TrueStudio는 기본적으로 프로젝트를 빌드하면 기본적으로 .elf 파일만 생성된다.


.hex 파일이 생성되도록 하기 위해서는 프로젝트 설정을 변경하여야한다.


프로젝트 특성 -> C/C++ Build -> Settings -> Tool Settings 탭 -> Output format 으로 가서


Convert Build output 에 체크하여 Format을 Intel Hex 로 설정한 후 적용 버튼을 누릅니다.


설정을 마친 후 빌드하면 "프로젝트 폴더/Debug" 위치에 hex파일이 생성되는 것을 확인 할 수 있습니다.







반응형

TrueStudio에서는 기본적으로 하나의 쓰레드로 코드를 빌드한다.


옵션을 변경하면 여러 쓰레드로 빌드하여 빌드 시간을 줄일 수 있다.


위치는 프로젝트 특성 -> C/C++ Build -> Behavior 탭에서 설정 할 수 있다.



반응형

TrueStudio에서 기본적으로 printf를 사용하는데 %f를 사용하기 위해서는 추가적으로 프로젝트 설정을 해주어야 한다.

 

 

프로젝트 설정 -> C/C++Build -> Settings -> Tool Settings 탭 -> C Linker -> Miscellaneous 로 가서 

 

other options 안에 -u _printf_float 를 입력해주어야 한다.

 

 

 

반응형

C언어에는 printf 와 같은 I/O를  핸들하기 위한 많은 라이브러리가 있습니다.


이를 TrueStudio와 같은 임베디드 플랫폼에서 사용하기 위해서는 함수 설정(리다이렉트, redirect)을 해주어야 합니다. 


TrueStudio에서는 아래의 설정에 의해 syscalls.c 파일에서 I/O 리다이렉트 시킵니다.




syscalls.c 파일이 없다면, 아래와 같이 syscalls.c를 생성합니다.


프로젝트 오른쪽 클릭 -> 새로 만들기 -> 기타 ->System calls -> Minimal System Calls Implementations







그러면 아래와 같이 파일 트리에 syscalls.c 가 생성됩니다.




그 후 main.c에 아래와 같은 코드를 넣어주어야 합니다.


* HAL Library사용



int _write(int file, char *ptr, int len){

HAL_UART_Transmit(&huart1, (uint8_t*)ptr, len, 100);

return (len);

}




여기서 huart1은 사용하는 usart 인터페이스 변수를 넣으면 됩니다.

반응형

+ Recent posts