임베디드 개발을 하다보면 RTC라는 용어가 나옵니다.

 

RTC(Real Time Clock) 실시간시계 에 대해서 알아보겠습니다.

 

실시간 시계(實時間時計, 문화어: 실시간기계기구, Real Time Clock, RTC)는 현재의 시간을 유지시키는 컴퓨터 시계이다. 이 용어가 개인용 컴퓨터, 서버, 임베디드 시스템의 장치를 일컫기도 하지만, RTC는 정확한 시간을 유지해야 하는 거의 모든 전자 기기에 존재한다. 

RTC 없이 시간을 유지할 수 있지만[1], RTC를 사용하면 다음과 같은 이점이 있다:

  1. 전력 소비가 낮다.[2] (대체 전력에서 실행할 때 중요하다)

  2. 기본 시스템을 시간이 중요한 작업에서 떼어 놓을 수 있다.

  3. 가끔 다른 방식보다 더 정확하다. (개인용 컴퓨터의 RTC가 가끔은 덜 정확해도)

- 위키백과

 

RTC가 왜 필요한지 예를 들어서 설명해 드리겠습니다.

https://www.banggood.com/ko/DC-5V-3W-Mini-Portable-Pocket-LCD-Digital-FM-Radio-Speaker-USB-TF-AUX-MP3-Player-p-1358986.html?cur_warehouse=CN

 

라디오에 현재 시간을 나타내는 LCD(화면)가 있다고 생각해봅시다.

 

여기서 라디오에 전원을 끄면 시간은 어떻게 흘러갈까요??

 

만약 라디오의 MCU(전자제품의 뇌 같은 부품)에서 시간을 계속 증가시켜줘야한다면 전류가 많이 소모될 것입니다.

 

이를 방지하기 위해 따로 RTC를 장착하여 RTC에서만 따로 시간을 증가시켜주고

 

디오의 전원을 켜면 MCU와 RTC의 통신을 통해 MCU가 현재 시간을 얻고 화면에 현재시간을 출력해줄 수 있습니다.

 

 

이렇게 전자기기의 전원이 차단되어도 RTC는 소형 배터리나 슈퍼 캐패시터로 시간을 계속 흘러가게 해줍니다.

 

그리고 전자기기의 전원이 켜지면 RTC를 통해 현재의 시간을 알 수 있죠.

 

이렇게 소비전력을 낮추고 현재의 시간을 정확하게 알게 해주는 부품이 RTC입니다.  

임베디드 소프트웨어, 임베디드 시스템, 임베디드 프로그래밍 등등

 

임베디드라는 말을 많이 들어보셨을 겁니다.

 

 

임베디드 시스템(영어: embedded system, 내장형 시스템)은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다. 즉, 임베디드 시스템은 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템을 위한 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템이다. 전자 하드웨어와 기계 부분을 포함하는 전체 장치의 일부로 내장되었다는 의미에서 임베디드 단어가 사용되었다. 

 

나무위키 내용입니다.

위와 같은 보드를 많이 보셨을 겁니다.

 

위에서 4번과 같은 칩의 시스템을 임베디드 시스템이라고 부릅니다.

 

특정 기능을 위해 칩에 프로그래밍을 하여 장치에 내장시키는 것이죠.

 

내장!! = Embedded!!

 

여기서 장치는 예를 들면 스마트폰, 내비게이션, 냉장고, 전기밥솥, 청소기, 자동차 등이 있겠습니다.

 

전기밥솥을 예로 밥을 하고 싶다 하면 특정 버튼을 눌러 밥솥에게 명령을 줍니다.

 

그러면 밥솥의 임베디드 시스템이 미리 프로그래밍 되어있는 절차를 따라서 버튼의 입력을 받고 취사를 시작합니다.

 

이렇게 특정 기능을 수행하기 위해 임베디드 시스템은 존재합니다.

 

특정 기능을 수행하기 위해 그냥 PC를 탑재하면 되겠지만

 

공간적인, 비용적인 문제가 있기 때문에 적절한 MCU칩과 기타 회로, 코드를 활용하여 임베디드 시스템을 탑재합니다

 

그리고 임베디드 시스템은 임베디드 하드웨어와 소프트웨어로 구성되어있죠.

 

임베디드 하드웨어는 시스템이 특정 기능을 수행하기 위해 스위치가 구성되어 있다던지 온도센서가 있다던지

 

기능을 위해 구성이 달라집니다.

 

임베디드 소프트웨어도 마찬가지로 특정 기능을 수행하기위해 프로그래밍됩니다.

 

임베디드 시스템의 특징은 위와 같이 특정한 기능을 수행한다 말고

 

보통 실시간으로 처리되어야 하고 대량으로 만들어진다는 특징이 있습니다.

 

그리고 일반 학부생 때는 AVR, 아두이노와 같은 도구를 통해 임베디드 시스템을 경험할 수 있습니다.

 

좀 더 수준 높은 경험을 해보고 싶다라고 하면 ARM을 공부하면 되겠습니다.

'전자공학 > 임베디드' 카테고리의 다른 글

인터럽트 우선순위 (폴링, 데이지체인)  (0) 2019.10.18
폴링과 인터럽트 비교  (0) 2019.10.17
교착상태(deadlock)  (0) 2019.10.14
2019년 제6회 임베디드 기사 필기 후기  (0) 2019.09.22
RTC란??  (0) 2019.04.21

개발방법론이란? 

 

개발을 할 때에 좀 더 효율적이고 체계적으로 개발하기 위해 정리된 방법이라고 생각하시면 될 거 같습니다.

 

 

소프트웨어 개발 방법론 소프트웨어를 생산하는 데에 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여 프로그래머들이 프로그래밍 개발과정에서 각개인이 개발과정에서의 일관성을 유지하고 프로그래머들 간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론이다.

                                                                                                                                                       

출처 : 위키백과

 

 

검색을 하다보니 방법론에 심취하지 말고 개발이나 하자라는 의견들이 보이더라고요.

 

실질적인 개발이 우선적으로 중요한게 맞지만 초기에는 이런 체계도 중요하다고 생각합니다.

 

이제 개발방법론의 종류를 살펴보겠습니다.

 

*폭포수와 애자일 방법은 비교하여 많이 다루니 잘 봐주세요!

 

폭포수 모델 - 애자일 방법론 - V모델 - 나선형 모델 - 원형 패러다임

 

 

폭포수 모델 (Waterfall model)

고객이나 프로젝트 진행에서 원하는 것이 확실하여 후에 변경하지 않을 때 사용하면 좋은 방법론입니다.

 

폭포수 방법론은 프로젝트 시작 전에 계획을 확실히 수립하지만 애자일 방법론은 그렇지 않습니다.

 

애자일 방법론은 계획이 그때그때 수정될 수 있습니다.

 

진행사항을 쉽고 확실하게 파악할 수 있고, 프로젝트 관리 용이하다는 장점이 있습니다.

 

중간에 발생하는 사용자 요구사항에 대처하기 힘들다는 단점이 있습니다.

 

 

애자일 방법론(Agile)

출처 https://www.mk.co.kr/news/economy/view/2018/11/718895/

 

개발방법론을 검색하면 절대적으로 많이 나오는 애자일 방법론입니다.

 

빠르고 잦은 피드백을 통해서 짧은 주기로 제품을 개발하여 제품에 대한 피드백을 많이 받아

 

제품의 질을 향상시키는 개발 방법이며,

 

계획이나 문서가 아닌 실질적인 코딩을 중요시하고

 

짧은 개발 주기를 반복하여 위험 요소를 최소화시킨다는 중요한 특징을 가지고 있습니다.

 

 

세부적으로 본다면 개발 대상을 다수의 작은 기능으로 분할하여

 

하나의 기능을 하나의 반복 주기 내에 개발하는 방법하고 

 

이 반복 주기를 계속해나가며 하나씩 기능을 추가해 개발하는 것입니다.

 

 

중간중간 필요한 요소를 바꿔 변화에 대처할 수 있고 중간 중간 테스트를 하며 버그에 대처할 수 있다는 장점

 

정확한 계획이 없다면 비효율적이다는 단점이 있습니다.

 

 

가장 고객의 요구에 잘 대응할 수 있는 방법론입니다.

 

 

 

V 모델

출처 https://www.oss.kr

 

폭포수 모델에 테스트 단계 추가된 폭포수 모델의 확장된 형태로 볼 수 있습니다.

 

폭포수 모델은 문서, 산출물 중심으로 진행

 

단계가 명확하고 모든 단계마다 검증작업이 있어 오류를 줄일 수 있다는 장점이 있습니다.

 

테스트를 마지막 단계에 하기 때문에 기본적인 치명적인 문제가 처음에 간과될 수 있는 단점이 있습니다.

 

나선형 모델 (Spiral model)

 

출처 위키

 

소프트웨어의 리스크(위험)를 명백히 측정하는데에 좋은 모델입니다.

 

위험 분석이라는 요소가 추가되어 높은 위험도가 예상되는 경우에 사용합니다.

 

그림과 같이 나선형으로 돌면서 점진적으로 개발합니다.

 

비용이 많이 들고 복잡한 시스템을 개발하는데 유용하다는 장점이 있지만

 

프로젝트 관리가 복잡할 수 있다는 단점이 있습니다.

 

 

원형 패러다임 (Prototyping)

 

출처 https://m.blog.naver.com/PostView.nhn?blogId=whatclouds&logNo=220226873106&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

고객의 요구사항이 무엇인지 구체적으로 모르는 상황에서 간단한 시제품(Prototype)을 만들어 

 

피드백을 통해 고객의 요구사항을 만족해나가는 방법론입니다.

 

시제품을 확인함으로써 고객의 요구사항을 구체적으로 확인할 수 있는 장점이 있습니다.

 

하지만 시제품을 통해 오해를 불러올 수 있는 단점이 있습니다.

 

CAN통신을 들어보셨나요?



-위키백과(CAN버스)-


CAN(Controller Area Network)은 차량 내에서 호스트 컴퓨터 없이 마이크로 콘트롤러나 장치들이 서로 통신하기 위해 설계된 표준 통신 규격이다.


1983년 최초로 Bosch사에서 개발하였고 현재 생산되는 대부분의 자동차에서 사용되고 있다.


CAN통신은 OBD-II 라고 불리는 차량 진단용 통신 표준의 5대 프로토콜 중 하나로 포함되어 있다.


위 표준은 미국에서 판매되는 차량의 필수사항으로 적용되고 있다.


(출처 : 위키백과)





위키백과에서 대략적인 흐름을 잘 말해주고 있습니다.


즉 차량내에 ECU(Electronic Control Unit)들은 CAN방식으로 통신하고 있습니다.




(출처 : http://infialpha.com)


초기에는 UART방식으로 통신하였지만 UART는 일대일(Point to Point)방식으로 


ECU의 수가 증가하면 배선이 증가하게 되어서 관리도 힘들고 무게 측면에서도 비효율적이었습니다.


위의 UART의 단점을 CAN방식 통신은 극복하고 있습니다. 


(현재 자동차에는 인포테인먼트, 전기차의 배터리 등으로 ECU의 수가 증가하고 있습니다.)




CAN통신의 핵심은 차동방식이라고 생각합니다.


(http://www.epnc.co.kr)


이게 차동방식을 보여주는 신호 파형입니다.


보통 신호선과 GND선으로 구성되어있지만


CAN통신은 CAN_H, CAN_L와 GND로 구성되어있어 CAN_H, CAN_L의 차이로 신호를 파악합니다.


여기서 일반 신호선에 잡음이 들어가면 신호를 파악하기 힘들어지지만


CAN통신에서 CAN_H 와 CAN_L의 선은 보통 꼬여있습니다. 따라서 잡음이 비슷하게 적용됩니다.


결국 CAN_H와 CAN_L의 차이로 신호를 파악하면 잡음의 영향이 줄어들게 되는 강점이 있습니다.




CAN통신의 장점!!!!!


1. 노이즈에 강함


2. 저비용


3. 빠른 통신 속도(1Mbps)


4. 장거리 통신 가능(1km)




CAN통신을 살펴보다 보면 자동차에 사용되는 통신 용어중에 LIN과 FlexRay가 있습니다.



LIN(Local Interconnect Network)


가장 느리고 싸다.


따라서 자동차에서 비교적 고속이 필요하지 않은 부분에 사용한다. (비용 절감을 위해 - single wire)


FlexRay


가장 비싸지만 빠르고 안전하다.


CAN통신보다 더 빠른 속도를 요구하는 부분에 사용한다.


MOST(Media Oriented Systems Transport)


고속으로 멀티미디어 데이터를 전송할 때 사용한다.

Boost Convertor 원리를 시작적으로 매우 잘 설명하는 영상이 있어서


포스팅을 남깁니다.



부스트 컨버터 회로입니다.


http://ko.sino-ksolarinverter.com/news/dc-dc-converter-principle-9175992.html


간단히 정리해보겠습니다.


부스트 컨버터는 DC-DC컨버터로 입력 전압에 비해서 큰 출력 전압을 얻을 수 있습니다.


여기서 키포인트는 코일, 즉 인덕터가 에너지를 충전하는 역할을 한다는 것입니다.


정리하자면 스위치를 닫을 때 인덕터에 에너지가 충전되고 스위치를 열면 인덕터에 충전된 에너지가


커패시터로 갑니다. 


스위치를 열면 방출되는 에너지는 처음 흐르던 전류와는 반대의 극성을 가지는 기전력으로 나타나고 


이를 역기전력이라고 합니다. 이게 부스트 컨버터를 알려면 꼭 알아야하는 개념 "역기전력"입니다.


'전자공학 > 회로' 카테고리의 다른 글

래치와 플립플롭  (0) 2019.11.04
아날로그 회로 설계 4  (0) 2018.12.02
PCM과 BMS란??  (0) 2018.11.23
아날로그 회로 설계 3  (0) 2018.11.19
아날로그 회로 설계 2  (0) 2018.11.08

먼저 그 전에 기억에 남는 본받을만한 프로그래머는 누가 있었나 생각하게 되었습니다.


먼저 이두희님


멋쟁이사자처럼 활동을 했었어서 그런지


자신의 재능을 후배들 양성을 위해 무료로, 어떻게 보면 금전적으로 거기에다가 시간을 투자하여서


개인적으로 멋있다고 느꼈습니다.


(나는 저렇게 할 수 있을까?)


그리고 우리 교수님


자신이 가진 지식을 잘 활용하여 제품을 훨씬 편리하게 하는데 기여하신,


그리고 수업 중에도 항상 해당 이론이 물리적으로 무슨 의미를 가지고 있는지 강조 하셨습니다.



그리고 이번에 멋있다고 생각한 상상터전 개발자 반병형님




카이스트 인공지능 석사를 하시고 지금은 공인요원으로 근무 중이시다.


멋있다고 생각한 점은 불편하다고 생각하는 점을 행동으로 직접 옮겨 개선하는 점


군대 생활을 하면 얼마나 일처리가 무의미하고 비효율적으로 처리되는지 많이 느끼게 됩니다.


하지면 반병헌 님은 자신의 장점을 잘 살려서 그런 비효율적인 일을 코딩으로 자동화 시키는 등의


일을 해내십니다.


그리고 해당 블로그에 가면 위와 같은 글뿐만 아니라 스타트업을 하시면서 느낀 점의 글도 많으니


보시면 좋을 거 같습니다.


https://brunch.co.kr/@needleworm#articles




'전자공학 > 프로그래밍' 카테고리의 다른 글

리눅스 VS 유닉스  (1) 2019.04.28
소프트웨어 개발방법론  (2) 2019.04.02
프로그래밍 언어 순위  (0) 2018.12.01
C언어란? C언어 시작하기!  (0) 2017.11.10
HTML, CSS, JavaScript란? 간단히 알아보자!  (0) 2017.11.01

출처가 없는 이미지는 Digital Image Processing 교재 (Gonzalez 저자) 이미지입니다.


영상처리 수업에서 배운 내용을 정리한 포스팅입니다.


Intensity Transformation은 이미지의 명도가 사용자가 보기 불편할 때 편하게 해주는 변환입니다.



Power-law (gamma) transformations


https://tutorialhunk.com/power-law-transformation-in-digital-image-processing/



이미지를 위의 그래프에서 적절한 값을 찾아서 인풋 명도를 아웃풋 명도로 매칭시킵니다.



그러면 어두운 부분이 밝아지고 잘 보이지 않았던 영역을 잘 보고 판단할 수 있습니다.


반면에 밝은 부분의 차이는 적어질 수 있습니다.


Contrast Stretching


https://www.researchgate.net/figure/Explanatory-illustration-of-contrast-stretching-transformation_fig9_44650125    

Contrast stretching도 원하는 부분의 명도의 차이를 확대시켜 구별하기 좋게 변환하는 기법입니다.


Intensity level slicing

ict.udlap.mx/people/oleg/docencia/imagenes/chapter3/image_313_IS548.html



일종의 임계값을 줘서 원하는 부분을 밝게 보는 기법입니다.


특정 부위를 더 뚜렷하게 볼 때 사용할 수 있겠습니다.


Histogram Equalization

https://digitalpadm.com/image-contrast-enhancement-cumulative-histogram-equalization/


몰려있는 명도값들을 골고루 퍼뜨려 주는 기법입니다.


히스토그램의 PDF, CDF를 통해서 명도값들을 매칭해주고 재배치 시켜주면 


명도값들이 골고루 퍼지는 원리입니다.


제일 광범위하게 쓰입니다. 



스위칭 레귤레이터의 잡음은 일반적으로 복사 성분 혹은 전도 성분으로 나타난다.


실은 스위칭 레귤레이터의 잡음은 실제로 잡음이 아니고 레귤레이터 스위칭과 직접 연관된 고주파 잔여 성분이다.


급격하게 증가하는 스파이크는 스위칭 천이와 관련돼있다.


이러한 스파이크가 성능을 저하시키고 동작을 멈추게 한다.


잡음은 세 가지 경로로 인접 회로에 도달한다.


레귤레이터 출력 연결선을 통해 전도되고 구동 공급원으로 다시 전도돼 들어가고 그리고 복사된다.




다이오드 순방향 켜짐시간은 원래 문제가 안됐지만 클록속도가 빨라지면서 문제가 되기 시작했다.


다이오드 양단에 순간적인 오버슈트 전압을 발생시켜 과전압 스트레스를 줘서 문제가 된다. IC의 고장을 일으키기 때문


쇼트키 다이오드는 반응속도가 빠른 특성이 있다.



https://www.tf.uni-kiel.de/matwis/amat/semi_en/kap_8/backbone/r8_2_1.html



'전자공학 > 회로' 카테고리의 다른 글

래치와 플립플롭  (0) 2019.11.04
Boost Convertor 원리 영상  (0) 2018.12.21
PCM과 BMS란??  (0) 2018.11.23
아날로그 회로 설계 3  (0) 2018.11.19
아날로그 회로 설계 2  (0) 2018.11.08

검색 중에 프로그래밍 언어 순위를 보고 재밌어서 포스팅에 남깁니다. 


https://www.tiobe.com/tiobe-index/


1위는 자바!


웹 개발이나 앱 개발에 활발히 사용되고 있습니다.


2위는 C!


C는 뭐 언어의 가장 기본이죠. 워낙 광범위하게 사용되고 있습니다.


그리고 AI에 활발히 사용되고 있는 파이썬


빅데이터 R, 구글이 개발한 Go, 


공대생들이 많이 사용하는 Matlab!


 


FFT Fast Fourier Transform


FFT는 기존의 DFT(Discrete Fourier Transform)의 연산량을 극복하려고 나온 변환입니다.


DFT 포스팅입니다 -> https://kkhipp.tistory.com/3


과거의 하드웨어로는 DFT의 연산량을 커버하기에는 무리가 있었습니다.


DFT는 의 연산량이 필요하지만 FFT는 의 연산량으로 더 적은 양이 필요합니다.


FFT는 결국 DFT의 계산 과정에서 대칭성과 주기성을 사용하여 연산량을 줄이는 변환입니다.



FFT에서 많이 사용되는 알고리즘은 Cooley-Tukey 알고리즘 입니다.

https://en.wikipedia.org/wiki/Butterfly_diagram


그리고 FFT Cooley-Tukey 알고리즘 과정을 그려보면 위와 같은 그림이 나오는데


나비 모양과 비슷하다고 하여 Butterfly model, Butterfly operation 등으로 부릅니다.


+ Recent posts