KR20150024927A - 집적 회로 무선 - Google Patents
집적 회로 무선 Download PDFInfo
- Publication number
- KR20150024927A KR20150024927A KR1020157002104A KR20157002104A KR20150024927A KR 20150024927 A KR20150024927 A KR 20150024927A KR 1020157002104 A KR1020157002104 A KR 1020157002104A KR 20157002104 A KR20157002104 A KR 20157002104A KR 20150024927 A KR20150024927 A KR 20150024927A
- Authority
- KR
- South Korea
- Prior art keywords
- wireless communication
- firmware module
- software application
- integrated circuit
- communication device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/0003—Software-defined radio [SDR] systems, i.e. systems wherein components typically implemented in hardware, e.g. filters or modulators/demodulators, are implented using software, e.g. by involving an AD or DA conversion stage such that at least part of the signal processing is performed in the digital domain
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Mobile Radio Communication Systems (AREA)
- Transceivers (AREA)
Abstract
집적 회로 무선 통신 장치(1)는 프로세서(7), 메모리(13), 및 무선 통신 로직(7)을 포함한다. 메모리(13)는 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈(13)을 갖고, 펌웨어 모듈(23)은 미리 결정된 무선 프로토콜에 따라 무선 통신 로직(17)을 제어하기 위한 명령을 포함한다. 프로세서(7)는 각각이 관련된 관리자 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 펌웨어 모듈(23)에 있어서의 관리자 호출 핸들러를 기동하는 것 및 (ⅱ) 관리자 호출 번호를 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성된다. 소프트웨어 어플리케이션(27)은 장치(1)의 메모리(13)에 로드되고, 미리 결정된 어플리케이션 메모리 어드레스에 저장된다. 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 펌웨어 모듈(23)로부터 무선 통신 기능을 기동하도록 구성된다.
Description
본 발명은 집적 회로 무선 통신 장치 및 그러한 장치를 구성하는 방법에 관한 것이다.
집적 회로 무선 통신 장치는 전형적으로 프로세서, 메모리 및 무선 통신 로직을 실리콘 칩에 통합시킨다. 안테나는 실리콘상에 제작될 수 있거나 또는 외부적으로 연결될 수 있다. 장치는 파워 서플라이, 클록 소스 및 센서, 타이머, 디지털-아날로그 컨버터 및 출력 장치와 같은 임의의 외부 주변 장치에 연결하는 핀을 가질 것이다. 프로세서는 무선 메시지의 송신 및/또는 수신을 관리하기 위해 무선 통신 로직과 인터페이싱한다.
그러한 무선 통신 장치, 또는 칩은 무선 마우스 및 키보드, 게임 콘솔의 컨트롤러, 자전거 속도계, 리모트 컨트롤, 차고문 개폐기, 무선 스피커 등과 같은 폭넓은 무선 제품에서 사용될 수 있다.
그러한 디바이스에 있어서의 프로세서는 블루투스(등록상표) 또는 지그비(등록상표)와 같은 미리 결정된 무선 프로토콜에 따라 무선 통신 로직을 제어하기 위해 비휘발성 메모리로부터 직접 소프트웨어를 실행할 수 있다.
그러한 무선 통신 칩을 포함하는 무선 마우스와 같은 완전한 제품의 제조는 전형적으로 무선 칩을 제품의 나머지 부분에 통합시킬 것인 제품 제조자에게 무선 칩의 제조자가 무선 칩을 공급하는 것을 수반한다. 칩 제조자는 또한 크로스 컴파일러, 로더 및 디버거와 같은 툴을 포함하는 개발 키트 및 다큐멘테이션을 제공하는데, 이는 제품 제조자가 무선 장치를 위한 커스텀 어플리케이션 소프트웨어를 개발, 인스톨 및 디버그할 수 있게 해준다. 커스텀 어플리케이션 소프트웨어는, 예컨대, 무선 마우스의 움직임 센서로부터 입력을 수신하고 바람직한 프로토콜에 따라 적합한 무선 메시지를 송신하기 위한 루틴을 포함할 수 있다.
개발 키트는 칩 제조자에 의해 작성된 소프트웨어 라이브러리 및/또는 오퍼레이팅 시스템을 위한 소스 코드를 추가적으로 포함할 수 있다. 그 결과 제품 제조자는 공급된 소스 코드를 그 자신의 커스텀 소프트웨어 어플리케이션과 함께 컴파일 및 링킹하여, 각각의 칩의 메모리에 있어서의 미리 결정된 어드레스로 로딩되기 위한 단일 오브젝트 파일을 생성할 수 있다.
라이브러리 또는 오퍼레이팅 시스템은 특정한 무선 프로토콜을 구현하는 명령을 포함할 수 있다. 메모리 관리, 프로세서 스케줄링, 프로세스간 통신 등과 같은 다른 기능을 포함할 수 있다. 어플리케이션 개발자는 이들 공급된 기능을 처음부터 작성하는 대신 그 어플리케이션 코드로부터 호출할 수 있다. 이것은 어플리케이션 소프트웨어의 개발을 보다 간단하고 빠르게 할 수 있다. 그것은 또한 무선 칩의 상이한 모델 사이의 이식성을 용이하게 할 수 있다.
하지만, 본 출원인은 그러한 전통적인 접근법은 개선될 수 있는 것을 깨닫게 되었다.
한 측면으로부터, 본 발명은 집적 회로 무선 통신 장치를 구성하는 방법을 제공하고, 상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고, 상기 메모리는 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈을 갖되, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하고, 상기 프로세서는 각각이 관련된 관리자(supervisor) 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는(invoke) 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고, 상기 방법은 소프트웨어 어플리케이션이 미리 결정된 어플리케이션 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 소프트웨어 어플리케이션을 로드하는 단계를 포함하되, 상기 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성된다.
따라서 본 발명에 따르면, 무선 제어 기능을 제공하는 펌웨어 모듈과 관리자 호출 명령을 거쳐서 인터페이싱을 하도록, 소프트웨어 어플리케이션이 무선 통신 칩에 로드될 수 있는 것이 당업자에 의해 이해될 것이다.
이것은 소프트웨어 어플리케이션 개발자가 어플리케이션 코드를 칩 제조자에 의해 공급되는 라이브러리 또는 오퍼레이팅 시스템과 링크할 필요성을 없애기 때문에, 보다 간단하고 보다 효율적인 개발 프로세스가 얻어진다. 링크 시간 의존성이 필요하게 되는 것을 피하는 것에 의해, 소프트웨어 어플리케이션의 개발 중에 발생하는 버그의 가능성은 저감될 수 있다. 연속적인 개발 단계에서 무선 제어 기능을 제공하는 펌웨어 모듈을 계속 링킹할 필요가 없기 때문에, 메모리에 있어서의 멤버 오브젝트의 위치는 개발 프로세스 동안 변하지 않을 수 있다. 이러한 메모리 위치에 있어서의 연속성은 버그가 발생하는 것을 피할 수 있고 또한 에러가 발생한 경우 디버그하는 것에 도움이 될 수 있다.
바람직한 실시 형태에서, 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈은 링크된 바이너리이다. 따라서 펌웨어 모듈과 소프트웨어 어플리케이션 사이의 링킹이 필요하지 않거나, 또는 심지어 가능하지도 않다. 펌웨어 모듈은, 머신 코드로부터 직접 어셈블될 수 있는 것이 가능함에도 불구하고, 보통 컴파일된 바이너리 모듈(예컨대 C 프로그래밍 언어로부터 컴파일됨)일 것이라고 예상된다.
소프트웨어 어플리케이션을 개발하기 위해, 어플리케이션 개발자가 알아야 할 유일한 비표준 정보(즉 프로세서 또는 장치 구조에 의해 결정되지 않는다)는 미리 결정된 소프트웨어 어플리케이션 메모리 어드레스, 소프트웨어 어플리케이션이 사용 가능한 (예컨대 RAM에 있어서의) 임의의 데이터 메모리의 양에 관한 정보, 펌웨어 모듈에 있어서 관리자 호출 번호와 무선 통신 기능 사이의 미리 결정된 대응 관계이다. 이 정보는 장치를 위한 소프트웨어 어플리케이션을 작성, 컴파일 및 로드하기에 충분할 수 있다. 어플리케이션 개발자는 이 정보를 포함하는 (예컨대 C 프로그래밍 언어에 있어서의) 헤더 파일을 편리하게 제공받을 수 있는 것이 예상된다(물론, 그러한 헤더 파일은 어플리케이션 개발자에게 또 다른 도움을 주기 위한 다른 추가적인 특징을 선택적으로 포함할 수 있다).
본 발명의 방법에 따라 장치를 구성하는 것의 다른 이점은 장치 제조자가 그 펌웨어 모듈 내의 비밀 소스 코드를 어플리케이션 개발자에게 공개할 필요가 없다는 것이다.
집적 회로 장치는 장치에 이미 미리 로드된 펌웨어 모듈을 소프트웨어 어플리케이션의 개발자에게 제공될 수 있다. 이것은 펌웨어 모듈에 포함되는 모든 비밀 정보의 보안을 더 향상시킬 수 있다. 하지만, 이것은 필수적이지 않다. 어플리케이션 개발자는 대신에 미리 컴파일된 명령의 바이너리 이미지로서 펌웨어 모듈을 수신하고 또한 펌웨어 모듈을 장치에 로드할 수 있다.
따라서, 다른 측면으로부터, 본 발명은 집적 회로 무선 통신 장치를 구성하는 방법을 제공하되, 상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고, 상기 방법은 소프트웨어 어플리케이션이 미리 결정된 어플리케이션 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 소프트웨어 어플리케이션을 로드하는 단계와, 펌웨어 모듈이 미리 결정된 펌웨어 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 펌웨어 모듈을 로드하는 단계로서, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하는 단계를 포함하고, 상기 프로세서는 각각이 관련된 관리자 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고, 상기 소프트웨어 어플리케이션은 기동될 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성된다.
펌웨어 모듈 및 소프트웨어 어플리케이션은 임의의 순서로 또는 실질적으로 동시에 장치에 로드될 수 있다. 이들 2개를 동시에 로드하는 것은 당업자가 과거에 했었을 수도 있는 1개의 링킹된 소프트웨어 어플리케이션 및 라이브러리를 로드하는 것과 여전히 근본적으로 다르다는 것이 이해될 것이다. 이전과 같이, 펌웨어 모듈은 바람직하게는 컴파일되고 링크된 바이너리 모듈이다(하지만 소프트웨어 어플리케이션에 링크되지 않는다).
본 발명은 또한 집적 회로 무선 통신 장치 자신까지 미친다.
따라서, 제 3 측면으로부터, 본 발명은 집적 회로 무선 통신 장치를 제공하고, 상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고, 상기 메모리는 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈을 갖되, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하고, 상기 프로세서는 각각이 관련된 관리자 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고, 상기 메모리는 미리 결정된 어플리케이션 메모리 어드레스에 저장되는 소프트웨어 어플리케이션을 갖되, 상기 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성된다.
다른 측면으로부터, 본 발명은 프로세서, 메모리, 및 무선 통신 로직을 포함하는 집적 회로 무선 통신 장치상에서 펌웨어 메모리 어드레스에 로드되기 위한 펌웨어 모듈과, 이 펌웨어 모듈을 저장하는 일시적 또는 비일시적 매체를 제공하고, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령, 및 관리자 호출 명령에 관련된 관리자 호출 번호에 대응하는 무선 통신 기능을 행하는 것에 의해 소프트웨어 어플리케이션에 의해 발행되는 관리자 호출 명령에 응답하도록 구성되는 관리자 호출 핸들러를 포함한다.
펌웨어 모듈은 바람직하게는 링크된 바이너리 모듈이다.
또 다른 측면으로부터, 본 발명은 프로세서, 메모리, 및 무선 통신 로직을 포함하는 집적 회로 무선 통신 장치상에서 미리 결정된 소프트웨어 어플리케이션 메모리 어드레스에 로드되기 위한 소프트웨어 어플리케이션과, 이 소프트웨어 어플리케이션을 저장하는 일시적 또는 비일시적 매체를 제공하고, 상기 소프트웨어 어플리케이션은 기동될 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 무선 통신 기능을 기동하도록 구성된다.
상기 측면들 중 하나의 바람직한 실시 형태에서, 상기 펌웨어 모듈은 상기 펌웨어 모듈에 의해 제공되는 모든 무선 통신 기능이 번호와 기능 사이의 미리 결정된 대응 관계에 따라 각각의 관리자 호출 번호를 갖는 관리자 호출 명령에 의해 기동되도록 구성된다. 이러한 방법으로, 펌웨어 기능을 기동하는 다른 메커니즘이 장치에 의해 지원될 필요가 없으므로, 상당한 정적 링크 또는 런타임 링크 의존성을 피하고, 장치 및 소프트웨어 어플리케이션의 개발을 간소화한다.
펌웨어 모듈은, 반드시 무선 통신에 관련될 필요가 없는, 소프트웨어 어플리케이션이 기동할 수 있는 다른 기능, 예컨대 암호화 알고리즘을 제공할 수 있다는 것이 이해될 것이다. 바람직하게는 장치는 그러한 모든 기능을 기동하는 것이 관리자 호출 명령을 발행하는 것에 의해 행해지도록 구성된다.
장치의 실시 형태는 종래의 완전한 오퍼레이팅 시스템을 포함할 필요가 없기 때문에, 어플리케이션 개발자는 칩 제조자에 의해 공급되는 사유의(proprietary) 오퍼레이팅 시스템과 어떻게 인터페이싱할지를 배울 필요 없이 프로세서 구조에 대한 네이티브 어플리케이션으로서 소프트웨어 어플리케이션을 자유롭게 개발할 수 있다. 특히 프로세서가 해당 분야에서 잘 알려져 있을 때, 이것은 어플리케이션 개발자에게 특히 매력적인 특징이다.
장치가 펌웨어 모듈에 더하여 하드웨어 추상화(abstraction) 계층을 갖는다면, 소프트웨어 어플리케이션은 이 계층과 직접 인터페이싱할 수 있다. 어플리케이션 특유의 드라이버도 장치에 로드될 수 있다.
장치를 구성하는 것은 소프트웨어 어플리케이션을 컴파일할 때 관리자 호출 번호와 무선 통신 기능 사이의 대응 관계를 사용하는 것을 포함할 수 있다. 소프트웨어 어플리케이션을 컴파일 또는 로드하는 것은 미리 결정된 소프트웨어 어플리케이션 메모리 어드레스를 사용할 수 있다. 몇몇의 실시 형태에서, 장치를 구성하는 것은 관리자 호출 번호와 무선 통신 기능 사이의 대응 관계를 수신하는 것 및/또는 미리 결정된 소프트웨어 어플리케이션 메모리 어드레스를 예컨대 헤더 파일로서 수신하는 것을 포함할 수 있다. 그 다음 그러한 정보는 소프트웨어 어플리케이션을 컴파일할 때 사용될 수 있다.
장치는 장치에서 소프트웨어 어플리케이션을 실행할 때 런타임 링킹이 요구되지 않도록 바람직하게 구성된다.
프로세서는 관리자 호출 명령을 임의의 적절한 방법으로 실행할 수 있다. 바람직한 실시 형태의 한 세트에 있어서, 프로세서는 Cortex-M 계열로부터의 프로세서와 같은 ARM Ltd.(등록상표) 프로세서이고, 관리자 호출 명령은 프로세서에 의해 지원되는 SVC 명령이다.
소프트웨어 어플리케이션은 전용 SVC 프로세서 명령을 실행하는 것에 의해 관리자 호출 명령을 발행할 수 있다. 그러한 명령은 예컨대 개발자가 소프트웨어 어플리케이션을 위한 소스 코드 내에 특정한 프리프로세서 지시(directive)를 포함시키는 것에 의해, 소프트웨어 어플리케이션을 컴파일할 때 컴파일러에 의해 생성될 수 있다.
관리자 호출과 관계되는 번호는 레지스터를 거쳐서 또는 호출 스택을 거쳐서 또는 임의의 다른 적절한 메커니즘을 거쳐서 호출 핸들러가 이용할 수 있게 될 수 있다.
바람직하게는, 프로세서 및/또는 소프트웨어 어플리케이션은 관리자 호출 핸들러가 1개 이상의 인수의 값을 이용할 수 있게 하도록 구성된다. 이러한 방법으로, 소프트웨어 어플리케이션은 송신될 데이터와 같은 인수(argument)를 무선 통신 기능에 전달할 수 있다. 호출 핸들러는 무선 통신 기능으로부터 소프트웨어 어플리케이션으로 리턴값을 전달할 수 있다.
프로세서는 바람직하게는 소프트웨어 어플리케이션으로부터의 관리자 호출 명령을 예외(소프트웨어 인터럽트)로서 처리하도록 구성된다. 이러한 방법으로, 소프트웨어 어플리케이션은 긴급을 요하는(time-critical) 무선 통신 기능을 기동될 필요가 있을 때 보다 덜 긴급을 요하는 처리를 인터럽트할 수 있다.
프로세서는 바람직하게 복수의 인터럽트 우선도를 지원한다. 몇몇의 실시 형태에서, 펌웨어 모듈에 있어서의 몇몇의 이벤트 구동형(event-driven) 기능은 비교적 높은 우선도가 할당되지만, 다른 것들은 비교적 낮은 우선도가 할당된다. 바람직하게는, 긴급을 요하는 무선 통신 동작과 관계되는 기능은 비교적 높은 우선도가 할당된다.
소프트웨어 어플리케이션은 인터럽트(하기와 같이 펌웨어 모듈에 의해 전송된다)를 처리하도록 구성될 수 있고 또한 몇몇의 이벤트 구동형 기능에 대해서는 비교적 높은 우선도를 그리고 다른 것들에 대해서는 비교적 낮은 우선도를 가질 수 있다. 소프트웨어 어플리케이션 우선도는 바람직하게 펌웨어 모듈의 우선도와 인터리브된다. 가장 높은 펌웨어 우선도 레벨은 바람직하게, 펌웨어 모듈에서 실행되는 중대한 무선 통신 동작이 항상 소프트웨어 어플리케이션에 우선할 수 있도록, 가장 높은 소프트웨어 어플리케이션 우선도 레벨보다 높다. 이것은 소프트웨어 어플리케이션에 있어서의 부주의한 프로그래밍으로부터의 보호를 제공할 수 있다.
펌웨어 모듈은 바람직하게는 펌웨어 모듈이 인터럽트를 수신하는 것에 응답하여 소프트웨어 어플리케이션에서의 기능을 기동하도록 구성된다. 그러한 인터럽트는 예컨대 움직임 센서와 같은 주변 장치로부터 발생할 수 있다.
펌웨어 모듈 및 소프트웨어 어플리케이션의 각각은 각각의 인터럽트 벡터 테이블을 가질 수 있다. 2개의 테이블은 바람직하게 서로 동일한 인터럽트 벡터 어드레스 오프셋을 사용한다. 펌웨어 모듈의 벡터 테이블(또한 나아가서는 펌웨어 모듈과 소프트웨어 어플리케이션이 동일한 오프셋을 사용할 때 소프트웨어 어플리케이션의 벡터 테이블)에 있어서의 인터럽트 벡터 어드레스의 오프셋은 전형적으로 프로세서 아키텍처에 의해 고정된다. 장치는 바람직하게 인터럽트를 처리할 때 펌웨어 모듈의 벡터 테이블을 (즉 시스템 인터럽트 벡터 테이블로서) 사용하도록 구성된다.
하지만, 펌웨어 모듈은 바람직하게 펌웨어 모듈이 자신을 처리하도록 프로그램되지 않은 모든 인터럽트가 소프트웨어 어플리케이션에 전달되도록 구성된다. 이것은 특정한 인터럽트를 처리하도록 구성되지 않을 때마다 펌웨어 모듈이 소프트웨어 어플리케이션의 벡터 테이블에서의 대응하는 오프셋에 포함되는 어드레스로 실행을 분기하게 하는 것에 의해 구현될 수 있다. 이것은 소프트웨어 어플리케이션이 미리 결정된 메모리 어드레스에 로드되어, 어플리케이션이 장치에 로드되면 소프트웨어 어플리케이션의 벡터 테이블이 있는 곳을 펌웨어 모듈이 미리 알 수 있기 때문에 가능하다.
예컨대, 몇몇의 실시 형태에서 RESET 인터럽트 핸들러 어드레스는 컴파일러에 의해 항상 오프셋 = 0에 위치된다. 따라서, 펌웨어 모듈의 벡터 테이블에서의 RESET 핸들러 어드레스는 메모리에서 어드레스 0x0000 0000 + 0 = 0x0000 0000일 것이다. 소프트웨어 어플리케이션의 벡터 테이블에서의 RESET 핸들러 어드레스는 어드레스 CLENR0 + 0 = CLENR0이고, 여기서 CLENR0은 소프트웨어 어플리케이션이 위치되는 미리 결정된 베이스 메모리 어드레스이다.
이 인터럽트 포워딩 메커니즘은 어떠한 펌웨어 모듈도 장치에 존재하지 않았던 경우와 실질적으로 동일한 방법으로 소프트웨어 어플리케이션이 하드웨어 인터럽트를 처리하도록 편리하게 프로그램될 수 있게 한다. 즉 펌웨어 모듈은 인터럽트를 수신할 목적으로 소프트웨어 어플리케이션에 보이지 않을 수 있다. 포워딩은 바람직하게 소프트웨어 어플리케이션으로의 직접적인 하드웨어 인터럽트에 비하여 약 30개의 명령보다 적은 또는 약 3마이크로초보다 적은 대기 시간(latency)을 부가하는 방법으로 실행된다.
펌웨어 모듈은 실질적으로 디스에이블되도록 구성될 수 있다. 그러한 디스에이블은 펌웨어 모듈로의 호출(바람직하게는 SVC 메커니즘을 사용한다)을 거쳐서 실행될 수 있다. 펌웨어 모듈을 디스에이블하는 것은 리소스를 소프트웨어 어플리케이션에 돌려주기 위해 펌웨어 모듈로 하여금 프로토콜 스택을 리셋하게 하고 임의의 메모리 보호를 디스에이블하게 하도록(존재한다면) 할 수 있다. 디스에이블되면, 펌웨어 모듈은 바람직하게 모든 인터럽트를 소프트웨어 어플리케이션에 포워딩한다(그렇지 않은 경우에 스스로 처리할 수 있는 것까지도).
프로세서는 바람직하게 하나의 인터럽트 우선도 레벨로부터 다른 레벨로의 끊김없는(seamless) 천이를 지원한다. 이것은 때때로 테일 체이닝(tail-chaining)으로 불린다. 이것은 긴급을 요하는 무선 통신 기능이 필요한 경우에 우선권을 얻게 하도록 소프트웨어 어플리케이션과 펌웨어 모듈 사이(반대도 마찬가지)의 제어를 전송하는 명확한 수단을 제공한다.
장치는 바람직하게 메모리 액세스 명령을 인터셉트하도록 구성되는 메모리 보호 로직을 포함한다. 이 로직은 프로세서와 메모리 사이에 위치될 수 있다. 그것은 액세스를 허용할지 여부를 결정하기 위해 메모리 액세스 명령의 위치(즉 프로세서가 명령을 판독한 곳)를 사용할 수 있다. 메모리 보호 로직은 바람직하게 소프트웨어 어플리케이션이 펌웨어 모듈을 판독하거나 또는 오버라이트하는 것(또는 양쪽 모두)을 막도록 구성된다.
그러한 메모리 보호는 펌웨어 모듈에 있어서의 민감한 정보가 소프트웨어 어플리케이션의 개발자에 의해 판독되는 것을 보호하는 이득을 제공할 수 있다. 그것은 또한 소프트웨어 어플리케이션에 있어서의 버그의 검출 및 정정에 도움이 될 뿐만 아니라 소프트웨어 어플리케이션에 있어서의 프로그래밍 에러로부터의 잠재적인 피해를 최소화할 수 있다.
메모리 보호 로직은 펌웨어 모듈과 관계되는 RAM이 소프트웨어 어플리케이션에 의해 판독되거나 또는 기록되는 것(또는 양쪽 모두)을 보호하도록 구성될 수 있다.
프로세서, 메모리, 및 무선 통신 로직은 바람직하게 하나의 실리콘 칩에 통합된다. 하지만, 그들은 멀티 칩 모듈에 통합될 수도 있다.
메모리는 바람직하게 EEPROM 또는 플래시와 같은 비휘발성 메모리이다. 그것은 바람직하게 펌웨어 모듈 및 소프트웨어 어플리케이션이 메모리로부터 직접 실행될 수 있도록 랜덤 액세스 판독을 지원한다.
당업자는 장치가 전형적으로 휘발성 메모리도 포함할 것을 이해할 것이다. 그것은 추가적으로 1개 이상의 주변 장치를 포함할 수 있다. 그것은 전력 및 클록 신호를 수신하기 위한 접속을 가질 수 있다. 그것은 안테나를 위한 접속을 가질 수 있다. 그것은 직렬 접속과 같은 1개 이상의 입력 및/또는 출력 인터페이스를 가질 수 있다.
여기에 설명된 한 측면 또는 실시 형태의 선택적인 또는 바람직한 특징은 적합한 모든 경우에 임의의 다른 측면 또는 실시 형태에 적용될 수 있다.
본 발명의 특정한 바람직한 실시 형태는 첨부 도면을 참조하여 단지 일례로서 이하에 설명될 것이다.
도 1은 본 발명을 구체화하는 마이크로컨트롤러의 개략도이다.
도 2는 마이크로컨트롤러 구성 내의 주요 소프트웨어 구성 요소를 나타내는 개략도이다.
도 3은 마이크로컨트롤러에 대한 개략적인 메모리 맵이다.
도 4는 상이한 프로세서 인터럽트 우선도 레벨의 모식도이다.
도 5(a)-5(c)는 다양한 인터럽트 시나리오를 도시하는 모식도이다.
도 6은 펌웨어 모듈에서의 기능을 호출하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 7은 내부 기능을 기동하기 위해 시스템 호출을 사용하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 8은 하드웨어 인터럽트를 수신하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 1은 본 발명을 구체화하는 마이크로컨트롤러의 개략도이다.
도 2는 마이크로컨트롤러 구성 내의 주요 소프트웨어 구성 요소를 나타내는 개략도이다.
도 3은 마이크로컨트롤러에 대한 개략적인 메모리 맵이다.
도 4는 상이한 프로세서 인터럽트 우선도 레벨의 모식도이다.
도 5(a)-5(c)는 다양한 인터럽트 시나리오를 도시하는 모식도이다.
도 6은 펌웨어 모듈에서의 기능을 호출하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 7은 내부 기능을 기동하기 위해 시스템 호출을 사용하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 8은 하드웨어 인터럽트를 수신하는 소프트웨어 어플리케이션을 도시하는 소스 코드 요소의 모식도이다.
도 1은 저항-용량 발진자를 포함할 수 있고/있거나 오프-칩 수정 발진자(도시하지 않음)로부터 입력을 수신할 수 있는 클록 로직(3), 전력 관리 회로(5), 프로세서(7)(예컨대 ARM(등록상표) Cortex-M0), 메모리 보호 로직(9), RAM(11), 비휘발성 플래시 메모리(13), 1개 이상의 주변 장치(15), 무선 통신 로직(17) 및 입력/출력 회로(19)를 포함하는 때때로 시스템 온 칩으로 알려진 집적 회로 마이크로컨트롤러(1)를 나타낸다.
이들 구성 요소는 종래의 방식으로, 예컨대 라인 및 버스(도시하지 않음)를 사용하여 상호 접속된다. 메모리 보호 로직(9)은 프로세서(7)로부터 RAM(11) 및 플래시 메모리(13)로의 명령을 인터셉트하도록 위치된다. 제품에 인스톨되는 때, 마이크로컨트롤러(1)는 파워 서플라이, 무선 안테나, 수정 발진자, 센서, 출력 장치 등과 같은 다수의 외부 구성 요소에 접속될 수 있다.
도 2는 마이크로컨트롤러(1)의 위에 ARM(등록상표) Cortex Microcontroller Software Interface Standard와 같은 선택적인 하드웨어 추상화 계층(21)이 위치함을 나타낸다. 그 아키텍처는 또한 펌웨어 모듈(23), 드라이버(25) 및 소프트웨어 어플리케이션(27)을 포함한다. 드라이버(25)는 소프트웨어 어플리케이션(27)에 고유한 것일 수 있다.
펌웨어 모듈(23)은 다수의 임베디드 소프트웨어 블록을 포함하는 바이너리 어플리케이션이다. 무선 프로토콜 블록(31)은 1개 이상의 무선 프로토콜 스택을 구현한다. 무선 이벤트 매니저(33)는 무선 통신 로직(17)을 위한 액세스 스케줄링 및 이벤트 멀티플렉싱을 제공한다. 라이브러리(35)는 공유된 하드웨어 리소스 관리, 난수 생성 기능, 인터럽트 및 우선도를 구성하는 기능, (예컨대 주변 장치의 인에이블 및 디스에이블을 위한) 전력 관리 기능, 암호화 기능 등과 같은 기능을 제공한다. 펌웨어 매니저(37)는 펌웨어 모듈의 인에이블 및 디스에이블, 무선 프로토콜 스택의 인에이블 및 디스에이블을 지원한다.
펌웨어 모듈(23)은 시스템 벡터 테이블을 소유하고 모든 리셋시 프로그램을 위한 엔트리 포인트이다.
펌웨어 모듈(23)을 위한 어플리케이션 프로그래밍 인터페이스(API)(29)는 소프트웨어 어플리케이션(27)이 펌웨어 모듈(23)의 기능을 기동하게 해준다. 그것은 전적으로 시스템 호출을 사용하여 구현된다. ARM(등록상표) 프로세서를 사용하는 경우, 각각의 API 기능 프로토타입은 컴파일시에 관련된 관리자 호출(SVC) 번호를 거쳐서 펌웨어 기능에 맵핑된다. 이러한 맵핑은 기능이 정확하게 호출될 수 있게 해주기 위해 소프트웨어 어플리케이션(27)의 개발자에게 제공될 수 있다.
펌웨어 모듈(23)은 이벤트를 소프트웨어 인터럽트로서 소프트웨어 어플리케이션(27)에 전달할 수 있고, 그 내용은 소프트웨어 어플리케이션(27)에 의해 판독(폴링)될 때까지 버퍼링된다. 판독은 API 호출(예컨대 event_get())을 통해서 행해진다.
소프트웨어 어플리케이션(27)은 하드웨어를 간접적으로 사용하기 위해 펌웨어 모듈(23)을 사용할 수 있을 뿐 아니라, 마이크로컨트롤러(1) 하드웨어에 직접 또는 하드웨어 추상화 계층(21)을 거쳐서, 예컨대 어플리케이션 고유 드라이버(25)에 의해 액세스할 수 있다.
도 3은 펌웨어 모듈(23)과 소프트웨어 어플리케이션(27)(임의의 어플리케이션 고유 드라이버(25)를 포함함) 사이에서 RAM(11) 및 플래시(13)가 어떻게 공유되는지 나타낸다. ARM(등록상표) Cortex-M0 프로세서(7)를 사용하는 경우, 플래시(13)에는 0(0x0000 0000)으로부터 그 용량 SizeOfProgMem까지 상향으로 어드레스가 할당되고 RAM(11)에는 0x2000 0000으로부터 (0x2000 0000 + SizeOfRAM)까지 상향으로 어드레스가 할당된다. 상이한 타입의 프로세서가 사용되는 경우 상이한 어드레스 값이 사용될 수 있다.
플래시(13)는 어드레스 CLENR0(코드 길이 영역 0)의 양측으로 2개의 별개의 영역을 포함한다. 0과 CLENR0 사이의 Region 0은 펌웨어 모듈(23)이 로드되는 곳이다. 그 인터럽트 벡터 테이블은 어드레스 0에 저장된다. CLENR0으로부터 위로 연장되는 Region 1은 소프트웨어 어플리케이션(27)이 로드되는 곳이다. 이것도 역시 어드레스 CLENR0에 인터럽트 벡터 테이블을 갖고, 그 용도는 이하에 설명된다. 장치(1)는 설정 정보 또는 플래그를 저장하는 것과 같은 다른 용도를 위해 사용될 수 있는 다른 비휘발성 메모리(도시하지 않음)를 가질 수 있음이 이해될 것이다.
RAM(11)도 마찬가지로 베이스 어드레스 0x2000 0000으로부터 RLENR0으로의 영역 Region 0 및, RLENR0으로부터 위로 연장되는 Region 1을 갖는다. RAM Region 0은 펌웨어 모듈(23)을 위한 데이터 저장을 제공하는 한편 RAM Region 1은 소프트웨어 어플리케이션(27)을 위한 데이터 저장을 제공한다. 호출 스택은 펌웨어 모듈(23)과 소프트웨어 어플리케이션(27) 사이에서 공유되고 예컨대 0x2000 0000 + SizeOFRAM으로부터 아래로 증가한다. 호출 스택에 할당되는 메모리는 소프트웨어 어플리케이션(27) 및 펌웨어 모듈(23) 양쪽의 요구를 위해 충분히 커야 한다.
펌웨어 모듈(23) 호출-스택 사용 요건은 칩 제조자에 의해 장치(1)에 대해 공개될 수 있다. 소프트웨어 어플리케이션(27)의 개발자는 최초의 스택 포인터를 정의하고 펌웨어 모듈(23) 및 그 소프트웨어 어플리케이션(27) 양쪽을 위한 충분한 스택 메모리를 준비하여 두어야 한다. 펌웨어 모듈(23)은 리셋시에 메인 스택 포인터를 초기화할 것이다.
메모리 보호 로직(9)은 프로세서(7)로부터 플래시(13) 및 RAM(11)으로의 모든 메모리 액세스 요구(예컨대 판독 요구)를 인터셉트하도록 구성된다. 그것은 액세스 요구 명령의 소스를 결정한다(예컨대 요구가 펌웨어 모듈(23)로부터 온 것인지 소프트웨어 어플리케이션(27)으로부터 온 것인지). 그것은 또한 다양한 소스에 대한 각각의 액세스 허가를 규정하고 그에 따라서 액세스 요구를 허용 또는 거부하는 메모리 보호 구성 데이터(예컨대 1개 이상의 전용 레지스터에 저장됨)에 액세스한다.
본 발명의 몇몇의 바람직한 실시 형태에서, 소프트웨어 어플리케이션(27)은 플래시 Region 0 및 RAM Region 0으로의 판독 및/또는 기입 액세스가 거부된다. 이것은 펌웨어 모듈(23)에 대한 비밀성을 보호하고 펌웨어 모듈(23)에 할당되는 메모리 위치로의 소프트웨어 어플리케이션(27)에 의한 의도하지 않은 또는 악의적인 기입을 방지할 수 있기 때문에, 강인성(robustness) 및 보안을 증가시킨다. 소프트웨어 어플리케이션 플래시 Region 1은 예컨대 외부 디버깅 인터페이스를 통한 리드백(read back)으로부터 보호하기 위해 판독 액세스로부터 보호될 수도 있다.
이것은 최초의 스택 포인터가 RAM Region 0에 있을 수 없는 것을 의미하는데, 이는 소프트웨어 어플리케이션(27)이 이 영역으로의 기입 액세스를 갖지 않기 때문이다. 본 발명의 다른 실시 형태에서, 호출 스택은 두 부분으로 될 수 있는데, 펌웨어 모듈(23) 호출 스택은 RAM Region 0에 위치하고 소프트웨어 어플리케이션(27) 호출 스택은 RAM Region 1에 위치한다.
도 4는 ARM(등록상표) Cortex-M0 프로세서에 의해 제공되는, 화살표의 방향으로 증가하는 우선도를 갖는 상이한 인터럽트 레벨(41)과, 이들 레벨이 어떻게 펌웨어 모듈(23) 및 소프트웨어 어플리케이션(27)에 의해 사용되는 인터럽트 레벨(43)에 맵핑되는지를 나타낸다.
Main 백그라운드 콘텍스트의 위에는 소프트웨어 어플리케이션 낮은 우선도, 펌웨어 모듈 낮은 우선도, 소프트웨어 어플리케이션 높은 우선도 및 펌웨어 모듈 높은 우선도와 같은 증가하는 우선순위로 사용되는 4개의 인터럽트 우선도가 있다. 높은 우선도 소프트웨어 어플리케이션 인터럽트는 낮은 지연이 요구되는 경우 중요한 인터럽트(critical interrupt)를 위해 사용된다.
도 5(a)-5(c)는 우선도 레벨에 있어서의 가능한 변화의 다양한 예를 나타낸다.
도 5(a)는 낮은 우선도의 소프트웨어 어플리케이션, 예컨대 직렬 드라이버에 의한 인터럽트인 백그라운드 메인 프로세스를 도시한다. 소프트웨어 어플리케이션(27)은 (관리자 호출(SVC) 예외(exception)를 트리거하는 것에 의해) 펌웨어 모듈(23)로의 API 호출을 행한다. 펌웨어 모듈(23)은 어플리케이션 낮은 우선도 레벨로 되돌아가기 전에 낮은 우선도 펌웨어 레벨에서 호출을 처리한다. 최종적으로, 소프트웨어 어플리케이션(27)은 그 동작을 완료하고 실행은 메인 백그라운드 레벨로 되돌아간다.
도 5(b)는 (SVC 예외를 트리거하는 것에 의해) 메인 콘텍스트로부터 행해지는 펌웨어 모듈(23)로의 API 호출을 도시한다. 펌웨어 낮은 우선도에서의 API 기능의 실행은 높은 우선도 소프트웨어 어플리케이션 예외에 의해 인터럽트된다. 이것은 예컨대 센서 입력을 서비스하기 위한 것일 수 있다. 소프트웨어 어플리케이션이 그 높은 우선도 실행을 끝내면, 펌웨어 API 호출은 최종적으로 백그라운드 메인 프로세스로 되돌아가기 전에 하위 우선도 레벨에서 계속될 수 있다.
도 5(c)는 펌웨어 모듈(23)에 의한 백그라운드 메인 프로세스의 높은 우선도 인터럽트를 도시한다. 이것은 무선 이벤트 매니저(33)가 응답하여야 하는 착신 무선 패킷과 같은 긴급을 요하는 무선 통신 인터럽트에 기인할 수 있다. 펌웨어 모듈(23)에서의 인터럽트 서비스 루틴은 낮은 우선도 펌웨어 예외 플래그를 세트하여 무선 프로토콜 스택의 보다 상위 레벨로 시그널링한다. 높은 우선도 루틴이 완료되면, 프로세서(7)의 테일 체이닝 기능으로 인해 낮은 우선도 루틴이 즉시(즉 중간에 백그라운드 메인 레벨로 되돌아가는 일 없이) 실행된다. 낮은 우선도 펌웨어 루틴은 차례로 예외 플래그를 세트하여 무선 데이터 패킷이 수신된 소프트웨어 어플리케이션(27)으로 시그널링한다. 이 예외는 낮은 우선도 펌웨어 모듈 루틴의 완료 후에 묶인다(chained). 이 예에서, 소프트웨어 어플리케이션(27)은 SVC로부터 소프트웨어 어플리케이션(27)으로의 콘텍스트를 완료하고 리턴하는 SVC를 거쳐서 펌웨어 모듈(23)로의 API 호출을 행한다. 최종적으로, 소프트웨어 어플리케이션 낮은 우선도 동작은 완료되고 실행은 메인 레벨로 되돌아간다.
도 6-8은 제어가 어떻게 소프트웨어 어플리케이션(27)과 펌웨어 모듈(23) 사이를 통과할 수 있는지 예에 의해 도시한다. 컴파일되지 않은 C 언어 코드 발췌문이 도시를 위해 사용된다. 물론, 실제로는, 플래시 메모리(13)로부터의 바이너리 명령은 프로세서(7)에 의해 실행된다. 숫자가 붙은 화살표는 연속적인 실행 스텝을 나타낸다.
도 6은 소프트웨어 어플리케이션(27)이 펌웨어 모듈(23)의 API(29)를 통해서 기능을 호출하는 것을 나타낸다. 어플리케이션(27)은 칩 제조자에 의해 소프트웨어 어플리케이션 개발자에게 공급되는 펌웨어 헤더 파일을 사용하여 펌웨어 API(29)로부터 임포트되는 프로토타입을 갖는 기능을 호출한다. _SVC(x) pragma는, 컴파일러로 하여금 오브젝트 코드 내에 명령을 삽입하게 하는데, 이러한 명령은 기능이 소프트웨어 어플리케이션(23)에 의해 호출될 때 관리자 호출(SVC) 예외를 발생시킨다.
프로세서(7)는 펌웨어 모듈의 인터럽트 벡터 테이블(시스템 인터럽트 벡터 테이블의 기능을 함)을 거쳐서 SVC 핸들러를 기동한다. 소프트웨어 어플리케이션(27)에 의해 호출되는 기능과 관련된 SVC 번호는 임의의 인수와 함께 SVC 핸들러에 전달된다. 그러한 인수는 프로세서에 따라 레지스터를 거쳐서 또는 호출 스택을 거쳐서 전달될 수 있다. SVC 핸들러는 정확한 펌웨어 모듈 기능을 호출하기 위해 SVC 번호를 사용한다. 이것은 무선 제어 기능(예컨대 무선으로 데이터를 송신하기 위한 명령), 또는 (예컨대 펌웨어 모듈을 디스에이블하기 위한) 펌웨어 관리 기능, 또는 (예컨대 난수를 생성하기 위한) 라이브러리 기능일 수 있다. 이 기능은 실행되고 그 다음 소프트웨어 어플리케이션(27)으로 되돌아간다. 리턴값은 레지스터에서 또는 호출 스택에서 이용 가능할 수 있다.
도 7은 시스템 호출을 거쳐서 그자신의 기능 중 하나를 기동하는 소프트웨어 어플리케이션(27)을 나타낸다. 낮은 우선도로부터 높은 우선도 실행 레벨로 변경하기 위해 이것을 행할 수 있다. 도 6에서의 상황과 마찬가지로, 소프트웨어 어플리케이션(27)은 실행이 펌웨어 모듈(27)의 SVC 핸들러로 이동하도록 SVC를 트리거한다. 하지만, 이 경우, 명령은 소프트웨어 어플리케이션의 자신의 사용을 위해 예약된 범위 내의 SVC 번호를 사용한다. 따라서 펌웨어 모듈(23)은, 잠재적으로 선행하는 동작의 우선도 레벨과 상이한 우선도 레벨에서, 실행이 소프트웨어 어플리케이션(27)의 핸들러 기능(app_systemcall_function())으로 분기하게 한다.
도 8은 하드웨어 인터럽트가 소프트웨어 어플리케이션(27)에 의해 어떻게 수신될 수 있는지를 나타낸다. 펌웨어 모듈(23)은, 인터럽트가 펌웨어 모듈(23)이 처리하도록 구성되는 인터럽트가 아닌 한, 디폴트로 해당 인터럽트를 소프트웨어 어플리케이션(27)에 포워드하도록 구성된다. 또한, 펌웨어 모듈(23)이 소프트웨어 어플리케이션(27)에 의해 (예컨대 펌웨어 매니저(37)로의 적합한 API 호출을 거쳐서) 디스에이블된 경우 펌웨어 모듈은 모든 인터럽트를 소프트웨어 어플리케이션(27)에 포워드할 것이다.
예컨대 움직임 센서로부터 인터럽트를 수신하면, 펌웨어 모듈(23)의 인터럽트 핸들러는 벡터링(vector)된다. 이것은 펌웨어 모듈(23)이 인에이블되어 있는지 여부 및 펌웨어 모듈(23)이 처리하도록 셋업되는 인터럽트인지 여부를 체크한다. 그렇다고 한다면, 펌웨어 모듈(23)은 인터럽트를 처리한다. 그렇지 않다면, 소프트웨어 어플리케이션(27)의 인터럽트 핸들러 루틴으로 실행을 분기한다. (CLENR0에서의) 소프트웨어 어플리케이션 벡터 테이블의 위치가 미리 결정되고 이 벡터 테이블로의 오프셋이 펌웨어 모듈의 벡터 테이블로의 오프셋과 동일하기 때문에, 펌웨어 모듈(23)은 이 루틴이 있는 곳을 알 수 있다.
이 방법으로, 집적된 무선 통신 칩에 있어서의 펌웨어 메모리 어드레스에 프로그램된, 무선 제어 로직을 구현하는 펌웨어 모듈은 안전하고 편리하게 구성 및 사용될 수 있다.
Claims (29)
- 집적 회로 무선 통신 장치를 구성하는 방법으로서,
상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고,
상기 메모리는 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈을 갖되, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하고,
상기 프로세서는 각각이 관련된 관리자(supervisor) 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는(invoke) 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고,
상기 방법은 소프트웨어 어플리케이션이 미리 결정된 어플리케이션 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 소프트웨어 어플리케이션을 로드하는 단계를 포함하되, 상기 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성되는
집적 회로 무선 통신 장치의 구성 방법.
- 집적 회로 무선 통신 장치를 구성하는 방법으로서,
상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고,
상기 방법은,
소프트웨어 어플리케이션이 미리 결정된 어플리케이션 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 소프트웨어 어플리케이션을 로드하는 단계와,
펌웨어 모듈이 미리 결정된 펌웨어 메모리 어드레스에 저장되도록 상기 장치의 상기 메모리에 상기 펌웨어 모듈을 로드하는 단계로서, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하는 단계
를 포함하고,
상기 프로세서는 각각이 관련된 관리자 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고,
상기 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성되는
집적 회로 무선 통신 장치의 구성 방법. - 제 1 항 또는 제 2 항에 있어서,
상기 펌웨어 모듈은 링크된 바이너리 모듈인
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
상기 펌웨어 모듈은 상기 펌웨어 모듈에 의해 제공되는 모든 무선 통신 기능이 번호와 기능 사이의 미리 결정된 대응 관계에 따라 각각의 관리자 호출 번호를 갖는 관리자 호출 명령에 의해 기동되도록 구성되는
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 소프트웨어 어플리케이션을 컴파일하는 단계 및 상기 컴파일에 관리자 호출 번호와 무선 통신 기능 사이의 대응 관계를 사용하는 단계를 더 포함하는
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 소프트웨어 어플리케이션을 컴파일 및/또는 로드할 때에, 미리 결정된 소프트웨어-어플리케이션 메모리 어드레스를 사용하는 단계를 더 포함하는
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
상기 소프트웨어 어플리케이션은 전용 SVC 프로세서 명령을 실행하는 것에 의해 관리자 호출 명령을 발행하도록 구성되는
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
상기 펌웨어 모듈 및 상기 소프트웨어 어플리케이션의 각각은 각각의 인터럽트 벡터 테이블을 갖고,
상기 장치는 인터럽트를 처리할 때에 상기 펌웨어 모듈의 상기 벡터 테이블을 사용하도록 구성되고,
상기 펌웨어 모듈은 상기 펌웨어 모듈이 그 자신을 처리하도록 프로그램되지 않는 모든 인터럽트가 상기 소프트웨어 어플리케이션으로 전달되도록 구성되는
집적 회로 무선 통신 장치의 구성 방법.
- 제 8 항에 있어서,
상기 펌웨어 모듈 및 상기 소프트웨어 어플리케이션의 상기 인터럽트 벡터 테이블은 서로 동일한 인터럽트 벡터 어드레스 오프셋을 사용하는
집적 회로 무선 통신 장치의 구성 방법.
- 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
상기 장치는 메모리 액세스 명령을 인터셉트하도록 구성되고 상기 소프트웨어 어플리케이션이 상기 펌웨어 모듈을 판독하거나 또는 오버라이트하는 것을 막도록 구성되는 메모리 보호 로직을 포함하는
집적 회로 무선 통신 장치의 구성 방법.
- 집적 회로 무선 통신 장치로서,
상기 장치는 프로세서, 메모리, 및 무선 통신 로직을 포함하고,
상기 메모리는 펌웨어 메모리 어드레스에 저장되는 펌웨어 모듈을 갖되, 상기 펌웨어 모듈은 미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령을 포함하고,
상기 프로세서는 각각이 관련된 관리자 호출 번호를 갖는 관리자 호출 명령을 수신하고, (ⅰ) 상기 펌웨어 모듈에 있어서의 관리자 호출 핸들러를 기동하는 것 및 (ⅱ) 상기 관리자 호출 번호를 상기 호출 핸들러가 이용 가능하게 하는 것에 의해 관리자 호출 명령에 응답하도록 구성되고,
상기 메모리는 미리 결정된 어플리케이션 메모리 어드레스에 저장되는 소프트웨어 어플리케이션을 갖되, 상기 소프트웨어 어플리케이션은 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 상기 펌웨어 모듈로부터 무선 통신 기능을 기동하도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항에 있어서,
상기 펌웨어 모듈은 상기 펌웨어 모듈에 의해 제공되는 모든 무선 통신 기능이 번호와 기능 사이의 미리 결정된 대응 관계에 따라 각각의 관리자 호출 번호를 갖는 관리자 호출 명령에 의해 기동되도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항 또는 제 12 항에 있어서,
상기 펌웨어 모듈은 상기 펌웨어 모듈에 의해 제공되는 모든 기능이 관리자 호출 명령의 발행에 의해 기동되도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 13 항 중 어느 한 항에 있어서,
상기 장치에서 상기 소프트웨어 어플리케이션을 실행할 때, 런타임(run-time) 링킹이 요구되지 않도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 14 항 중 어느 한 항에 있어서,
상기 소프트웨어 어플리케이션은 전용 SVC 프로세서 명령을 실행하는 것에 의해 관리자 호출 명령을 발행하도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 15 항 중 어느 한 항에 있어서,
상기 프로세서 및/또는 소프트웨어 어플리케이션은 1개 이상의 인수의 값을 상기 관리자 호출 핸들러가 이용할 수 있게 하도록 구성되는
집적 회로 무선 통신 장치. - 제 11 항 내지 제 16 항 중 어느 한 항에 있어서,
상기 프로세서는 상기 소프트웨어 어플리케이션으로부터의 관리자 호출 명령을 예외(exception)로서 처리하도록 구성되고,
상기 프로세서는 복수의 인터럽트 우선도를 지원하고,
상기 펌웨어 모듈에 있어서의 몇몇의 기능은 비교적 높은 우선도가 할당되고, 상기 펌웨어 모듈에 있어서의 다른 기능은 비교적 낮은 우선도를 갖는
집적 회로 무선 통신 장치.
- 제 17 항에 있어서,
상기 소프트웨어 어플리케이션은 인터럽트를 처리하도록 구성되고,
몇몇의 이벤트 구동형(event-driven) 기능에 대해서는 비교적 높은 우선도를 그리고 다른 이벤트 구동형 기능에 대해서는 비교적 낮은 우선도를 할당하는
집적 회로 무선 통신 장치.
- 제 18 항에 있어서,
상기 높은 및 낮은 소프트웨어 어플리케이션 우선도는 상기 높은 및 낮은 펌웨어 모듈 우선도와 인터리빙되는
집적 회로 무선 통신 장치.
- 제 18 항 또는 제 19 항에 있어서,
상기 가장 높은 펌웨어 우선도 레벨은 상기 가장 높은 소프트웨어 어플리케이션 우선도 레벨보다 높은
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 20 항 중 어느 한 항에 있어서,
상기 펌웨어 모듈은 상기 펌웨어 모듈이 인터럽트를 수신하는 것에 응답하여 상기 소프트웨어 어플리케이션에서의 기능을 기동하도록 구성되는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 21 항 중 어느 한 항에 있어서,
상기 펌웨어 모듈 및 상기 소프트웨어 어플리케이션의 각각은 각각의 인터럽트 벡터 테이블을 갖고,
상기 장치는 인터럽트를 처리할 때에 상기 펌웨어 모듈의 상기 벡터 테이블을 사용하도록 구성되고,
상기 펌웨어 모듈은 상기 펌웨어 모듈이 그 자신을 처리하도록 프로그램되지 않는 모든 인터럽트가 상기 소프트웨어 어플리케이션에 전달되도록 구성되는
집적 회로 무선 통신 장치.
- 제 22 항에 있어서,
상기 펌웨어 모듈 및 상기 소프트웨어 어플리케이션의 상기 인터럽트 벡터 테이블은 서로 동일한 오프셋을 사용하는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 23 항 중 어느 한 항에 있어서,
상기 펌웨어 모듈은 리소스를 상기 소프트웨어 어플리케이션에 돌려주기 위해 상기 펌웨어 모듈로 하여금 프로토콜 스택을 리셋하게 하고 임의의 메모리 보호를 디스에이블하게 하도록 상기 펌웨어 모듈로의 호출을 거쳐서 실질적으로 디스에이블될 수 있고,
디스에이블되면, 상기 펌웨어 모듈은 모든 인터럽트를 상기 소프트웨어 어플리케이션에 포워딩할 것인
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 24 항 중 어느 한 항에 있어서,
상기 프로세서는 하나의 인터럽트 우선도 레벨로부터 다른 레벨로의 끊김없는(seamless) 천이를 지원하는
집적 회로 무선 통신 장치.
- 제 11 항 내지 제 25 항 중 어느 한 항에 있어서,
메모리 액세스 명령을 인터셉트하도록 구성되고 상기 소프트웨어 어플리케이션이 상기 펌웨어 모듈을 판독하거나 또는 오버라이트하는 것 및/또는 상기 펌웨어 모듈과 관련되는 RAM을 판독하거나 또는 기록하는 것을 막도록 구성되는 메모리 보호 로직을 포함하는
집적 회로 무선 통신 장치.
- 프로세서, 메모리, 및 무선 통신 로직을 포함하는 집적 회로 무선 통신 장치상에서 펌웨어 메모리 어드레스에 로드되기 위한 펌웨어 모듈로서,
상기 펌웨어 모듈은,
미리 결정된 무선 프로토콜에 따라 상기 무선 통신 로직을 제어하기 위한 명령과,
관리자 호출 명령에 연관된 관리자 호출 번호에 대응하는 무선 통신 기능을 행하는 것에 의해 소프트웨어 어플리케이션에 의해 발행되는 관리자 호출 명령에 응답하도록 구성되는 관리자 호출 핸들러를 포함하는
펌웨어 모듈.
- 제 27 항에 있어서,
링크된 바이너리 모듈인
펌웨어 모듈.
- 프로세서, 메모리, 및 무선 통신 로직을 포함하는 집적 회로 무선 통신 장치상에서 미리 결정된 소프트웨어 어플리케이션 메모리 어드레스에 로드되기 위한 소프트웨어 어플리케이션으로서,
상기 소프트웨어 어플리케이션은, 기동될 무선 통신 기능에 대응하는 관련된 미리 결정된 관리자 호출 번호를 갖는 관리자 호출 명령을 발행하는 것에 의해 무선 통신 기능을 기동하도록 구성되는
소프트웨어 어플리케이션.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1211423.7 | 2012-06-27 | ||
GB201211423A GB2503471B (en) | 2012-06-27 | 2012-06-27 | Integrated-circuit radio |
PCT/GB2013/051692 WO2014001801A1 (en) | 2012-06-27 | 2013-06-26 | Integrated-circuit radio |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150024927A true KR20150024927A (ko) | 2015-03-09 |
KR102088690B1 KR102088690B1 (ko) | 2020-03-16 |
Family
ID=46704313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157002104A KR102088690B1 (ko) | 2012-06-27 | 2013-06-26 | 집적 회로 무선 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9317348B2 (ko) |
EP (1) | EP2867768A1 (ko) |
JP (1) | JP6326047B2 (ko) |
KR (1) | KR102088690B1 (ko) |
CN (1) | CN104412230B (ko) |
GB (1) | GB2503471B (ko) |
TW (1) | TWI603265B (ko) |
WO (1) | WO2014001801A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2515364B (en) * | 2013-12-20 | 2015-06-17 | Nordic Semiconductor Asa | Updatable integrated-circuit radio |
GB2521607B (en) | 2013-12-23 | 2016-03-23 | Nordic Semiconductor Asa | Integrated-Circuit Radio |
WO2020240235A1 (en) * | 2019-05-31 | 2020-12-03 | Micron Technology, Inc | Controller for a memory component |
CN112203319B (zh) * | 2020-10-23 | 2022-07-15 | 四川长虹网络科技有限责任公司 | ZigBee设备的测试方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223275B1 (en) * | 1997-06-20 | 2001-04-24 | Sony Corporation | Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions |
US20090318078A1 (en) * | 2006-09-12 | 2009-12-24 | Wavecom | Method of managing the software architecture of a radio communication circuit, corresponding application, computer program product and circuit |
KR20110051233A (ko) * | 2008-08-08 | 2011-05-17 | 콸콤 인코포레이티드 | 추론적 인터럽트 벡터 프리페칭 장치 및 방법 |
US20110117956A1 (en) * | 2009-11-17 | 2011-05-19 | Yosi Levi | Industrial radio device with unified programming interface and methods |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3632139A1 (de) | 1986-09-22 | 1988-04-07 | Bbc Brown Boveri & Cie | Verfahren zur ausfuehrung von zwei in verschiedenen programmiersprachen geschriebenen programmen |
JPS63296140A (ja) * | 1987-05-28 | 1988-12-02 | Canon Inc | 割込み制御方式 |
US5161228A (en) * | 1988-03-02 | 1992-11-03 | Ricoh Company, Ltd. | System with selectively exclusionary enablement for plural indirect address type interrupt control circuit |
JPH07105124A (ja) * | 1993-10-06 | 1995-04-21 | Toshiba Corp | 割込み制御装置 |
CA2143488C (en) * | 1995-02-27 | 2000-01-11 | Robert Paul Duncan | Dynamic link libraries without linker or loader support |
US20020073398A1 (en) * | 1998-12-14 | 2002-06-13 | Jeffrey L. Tinker | Method and system for modifying executable code to add additional functionality |
JP2002108625A (ja) * | 2000-09-26 | 2002-04-12 | Toshiba Corp | 言語処理装置及び言語処理プログラムを格納した記録媒体 |
US7237121B2 (en) | 2001-09-17 | 2007-06-26 | Texas Instruments Incorporated | Secure bootloader for securing digital devices |
US6874069B2 (en) | 2002-07-26 | 2005-03-29 | Silicon Storage Technology, Inc. | Microcontroller having an embedded non-volatile memory array with read protection for the array or portions thereof |
US7120794B2 (en) * | 2003-10-29 | 2006-10-10 | Qualcomm Inc. | System for invoking a privileged function in a device |
US7206884B2 (en) * | 2004-02-11 | 2007-04-17 | Arm Limited | Interrupt priority control within a nested interrupt system |
US7318150B2 (en) * | 2004-02-25 | 2008-01-08 | Intel Corporation | System and method to support platform firmware as a trusted process |
JP2005242806A (ja) * | 2004-02-27 | 2005-09-08 | Renesas Technology Corp | データ処理装置 |
US7647589B1 (en) * | 2005-02-07 | 2010-01-12 | Parallels Software International, Inc. | Methods and systems for safe execution of guest code in virtual machine context |
US20070112680A1 (en) * | 2005-11-11 | 2007-05-17 | Infineon Technologies Ag | System and method for processing digital media content in a mobile device |
WO2007065478A1 (en) * | 2005-12-07 | 2007-06-14 | Freescale Semiconductor, Inc | Wireless subscriber communication unit and method of power control with back-off therefore |
US20090096586A1 (en) * | 2007-10-12 | 2009-04-16 | Icontrol, Inc. | Radiofrequency Tracking and Communication Device and Method for Operating the Same |
US20090253384A1 (en) * | 2008-04-04 | 2009-10-08 | Stmicroelectronics, Ltd. | Dual Mode Radio Frequency Front End Circuit |
US8143699B2 (en) * | 2009-02-25 | 2012-03-27 | Taiwan Semiconductor Manufacturing Co., Ltd. | Dual-dielectric MIM capacitors for system-on-chip applications |
US8862178B2 (en) * | 2010-02-24 | 2014-10-14 | Qualcomm Incorporated | Methods and systems for managing participation in multiple wireless networks |
US20120255031A1 (en) * | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | System and method for securing memory using below-operating system trapping |
US9063847B2 (en) * | 2011-04-19 | 2015-06-23 | Dell Products, Lp | System and method for managing space allocation within a file system |
US9563410B2 (en) * | 2011-05-25 | 2017-02-07 | Amx Llc | Data-driven menuing system for providing a flexible user interface on an electronic device |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US20130338848A1 (en) * | 2012-06-19 | 2013-12-19 | Scott Park | Method and Apparatus for Leveling Recreational Vehicles |
-
2012
- 2012-06-27 GB GB201211423A patent/GB2503471B/en active Active
-
2013
- 2013-06-21 US US13/924,160 patent/US9317348B2/en active Active
- 2013-06-24 TW TW102122333A patent/TWI603265B/zh active
- 2013-06-26 EP EP13733435.5A patent/EP2867768A1/en not_active Ceased
- 2013-06-26 CN CN201380034634.2A patent/CN104412230B/zh active Active
- 2013-06-26 KR KR1020157002104A patent/KR102088690B1/ko active IP Right Grant
- 2013-06-26 WO PCT/GB2013/051692 patent/WO2014001801A1/en active Application Filing
- 2013-06-26 JP JP2015519340A patent/JP6326047B2/ja active Active
-
2016
- 2016-03-11 US US15/068,046 patent/US20160196170A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223275B1 (en) * | 1997-06-20 | 2001-04-24 | Sony Corporation | Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions |
US20090318078A1 (en) * | 2006-09-12 | 2009-12-24 | Wavecom | Method of managing the software architecture of a radio communication circuit, corresponding application, computer program product and circuit |
KR20110051233A (ko) * | 2008-08-08 | 2011-05-17 | 콸콤 인코포레이티드 | 추론적 인터럽트 벡터 프리페칭 장치 및 방법 |
US20110117956A1 (en) * | 2009-11-17 | 2011-05-19 | Yosi Levi | Industrial radio device with unified programming interface and methods |
Non-Patent Citations (1)
Title |
---|
ARM: "Application Note 179 Cortex-M3 Embedded Software Development". 2007.03., 출처: https://web.eecs.umich.edu/~prabal/teaching/resources/eecs373/ARM_Cortex_AppNote179.pdf* * |
Also Published As
Publication number | Publication date |
---|---|
EP2867768A1 (en) | 2015-05-06 |
JP2015524964A (ja) | 2015-08-27 |
KR102088690B1 (ko) | 2020-03-16 |
JP6326047B2 (ja) | 2018-05-16 |
US20140007141A1 (en) | 2014-01-02 |
CN104412230B (zh) | 2018-06-22 |
TWI603265B (zh) | 2017-10-21 |
US9317348B2 (en) | 2016-04-19 |
TW201401169A (zh) | 2014-01-01 |
WO2014001801A1 (en) | 2014-01-03 |
CN104412230A (zh) | 2015-03-11 |
GB201211423D0 (en) | 2012-08-08 |
GB2503471A (en) | 2014-01-01 |
US20160196170A1 (en) | 2016-07-07 |
GB2503471B (en) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102277238B1 (ko) | 업데이트가능한 집적 회로 무선장치 | |
US10789192B2 (en) | System and method for programming data transfer within a microcontroller | |
US20160196170A1 (en) | Integrated-circuit radio | |
CN112015522B (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
JP5307133B2 (ja) | デバイスエミュレーション支援装置、デバイスエミュレーション支援方法、デバイスエミュレーション支援回路及び情報処理装置 | |
KR102276696B1 (ko) | 집적 회로 무선장치 | |
JP2009009232A (ja) | コンピュータとカーネル保護方法並びにコンピュータソフトウエア | |
US10496439B1 (en) | Finite resource allocator with intrinsically subordinate operating system | |
CN106922189B (zh) | 设备代理装置及其控制方法 | |
CN116048827A (zh) | 一种进程间的函数调用方法及相关设备 | |
JP2011150457A (ja) | 情報処理装置およびメモリアクセス制御方法 | |
Halvorsen et al. | Operating System Fundamentals | |
CN117272412A (zh) | 中断控制寄存器保护方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |