본문 바로가기

분류 전체보기42

임베디드 시스템 설계 예제3 - 시스템/공유데이터 처리 그리고 결론 예제의 마지막 파트입니다. 남은 내용의 볼륨이 크지 않아서 평소보다 짧으니 빠르게 함께 달려봅시다. 마찬가지로 같은 예제에서 이어져진행됩니다. [시스템의 진행에 대하여] 임베디드 시스템이 어떤 것을 처리하는 가장 일반적인 방식은 인터럽트 루틴이 태스크에게 어떤 일을 하도록 알리는 시그널을 보내는 것이라고 말한적이 있었죠. 이 시스템에서는 이런 것이 어떤 식으로 동작할까요? 사용자가 버튼을 누를 때마다, 버튼 하드웨어는 마이크로프로세서에게 인터럽트를 발생시킵니다. 버튼 인터럽트 루틴은 메시지를 버튼 처리 태스크에 보내고, 태스크는 메시지를 해석해서 필요하면 디스플레이 태스커와 프린터 태스크에 메시지를 전달합니다. 자꾸 얘기했다고 말하지만 어쩔 수 없이 계속 끄집어 오자면 시스템이 부표의 레벨을 읽고 넘치는.. 2020. 6. 18.
임베디드 시스템 설계 예제2 - RTOS 사용 결정과 태스크로 작업 분배 앞서 살펴본 임베디드 시스템 설계 예제에 이어서 추가적으로 알아야 할 내용들을 두 번에 걸쳐서 결론까지 이어가 보도록 하겠습니다. [RTOS 사용을 결정하려면] 먼저 RTOS 구조가 적합한지를 결정해야 합니다. 이 시스템에서 가장 덩치가 큰 부분은 탱크에서 가솔린의 양을 계산하는데 4~5초가 걸리는 부분인데 분명, 먼저 말했던 다른 제한 시간을 엄수하기 위해서 다른 작업에 필요할 때는 이 계산을 잠시 멈춰야 합니다. RTOS를 쓰지 않는다면, 제시한 시간보다 금방 걸리는 것들은 모두 인터럽트 루틴에서 실행되어야 합니다. 사용자가 버튼을 눌렀을 때, 시스템은 인터럽트 루틴에서 응답을 해야만 합니다. 사용자가 보고서를 인쇄하고 싶어 하면, 사용자는 태스크 코드에서 5초를 기다리거나 또는 인터럽트 루틴에서 보.. 2020. 6. 18.
임베디드 시스템 설계 예제1 - 설계의 절차와 타이밍 문제 해결 이제 임베디드 시스템을 설계해봅시다. 설계에는 과학적인 것만큼이나 예술적인 요소가 결부되는 탓에 세부 사항들의 경우 다른 의견을 가진 엔지니어들이 존재할 여지가 많습니다. 이번 목적은 모든 엔지니어들이 완벽하다고 생각하는 설계를 보여주는 것에 있는 게 아니라 설계의 절차를 보여주려는 것에 있습니다. 설계하게 될 지하 유류 저장 탱크 감시 시스템에 대한 요구의 개요를 봅시다. [설계할 시스템] 지하 유류 저장 탱크 감시 시스템 지하 유류 저장 탱크 감시 시스템은 8개의 지하 탱크들의 각각의 온도를 읽고 가솔린의 양을 측정해서 전체 시스템을 감시함. 탱크의 가솔린 양을 측정하기 위해서 마이크로프로세서는 어떤 탱크로부터 값을 읽을 것인지를 알려주는 명령어를 하드웨어에 보내야만 함. 하드웨어가 수 밀리세컨드가 .. 2020. 6. 13.
임베디드 시스템 설계 기본이론3 - 태스크 구조 추천 / 시분할 끌기 [필요할 수도 있지만 아닐 수도 있는 바로 그 태스크들] 다른 곳에서 볼 수 있는 시스템을 태스크로 나누는 몇 가지 제안과 그와 관련된 의견들에 대해 얘기해볼게요. 개별로 단순하게 되어 있는 아주 작은 태스크들을 많이 가져야 합니다. 단순하고 명료함은 언제나 추구되어야 할 목표지만 이미 말했듯 많은 데이터를 공유하기 때문에 세마포어들을 사용해야 하는 것과 많은 태스크 간 통신을 가져야만 하는 것, 그리고 태스크 전환에 소모되는 프로세서 시간이 시스템의 작업 처리량을 감소시키는 것이 트레이드오프로 작용합니다. 별도의 이벤트에 응답하기 위해서 필요한 작업에 대한 별도의 태스크를 가지세요. 문제가 발생하지 않을 때까지는 매우 멋진 생각임에 틀림없습니다. 그러나 task1과 2가 데이터를 공유하거나 서로 통신을.. 2020. 6. 11.