본문 바로가기

STemWin 과 TouchGFX 비교 ST에서 지원하는 2가지 GUI 라이브러리에 대해서 지금까지 알아낸 정보를 정리한다. 최근 ST의 변화된 툴들을 보면 SW 개발 지원이 굉장히 적극적인 것을 알 수 있다. STemWin은 원래 Segger사의 emWin을 계약해서 빌려 쓰던 것이고 TouchGFX는 ST사에서 2018년(?) 회사를 인수해 버렸다. 그 전에는 CubeMX와 같은 코드제너레이터 툴을 지원하고 Atollic사도 인수를 해 TrueStudio를 무료로 사용할 수 있게 했다. 그래서 최신의 CubeMX를 사용하면 TrueStudio의 프로젝트 생성과 GUI를 위한 라이브러리까지 자동으로 생성해 준다. Standard peripheral library로 개발할 때는 대부분 윈도우 기반의 유료 IDE를 사용하며 주로 코드를 복사해서.. 더보기
STM32 HAL UART Receive STM32의 Library가 Standard peripheral에서 HAL로 변경되면서 당황스러운 부분이 하나 있다. 바로 UART의 수신 시 받는 데이터 크기를 지정해야 한다는 것이다. 구글링으로 찾아 보면 일반적인 예제들은 이렇게 되어 있다. volatile uint8_t uart_ch; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART3) { ... HAL_UART_Receive_IT( &huart3, (uint8_t*)&uart_ch, 1); } } int main(void) { ... HAL_UART_Receive_IT( &huart3, (uint8_t*)&uart_ch, 1); ... } .. 더보기
임베디드 C를 위한 유닛 테스트 3 지난 번 임베디드 C를 위한 유닛 테스트 2에 이어 CMOCK에 대한 IAR 설정을 설명하도록 한다. 먼저 CMOCK에 대해서 간단히 설명하면 테스트를 하려는 유닛(함수) 내부에서 다른 함수를 호출한다면 의존성이 생기고 그에 따라 동작이 달라지게 된다. 유닛 테스트에서 이런 의존성은 정확한 테스트를 어렵게 하고 특히 임베디드 시스템에서는 하드웨어 의존적인 함수의 경우 가상으로 테스트를 할 수 없게 한다. CMOCK을 이용하면 의존성을 가지는 함수에 대해서 대체할 수 있는 함수를 만들어 실행할 수 있게 해 준다. 예를 들어, A함수가 내부에서 B함수를 호출하는데 B함수는 하드웨어 의존적인 기능을 가지고 있다면 테스트를 진행하기 어려움으로 CMOCK은 B함수에 대해서 MOCK_B함수를 만들어 A함수에서 B함.. 더보기