11월 8일
펌웨어 보충
c언어 문법은 대충 알겠는데 코딩 시작이 막막하다 --> 왜 그런가?
국어 문법 안다고 작문에 능한 건 아니듯, 코딩 잘하는 법을 알 필요가 있다. 남 코드를 보는 것도 좋고, 이번 보충으로 배우는 리마인드도 좋다.
---------
application 실행 : 외장디스크 -(실행코드, 변수, memory)-> RAM(Loading) <--> CPU
cf)외장디스크가 아닌 RAM에 올려서 실행하는 이유 : 속도 ; cpu 내부 cache 메모리말고 RAM이 주인 이유는 가격 때문.
MCU의 경우는? 하나의 칩 형태인 경우가 많음. 어쨌든 내부적으로 나누면 위와 같다.
실행코드는 어디에 저장돼있는가? Flash memory로 들어간다. cf)ROM을 사용할 때는? ROM writer를 이용해서 구운 뒤 장착했다. 자외선을 쐬서 지우고 다시 굽고 이러했는데 지우는데 몇 시간씩 걸렸다고 한다.
Flash memory(실행코드 저장), RAM(Stack, heap)
PC 같은 구조 : 폰 노이만 구조 실행코드와 메모리영역이 같음
MCU 같은 구조 : 하버드 구조 실행코드와 메모리 영역이 분리
폰 노이만 구조 vs 하버드 구조
폰 노이만 구조 - 폰 노이만이 고안한 내장 메모리 순차처리 방식이다. - 데이터 메모리와 프로그램 메모리가 구분되어 있지 않아 하나의 버스를 가지고 있는 구조를 말한다. - CPU는 메모리로부
sangcho.tistory.com
따라서 컴퓨터언어로 실행코드 부분, stack 부분, heap 부분 등을 알려줘야 함. c언어 기준으로 이걸 startup code라고 함.
-----
의료, 방산, 통신 등 분야를 막론하고 입력, 처리, 출력의 절차를 거친다.
항상 동작해야 하는 부분은 입력과 출력이다. 입력 : 센서값이 들어오는지 아닌지 항상 감시, 출력 : 예를 들어 온도값을 출력할 때 입력 센서의 값을 한 번 보여주고 끝내는 게 아니다. 화면에 계속 값을 띄우고 있어야 한다.
처리는? 굳이 연산을 항상 해야 하는 건 아니다. 상황에 따라 다르다.
입력단은 Event 처리부를 생각해야 해서 Listener로 만들었고, 출력단은 지속적으로 나타내기 위해서 View로 만들었다.
spring Framework
-------
뭔가 잘 안 돼서 정리를 했었는데 그냥 chip이 고장난 거였다.
------
cf)연산자 이름 헷갈려서...
http://www.tcpschool.com/c/c_pointer_intro
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
"주소 연산자(&)
주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환합니다.
'&'기호는 앰퍼샌드(ampersand)라고 읽으며, 번지 연산자라고도 불립니다.
참조 연산자(*)
참조 연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환합니다."
------
c언어에서의 캡슐화 방법
1. 구조체
2. 라이브러리화 file.c
----
0 0 0 0 1 1 0 0 / CTC mode(WGM00, 01 --> 01), 64 분주비(CS00, 01, 02 --> 001), pwm 사용x
https://github.com/316415/led_shift_by_button
GitHub - 316415/led_shift_by_button: led shift by button. it is spring framework(listener, view architecture)
led shift by button. it is spring framework(listener, view architecture) - GitHub - 316415/led_shift_by_button: led shift by button. it is spring framework(listener, view architecture)
github.com
https://youtube.com/shorts/HykPGY6vLRw?feature=share
