Firmwares는 어떻게 전자 장치와 통신하여 운영을 수행합니까?

StackOverflow https://stackoverflow.com/questions/1761334

  •  21-09-2019
  •  | 
  •  

문제

거의 모든 전자 장치에는 단지와 함께 제공됩니다. 나는 그것이 ROM (읽기 전용 메모리)에 저장되어 있다는 것을 알고 있으므로 비 휘발성이된다 (RAM처럼 지워지는 내용물을 유지하는 데 필요한 전원이 없음).

내가 알고 싶은 것은 "Firmwares가 전자 장치와 어떻게 통신하여 운영을 수행 하는가?"입니다. 작은 롤러가 있다고 가정 해 봅시다. 버튼을 누르는 경우 어떻게 움직일 수 있습니까? 누군가가 뒤에있는 것을 설명하고, 그렇게하기 위해 무엇을 설명 할 수 있습니까?

또한 회사를 코딩하는 데 사용되는 가장 인기있는 언어는 무엇입니까?

도움이 되었습니까?

해결책

설명과 같은 최신 하드웨어에는 ROM에 저장된 프로그램과 해당 프로그램을 실행하는 CPU (All-Purpose Microcomputer)가 있습니다.

CPU는 주소 버스에 주소를 설정 한 다음 ROM에 해당 위치에 저장된 값을 알려달라고 요청하여 ROM의 정보를 읽습니다. ROM에 데이터 버스의 라인에서 값에 액세스 할 수 있도록 ROM에 알리기 위해 읽기 펄스가 올라가는 것과 같은 것이 있습니다. 그것은 간단히 말해서 읽고 있습니다.

하드웨어가 무언가를 할 수 있도록 CPU는 기본적으로 일종의 쓰기 작업을 실행합니다. 주소 버스에서 특정 장치를 선택하고 해당 장치에서 기능하는 경우 "쓰기"라는 다른 신호 라인을 올릴 수있는 값을 넣습니다. 주소 버스에서 주소를 인식하는 장치는 데이터 버스에서 데이터를 수락 한 다음 기능이 무엇이든 수행함으로써 해당 신호에 응답합니다. 일반적으로, 데이터 버스 비트 중 하나는 출력 장치 내에서 전원 출력 단계에 연결됩니다. 즉, 계산에 사용되는 트랜지스터보다 더 강한 트랜지스터는 일부 전기 장치를 전류로 연결하여 이동/글로우로 연결합니다. /무엇이든.

작고 저렴한 장치는 ROM 비용을 절약하기 위해 어셈블리 언어로 코딩됩니다. 산업량에서는 소량의 기억조차도 가격에 영향을 줄 수 있습니다. 어셈블리 언어는 CPU에만 해당됩니다. "8051", "6502"및 "Atmel (무언가 또는 기타)"이라는 일부 칩이 인기가 있습니다. 더 복잡한 요구 사항을 가진 더 큰 장치에는 펌웨어가 C 또는 C와 같은 방언으로 작성되어 어셈블러보다 프로그래밍을 좀 더 쉽게 할 수 있습니다. Bigges는 심지어 C ++ 코드를 실행합니다. 물론 편집되었습니다.

다른 팁

대부분의 시스템에는 I/O에 사용되는 특수 메모리 주소가 있습니다. 이러한 주소에 대한 읽기 및 쓰기는 데이터를 이동하는 대신 일부 기능을 실행합니다. X86 시스템에는 특별한 I/O 지침이 있습니다.

가장 간단한 경우를 일반 병렬 I/O (GPIO)라고하며 장치의 외부 전기 핀에서 직접 데이터를 읽거나 쓸 수 있습니다. 레지스터라는 몇 가지 메모리 주소가 있으며 포트에서 데이터를 읽을 수있는 여러 메모리 주소가 있습니다 (0 = 0 근처의 전압, 공급 전압 = 1), 포트에 데이터를 쓸 수 있으며 특정 핀이 있는지 여부를 정의 할 수있는 위치 입력 (해당 비트는 일반적으로 0) 또는 출력 (비트는 1). 모든 마이크로 컨트롤러에는 GPIO가 있습니다.

따라서 예에서 버튼은 소프트웨어가 이해할 수있는 입력에 설정된 핀에 연결할 수 있습니다. 그것은 일반적으로 10ms마다 이것을 수행하며 여러 판독에 대해 안정적인 값이있는 경우에만 반응합니다.이를 Decouncing이라고합니다. 그런 다음 일부 출력에 1을 기록하며, 증폭을 위해 일부 트랜지스터를 통해 모터를 구동 할 수 있습니다. 스위치를 해제한다는 것을 감지하면 0을 쓸어 모터를 다시 끄면이 프로그램이 장치를 끄기 전까지 실행됩니다.

다른 목적을위한 다른 I/O 장치는 일반적으로 수백 개의 레지스터를 제어하기위한 레지스터가 있습니다. 더보고 싶다면 일부 마이크로 컨트롤러의 데이터 시트를 살펴볼 수 있습니다. 예를 들어 여기에 있습니다 Attiny4/5/9/10의 데이터 시트, Atmel AVR 제품군의 매우 작은 컨트롤러.

오늘날 대부분의 펌웨어는 가장 작은 장치와 조립 언어로 작성된 재설정 및 인터럽트 처리를위한 작은 특수 코드를 제외하고 C로 작성됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top