임베디드 개발자 되기 14

[32일차] ARM 프로세서 이해 및 활용 (switch 실습)

오늘은 스위치의 입력에 따라 값을 출력하는 실습을 진행했다. 먼저 스위치를 사용하기 위해서는 보드의 스위치가 연결되어있는 레지스터의 설정을 초기화 해야한다. 초기화는 UserManual을 참고하자. 1. 회로도 보기. 먼저, 회로도를 보자. 왼쪽부터 스위치 SW4~13, SW14, SW15 이렇게 있는데 편의상 왼쪽부터 1번 스위치라 한다. 보면 아무런 신호를 주지 않을 때, 값이 1를 유지하게 되는 풀업 회로도인 것을 알 수 있다. 즉, 스위치가 열려있을 때는 Vdd에서 나오는 3.3v가 저항을 거쳐 GPF2~6, GPF0~1 로 가기 때문에 High를 유지한다. 스위치를 누르게 되면 Vdd에서 저항을 거쳐 그라운드로 떨어지기 때문에 해당 스위치에 연결된 GPF의 값이 '0'으로 LOW 상태가 된다. ..

[31일차] ARM 프로세서 이해 및 활용 (부트코드 작성, 소프트웨어 최적화, LED 실습)

1. 임베디드 개발자가 처음 보드를 만질 때 알아야 할 것. 1) 메모리 맵. 2) 회로도 2. 다룰 줄 알아야 하는 장비 1) 테스터기 (삑삑이. 쇼트 난 곳 찾을 때 많이 써봤다.) 2) 오실로 스코프 (PWM 값 찍어 파형 볼 때 사용해봤다.) 1. 부트 코드 작성 1) 프로세서의 Reset과 Start-up 코드. ▷ Start-up코드(=Init.o, crt0.o)를 이해하면 좋음 점. : 하드웨어 세팅, 실행환경, 아키텍처에 대한 이해, 드라이버 작성 등을 할 때 유용하다. ▷ 하드웨어 초기화 작업을 한다. : RAM, Clock, Stack 주소 설정하는 것과 같은 것. - 시스템의 클럭 - 메모리 컨트롤러 - 입출력 포트의 구성 - MMU 등 - 인터럽트와 스택 초기화 ▷ 리셋 핸들러의 마..

[30일차] ARM 프로세서 이해 및 활용(AMBA BUS, Clock, Power, Exception Handling)

○ ARM core 구조에 관한 대부분의 설명과 사진은 s3c2450 user manual에 있다. ◎ 블록 다이어그램 다시 보기 더보기 ● AMBA 버스 ▷ AMBA(Advanced Microcontroller Bus Architecture) - ARM에서 개발하여 오픈 한 표준 시스템 버스 설계 구격 - SoC를 구성하는 기능 블록들 간의 연결 및 관리 방법을 제공 ▷ 표준 AMBA 버스의 장점 - SoC 설계자 간의 의사소통 용이 :: 설계자 간의 idea공유로 SoC 설계 시간 단축 - IP(Intellenctual Property)의 재사용이 용이 :: 외부의 표준 IP 도입으로 SoC 설계 시간 단축 ▷ AHB (Advanced High-performance Bus) - High perform..

[29일차] ARM 프로세서 이해 및 활용 (Cache, MMU)

● ARM 프로세서의 구조 더보기 Manual에 나와있는 블록도 ● Cached ARM 프로세서의 제어 ▷ CP15 인터페이스를 통해서 제어 - Cache, MPU,or MMU, endian 제어등 ▷ Coprocessor Register Transfer 명령 - MRC : Move to Register from Coprocesser :: 내용을 ARM 레지스터로 전송 - MCR : Move to Coprocesser from Register :: ARM 레지스터 내용을 Coprocessor 레지스터로 전송 ▷ 참고 자료 : https://blog.naver.com/kazama10/50179092022 [ARM Assembly] MRC, MCR 1. MRC 명령어 - coprocessor 내부의 레지스터..

[28일차] ARM 프로세서 이해 및 활용(ARM 프로세서의 명령어)

◎ 32비트 ARM 명령어 ▷ 모든 ARM 명령은 32비트로 구성되어 있다. - Load/Store와 같은 메모리 참조 명령이나 Branch 명령에서는 모두 상대주소(Indirect Address)방식을 사용한다. - Immediate 상수는 32비트 명령어 내에 표시된다. (32비트 내에 상수 + 기타 상태 명령 등) ▷ 모든 ARM 명령어는 조건부 실행이 가능하다. ▷ Load/Store Architecture를 사용한다. ◎ 16비트 Thumb 명령어 (16비트 데이터라인이 추세이던 시절 32비트 ARM이 호환하기 위해 만든 명령어) ▷ 32비트의 ARM 명령을 16비트로 재구성한 명령 ▷ 조건부 실행 불가능, 상수값의 표현 범위가 적다. ◎ Java 명령 - 유닉스 위에 윈도우 위에 자바VM 을 ..

[27일차] ARM 프로세서 이해 및 활용 (Program Status Register (PSR), Exception)

개념을 이해하기 위해 찾아보다가 정리가 굉장히 잘 되있는 사이트를 발견했다. 찬찬히 읽어보며 이해해봐야지 JK전자와 함께하는 ARM 완전정복 ● Program Status Register (PSR) ▷ ARM의 PSR - 1개의 CPSR(Current Program Status Register) - 5개의 SPSR(Saved Program Status Register) ● PSR 레지스터의 정보 ▷ Condition code flag - ALU의 연산 결과 정보를 가지는 flag 정보를 가지고 있다. -> ALU를 통한 명령의 실행 결과를 나타내는 부분이다. 1) N 비트(Negative flag) - ALU 연산 결과가 마이너스가 발생한 경우(연산결과 맨 꼭대기 비트가 1이 될 경우) set 2) Z ..

[26일차] ARM 프로세서 이해 및 활용 (임베디드 시스템의 구조, ARM Architecture 전반적인 구조)

1. 임베디드 시스템의 구조 프로세서의 구조 1) 레지스터(Register) : ○ 프로세서 내부에서 데이터를 일시적으로 보관하는 기억장치. - Flip-flop와 Latch로 구성되어 있다. ○ 범용 레지스터. (Ground Port Register) - 프로그램 또는 데이터 처리에 필요한 작업을 수행하기 위해 사용. ○ 제어용 레지스터. (control) - 프로그램이나 프로세서를 제어. 프로그램 카운터(PC) 등 ○ 상태 레지스터. (Program Status Register) - 프로세서의 상태를 나타낸다. 2) 산술 논리 연산장치(ALU) - 산술 연산 수행(덧셈 뺄셈 등) - 논리 연산 수행(AND, OR 등) - 상태 레지스터 또는 Flag 레지스터에 연산 결과 기록 - carry 발생, o..

[25일차] 탐색 알고리즘(순차, 이분, 이진트리, 레드-블랙, 해쉬)

여러 탐색 알고리즘에 대해 배웠다. 순차 검색 이분 검색 이진트리 검색 해쉬 검색 순차 검색 가장 단순한 탐색방법. 주어진 자료 파일에서 처음부터 검색키에 해당하는 레코드를 순차적으로 비교. - 장점 : 조직화 및 정렬 필요 없다. 매우 단순하다. 작은 데이터를 검색할 때 효율적 - 단점 : 평균적으로 약 N/2번의 비교를 해야 하기 때문에 속도가 느리다. 더보기 C 표준함수에 포함되어있음 delete니 insert에서는 num을 증가, 감소시켜줘야 해서 포인터로 받는다. void Is_search(int key, int a[], int *num) { int i=0; while(a[i] != key && I < *num)i++;// 키값을 찾음 return (i< *num ? i : -1); //찾았으면..

[23일차] 스택(Stack) & 큐(Queue) & 트리(Tree) & 재귀함수(Recursive func)

제목에서 느낄 수 있듯이 진도가 슉슉 나갔다. [연결 리스트] 단일 연결 리스트 구현, 이중 연결리스트 구현, 더미 노드를 활용한 연결 리스트 구현, [스택] 배열을 활용한 스택 구현, 연결 리스트를 활용한 스택 구현, [큐] 원형 큐 구현, 배열을 통한 큐 구현, 연결 리스트를 활용한 큐 구현, [트리] 트리 구현 [재귀 함수와 알고리즘] 재귀 함수 - 팩토리얼, 피보나치, 하노이의 탑 재귀 및 비 재귀로 구현하기. 대략 나간 내용은 다음과 같다. 각각의 구현마다 C를 활용한 코드 예제가 있었는데, 수업시간에는 모든 예제를 하지 않고 개념을 간단히 한 후, 몇 개의 예제만 한다. 그러다 보니 개념적으로는 머리에 그림이 그려져도 이를 C로 구현하기 위해 코드를 하나씩 이해해가느라 수업 진도에 따라가기가 ..

[21일차] 임베디드 자료구조 및 알고리즘 (유클리드, 소수판별 알고리즘)

이번 주 부터 자료구조 및 알고리즘에 대해 배운다. 오늘 배운 내용은 크게 3가지 이다. 1) 알고리즘 유형 설명 2) 유클리드 알고리즘 보드에 올려보기 3) 소수를 구하는 알고리즘 보드에 올려보기 1. 알고리즘 : 명령을 효율적으로 처리하는 순서 2. 자료구조 : Data를 효율적으로 저장하는 방식 ○ 알고리즘 알고리즘의 성능 평가 1) 수행 시간 (속도) 2) 필요한 기억장치의 양 (메모리) - 대개는 수행 시간이 더 중요하게 평가된다. 알고리즘의 유형 : 입력되는 자료(Data)의 수 N에 대하여 수행 시간을 함수 관계로 표현 수행 시간 설명 1 입력자료의 수에 관계없이 일정한 실행 시간을 갖는 알고리즘 logN N이 증가함에 따라 실행시간이 조금씩 늘어남 (ex. 성능이 좋은 검색 알고리즘은 대부..