Hafoom.com

[D5] 2019.06.29

ARM+@2019.06.29 23:30

 

[AVR/ARM]

임베디드 하드웨어 이해와 설계(한빛미디어 2006) 책을 잠깐 읽었다...

내가 원하던 기본 회로와 알아야 할 지식들이 망라되어 있었다. 단지 봐도 이해를 못할 뿐..

 

AVR 인터럽트에 대해 공부... 아주 쉽지만 그동안 넘겼던 콜백 개념..-_-;;;

HAL로 UART 하다가 보류했다. 책이 없다보니 자세히 기술되지 않는 인터넷 자료로는 한계.

AVR을 먼저 다지고 HAL로 넘어가야 겠다.

 

아래는 PA0~4 까지 led 연결하고, PE4에 택트 스위치 연결

 

#include <avr/io.h>
#include <avr/interrupt.h> //인터럽트 필요

ISR(INT4_vect) // 인터럽트 4번 발생시 
{
	PORTA = 0x03;  // A포트 출력 0000 0011
		
}


int main(void)
{
	DDRA = 0xff; /* A 포트 모두 출력 1111 1111 */
	DDRE = 0x00; /* E 포트 모두 입력 0000 0000 */
	SREG |= 0x80; /* SREG 전체 인터럽트를 모두 허용하기 위해 MSB 세트 1000 0000 */
	
	EIMSK = 0x10; /* External interrupt mask register 0001 0000 인터럽트 enable */
	EICRB = 0x00; /* External interuupt control register */
	
	
	while(1) PORTA = 0x00; /* test를 위해 항상 A포트에 0을 출력하도록 */
}

 

 

[VHDL/Firmware] 패스

 

 

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0

[D4] 2019.06.28

ARM+@2019.06.28 22:45

 

오늘은 많이 못했다..

컨디션이 좋지 않은 관계로..

 

[AVR/ARM]

AVR만 했다. FND 원리와 함께 트렌지스터 캐패시터 좀 봤는데..머리에 박히진 않는다.

택트 스위치가지고 회로 구성했다. 일단 따라하긴 했고..스스로 하기가 문제..

 

 

 

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0

[D3] 2019.06.27

ARM+@2019.06.27 22:33

[AVR/ARM]

JMOD-128-1 실습. Atmega128A

간단한 회로개념조차 익숙치 않아 삽질좀 했음. 어쨋건 기본적인 LED 켜기 구동 성공. 

이로서 기본적인 프로그램 작성 및 쓰기 완료. (어차피 아두이노 상향버전..)

툴은 Atmel Studio 7

 

STM32F407 실습. cortexM4 - HAL 이용

멍청하게 ST-LINK를 구입했지만 알고보니 내장되어있네..

워낙 많은 툴들이 있어서 한번씩 다 해볼 계획인데..이놈의 개발환경이란게 항상 바뀌니까 항상 적응해야한다...

현재는 STM32CubeMX를 이용해서 칩모델에 맞는 프로젝트 생성..

보기 편한 포트들 확인해서 보드에 장착된 LED SET/RESET 완료.

이로서 이것도 기본적인 디버깅과 실행을 한번 해봄. 

특이한건 Atemel studio는 visual studio기반이고 st를 위한 TrueStudio는 Eclipse기반이네..

그동안 아두이노, 매트랩, 영상처리, MFC의 paint()나 다 보면 어차피 loop()기반에 작성이 많은걸 느끼고, 툴들이 대부분 visual studio나 eclipse를 많이 쓴다는 거....

 

 

[펌웨어]

device driver는 오늘 패스

 

[VHDL]

보류.

 

 

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0

[D2] 2019.06.26

ARM+@2019.06.26 14:57

[AVR/ARM]

JMOD-128-1 도착함.

isp내장이라 다운로더 필요없음. 뭐 작품만들려고하면 상대적으로 무게가 있으니 안쓰겠지만

난 어차피 공부용이니까

4년전에 AVR 타이머 선풍기 만들었는데 기억이 안난다.

구입한 도서 기반으로 Atmega128 하드웨어 제어 공부 시작.

아직 ST-링커가 도착 안해서.. Cortex-M4는 보류.

Tool 설치 - Atmel Studio 7.0, Truestudio, STM32CubeMX

 

 

[펌웨어]

커널 단순 컴파일은..제조사 제공으로 어렵지 않게 해봤으니

개념정리와 함께 device driver 공부.

실제 작성은 다음에

 

 

[VHDL]

보류. 일단 다른거 좀 진도 빼고...

한번에 3개 스타트하기엔 부담이

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0

임베디드 시스템 순서

기구 -> 아트웍 -> 회로 -> 펌웨어,디바이스드라이버,BSP -> 커널 -> 어플리케이션

 

 

 

BSP(Board Support Package)

https://msnayana.blog.me/80065524365

 영어 그대로 해석하면 되겠지만, 쉽게 말해 부트로더 + 실시간 운영체제를 로드하기 위한 최소한의 장치를 지원하고 주변 장치를 지원하기 위한 드라이버를 총칭한다.

루트 파일 시스템(root file system), 툴체인(toolchain) 등을 포함하기도 한다.

(커널은 통상적으로 제외된다. )

 칩 제조업체(S사) 를 예로 레퍼런스 보드를 개발하여 보여준다 하면, BSP까지는 공급하여 테스트를 하게 된다.

한마디로, 최소한 보드의 기능 및 성능을 확인할 수 있도록 동작시키는 패키지로 보면 되겠다.

MS사의 설명을 따르면, 특정 하드웨어 플랫폼에 임베디드 운영체제를 빠르게 구축하는데 사용되는 소스 바이너리 소프트웨어 패키지라고 한다. 드라이버+OAL(OEM적응 계층)+HAL(하드웨어 추상화 계층) + BIOS 라고 한다.

정리하자면, 부트로더+드라이버+BIOS+파일시스템+툴체인 정도로 보면 되겠다. (정확한 요소를 딱 집지는 못하겠다)

 

 

모놀로식 커널과 마이크로 커널

https://selfish-developer.com/entry/%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9DMonolithic-kernel%EA%B3%BC-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9CMicro-%EC%BB%A4%EB%84%90

커널을 공부한다면 필수적으로 알아야하는 개념으로 사료된다. 

마이크로 커널 : OS는 각 기능을 서브 시스템으로 분할하여 핵심 기능만을 커널에 담고 코어 부분에서 담당하도록 한다. (하나의 서비스가 죽더라도 전체 커널이 panic되지 않기 때문에 임베디드에 쓰인다는데 이해가 잘 안간다.) File system이나 Driver는 유저 공간에서 실행된다.

모놀리식 커널 : 단일형 커널이라고도 한다. 입출력, 네트워크, 장치 지원 등 일반적인 기능들을 동일한 메모리 공간에 적재 및 실행한다. 리눅스는 하나의 프로그램으로 수행되므로 모놀리식이다. 어플리케이션을 제외하고 모두 커널이 관리한다. 

 

 

 

Kernel Module

 마이크로 커널이 가지는 모듈 기능을 모놀로식 커널에 도입함으로써 '커널 모듈'개념이 등장한다.

 커널 모듈(Kernel modules, KMOD) 등의 여러가지 이름으로 쓰인다.... LKM(Loadable kernel module)이라는 표현도 쓴다. OS에서 실행중인 커널을 확장하는 코드를 포함하는 목적파일로써, 새로운 하드웨어(디바이스 드라이버)나 파일시스템을 지원하거나 시스템 호출을 추가하는데 사용된다.

 리눅스 측면에서 얘기하자면 v2.x 가 되면서 커널 모듈개념이 추가되었다. 커널 크기를 줄이기 위한 방법 중 하나로 커널 전체를 컴파일할 필요 없이 모듈단위로만 컴파일해서 동적으로 커널에 추가해주는 개념이다.

혹시 모르니 이것저것 다 포함해주는 커널과 다르게 나중에 필요에 따라 추가하므로 확장성, 재사용성을 높일 수 있다.

다시 말해, 디바이스와의 연결 및 구동을 제어하기 위한 커널은 매번 새로운 기능을 추가하거나 디바이스를 추가할 때마다 커널을 다시 컴파일하거나 시스템 재부팅을 해야할 필요성이 사라지게 된 것이다. 

 

 

Evaluation Board (평가보드, 샘플보드) 

http://sewoon.com/mall/kims_lib/board/dictionaryboard.php?table=Dictionary&action=print&l=488
Evaluation이란 용어는 무언가의 가치를 평가해본다는 의미이다. 이것은 S/W와 H/W 전반에 걸쳐 사용되는 용어로서, 해당 제품을 구매하기 전에 샘플 혹은 데모버전으로서 사용해본다는 의미가 담겨있다.

Evaluation board란 주로 IC등의 성능을 테스트해보기위한 일종의 Jig board를 의미한다. 즉 실제로 똑같이 사용될지는 알수 없지만, 시스템 제작을 위해 해당 IC가 어느 정도 성능을 낼 수 있는지 보여주기 위해 IC제작사측에서 측정용 Jig board를 꾸리고 칩을 실장하여 만들게 된다.

RF에선 RFIC나 MMIC 등의 성능을 가늠해보고 튜닝성을 검증하기 위해 대부분 Evaluation board를 제공한다. 하지만 실제 사용될 시스템의 PCB에서는 특성이 많건 적건 변하게 되는데, 시스템 설계자가 해야되는 중요한 작업 중 하나가 바로 이러한 상황에 대한 튜닝 작업들이다.

그러므로 Evaluation Board 상의 소자 배치와 값을 그대로 믿고 쓰기보다는, 해당 RFIC/MMIC에서 끌어낼 수 있는 성능이 어떤 지를 검증해보기 위한 용도라고 보는 것이 더 적합하다.

수GHz 대역의 RFIC류는 이런 evaluation board가 기본적으로 제공될 수 있지만, 수십GHz 대의 MMIC의 경우는 패키징 자체가 매우 어려워서 bare chip으로만 제공하는 경우가 많다. 즉 사용자가 직접 패키징을 해서 성능을 검증해야 한다. 반면 특수하게 세라믹/에폭시 패키지를 응용하여 evaluation board를 제공하는 경우도 있지만 그리 많지는 않다.

 

 

 

 

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0

공부 배경 공부 및 목표 수립

 

1. Background

임베디드 시스템은 3가지 개발단계로 나눌 수 있음. ( 더 나눌 수 있지만...)

1) 하드웨어 개발 : 회로단

2) 펌웨어 : 쉽게말해 하드웨어를 제어하는 소프트웨어라고 표현들 하지만 그런 수준의 개발이 워낙 세부적으로 많아서 정확히 파악이 안됨. 부트로더와 디바이스 드라이버를 포함하는지도 의문이고. 펌웨어와 디바이스 드라이버 개발을 따로 보기도 하던데...

기본적인 동작. 예를들어 카메라의 기본적인 캡쳐 및 데이터 전송동작정도가 될 듯 싶다.

3) 소프트웨어 : 임베디드소프트웨어도 있고 유저 애플리케이션이라는 표현도 있어 정확히 어느 범주로 묶을지 헷갈린다. 

 

 

2. 보유 키트 

H-SMART4412TKU (FPGA, ATMEGA128, Exynos 4412 - 쿼드코어 1.4기가헬쯔)

STM324F407 discovery board

라즈베리파이 3, 4

아두이노 각 시리즈 및 센서

atmega128 및 연결 센서

 

 

3. 공부방향

1) RISC(ARM)에 대한 아키텍처 이해와 디지털회로(VHDL) 학습

2) 전자회로 지식 - 회로도 기본보는 연습(CAD 따라하는 방법도 좋다고 한다)과 오실로스코프 공부(전자회로 이름 붙은 책을 탐닉)

3) 리눅스에 대한 공부. 나는 Loader, kernel, root image, ramdisk 쪽 동작만 보면 될듯(이부분은 커널공부로 할것)

4) 통신 프로토콜, I/O Model 공부 - 방법을 몰라 일단 보류

5) 마이컴 학습 - 이부분은 심도있게..주 공부 범위로

 

Part 2

6) 리눅스 커널 공부. 전체적인 흐름만 알면 된다고 함(추천책 Uinx kernel 완전분석으로 가는길)

7) 펌웨어 공부 - 부트로더 공부가 핵심이라고 한다. PC와 다르게 임베디드에선 중요한 파트. 

                      보통 부트로더를 자신의 시스템에 맞게 변경하므로, 부트로더를 미리 이해놓는 것이 중요.

   ◦ 프로세서 초기화 루틴

   ◦ 프로세서 동작 환경 설정 루틴

   ◦ 프로세서 동작 환경 검사 루틴

   ◦ 주변 디바이스 초기화 루틴

   ◦ 주변 디바이스 이상 유무 검사 루틴

 

 

 

4. 계획

6월 ~30일 :

[FPGA] VHDL 분주 및 시계 등의 기본 로직 작성(키트기반)

[ARM] PWM 이용, 기본적인 내부 제어 신호(CortexM4)

[펌웨어] 부트로더 쪽 이론 공부

          

 

7월 1일 - 7월 15일 : 

[FPGA] VHDL 기반 mini 프로젝트(하드웨어 제어, 회로 구성 등)

[ARM] 보드간 통신? 실습 생각중

[펌웨어] 리눅스 커널 소스 분석(컴파일 및 포팅경험은 이미 있음)

'ARM+@' 카테고리의 다른 글

[D5] 2019.06.29  (0) 2019.06.29
[D4] 2019.06.28  (0) 2019.06.28
[D3] 2019.06.27  (0) 2019.06.27
[D2] 2019.06.26  (0) 2019.06.26
용어 정리*개념정리  (0) 2019.06.25
[D1] 6.25 background 공부 및 준비  (0) 2019.06.25

Comment +0