임베디드 리눅스 시스템 스터디

Posted by ironmask84
2017. 9. 26. 23:46 나는 프로그래머다!/Linux



HW를 동작시키는 SW 중에는


OS가 없는 펌웨어를 제외하고,


OS를 탑재시키는 경우에 리눅스를 많이 사용합니다.


C언어 기반이어서 HW 호환성(chip set)이 좋을 뿐아니라, 

오픈소스이기 때문에 로열티없이 사용도 가능하기 때문이죠 :)


하지만, 상용 OS가 아니기에 서비스 지원이 따로 없으므로...

개발자들에게 높은 수준의 개발능력을 요구합니다..

안좋게 말하면, 개발자들이 죽쑤게 된다는 것이죠 ㅜㅜ



저 또한 약 1년 전부터 실무에서 BSP 레벨 개발 업무를 맡게 될 것을 대비하여

리눅스에 대해서 공부를 하려고 했습니다.

http://ironmask.net/297 )


하지만, 개인적 사정으로 8개월 정도 텀이 생기게 되었고...

현재는 라즈베리파이로 개인 스터디를 해보려 하고 있습니다.. ㅋㅋ

http://ironmask.net/349 )


5년 전쯤에 Android Porting & Structure 이란 교육을 받은 적이 있습니다.

회사에서 Android 업무를 늦게나마 (2012년에 받았지만, 안드로이드는 2009년부터 이미 시작되어 왔기에..)

부랴부랴 받았을 때, 리눅스에 대해 잠깐 배운 기억이 있습니다.

Android 도 리눅스 커널을 OS를 사용하기 때문이죠 :)

이 때 교육은 5일짜리 였습니다.


5년 후인 이번주에 임베디드 리눅스 시스템이란 교육을 받고 있는데요.

이 교육도 5일짜리 입니다.

5일로는 방대한 내용의 교육입니다만, 

교육 받는 것도 감지덕지 하면서 최대한 배우려 애를 써봅니다. ㅋㅋ


짧은 지식이지만, 앞으로 계속 정리해가는 차원에서

글 몇개 씨리즈로 올려보겠습니다. ^^


임베디드 시스템 개념 정리 : http://ironmask.net/384







 

컴퓨터 시스템과 임베디드 시스템 개념

Posted by ironmask84
2017. 9. 25. 23:56 나는 프로그래머다!/기초 다지기




임베디드 시스템?

전자제품을 동작시키는 SW와 HW를 통틀어 임베디드 시스템이라고 합니다.

전자제품이란 여러분이 잘 아시는 것처럼, 

전기밥솥, 세탁기, 냉장고 와 같은 가전에서부터 휴대폰, 자동차, 비행기 등 

첨단 전자제품 까지 20세기부터 매우 빠르게 발전해오고 있습니다.

최근엔 아두이노, 라즈베리파이와 같이 간단하게 임베디드 시스템을 

Study 할 수 있는 HW가 보급화되고 있습니다.

저 또한, 요즘 4차산업혁명에 핵심 키워드 중 하나인 IoT관련 부서에서 

업무를 맡게되어 많은 관심을 가지고 있고, 

라즈베리파이 개인 Study도 해보려고 하고 있습니다. 

http://ironmask.net/349


컴퓨터 시스템?

컴퓨터 시스템이라고 하면, 말 그대로 컴퓨터를 이용한 시스템입니다.

일반적으로 기업이나 관공서에서 관리하는 전산실 서버에서부터

기상청과 같이 특수하게 대량의 데이터 분석이 필요한 경우 등 다양하게 구성될 수 있습니다.

그리고 임베디드 시스템 또한, 컴퓨터 시스템 중에 하나입니다.

임베디드 기준으로 컴퓨터 시스템에 포함되는 개념들은 이렇습니다.

* HW

-MicroProcessor (요즘 CPU)

A microprocessor is a computer processor that incorporates the functions of a computer's central processing unit (CPU) on a single integrated circuit (IC),[1] or at most a few integrated circuits.[2] The microprocessor is a multipurpose, programmable device that accepts digital data as input, processes it according to instructions stored in its memory, and provides results as output. Microprocessors contain both combinational logic and sequential digital logic. Microprocessors operate on numbers and symbols represented in the binary numeral system.

ex)STM32, atmega128


좀 더 상세한 내용은 아래를 참조 해주세요.

마이크로프로세서

- 작은 실리콘 칩 위에 트랜지스터를 수천 만 개 집적한 소자

- 마이크로는 매우 작은 크기, 프로세서는 처리기 혹은 CPU를 뜻하므로 마이크로프로세서는 “매우 작은 처리기”를 의미

- 인텔에서 intel 4004라는 최초의 마이크로프로세서 개발(1971년)

 

마이크로프로세서의 2가지 형태

CPU형 마이크로프로세서

- CPU 기능 대부분을 칩 하나에 집적하고, CPU형 마이크로프로세서를 중심으로 ROM, RAM, 입출력장치 등을 추가하여

마이크로컴퓨터를 구성할 수 있다.

단일 칩 마이크로컴퓨터

- 마이크로컴퓨터에 들어가는 모든 부품들을 하나의 반도체 칩에 집적한 것

연산용과 제어용으로 분류하며, 제어용 단일 칩 마이크로컴퓨터를 마이크로 컨트롤러 라고 하고 8051,AVR, PIC 등이 있다.

마이크로프로세서의 분류

​메모리 구성 에 따라

폰 노이만 구조

- 데이터 영역과 프로그램 영역의 물리적인 구분이 없고 버스 크기도 동일

- 데이터와 프로그램 코드를 동일하게 취급하므로 데이터도 프로그램 코드에 함께 들어감

ex) 일반 데스크톱 PC​

하버드 구조

- 프로그램 버스와 데이터 버스가 별도로 있는 것이 특징이며 동시에 액세스가 가능한 방식. 데이터 메모리가 레지스터 파일 형태로 통합 관리

- 레지스터와 메모리간에 상호전송이 필요 없게 되어 명령어 수를 줄이고, 속도를 빠르게 할 수 있음

- 데이터 영역과 프로그램 영역이 물리적으로 구분되어 있고 각 버스의 크기들이 서로 다를 수 있음

- 데이터와 명령어를 분리해서 처리

ex) 8051, PIC, AVR

CMOS 구조

- 소비전력이 매우 적으며, 전달 특성이 우수하고 동작 전압의 범위가 넓음

​명령어 구조 에 따라

CISC(Complex Instruction Set Computer) 구조

- 복합 명령어 셋 컴퓨터’라는 의미를 지니는 방식이며, 대표적으로 인텔의 x86계열 CPU와 펜티엄 4도 이 방식을 사용

- CPU가 처리할 수 있는 명령어를 모두 내장하므로 CPU의 구조가 매우 복잡

- CISC 방식의 장점은 뛰어난 호환성에 있음

- 개인용 컴퓨터인 PC에 많이 사용. 8051은 CISC 방식

RISC(Reduced Instruction Set Computer) 구조

- 축소 명령어 셋 컴퓨터’라는 의미를 지니는 방식이며, 주로 대형컴퓨터나 워크스테이션에 사용

- CPU에 내장된 명령어를 줄여 보다 빠른 처리속도가 특징

- CPU의 구조를 보다 단순화

- 컴파일러에게 많은 짐을(연산과정)을 넘김으로써 CPU 내부 구조를 단순하게 제작

- 복잡한 명령어는 단순한 명령어를 조합해서 사용

프로그램이나 알고리즘을 신속하게 실행하기 위한 목적의 마이크로프로세서는 다양한 입출력 장치를 이용하여 자원을 관리하고 운영하는 장치이다.

마이크로컴퓨터는 마이크로와 컴퓨터가 결합된 용어로 작은 컴퓨터 시스템을 말한다.

마이크로컴퓨터는 작은 휴대용 시스템부터 휴대용 노트북, 스마트폰등 성능에 따라 여러 가지 기기에 이용되고 있다.



-MircoController (CPU를 탑재한 단일칩 형태의 컴퓨터)

A microcontroller is a small computer (SoC) on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals. Program memory in the form of Ferroelectric RAM, NOR flash or OTP ROM is also often included on chip, as well as a typically small amount of RAM. Microcontrollers are designed for embedded applications, in contrast to the microprocessors used in personal computers or other general purpose applications consisting of various discrete chips..

Microcontrollers are used in automatically controlled products and devices, such as automobile engine control systems, implantable medical devices, remote controls, office machines, appliances, power tools, toys and other embedded systems. By reducing the size and cost compared to a design that uses a separate microprocessor, memory, and input/output devices, microcontrollers make it economical to digitally control even more devices and processes. Mixed signal microcontrollers are common, integrating analog components needed to control non-digital electronic systems.

MCU를 통합시킨것 시킨 것, SOC(System On Chip)


-MicroComputer (일반적인 PC)

A microcomputer is a small, relatively inexpensive computer with a microprocessor as its central processing unit (CPU).[2] It includes a microprocessor, memory, and input/output (I/O) facilities. Microcomputers became popular in the 1970s and 80s with the advent of increasingly powerful microprocessors. The predecessors to these computers, mainframes and minicomputers, were comparatively much larger and more expensive (though indeed present-day mainframes such as the IBM System z machines use one or more custom microprocessors as their CPUs). Many microcomputers (when equipped with a keyboard and screen for input and output) are also personal computers (in the generic sense).[3]

기타 외부 장치( I/O핀 등)을 모듈화 시킨 것

ex)SBC(single Board Computer)


* SW

os를 사용 안한 하위제어

- 펌웨어 firmware

하드웨어와 소프트웨어 중간 http://blog.naver.com/kangusreport/220628959921

In electronic systems and computing, firmware[a] is a type of software that provides control, monitoring and data manipulation of engineered products and systems. Typical examples of devices containing firmware are embedded systems (such as traffic lights, consumer appliances, and digital watches), computers, computer peripherals, mobile phones, and digital cameras. The firmware contained in these devices provides the low-level control program for the device. As of 2013, most firmware can be updated.[2]


os를 사용한 상위제어
- platform 

Computing platform, a framework on which applications may be run

The term computing platform can refer to different abstraction levels, including a certain hardware architecture, an operating system (OS), and runtime libraries.[1] In total it can be said to be the stage on which computer programs can run.


-커널 Kernel(핵심) https://en.wikipedia.org/wiki/Kernel_(operating_system)
예)Linux, Ubuntu(Ubuntu (operating system), a Linux distribution)
Kernel (operating system), the central component of most operating systems(OS)


In computing, the kernel is a computer program that manages input/output requests from software, and translates them into data processing instructions for the central processing unit and other electronic components of a computer. The kernel is a fundamental part of a modern computer's operating system.[1]


To perform useful functions, processes need access to the peripherals connected to the computer, which are controlled by the kernel through device drivers. A device driver is a computer program that enables the operating system to interact with a hardware device.


리눅스는 커널이라는 말이 맞지만, 인터페이스(쉘), 어플리케이션이 있어야 사용가능 하므로 보통
리눅스 = "커널" + "인터페이스" + "어플리케이션"이라고 함
커널은 메모리를 관리하고 디스크를 관리하고, 그 밖으 모든 컴퓨터 자원을 관리하는 메인 프로세스입니다.
이 커널에 명령을 넣어줄 수 있는것이 인터페이스 입니다. 흔히들 쉘 이라고 불리웁니다. 즉 커널 자체만
으로는 입력이 없기 때문에 동작이 의미가 없고 사용자로부터 인터페이스를 통해 입력값을 주면 커널은
거기에대한 동작을 하거나 결과값을 내줍니다. 어플리케이션는 이러한 일련의 동작을 뭉터기로 모아서
커널에 명령을 전달하는 수단이 되겠습니다.

http://m.kin.naver.com/mobile/qna/detail.nhn?d1id=1&dirId=10302&docId=189452439&qb=7Jq07JiB7LK07KCc7JmAIOy7pOuEkCDssKjsnbTsoJA=&enc=utf8&section=kin&rank=1&search_sort=0&spq=0

Framework http://cafe.naver.com/openrt/6527

예)ROS로봇소프트웨어 개발하는데 필요한 것을 지원해주는 것
   GUI 기반의 소프트웨어 개발에 필요한 도구들을 제공 

Framework들은 복잡하게 구성이 되어 있는 로봇의 소프트웨어 요소들을 기반으로, 다른 어떠한 로봇 소프트웨어을 개발하고 연동시키는데 필요한 기능들을 제공합니다. 따라서, 본인이 로봇의 소프트웨어를 처음부터 끝까지 모두 만들 것이 아니라면, 이러한Framework들을 이용하는 것이 현명하며, 또한 Team-work을 통하여 로봇의 소프트웨어를 개발할때도, 상호연동의 편의성을 위하여 이러한 Framework를 사용하는 것이 좋습니다.

ROS 가 대표적인 예 입니다. ROS 는 ROS 의 각 요소(노드) 들이, 원활하게 데이터를 주고 받을 수 있는 메커니즘을 제공함과 동시에, 여러 명령어, 개발된 소프트웨어를 빌드할 수 있는 도구, 시뮬레이터와 같은 유용한 도구들을 제공하죠. 이렇게, 뭔가 통합적으로 제공되는것을 통틀어 프래임워크(Framework) 라고 합니다. 다음에는, 이러한 로봇 개발을 위한 프래임 워크에 대하여 살펴 보기로 하죠
좀 귀찮더라도, 로봇의 소프트웨어쪽을 하시고 싶으신 분들은, 반드시 framework기반으로 공부를 하시는 것을 권장 드립니다


Software framework, a reusable set of libraries or classes for a software system (or subsystem)
Application framework, used to implement the standard structure of an application for a specific operating system


- 미들웨어 Middleware 

소프트웨어의 중간 http://cafe.naver.com/openrt/6512 

운영체제와 응용프로그램 사이의 i/O나 통신

예) ROS


Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue".[1] Middleware makes it easier for software developers to perform communication and input/output, so they can focus on the specific purpose of their application. Middleware is the software that connects software components or enterprise applications. Middleware is the software layer that lies between the operating system and the applications on each side of a distributed computer network. Typically, it supports complex, distributed business software applications.


- 프레임워크=미들웨어,런타임,빌드도구 등

-applications

Application software, computer software designed to help the user to perform specific tasks

An application program (app or application for short) is a computer program designed to perform a group of coordinated functions, tasks, or activities for the benefit of the user. Examples of an application include a word processor, a spreadsheet, an accounting application, a web browser, a media player, an aeronautical flight simulator, a console game or a photo editor. The collective noun application software refers to all applications collectively.[1] This contrasts with system software, which is mainly involved with running the computer.

OS중 핵심구성요소 Kernel - FrameWork 중 Middleware  - applications

이 전체를 플랫폼이라고 함!


출처
http://kangusreport.blog.me/220629130686
http://blog.naver.com/dustmd0815/220807532921


'나는 프로그래머다! > 기초 다지기' 카테고리의 다른 글

유니코드 이해 하기  (0) 2017.09.19
디자인패턴  (0) 2017.04.01
윈도우 환경에서의 gcc  (0) 2016.10.31
SW 프로그램과 개발환경(리눅스)  (0) 2016.10.31