래빗 반도체

Rabbit Semiconductor
래빗 반도체 주식회사
산업마이크로컨트롤러
설립됨1983
본부,
주인님.디지 인터내셔널
웹사이트www.digi.com/lp/rabbit

래빗 반도체(Rabbit Semiconductor)는 마이크로컨트롤러와 마이크로컨트롤러 모듈로 구성된 래빗 제품군을 디자인하고 판매하는 미국 기업이다.개발을 위해 C의 비표준 방언인 Dynamic C를 멀티태스킹 전용 구조를 제공한다.

래빗반도체는 2006년 디지인터내셔널이 인수했다.[1]래빗반도체는 구매 전 Z월드가 임베디드 소프트웨어 개발 환경뿐만 아니라 임베디드 컨트롤러 제품을 개발, 제조한 사업부였다.

마이크로컨트롤러 아키텍처

Rabbit 프로세서 제품군은 Zilog Z80/Z180 프로세서와 많은 기능을 공유한다.예를 들어 Rabbit 2000/3000 프로세서의 레지스터는 Z80/Z180 프로세서의 레지스터와 거의 동일하다.Rabbit 4000 프로세서는 32비트 레지스터의 사용을 포함하도록 확장된다.Rabbit 프로세서의 명령 집합도 Z80/Z180 계열의 명령 집합과 매우 유사하다.많은 지침의 opcode는 Rabbit 2000/3000 프로세서와 Z80/Z180 프로세서 사이에서 동일하지만, 두 프로세서 제품군은 바이너리 호환성이 없다.Z80/Z180 제품군과 마찬가지로 Rabbit 프로세서는 CICS 프로세서다.

Rabbit 프로세서 제품군은 독특한 특징을 가지고 있다.예를 들어, Z80/Z180 제품군은 인터럽트가 인터럽트 서비스 루틴에 의해 서비스되면 인터럽트를 비활성화한다.그러나 Rabbit 프로세서는 우선순위(총 4개)에 따라 서비스 루틴을 인터럽트할 수 있도록 허용한다.

래빗반도체는 래빗 프로세서의 명령 집합이 C 코드에 최적화되어 있다고 주장한다.[2]

다이나믹 C

아마도 래빗 마이크로컨트롤러의 가장 주목할 만한 특징은 개발 환경일 것이다.래빗반도체 제품인 다이나믹C는 ANSI-C 표준에 비해 추가, 삭제, 불일치가 있다.

참고
(참조: 동적 C-Rabbit Semiconductor에 프로그램 포팅)

동적 C는 실현 가능하고 바람직한 경우 ISO/ANSI C 표준을 따른다.이 표준은 임베디드 시스템의 특수한 요구를 고려하지 않기 때문에 일부 영역에서는 표준에서 벗어나고 다른 영역에서는 바람직한 것이 필요하다.이 표준은 읽기 전용 메모리와 임베디드 어셈블리 언어와 같은 중요한 임베디드 시스템 문제를 고려하지 않는다.이 때문에 임베디드 시스템을 대상으로 하는 실용 컴파일러는 표준에 완전히 부합하지 않고, 가이드로 활용한다.

추가의 예로서, 동적 C는 다른 서브루틴에서 임의의 수의 체인으로 코드의 조각들을 체인화하는 체인 메커니즘을 가지고 있다.이 확장자는 초기화된 변수뿐만 아니라 프로그램이 주 기능에서 실행을 시작하기 전에 실행할 임의 코드를 사용할 수 있다.

삭제의 예로서 버전 10.23 Dynamic C는 블록 범위 변수나 비트 필드를 지원하지 않는다.개발 도구 체인은 별도의 전처리기 및 링커를 포함하지 않으므로 기존 프로그램을 컴파일러에 포팅하는 과정이 복잡해질 수 있다.10.64 버전부터는 변수에 대한 블록 범위가 지원된다.

불일치의 예로서, 동적 C는 모든 초기화된 전역 변수를 다음과 같이 선언된 것처럼 암묵적으로 처리한다.const한정자게다가, 모두const변수는 플래시 메모리에 있다.이전 버전의 Dynamic C는 의 사용을 확인하지 않았다.const매개 변수의 키워드—a를 전달할 수 있음const예상하지 못한 함수에 대한 매개 변수로서, 잠재적으로 플래시 메모리에 쓰기를 시도하게 된다.최신 버전의 Dynamic C를 기준으로 컴파일러는 사용자가 a를 수정하려고 할 때 오류를 발생시킨다.const직접 변수화되며, 사용자가 해당 항목을 무시하면 경고가 생성된다.const매개 변수를 함수에 전달할 때 한정자.

멀티태스킹 구성 요소

Dynamic C의 한 가지 주목할 만한 특징은 멀티태스킹을 단순화하기 위한 언어구성을 포함하고 있다는 것이다.이 구성들,costate진술과 더slice진술, 협력적 및 선제적 멀티태스킹의 형태를 각각 구현한다.예를 들어 주파수가 다른 두 개의 LED를 깜박이는 다음 프로그램을 생각해 보십시오.

공허하게 하다 본래의() {     하는 동안에 (1)     {         // LED를 전환할 2가지 비용 설명서를 만드십시오.         비용이 많이 들다         {             납1론();             를 기다리다(DelayMs(100));             led1off();             를 기다리다(DelayMs(50));         }         비용이 많이 들다         {             led2on();             를 기다리다(DelayMs(200));             led2off();             를 기다리다(DelayMs(50));         }     } } 

이 코드가 실행되면 첫 번째 비용 계산이 실행되며 첫 번째 LED가 켜진다.그러면 100밀리초를 기다리는 동안 비용 산출은 두 번째 진술서에 귀속될 것이다.두 번째 비용 산출은 유사한 방식으로 실행될 것이다.두 가지 비용 계산이 모두 시간이 경과하기를 기다리는 동안, 그 동안 루프는 바쁘게 대기하지만, 이 대기 시간은 잠재적으로 다른 작업을 수행하는 데 사용될 수 있다.자세한 내용은 Dynamic C 사용 설명서를 참조하십시오.

참고 항목

참조

외부 링크