ST에서 지원하는 2가지 GUI 라이브러리에 대해서 지금까지 알아낸 정보를 정리한다.
최근 ST의 변화된 툴들을 보면 SW 개발 지원이 굉장히 적극적인 것을 알 수 있다.
STemWin은 원래 Segger사의 emWin을 계약해서 빌려 쓰던 것이고 TouchGFX는 ST사에서 2018년(?) 회사를 인수해 버렸다. 그 전에는 CubeMX와 같은 코드제너레이터 툴을 지원하고 Atollic사도 인수를 해 TrueStudio를 무료로 사용할 수 있게 했다. 그래서 최신의 CubeMX를 사용하면 TrueStudio의 프로젝트 생성과 GUI를 위한 라이브러리까지 자동으로 생성해 준다. Standard peripheral library로 개발할 때는 대부분 윈도우 기반의 유료 IDE를 사용하며 주로 코드를 복사해서 사용했던 것에 비하면 개발 환경이 매우 좋아졌다는 것을 알 수 있다. 참고로 STMStudio도 정말 좋은 툴이다.
STemWin과 TouchGFX를 본격적으로 비교해 보겠다. 위에서 언급한 것처럼 CubeMX를 사용하면 GUI 라이브러러에서 선택해서 사용할 수 있다. 하지만 이 두 라이브러리를 매우 다르다.
STemWin Builder를 실행해서 Code를 생성해 보면 허무할 정도로 단순하다. MFC 위젯 모양의 GUI를 배치하고 코드를 생성하면 그 화면에 대한 C코드만 생성된다. 안드로이드나 VS로 앱을 만들던 사람이 보면 이게 뭔가 할 정도이다. WIN32 코드와 유사한 형태의 코드가 생성이 되는데 여기서 부터는 개발자가 코딩을 해야 한다.
이에 반해 TouchGFX는 위젯의 디자인 등을 다양하게 설정할 수 있고 다른 IDE와 비슷하게 GUI 이벤트 형식을 지정하면 코드까지 생성해 준다. 물론 이 후부터는 코드를 짜야 하지만 STemWin에 비하면 개발자의 부담이 많이 줄어 든다. 하지만 C++ 클래스 기반의 코드들이 생성되기 때문에 STemWin의 C코드보다는 코드 구조에 대하여 분석이 필요하다.
또 다른 점은 STemWin은 Font나 Bitmap을 별도의 프로그램으로 생성하여 사용할 수 있는 반면 TouchGFX는 하나의 툴을 사용하여 Font등을 생성 관리할 수 있게 되어 있다. 이에 대한 자세한 부분은 글쓴이도 분석 중이 것으로 추후에 별도의 포스팅을 할 계획이다.
STemWin의 장점은 VNC Server를 지원한다는 것이다. LWIP를 통해 Ethernet을 연결해야 하지만 타켓을 호스트에서 제어할 수 있는 것은 굉장한 장점이 된다. 이를 잘 활용하면 통합 테스트 시스템을 구축할 수 있을 것으로 본다.
TouchGFX의 문제점을 하나 언급하면 기본적으로 Hex File 포맷을 지원하는데 IAR과 같은 IDE로 Binary 포맷의 Output을 생성하면 버그인지 2G가 넘는 파일이 생성된다.
이상으로 ST에서 지원하는 2가지 GUI 라이브러리를 간략하게 비교해 보았다.
STemWin은 예전부터 많은 시스템에 쓰였기 때문에 정보도 많고 안정성이 높다. 지금은 STemWin을 사용하는 게 편할지 모르겠지만 앞으로는 ST에서 인수한 TouchGFX에 대한 지원이 더 좋아지고 다양한 기능이 추가될 것으로 기대된다.