전체 글 466

STM32L432 Read Protection 버그인가?

STM32L432가 저가의 제품이라 사용하려고 하고 있습니다. 그런데 Read Protect 기능을 사용하면 기존에 라이팅 되어 있는 프로그램이 다 사라집니다. 당황스럽네요. STM32F1XX 제품군에서 확인하면 괜찮은데 이 제품에서만 그러네요.(사라진게 아니라 동작을 안한거였슴니다) 놀랍습니다.어제 질문글을 올렸는데 오늘 답변이 왔네요.니가 무슨말 하는지 모르겠다라구요.. ㅠㅠ제 영어실력이 딸려서 ㅠㅠ어제까지만 해도 비관적 안티였었는데 하루만에 ST 찬양합니다.그 후에 20분 간격으로 답변을 주고 받을 수 있었습니다.채팅하는 줄.... Dear customer, In relation to the read out protection in the reference manual of STM32L432KC, ..

STM32L4xx에서 Brownout, ReadOut Protection 설정

#define USRCONFIGMASK 0xFFFFF8FF#define BORLEVELMASK 0x00000700 #define BORLEVEL OB_BOR_LEVEL_1#define BOR_FLAG_TIMEOUT 1000 #define RDPLEVEL OB_RDP_LEVEL_1 /******************************************************************************** Function Name : * Parameters : None* Return : None* Description : *******************************************************************************/void Config_B..

Invasive Attack

금번에 세미나를 다녀왔습니다. 주제중에서 Invasive Attack(Invasive Attack, Semiinvasive attack, Non invasive attack)과 관련된 내용이 있었는데 클럭 어택과 관련한 내용이 흥미로웠습니다.(연구하시는 분들은 예전부터 알고 계셨겠지만 전 처음이었습니다.) X-TAL의 클럭 입력에서 클럭에 노이즈를 넣으면(한 클럭이 들어가야하는 데 클럭 노이즈를 실어서 2클럭을 집어넣는 경우 같은) 명령어를 뛰어넘어서 처리하는 경우가 있다는 설명이었습니다. 대표적인게 if, else 구문인데요. 편하게 8비트 어셈인 PIC로 비교하면 f레지스터의 비트 b가 0이면 GOTO exit로 가고 그렇지 않으면 GOTO loop로 가는 명령이 있습니다. if else로 프로그램으..

STM32L4 ADC Low Layer Driver

Low Layer Driver을 사용한 ADC 들어오는 ADC 값의 움직임을 크게 주기 위해 샘플링 주기를 짧게 가져왔습니다.(LL_ADC_SAMPLINGTIME_2CYCLES_5) int main(void) { uint32_t nBuf[128]; uint8_t i; /* Configure the system clock to 80 MHz */ SystemClock_LLConfig(); /* ADC Configuration */ ADC_Configuration(); while(1){ GetADC1(chBuf); for(i = 0; i< 11; i++){ UART1_printf("ADC0 =%02X \r\n", chBuf[i]); } } } #include "math.h" #include "usr_adc.h..

WWDG에서 Watchdog 발생시 클리어 처리

WWDG에서 Watchdog 발생시 클리어 처리 WWDG 사용중에 특정 목적에서는 WWDG가 동작하지 않아야하는데 이런 목적으로 사용할 경우 인터럽트에서 클리어 처리 해주어야 합니다. WWDG나 IWDG는 동작하도록 한번 설정을 하면 플래그에 다시 사용히자 않도록 설정을 하여도 되지 않습니다. 이럴 때를 위해서 인터럽트과 인터럽트가 아닌 곳에서 처리하도록 양쪽에 처리를 하였습니다. (STM32L432에서 구현된 부분) 메인 .c tFunc_Typedef Func_Operate[] = { /* Random Source */ // {GenRandom, "GetADC", 0}, /* UART */ {GetuPacket, "GetUartPacket", 0}, /* SPI */ {GetsPacket, "GetSP..

MAXIM사의 Max3xxxx

Maxim사의 MAX3xxxx 칩입니다. Maxim을 선택한 이유는 RSA 키 생성이 하드웨어로 되어있어 생성 가능하다는 부분이 매력적이었습니다. Big Integer 소수를 MCU급에서 생성한다는 게 너무 어렵습니다. (사실 돌려봤었는데 십여분 기다리다가 생성이 안되서 포기했습니다. 사용하는 유저가 몇초만 기다려도 너무 오래걸린다고 생각하는데 분단위로도 생성이 안된다니!!! - 도어락 개발할 때 문 열릴 때 모터 돌아가는 그 몇초도 길다고 생각해서 멜로디를 넣어 체감시간을 다른 방향으로 돌렸는데 말이죠.) 이 소수 생성기는 추후에 동형 암호에 사용하려고 생각하고 있습니다. (이 MCU에서 별도로 소수 생성 부분만 빼줄 수 있도록 내부 로직이 설계되어 있다면요...) Maxim의 컴파일러는 대부분의 무료..