FSM 이론적으로는 무어 방식과 밀리 방식이 있다. 무어는 상태에 따른 출력만 존재하고, 밀리는 상태 + 현재 입력까지 주어진다. 실제 사용하는 FSM은 밀리 상태에 가까운데, 입력이 없이도 가능한 노드가 있는 등 무어 머신의 특성도 가지고 있다. 가장 간단한 구현 가장 쉬운 구현은 IF 혹은 Switch-Case 를 기반으로 State를 변수로 지정하여…
Buffer Overflow가 왜 문제가 되는가? Buffer 크기 넘어서서 프로그램의 중요한 부분 바꾸는 문제 Stack은 Grow Down (높은주소 → 낮은주소) 많은 함수들은 Buffer를 낮은주소 부터 씀 (scanf, strcpy 등) Call Stack (Register, Return Address) 영역 침범해 복귀주소 조작 가능 Buffer…
GPIO도 코어가 아닌 MCU 제조사가 정하는 부분이다. ATmega의 경우 AVR이 코어의 설계부터 GPIO의 설계까지 모두 했기 때문에 혼동이 된 부분이다. GPIO도 마찬가지로 Peripheral로 취급된다. 출력을 할 때 Push-Pull / Open-Drain 사용 가능 입력을 받을 때 내부 풀업, 풀다운 저항 연결 가능 인터럽트 라인에 연결 가능
STM32F103RB 널리 쓰이는 보급형 라인 Cortex-M3 를 코어로 사용한다. (ARMv7-M) STM32F103RB 기준 I2C, USART, USB, CAN 등 사용 가능한 커뮤니케이션 방법이 매우 다양하고, GPIO가 51개, 16채널 ADC가 2개 존재한다. Peripheral (주변장치) Peripheral은 칩 내부에 포함된 회로 중, 코…
EEPROM이란? ROM은 Read-only memory의 줄임말로, 본래 읽기만 가능한 메모리라는 뜻이다. 공장에서 제조될 때 부터 고정된 채 생산되는 것이 일반적이다. 그러나 최근 생산되는 대부분의 ROM은 적어도 한번 이상은 정보를 수정 가능하게 끔 되어있다. PROM은 ‘프로그래밍 가능한 롬’으로, 내부의 회로를 변경해서 한번 데이터를 수정할 수 있…
개요 Shift register는 레지스터 간 Shift 연산을 추가한 레지스터이다. Shift register에는 두 가지가 있고, 하나는 직렬로 들어온 입력을 시프트 해서 저장한 뒤, 병렬로 출력하는 SIPO 방식, 또 다른 하나는 병렬로 들어온 입력을 저장한 뒤, 시프트 하면서 직렬로 출력하는 PISO 방식이다. 출력 핀의 확장 대표적인 SIPO 레지…
배경지식 리눅스 소켓 라이브러리는 Berkeley Sockets (BSD Sockets) 표준을 따름 sys/socket.h 에 라이브러리 정의 소켓 통신은 IP protocol suite에서, Transport 계층에 해당 (TCP/UDP) TCP / UDP 별도의 소켓 존재 소켓통신은 전이중 지원 sys/socket.h → syscall → net st…
페이지 : https://semteul.github.io/webutils/wordcount/ 레포 : https://github.com/semteul/webutils?tab=readme-ov-file
notion이 너무 편리해서 이걸 블로그로 어떻게 하면 써먹을까 고민을 많이 하는 중입니다. 지금까지 제가 운영했던 블로그의 연혁을 보면 네이버 블로그 커스터마이징을 좀 더 하려고 tistory로 옮김 tistory가 주인이 바뀌고 운영이 불안정해지면서 잠시 블로그 접음 velog를 발견해서 깔짝 써봤으나 마크다운으로 쉽게 글 남길 수 있다는 건 좋았지만…
커널에 Math Emulation관련 코드들이 뭐하는 기능인지 궁금해서 찾아봤다. 결론부터 말하면 FPU(부동소수점연산장치)가 없는 CPU에서 부동소수점 연산을 정수연산명령어들을 이용해 에뮬레이션 하는 기능이다. 현재는 FPU가 없는 일부 임베디드, 라우터용 프로세서를 제외하면 쓰이지 않는 기술이지만 내용이 흥미로워서 조금 정리해봤다. Coprocessor