5주차 월, 화, 수는 지금까지 배운 C++과 Qt를 이용해 심화실습평가용 프로그램을 제작했습니다.
2명이서 진행을 했고,
다양한 주제 중에 저희 조는 미니게임을 선택했습니다.
마음속에서는 테트리스나 바운스볼 같은 게임을 만들고 싶었지만,
디자인 감각이 없는 두명에다가... ㅋㅋㅋ 물리적으로 움직이는 프로그램은 3일내에 만들기 어렵다고 판단했습니다.
그래서 글자를 이용한 게임을 생각하다가, 같은 조원형님이
https://kordle.kr/
꼬들
kordle.kr
이 게임을 추천해주셨는데, 진짜 보자마자 이거다..!
싶어서 바로 모방해서 제작했습니다.

시작하자마자 바로 피그마로 ui를 쓱쓱싹싹 그렸습니다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 정말 하찮지 않나요
제 ui 디자인보고 한숨나오기도하고, 시간도 없어서 그냥 개발하면서 디자인을 맞춰갔습니다!!
기본 기능 개발을 다 끝내고나서는 디자인 테마를 고민하다가
https://www.flaticon.com/
Free Icons and Stickers - Millions of resources to download
Download Free Icons and Stickers for your projects. Resources made by and for designers. PNG, SVG, EPS, PSD and CSS formats
www.flaticon.com
요기 Flaticon 사이트에 pixel 테마로 아이콘이 정말 많고 다 무료더라구요
그래서 바로 블랙 앤 화이트 픽셀 테마로 잡고 시간가는줄도 모르고 디자인 했습니다!
https://www.youtube.com/watch?v=w3HlVsbkq7Y
그래도 보충까지 하면서 나름 3일간 노력한 꼬들 게임이 완성됐습니다..
제가 예전 웹 프론트엔드 하던것처럼 ui 노가다는 싫어하지만,
이번 실습은 백엔드 프론트엔드 구분없이 한 번에 물흐르듯이 구현하니까 정말 재밌었습니다!!
나중에 시간이 난다면 DB랑 서버도 연결해서 멀티플레이나 랭킹 모드도 구현할 예정입니다.
정말 아쉬웠던 점 하나가 있다면
"강남" 이렇게 입력받는 것이 아니라 "ㄱㅏㅇㄴㅏㅁ" 이런 방식으로 입력을 받아야만 했던 것이에오,,
단어를 받아 자모분리 알고리즘을 구현했어야 했는데,
저희 게임은 "ㅞ" 같은 복합자모도 분리를 해야하는 특수 규칙도 있고
유니코드를 다루는데 익숙치 않다는 문제로 원래 방식으로 진행했습니다..
이것도 꼭 개선해서 v2로 곧 돌아오겠습니다!
임베디드 시스템 내용 정리 (04.17 ~)
- ARM (or PPC(방산 분야에서 주로 사용), Tricore, Risc-v) 체계를 대부분 사용, 저전력에 특화
- 임베디드 시스템의 정의
- PC가 아닌, CPU가 들어있는 컴퓨터 시스템
- 기능이 정해져있음
- 큰 시스템 내부에 존재
- 임베디드 시스템의 특징
- 저전력화
- 멀티미디어 지원
- 고신뢰성
- 경량화, 최소화
- 네트워크 자원
- SoC : 집적도가 높은 마이크로컨트롤러 (보드 위에 만들지 않고 칩 위에 요소를 넣기 시작)
- peripheral : 입력, 출력, 저장 등을 할 수 있게 해주는 하드웨어
- cpu 운영 모드
- USR(USeR mode)
- 어플리케이션이 사용
- SVC(Super Visor Call mode)
- 특권 모드
- 운영체제가 사용
- USR(USeR mode)
- 시스템 종류
- without os
- baremetal
- firmware
- RTOS
- VxWorks : 제일 인기많음, 고가
- FreeRTOS
- QNX
- application + os (리눅스 등)
- 드라이버 설치
- without os
- 개발 환경 요소
- 호스트
- 컴퓨터
- 타겟
- 임베디드 보드
- 툴체인
- 개발 프로그램 (컴파일러, 어셈블러 등)
- IDE
- 디버거
- 호스트
- 비휘발성 메모리
- PROM(Programmable ROM)
- EPROM(Electrically PROM)
- EEPROM(Erasable EPROM)
- NOR Flash Mem VS. NAND-FLash Mem
- 전자 : 프로그램 메모리
- 후자 : 자료저장 메모리. ex) USB
- 휘발성 메모리
- SRAM : 플립-플롭, 한 비트 저장시 트랜지스터 6개 필요, 캐시메모리로 활용
- 속도 빠름
- 크기 작음
- DRAM : 카파시터, 한 비트 저장시 트랜지스터 1개 필요, 메인메모리로 활용
- 속도 느림
- 크기 큼
- DRAM 컨트롤러와 세팅 필요
- SRAM : 플립-플롭, 한 비트 저장시 트랜지스터 6개 필요, 캐시메모리로 활용
- volatile : c에서 장치에 접근하는 주소값을 담을때 쓰는 키워드
- 포인터 변수의 값은 코드 내에서 안바꿔도 바뀔 가능성이 있으므로 컴파일러에서 동일 코드 스킵하면 X, 계속 읽어와야함 → volatile 키워드 사용
- 코드 예시
- #define rDATA ((volatile unsigned int) 0xE0001000)
- rDATA = 123;
- PLD(Programmable Logic Device) : 사용자가 내부 논리 회로를 조작할 수 있는 직접 회로
- PLA : AND와 OR 둘 다 프로그래밍 가능
- PAL(Programmable Array Logic) : AND 입력만 프로그래밍 가능
- 캐시
- direct mapped cache : 메모리 크기 그대로 탐색 및 비교 수행
- associative cache
- fully associative cache : block이 cache의 아무 장소에 들어갈 수 있음
- set associative cache : associative cache를 여러 set 포함. 현대 캐시의 표준
- MPU : RTOS에서 RAM 영역(region)끼리 못넘어가게 통제하는 역할
- MMU : 고급 운영체제(리눅스, 윈도우)에서 같은 메모리 주소간 격벽(가상주소)을 관리
- cpu → V.addr → mmu (TLB, TTBAR(transitional table address) 이용) → p.addr ← ROM/RAM
- ARM
- Cortex 종류
- A
- AArch64 : 서버용으로 최초 개발, 현대 폰에서 제일 많이 사용, 64비트
- R
- M
- A
- Operation 모드
- 특권 모드
- @x86 : supervisor
- @ARM (legacy) : 기능별로 나눠놓음
- SVC (Supervisor call)
- UND
- IRQ
- … cortex-M 제외 기능들
- @cortex-M
- Handler 모드 : 특권 모드
- Thread 모드
- 특권 모드 : 펌웨어 어플리케이션 처리 ex) 예제의 Blinky.c
- 비특권 모드 : 유저 어플리케이션 처리 (with os)
- 비특권 모드
- @x86 : user
- @ARM : user
- 특권 모드
- Cortex 종류
- 레지스터
- 종류
- GPR (General Purpose Reg.) : ALU에 바로 존재
- r0 - r12
- SPR (Special Purpose)
- 하드웨어 관련
- ex) 스택 포인터(r13), 링크 레지스터(r14), 프로그램 카운터(r15)
- SFR (Special Function)
- 하드웨어 관련(장치들 ie, 타이머, UART,…)
- 주소를 가짐
- GPR (General Purpose Reg.) : ALU에 바로 존재
- configuration 레지스터
- 구성(설정) : 어떻게 동작할 것인가
- control 레지스터
- 전원 제어
- data 레지스터
- 데이터 읽고 쓰기
- status 레지스터
- 상태 표시
- 종류
- xPSR, Program Status Reg.
- N(Negative)
- Z(Zero)
- C(Carry, Borrow)
- 1111 + 1 : carry 발생
- 1 - 2 : borrow 발생
- V(oVerflow) : 더하기로 부호 비트인 MSB가 바뀜
VEDA 바로가기 : https://www.vedacademy.co.kr/
본 후기는 한화비전 VEDA 2기 학습 기록으로 작성되었습니다.
'프로그래밍 > 한화비전 VEDA' 카테고리의 다른 글
| 한화비전 VEDA 2기 : 4주차 (Qt) 정리 (2) | 2025.04.13 |
|---|---|
| 한화비전 VEDA 2기 : 3주차 (C++) 정리 (1) | 2025.04.07 |
| 한화비전 VEDA 2기 : 2주차(C, C++) 정리 (1) | 2025.03.30 |
| 한화비전 VEDA 2기 : 1주차(C) 정리 (1) | 2025.03.22 |