일상의 기계 (어플라이언스, 디지털 시계 등과 같은 컴퓨터 및 모바일 장치는 그렇게 많이 사용되지 않음)는 어떻게 프로그래밍됩니까? 코카콜라 자동 판매기의 프로그래밍에는 어떤 코드가 있습니까? 커피 메이커가 미리 프로그램 된 시간을 어떻게 받아들이고 나중에 시간이 지나면 커피 포트를 끓이기 시작합니까?
이러한 종류의 컴퓨터에는 운영 체제가 있습니까? 아니면 더 기본적인 것입니까? 어셈블리, C 또는 다른 언어로 작성 되었습니까?
그리고 가능한 경우 소스 코드를 사용하여 이러한 운영 체제 또는 기본 코드 시스템을 나열하는 리소스를 찾고 싶습니다. 누군가 그러한 자원을 알고 있다면 (검색하면 아무것도 얻지 못합니다) 환상적입니다.
답변
당신이 말하는 대부분의 C는 종종 사치품이없는 임베디드 기반 시스템입니다. 전통적인 의미의 소프트웨어는 없습니다. 대부분의 경우 소프트웨어는 C, 어셈블리 또는 머신 코드로 작성됩니다. C 및 ASM에서는 해당 플랫폼에 사용할 컴파일러를 작성해야합니다. 머신 코드는 바이너리 w / oa 컴파일러로 작성됩니다.
커피 포트와 가장 간단한 시스템에는 운영 체제가 없습니다. 그들은 단순히 메모리의 시작 주소에서로드하고 코드를 거기에 넣습니다. 이러한 시스템은 종종 시스템의 하드 드라이브 역할을하는 EEPROMS에 “코드”를 기록합니다. 프롬을 태운 후 코드를 조이고 칩을 버리고 칩 의 코드를 다시 태운 다음 다시 시작하십시오. 고급 디바이스가 테스트, 배포 등을보다 쉽게하기 위해 사용하는 최신 칩 FPGA가 있지만 그것들은 동일합니다.
코카콜라 기계, 라우터 등은 일반적으로 QNX, EMBOS와 같은 실시간 OS를 사용하거나 운이 좋으면 때때로 RTlinux를 사용합니다. 이들 중 대부분은 많은 돈으로 라이센스를 취득한 독점 OS이지만 C 컴파일러, 하드웨어와 함께 작동하는 드라이버 등이 있습니다.
http://www.segger.com/cms/embos.html
RTLinux
답변
그들은 마이크로 컨트롤러를 사용 하며 8051 은 고전입니다. 이들은 8 비트 또는 16 비트 코어이며 운영 체제가 거의 없습니다. 프로그래머는 코드를 작성하여 온보드 주변 장치를 초기화하고 인터럽트 처리기를 구현합니다. 사용되는 언어는 어셈블리와 C입니다. 힘든 디버깅 작업에는 회로 내 에뮬레이터가 필요합니다.
임베디드 버전의 Linux 및 / 또는 Java JVM을 부팅하는 32 비트 임베디드 코어 (ARM은 100 파운드 고릴라)를 사용하여 이보다 더 많은 공간이 있습니다.
답변
이들은 임베디드 시스템 이며 C 또는 어셈블리와 같은 매우 낮은 수준의 언어를 사용하여 프로그래밍됩니다. 일반적으로 이러한 시스템은 운영 체제없이 실행되지만 블루 레이 DVD 플레이어 및 무선 라우터와 같은 일부 최신 “매일의 컴퓨터”는 UNIX 기반 운영 체제에서 코드를 실행합니다.
최신 정보
다른 사람들의 말과 함께 많은 현대식 임베디드 시스템도 풍미있는 창문을 운영합니다. 응용 프로그램에 따라 다릅니다. 또한 많은 공간에서 운영 체제를 갖춘 더 강력한 플랫폼에서 실행하고 Java를 실행해야하는 Blue-ray 플레이어와 같은 경우를 처리하고 최종 사용자가 더 많은 기능을 원하는 다른 인스턴스를 처리하는 경향이 있습니다.
답변
데스크탑의 프로세서에 대해 생각해 봅시다. 머신 명령을 실행하는 것 자체만으로 “운영 체제”또는 “프로그램”에 대해서는 전혀 신경 쓰지 않습니다.
컴퓨터를 켜고 프로세서가 첫 번째 명령을 가리키고 실행을 시작합니다.
데스크탑에서 “운영 체제”실행을 시작합니다. 그러나 프로세서가 선택한 명령 세트를 실행할 수없는 이유는 없습니다. (여전히 화면에 결과를 출력하고 그 기능이 OS에 상주하기 때문에이 기능은 유용하지 않을 수 있습니다.) 동시에 기계 명령어가 올바른 opcode로 구성되어 프로세서가 출력되도록하는 경우 모니터에 그림을 그리는 올바른 신호 순서가 더 좋습니다. OS가 필요하지 않습니다.
데스크탑은 우리가 일반적으로 OS 추상화를 필요로하는 많은 일을 합니다. 그러나 핵심은 프로세서가 명령을 실행하는 것입니다.
콜라 머신 및 커피 머신의 프로세서와 동일합니다. 명령을 실행하기 만하면됩니다.
글쎄, 비트별로 기계 명령을 작성하는 것은 지루합니다. 따라서 데스크톱과 마찬가지로 일반적으로 C로 코드를 작성한 다음 머신 코드로 컴파일합니다. 해당 기계 코드는 내장 프로세서에로드되어 실행됩니다.
임베디드 시스템은 운영 체제가 불필요 할 정도로 작습니다 . 마이크로 컨트롤러는 일반 CPU 소켓의 핀 수에 비해 칩에 8 개 또는 16 개의 핀이있을 수 있습니다.
따라서 워크 플로는 일부 코드 (예 : C)를 작성하여 데스크톱 컴퓨터에서 컴파일합니다. 이 컴파일러는 임베디드 칩에 대한 머신 코드를 생성합니다. 그런 다음 해당 코드가 마이크로 프로세서에로드됩니다 (이 작업을 수행하려면 특별한 하드웨어가 필요합니다). 그러면 칩에 전원이 공급되고 명령어 실행이 시작됩니다. 단순한!
답변
특정 기능을 수행하는 많은 장치에는 “코드”가 없습니다. 전자 부품의 특성을 통해 기능을 수행합니다. 다양한 기능을 수행하거나 쉽게 업그레이드 할 수 있어야하는 고급 시스템에는 마이크로 컨트롤러와 일종의 “운영 체제”가 포함됩니다. 이것들은 여전히 기능에 한계가 있기 때문에 운영 체제는 간단하고 특별하게 설계됩니다. 더 발전함에 따라 장치에는 컴퓨터와 비슷한 것이 포함됩니다. 시스템의 다른 부분과 통신 할 수있는보다 복잡한 운영 체제를 갖습니다. 마지막으로, 스마트 폰과 같은 장치에는 사용자 수준 코드를 실행할 수있는 전체 운영 체제가 포함되어 있으며 간단한 장치보다 사용자 입력이 훨씬 많습니다. 하나, 최신 프로세서조차도 본질적으로 매우 큰 전기 회로입니다. CPU가 인식하는 모든 명령은 다른 회로를 사용하여 해당 기능을 수행합니다.
관심이있을만한 Wikipedia 페이지는 다음과 같습니다.
http://en.wikipedia.org/wiki/Electrical_engineering
http://en.wikipedia.org/wiki/Integrated_circuits
http://en.wikipedia.org/wiki/Electronic_engineering
http://en.wikipedia.org/wiki / Computer_engineering
http://en.wikipedia.org/wiki/Microcontroller
답변
그것은 매우 광범위한 질문이며 기계에 따라 크게 다릅니다. 나는이 자동 판매기의 대부분이 마이크로 컨트롤러 (8051, PIC, ARM7, 가장 많이 사용되는 이름을 지정 함)에 의해 제어되고 거의 OS가 없으며 추측 할 수있는 RTOS가 있다고 추측 할 수 있습니다. FreeRTOS .
DVD / BluRay 플레이어 또는 휴대폰과 같은보다 복잡한 시스템은 OMAP4 와 같은 복잡한 플랫폼에서 실행됩니다 . 일반적으로 Unix OS가 실행됩니다.
답변
일상적인 기기에서 사용되는 저가형 마이크로 컨트롤러는 일반적으로 운영 체제를 실행하지 않습니다. 그것들은 저렴한 비용으로 선택되며, 그 비용을 발생시키는 주요 요인은 칩의 핀 수 (수십에서 수백까지)와 내부의 메모리 양 (몇 킬로바이트에서 메가 바이트 ROM까지)입니다. 바이트에서 백 킬로바이트 RAM까지).
기능 크리프가 마법을 발휘함에 따라 전자 레인지가 멀티 태스킹해야 할 수도 있습니다. 이 경우 프로그래머는 운영 체제 과정을 리콜하고 필요에 따라 메시지 전달, 작업 예약, 비동기 I / O 등을 구현합니다!
물론, 편의성, 단순성, 코드 크기 등을 위해 기능은 기본적인 방식으로 수행되는 경향이 있습니다. 작업 별 코드 내에서 일반화 된 OS 기능을 찾기 위해 프로그램을 분석하는 방법에 따라 다릅니다. 그러나 하드 코딩 된 작업 스케줄러에서 운영 체제에 이르기까지 먼 길이며, 몇 킬로바이트 만 작업 할 때는 상용 OS가 해결책 이 아닙니다 .
저가형 MCU에 대해 알아 보려면 널리 사용되는 전자 부품 선택 사이트 인 DigiKey를 살펴보십시오. 다음 은 커피 머신에서 볼 수있는 LCD 컨트롤러가있는 매우 저렴한 MCU에 대한 정보입니다. 프로그래밍 매뉴얼과 모든 것을 쉽게 얻을 수 있습니다.