전체 글
-
ARM 용어 정리컴퓨터 공학 기초/용어 2020. 3. 12. 03:43
해당 포스트의 모든 내용 해당 페이지에서 퍼온 내용임 https://cafe.naver.com/embeddedcrazyboys/1346 ARM ... 대한민국 모임의 시작, 네이버 카페 cafe.naver.com 2009년 새로운 다짐으로 시작하는 첫해인데요. 노트북도 사고 여러가지로 환경은 좋아졌습니다. 이제 열공하는 일만 남은듯 합니다. 요즘 제가 Arm System Developer's Guide (2004)를 읽고 있습니다. 바이블이라고 많은 사람들이 읽으라고 했었던 것인데 늘 미루다가 이제서야 읽게 되었네요. 시작이 반 아니겠습니까 ㅎㅎ ^^;; 아래 내용은 원래 제 팀원이 정리했던 자료인데 나름 ARM에 대해 정리하는 의미는 될듯 해서 올려봅니다. -------------------------..
-
CPU 용어컴퓨터 공학 기초/용어 2020. 3. 12. 02:37
프로세서란 ? 프로세서란 어떤 것을 처리하는 기능을 가진 하드웨어 또는 소프트웨어를 뜻한다. 하드웨어의 프로세서는 기억, 연산, 제어의 3대 기능을 처리하는 장치 (칩)을 나타낸다. 따라서 CPU, MPU, MCU는 모두 프로세서의 일부이다. CPU : 연산 기억, 제어등의 역할에 추가적으로 주변 하드웨어를 제어하는 역할을 한다. 범용적이고 큰 일을 처리하며 고속프로세서이다. 클럭 속도가 가장 높다. MPU : 초소형 연산처리 장치이다. 주변 장치가 필요하며 가벼운 운영체제를 설치할 수 도있고 네트워크 통신 등을 할 수 있는 모델이 많이 출시 됨 ex 라즈베리파이 MCU : 집적 회로 ( 하나의 반도체 기판에 다수의 능동소자와 수동수자를 초소형으로 집적 시킨 구조, 즉 서로 분리 될 수 없는 구조로 만든..
-
포인터의 이해C언어 2020. 3. 7. 21:15
이번 포스트는 포인터에 대해서 조금더 확실하고 어떤식으로 포인터를 연산하는지에 대해서 더 자세하게 다룰 것이다. 위의 자료는 포인터가 어떤 역할을 수행하는지 나타낸다. 가장먼저 pn 변수를 강제 자료형 변환을 시켰을 때 이다 이때 변환한 자료형은 int *로 기술하였다. 다음과 같이 변수를 포인터로 형변환 시키면 변수에 담긴 값 (주소)에 해당하는 메모리에 내용을 int로 해석하겠다는 의미이다. 따라서 pn 변수에는 1이 있으므로 1을 주소로 인식하며 해당 주소에 있는 메모리의 값은 int로 해석하게된다. 다음은 변수 a에 대한 주소를 강제 자료형 변환 시켰을 때 이다. 위와 마찬가지로 int *으로 기술. 따라서 &a에 대한 연산 결과인 a 변수의 주소가 주소인 형태로 상수화 되면서 해당 상수화 된 주..
-
배열의 이해C언어 2020. 3. 5. 19:54
수정 필요 이번 포스트에서는 한가지 재미있는 주제에 대해서 다룰것이다. 바로 char ch[10] = { "Hello" } 와 같이 문자(배)열을 선언과 동시에 "Hello" 라는 문자열 상수로 초기화 하였을 때 내부적으로 어떤 과정을 통해서 문자 배열 ch에 "Hello" 라는 문자열 상수가 들어가는지에 대해서 다룰 것이다. 위의 내용을 다루기 앞서 자료형의 개념에 대해서 다시 짚고 넘어가면 다음과 같다. 자료형은 일정 길이의 메모리에 있는 자료 또는 정보를 해석하는 방법이라고 하였다. 즉 메모리에 61 이라는 값이 있다고 하면 이 값을 int 로 해석하면 부호있는 10진 정수 61이 되는 것이고 반대로 char로 해석하면 61이라는 값은 'a' 라는 문자로 해석이 될 수 도 있다는 의미이다. 위와 같..
-
메모리 복사C언어 2020. 3. 5. 18:24
이번 포스트에서 다룰 내용은 메모리에 담긴 값을 복사하는 방법에 대해서 다룰 것이다. 가장 쉽게 복사하는 방법은 단순대입 연산자를 통하여 r - value 의 값을 왼쪽의 l - value 의 값으로 옮기는 방법이다. int main(void) { int num = 10; int cp_num = 0; cp_num = num; printf("%d", cp_num); } 또한 l-value의 값은 항상 변수만 가능하다. 따라서 cp_num 이라는 변수에 0이라는 값을 over write 하고 num이라는 변수에 있는 10이라는 값을 새롭게 넣은 것이다. 그렇다면 이러한 인스턴스들의 집합은 어떻게 복사해야 하는가 ? 즉 배열의 경우 어떻게 복사하여야 하는가 ? 라는 의문이 생긴다. 한번 위의 경우와 같이 복사..
-
메모리 동적 할당 및 해제C언어 2020. 3. 4. 19:58
메모리 동적 할당의 필요성 이전 포스트에서 흔히 사용하는 변수는 가상메모리에서 Stack영역의 메모리를 사용하는 것이며 최대 1MB의 크기의 메모리를 사용할 수 있다고 하였다. 그렇다면 프로그램이 더 많은 메모리 자원을 필요로 할 때 or 필요한 메모리의 크기를 확정할 수 없을 때의 경우에는 프로그램이 메모리를 어떻게 할당 받아야 하는가? 라는 의문이 생길 것이다. 예를 들어 학점을 구하는 프로그램이 있을 때 프로그램 제작자는 각 학생들의 점수를 저장해야 할 것이다. 또한 점수를 저장하기 위해서는 메모리의 크기를 기술하여 OS로 부터 메모리 자원을 할당받아야 할 것이다. 이때 학급의 인원이 30명이라고 가정하여 제작자가 int[30] 만큼의 크기의 메모리를 빌려서 프로그램을 작성했다고 했을 때 만약 학급..
-
가상메모리C언어 2020. 3. 3. 21:48
C에서 작성한 어플리케이션이 사용하는 변수, 상수, 포인터 등 모든 개념들의 본질은 컴퓨터 메모리 자원의 사용을 의미한다는 것은 이제 알 것이다. 즉 Hello World 프로그램이 있다고 가정하고 해당 프로그램을 실행 시키기 위해서는 컴퓨터의 메모리 자원을 가져다 사용해야 하며 해당 메모리 자원은 다음과 같은 이유로 사용된다. 프로그램이 실행 되기 위해 필요한 메모리, 사용자가 원하는 결과를 담을 메모리, 프로그램이 작업을 수행하면서 필요한 메모리 등등 실행중인 응용프로그램 즉 프로세스는 메모리자원을 사용하게 된다. 또한 위와 같은 메모리 할당 과정을 C언어에서 문법적으로 나타낸 것이 변수, 상수, 포인터, 배열 등의 개념이다. 변수, 상수, 포인터, 배열 => 자료형과 식별자 (이름)을 통해 메모리에..
-
메모리의 구조와 포인터C언어 2020. 3. 1. 21:56
컴퓨터는 내부적으로 연산 즉 CPU가 동작하는 과정에서 정보를 가져오고 연산된 정보를 다시 저장하는 공간이 메모리라는 것은 이제 알 것이다. 메모리에 접근을 할 때 메모리의 위치정보를 식별할 수 있는 주소라는 개념이 있으며 이 주소라는 것을 통해 메모리에 저장된 값을 읽거나, 쓰거나, 옮기는 등 의 작업이 이루어진다. 포인터는 이러한 메모리의 주소를 저장하는 특별한 변수이다. 포인터의 선언은 다음과 같다. 위에서 설명하였듯 포인터는 메모리의 주소를 담는 변수이다. 따라서 포인터는 주소로 채워지게 된다. '&' 연산자를 통해 ndata 의 주소를 반환하여 int * (int 포인터) 자료형인 pndata라는 변수에 주소 값이 넘겨지는 것을 볼 수 있다. 위의 0x 0018 FF10의 주소에 0x 00 18..