아학아학 443

STM32 USB CDC를 사용하여 Ymodem DFU 만들기

UART 와 USB 모두 Bootloader에서 각자의 프로토콜을 가져가지 않고 둘다 동일한 프로토콜을 사용하여 다운로드하도록 하고 싶었습니다. 그래서 기존에 UART에서 사용하고 있던 Ymodem을 사용하여 프로그램을 업데이트를 하도록 하였습니다. 약간 더 손보면 효율이 높아지지만 게으름으로 인해 기존에 있던 코드를 그대로 활용하였습니다. /******************************************************************************* * Function Name : * Description : * Parameters : * Return : None ************************************************************..

갤럭시 노트 10 지문 센서 오작동

갤럭시 지문 센서 결함이 아직도 해결이 안된 것 같습니다. 최종 업데이트 일이 20년 11월 28일이니 예전부터 나왔던 문제를 해결하지 못하고 쉬쉬하며 가지고 가고 있었나봅니다. 화면위에 지문을 물티슈로 닦고 있는데 화면 잠금이 풀렸습니다. 그냥 지문인식해도 그렇게 잘되지는 않는데... (저희팀 친구가 제 전화를 보고 공중전화라고 부릅니다. 누가 해도 다 잠금이 풀리니까요. - 다이소에서 산 5,000원짜리 강화유리가 붙어있음.) 잠금은 심리적 안정을 위한 것 밖에 되지 않는 것 같습니다. 엔지니어로써 인식이 잘 안되는 것까지는 이해하는데 누구나 다 풀 수 있는 건 조금 이해가 되지 않습니다. 센서의 문제일까? 아니면 소프트웨어의 처리 문제일까? 궁금합니다. 대기업의 품질 정책과 검증은 알아주지만 이런 ..

Life/끄적끄적 2020.12.04

STM32L432KC - TOUCH

STM32L476 TOUCH 예제를 STM32L432KC에 적용해보았습니다. 사용해본 MCU 중에서 터치 제품은 CYPRESS 의 PSOC 시리즈가 제일 좋고 편하네요. TSC_HandleTypeDef TscHandle; TSC_IOConfigTypeDef IoConfig; #define TSCx TSC #define TSCx_CLK_ENABLE() __HAL_RCC_TSC_CLK_ENABLE() #define TSCx_TS1_IO_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define TSCx_SHIELD_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define TSCx_TS1_CAPACITOR_GPIO_CLK_ENAB..

초보가 본 KCMVP 제도

KCMVP는 소프트웨어의 KS 인증이라고 볼 수 있는 것 같습니다. (실제로도 검증 기준이 KS 목록에 있습니다. 관련 규격 - KS X ISO/IEC 19790(기술적 요구사항에 대한 표준), KS X ISO/IEC 24759(시험방법에 대한 표준) ) 인증에서 해주는 것이 알고리즘을 특수하게 만들어주는 것이 아니고 동일한 알고리즘(인터넷에 많이 돌아다닙니다.)을 사용하는데 얼마나 안전하게 잘 구현하고 있느냐 에 대한 인증입니다. 검증은 보안수준 1, 2, 3, 4 등급으로 나뉘어져 있고, 최소 보안등급 1의 보안 요구사항을 만족해야 합니다. 전체 등급 중 제일 낮은 수준의 등급이 전체 등급으로 인정되다보니 모두 4등급이고 하나만 1등급이어도 1등급으로 인정받게 됩니다. 검증 받을 수 있는 암호모듈의 ..

STM32 USB CDC-ACM(Virtual Com Port) 리눅스 확인

STM32 USB CDC-ACM(Virtual Com Port)을 올린 후 윈도우에서는 STM에서 제공하는 VCP 드라이버를 깔고 터미널 프로그램을 사용하면 통신을 할 수 있다는 것을 알고 있습니다. 하지만 윈도우만 사용해보았던 개발자들은 리눅스에서는 어떻게 확인할 수 있지라는 생각을 하게 됩니다. 네 접니다..... USB로 시리얼로 읽을 수 있는 방식은 기본적으로 USB CDC-ACM이고 리눅스에서 확인해보면 ttyACMx라고 나오게 됩니다. 보레이트까지 나올 줄은 몰랐는데... 리눅스 터미널 프로그램인 minicom을 깔고 minicom에서 dmesg를 통하여 확인한 ttyACMx를 Serial Device에 설정 후 확인을 하면 됩니다. 저는 echo로 프로그램을 짜서 확인하였습니다.

nRF5 Uart 사용하기(without FIFO)

nRF5 예제의 FIFO 구조로 되어 있는 UART를 FIFO를 사용하지 않고 설정해 사용하려고 하였습니다. 그런데 믕? 사용은 되는데 app_uart_put 함수가 한바이트씩 밖에 동작하지 않습니다. 구글링 해보니 코드들을 조금 손대줘야 하나봅니다.(기존 예제를 사용하지 않으려고 하는 이유는 데이터를 계속 뿌리니 중간중간 데이터가 깨져서 연속으로 데이터를 계속 전송하는 경우 문제가 생겨서 입니다.) 일단 아쉬운대로 app_uart_put파일을 고쳐서 데이터만 확인하였습니다.(문제 여지가 있어 보이지만 임시로 썼습니다.) APP_UART_FIFO_INIT(&comm_params, UART_RX_BUF_SIZE, UART_TX_BUF_SIZE, uart_error_handle, APP_IRQ_PRIORIT..

GPIO로 딜레이를 사용하여 Uart TX 출력 - Soft Uart

작번에는 GPIO와 타이머를 사용하여 Uart TX를 출력하였지만 타이머 패리패럴을 사용하지 못하는 경우가 있었습니다. 그래서 딜레이를 사용하여 Uart TX 출력을 만들었습니다. 8Bit 마이컴때는 어셈으로 TX, RX를 만들어서 사용하는 경우도 제법있었는데 요즘은 메모리가 많이 커져서 그런 경우가 없었던 것 같습니다. 딜레이 함수는 맞춰서 값을 변경해주면 되는데 최적화되면서 값이 자꾸 바뀔 수 있어서 그 부분을 잘 확인하여야 합니다.(STM으로 카테고리를 정했지만 사실 Core는 Arm Core 가 아닙니다.) #include "gpio.h" #define SU_TRUE 1 #define SU_FALSE 0 // 1 Startbit, 8 Databits, 1 Stopbit = 10 Bits/Frame..