KR101913968B1 - 마이크로 컴퓨터 - Google Patents
마이크로 컴퓨터 Download PDFInfo
- Publication number
- KR101913968B1 KR101913968B1 KR1020170140392A KR20170140392A KR101913968B1 KR 101913968 B1 KR101913968 B1 KR 101913968B1 KR 1020170140392 A KR1020170140392 A KR 1020170140392A KR 20170140392 A KR20170140392 A KR 20170140392A KR 101913968 B1 KR101913968 B1 KR 101913968B1
- Authority
- KR
- South Korea
- Prior art keywords
- endian
- area
- user
- information
- data transfer
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Microcomputers (AREA)
- Memory System (AREA)
Abstract
엔디안을 선택하기 위한 외부 단자를 삭감하는 것이 가능한 마이크로 컴퓨터를 제공한다. 플래시 메모리(15)는, 유저 부트 모드로 실행되는 프로그램 및 그 엔디안 정보가 저장되는 유저 부트 영역과, 유저 모드로 실행되는 프로그램 및 그 엔디안 정보가 저장되는 유저 영역을 포함한다. 데이터 전송 회로(22)는, CPU(11)의 리셋 해제 전에, 동작 모드에 따라 유저 부트 영역 또는 유저 영역에 저장되는 엔디안 정보를 판독하여 CPU(11)에 설정한다. 따라서, 엔디안을 선택하기 위한 외부 단자를 삭감하는 것이 가능해진다.
Description
본 발명은, CPU(Central Processing Unit)와 그 주변 회로를 포함한 마이크로 컴퓨터에 관한, 특히, 엔디안(big endian, little endian)의 선택 기능을 가지는 마이크로 컴퓨터에 관한 것이다.
근래, 마이크로 컴퓨터는 다종 다양한 용도에 사용되게 되고 있고 그 기능도 다양화되어 오고 있다. 그러한 마이크로 컴퓨터의 기능의 하나로서, CPU의 동작 모드인 바이트 데이터(byte data)의 배치, 이른바 엔디안의 선택 기능을 들 수 있다.
종래, 마이크로 컴퓨터에서의 데이터 등의 엔디안은 리틀 엔디안 또는 빅 엔디안의 어딘가에 고정되어 있어, 양(兩) 엔디안 어디라도 동작 가능한 마이크로 컴퓨터로의 엔디안의 선택은 외부 단자에 의해서 행해져, 유저가 미리 외부 단자를 어느 쪽인가에 설정해 두는 것이 있었다. 또, CPU가 동작 중에 엔디안 모드를 변경하는 것도 있었다. 이것에 관련하는 기술로서 아래와 같은 특허 문헌 1~3에 개시된 발명이 있다.
특허 문헌 1은, 하나의 컴퓨터 시스템으로 상이한 정보 형식을 가지는 태스크(task)를 서포트하는, 혼합 엔디안 컴퓨터 시스템의 제공을 목적으로 한다. 종래의 2 엔디안 컴퓨터 시스템의 기능을 높이고, 컴퓨터 시스템에 그 엔디안 모드를 동적으로 변경하는 것을 가능하게 하는 혼합 엔디안 회로를 갖추도록 한다. 혼합 엔디안 컴퓨터 시스템은, 필요하면, 태스크마다 엔디안 모드를 변경할 수 있다. 혼합 엔디안 회로는, 태스크가 빅 엔디안 포맷 또는 리틀 엔디안 포맷의 데이터를 기대할지 어떨지에 관계없이, 실행 중의 태스크가 기대하는 형식으로 자동적으로 데이터를 포맷화 한다. 혼합 엔디안 회로는 또 빅 엔디안 명령 또는 리틀 엔디안 명령이 같은 컴퓨터 시스템으로 실행할 수 있도록 그것들을 포맷화 한다.
특허 문헌 2는, 엔디안이 상이한 복수의 오퍼레이팅 시스템(operating system)을 동일 계산기 상에서 병행해서 실행하는 것을 목적으로 한다. 리틀 엔디안의 오퍼레이팅 시스템 실행중에 빅 엔디안이 처리해야 할 인터럽트(interrupt)가 들어가면 하드웨어 의존부가 빅 엔디안 앞인 것을 판별하여, CPU의 엔디안을 전환한 후, 빅 엔디안의 인터럽트 처리기로 점프한다.
특허 문헌 3은, 본래 리틀 엔디안 데이터 밖에 처리할 수 없는 마이크로 컴퓨터로, 응용에 의해 빅 엔디안 데이터의 처리가 필요하고, 게다가 빅 엔디안의 처리 성능을, 리틀 엔디안의 그것과 비교해 열화 시키고 싶지 않다고 하는 것을 목적으로 한다. 엔디안을 식별하기 위한 어드레스 공간 판정기와 그 판정의 결과에 따라 데이터의 엔디안을 바꾸는 바이트 얼라이너(byte aligner)를 포함한 구성으로 이루어진다. 제1로, 시스템에 있어서 두 개의 엔디안의 데이터 및 장치를 양립한다. 제2로, 데이터 길이에 관계없이, 어느 엔디안의 데이터에서도 같은 속도로 고속으로 전송할 수 있다. 제3으로, 엔디안 판정이 용이하다. 어드레스 공간마다 엔디안을 고정해 할당하고 있기 때문에, 어드레스 정보만으로부터 엔디안을 고속으로 식별할 수 있다.
마이크로 컴퓨터는, 동일한 LSI(Large Scale Integrated circuit)이여도, 다핀 패키지로부터 소핀 패키지까지 폭넓게 제품이 전개되고 있다. 특히, 소핀 패키지에 있어서는, 유저로부터 가능한 한 많은 사용 가능한 핀을 남기고 싶다고 하는 요망이 있다. 따라서, 엔디안을 선택하는 외부 단자를 삭제하여, 유저가 사용 가능한 핀수를 늘리는 것이 바람직하다.
또, 마이크로 컴퓨터 내부에서 엔디안을 고정하고 있는 경우에는, 비록 양쪽의 엔디안을 서포트하고 있었다고 해도, 유저가 변경할 수 없다.
본 발명은, 상기 문제점을 해결하기 위해서 이루어진 것이며, 그 목적은, 엔디안을 선택하기 위한 외부 단자를 삭감하는 것이 가능한 마이크로 컴퓨터를 제공하는 것이다.
본 발명의 하나의 실시예에 의하면, 엔디안의 변환이 가능한 프로세서를 포함한 마이크로 컴퓨터가 제공된다. 플래시 메모리는, 유저 부트 모드로 실행되는 프로그램 및 그 엔디안 정보가 저장되는 유저 부트 영역과 유저 모드로 실행되는 프로그램 및 그 엔디안 정보가 저장되는 유저 영역을 포함한다. 데이터 전송 회로는, CPU의 리셋 해제 전에, 동작 모드에 따라 유저 부트 영역 또는 유저 영역에 저장되는 엔디안 정보를 판독하여 CPU에 설정한다.
이 실시예에 의하면, 데이터 전송 회로가, CPU의 리셋 해제 전에, 동작 모드에 따라 유저 부트 영역 또는 유저 영역에 저장되는 엔디안 정보를 판독하여 CPU에 설정하므로, 엔디안을 선택하기 위한 외부 단자를 삭감하는 것이 가능해진다.
도 1은 본 발명의 제1의 실시의 형태에 있어서의 마이크로 컴퓨터의 구성예를 나타낸 블럭도.
도 2는 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 레지스터의 데이터 배치 및 메모리상의 데이터 배치를 설명하기 위한 도.
도 3은 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 동작 모드의 천이를 설명하기 위한 도.
도 4는 본 발명의 제1의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 엔디안 선택을 설명하기 위한 도.
도 5는 데이터 전송 회로(22)의 동작을 설명하기 위한 타이밍 차트 및 데이터 전송 회로(22)의 내부 구성을 나타내는 도.
도 6은 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 구성예를 나타내는 블럭도.
도 7은 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 동작의 일례를 설명하기 위한 플로차트(flow chart).
도 2는 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 레지스터의 데이터 배치 및 메모리상의 데이터 배치를 설명하기 위한 도.
도 3은 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 동작 모드의 천이를 설명하기 위한 도.
도 4는 본 발명의 제1의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 엔디안 선택을 설명하기 위한 도.
도 5는 데이터 전송 회로(22)의 동작을 설명하기 위한 타이밍 차트 및 데이터 전송 회로(22)의 내부 구성을 나타내는 도.
도 6은 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 구성예를 나타내는 블럭도.
도 7은 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 동작의 일례를 설명하기 위한 플로차트(flow chart).
(제1의 실시의 형태)
도 1은, 본 발명의 제1의 실시의 형태에 있어서의 마이크로 컴퓨터의 구성예를 나타내는 블럭도이다. 이 마이크로 컴퓨터(이하, 마이컴이라고도 부른다.)(1)는, CPU(11)와 CIF(CPU Interface)(12)와 버스 아비터(Arbiter)(13)와 DMAC(Direct Memory Access Controller)(14)와 플래시 메모리(Flash)(15)와 플래시 IF(Flash Interface)(16)와 SRAM(Static Random Access Memory)(17)과 SRAM IF(18)와 EBIU(External Bus Interface Unit)(19)와 PBIU(Peripheral Bus Interface Unit)(20)와 주변 IP(Intellectual Property)(21)와 데이터 전송 회로(22)를 포함한다.
CPU(11)는, CIF(12)를 개입시켜 내부 버스(23)에 접속되고 있고 CIF(12)를 개입시켜 플래시 메모리(15), SRAM(17), 주변 IP(21), 외부 버스에 접속되는 외부 디바이스 등에 액세스할 수 있다. 또, CPU(11)는, 빅 엔디안 및 리틀 엔디안의 양쪽의 엔디안을 갖추고 있고, 데이터 전송 회로(22)로부터 출력되는 엔디안 신호에 의해서 엔디안 모드를 변경한다.
버스 아비터(13)는, CPU(11), DMAC(14)등의 액세스를 감시하고 있고, 액세스의 조정을 행한다.
DMAC(14)는, 내부의 레지스터에 기록된 전송 송신 어드레스, 전송 수신 어드레스, 데이터 전송수 등의 정보에 근거하고, 메모리-메모리 간의 DMA 전송이나, 메모리 IO(Input/Output) 간의 DMA 전송을 제어한다.
플래시 메모리(15)는, 플래시 IF(16)를 개입시켜 내부 버스(23)에 접속되고 있고, CPU(11), DMAC(14), 데이터 전송 회로(22) 등에서의 액세스에 따라 데이터의 입출력을 행한다.
SRAM(17)은, SRAM IF(18)를 개입시켜 내부 버스(23)에 접속되어 있고 CPU(11), DMAC(14) 등에서의 액세스에 따라 데이터의 입출력을 행한다.
EBIU(19)는, 내부 버스(23)와 외부 버스와의 사이에 접속되어 있고, CPU(11) 등에서의 액세스에 따라, 마이크로 컴퓨터(1)의 외부에 접속되는 외부 디바이스에 대한 액세스를 행한다.
주변 IP(21)는, SIO(Serial Input/Output), 타이머, 센서 등의 주변 회로에 의해서 구성되고, PBIU(20)를 개입시켜 내부 버스(23)에 접속되어 있고, CPU(11) 등에서의 액세스에 따라 데이터를 입출력한다.
또한, 데이터 전송 회로(22)의 내부 구성 및 동작의 상세한 것에 대하여는 후술한다. 도 2는, 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 레지스터의 데이터 배치 및 메모리상의 데이터 배치를 설명하기 위한 도이다. 도 2(a)는, 레지스터의 데이터 배치를 나타내고 있고 예를 들어, 롱 워드(32비트)의 레지스터의 경우에는, 비트 0(b0)이 LSB(Least Significant Bit)가 되고, 비트 31(b31)이 MSB(Most Significant Bit)가 되고 있다.
도 2(b)는, 메모리상의 데이터 배치를 나타내고 있다. 리틀 엔디안의 경우, 예를 들어, 롱 워드 데이터이면, N번지의 비트 0(b0)이 LSB로 되고, N+3번지의 비트 7(b7)이 MSB로 되고 있다. 또, 빅 엔디안의 경우, 예를 들어, 롱 워드 데이터이면, N+3번지의 비트 0(b0)이 LSB가 되고, N번지의 비트 7(b7)이 MSB가 되고 있다.
도 3은, 본 발명의 제1의 실시의 형태에 있어서의 CPU(11)의 동작 모드의 천이를 설명하기 위한 도이다. 동작 모드는, 도 1에 나타내는 바와 같이 마이크로 컴퓨터(1)의 외부 단자(MD단자)에 의해서 설정 가능하고, 부트 모드, 유저 부트 모드, 싱글 칩 모드로 나눌 수 있다. 외부 단자에 의해서 부트 모드가 설정되어 있는 경우, 리셋 해제 후에 부트 모드로 천이한다. 부트 모드에 있어서는, 플래시 메모리의 부트 영역으로 불리는 영역에 놓여져 있는 프로그램이 실행된다. 유저는, 부트 영역에 놓여져 있는 프로그램의 소거나 개서를 행할 수 없다.
외부 단자에 의해서 유저 부트 모드가 설정되어 있는 경우, 리셋 해제 후에 유저 부트 모드로 이행한다. 유저 부트 모드에 있어서는, 유저 프로그램을 나중에 개서 가능으로 하기 위해서, 플래시 메모리의 유저 부트 영역으로 불리는 영역에 놓여져 있는 소규모의 부트 프로그램이 실행된다.
유저 부트 모드에 있어서의 부트 프로그램은, 퍼스널 컴퓨터(PC)의 BIOS(Basic Input Output System)와 같은 기능을 가지는 비교적 소규모의 프로그램이며, CPU(11)로부터 프로그램 소거를 행하지 못하고, 전용의 기록 장치 또는 기록 프로그램에 의해서만 소거나 기록을 행할 수 있다. 이 모드에 대해서는, 예를 들어 디지털 가전 등에서 펌웨어의 업데이트를 행하는 경우에, 소거되지 않는 시스템의 근간이 되는 프로그램이 유저 부트 영역에 배치된다고 하는 용도로 사용된다. 이 모드에 있어서는, CPU(11)로부터 유저 영역 측에 놓인 프로그램의 소거나 기록을 행할 수 있다.
외부 단자에 의해서 싱글 칩 모드가 설정되어 있는 경우, 리셋 해제 후에 싱글 칩 모드로 이행한다. 싱글 칩 모드에 있어서는, 플래시 메모리의 유저 영역으로 불리는 영역에 놓여져 있는 유저 프로그램만이 실행된다. 도 3에 있어서는, 싱글 칩 모드로 천이하면, 우선 유저 모드로 되어, 유저 영역에 놓여져 있는 유저 프로그램이 실행된다. CPU(11)의 내부 신호인 FLWE에 '1'이 설정되면 유저 프로그램 모드로 천이하고, 플래시 메모리의 유저 영역의 프로그램 소거나 기록이 가능해진다. 이 모드에 있어서는, 유저 부트 영역에 대한 액세스를 금지하고, 안전성을 높이고 있다.
또한, CPU(11)가 분기 명령을 실행하는 것에 의해서, 부트 모드로부터 유저 모드 또는 유저 프로그램 모드로 천이하는 것이 가능하고, 또, 유저 부트 모드로부터 유저 모드 또는 유저 프로그램 모드로 천이하는 것도 가능하다.
도 4는, 본 발명의 제1의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 엔디안 선택을 설명하기 위한 도이다. 도 4(a)는, CPU(11)의 메모리 맵의 일례를 나타내고 있고, 부트 영역, 유저 부트 영역, 유저 영역이 각각 배치되어 있다.
유저 부트 영역이 배치되는 영역의 FF7F_FFF8 번지에는 OFS(옵션 기능 선택) 레지스터가 설치되고 있어 이 OFS내에 유저 부트 모드에 있어서의 엔디안 정보가 저장되어 있다. 이 OFS는 플래시 메모리 중의 영역이기 때문에, 마이크로 컴퓨터(1)의 전원이 차단되고, 또는 리셋 되어도 유지된다. CPU(11)가 리셋 해제되어 유저 부트 모드로 천이하기 전에, 데이터 전송 회로(22)에 의해서 OFS내의 엔디안 정보가 판독되어 CPU(11)에 엔디안 정보가 설정된다.
또, 유저 영역이 배치되는 영역의 FFFF_FF90 번지에도 OFS 레지스터가 설치되어 있고, 이 OFS내에 유저 모드에 있어서의 엔디안 정보가 저장되어 있다. CPU(11)가 리셋 해제되어 유저 모드로 천이하기 전에, 데이터 전송 회로(22)에 의해서 OFS내의 엔디안 정보가 판독되고 CPU(11)에 엔디안 정보가 설정된다.
또, 부트 영역이 배치되는 영역의 FF7F_FFF8 번지에도 OFS 레지스터가 설치되어 있고, 이 OFS내에 부트 모드에 있어서의 엔디안 정보가 저장되어 있다. CPU(11)가 리셋 해제되어 부트 모드로 천이하기 전에, 데이터 전송 회로(22)에 의해서 OFS내의 엔디안 정보가 판독되고 CPU(11)에 엔디안 정보가 설정된다.
도 4(b)는, 유저 부트 모드에 있어서의 엔디안 정보의 설정을 설명하기 위한 도이다. 내부 시스템 리셋이 해제되면, 데이터 전송 회로에 의한 OFS 전송이 행해진다. 이때, 데이터 전송 회로(22)는, FF7F_FFF8 번지로부터 OFS내의 엔디안 정보를 판독하여, CPU(11)에 출력한다. 그리고, CPU(11)의 엔디안이 확정된 후에, CPU(11)의 리셋이 해제되어 부트 프로그램이 실행되고 한층 더 유저 부트 프로그램이 실행된다.
도 4(c)는, 싱글 칩 모드에 있어서의 엔디안 정보의 설정을 설명하기 위한 도이다. 내부 시스템 리셋이 해제되면, 데이터 전송 회로에 의한 OFS 전송이 행해진다. 이때, 데이터 전송 회로(22)는, FFFF_FF90 번지로부터 OFS내의 엔디안 정보를 판독하고, CPU(11)에 출력한다. 그리고, CPU(11)의 엔디안이 확정된 후에, CPU(11)의 리셋이 해제되어 유저 프로그램이 실행된다.
도 5는, 데이터 전송 회로(22)의 동작을 설명하기 위한 타이밍 차트 및 데이터 전송 회로(22)의 내부 구성을 나타내는 도이다. 도 5(a)의 T1에 있어서, 시스템 리셋(RES#)이 입력되면, 내부 리셋 및 CPU 리셋이 시작되어 CPU(11) 및 각 블록의 리셋이 개시된다. 이때, 마이크로 컴퓨터(1)의 동작 모드도 리셋된다.
T2에 있어서, RES#의 해제에 대응해 내부 리셋이 하이 레벨이 되어 리셋이 해제되면, 데이터 전송 회로(22)의 동작이 개시된다. 이때, OFS 레지스터에는 초기치로서 리틀 엔디안이 설정되어 있는 것으로 한다.
T3에 있어서, 데이터 전송 회로(22)가 엔디안 정보(리틀 엔디안)를 CPU(11)에 설정한다. 그리고, T4에 있어서, CPU 리셋이 하이 레벨로 되어 리셋이 해제되면, CPU(11)는 설정된 엔디안으로 동작을 개시한다.
도 5(b)는, 데이터 전송 회로(22)의 내부 구성을 나타내는 도이다. 이 데이터 전송 회로(22)는, 셀렉터(31)와 데이터 FF(Flip Flop)(32)와 제어 회로(33)를 포함한다.
셀렉터(31)는, 동작 모드를 나타내는 MD단자(외부 단자)의 값이 유저 부트 모드를 나타내는 '0'의 경우에는, 유저 부트 영역의 OFS가 저장되는 어드레스 'FF7F_FFF8'을 버스 아비터(13)에 출력한다. 또, 셀렉터(31)는, MD단자의 값이 싱글 칩 모드(유저 모드)를 나타내는 '1'의 경우에는, 유저 영역의 OFS가 저장되는 어드레스 'FFFF_FF90'을 버스 아비터(13)에 출력한다.
제어부(33)는, 내부 리셋이 해제되었을 때에, 버스 아비터(13)에 대해서 셀렉터(31)로부터 출력되는 어드레스로부터의 데이터 판독을 요구한다. 이때, 버스 아비터(13)는, 그 어드레스에 대응하는 플래시 메모리(15)의 영역으로부터 OFS 레지스터의 내용을 판독하여, 데이터 FF(32)에 출력한다. 또한 제1의 실시의 형태에 있어서, 영역 변환 신호는 사용되지 않는다.
데이터 FF(32)는, 버스 아비터(13)로부터 받은 OFS안의 엔디안 정보를 유지하여, CPU(11)에 출력한다.
위에서 설명한 바와 같이, 본 실시의 형태에 있어서는, 유저 부트 모드 및 유저 모드의 각각 대응하여, 플래시 메모리(15)의 각각의 어드레스에 엔디안 정보를 설정하고 있지만, 그 이유는 이하와 같다.
유저 부트 모드에 있어서는, 유저 부트 영역에 유저의 프로그램이 놓여져 있다. 그 때문에, 만약 유저 영역에 엔디안 정보가 저장되어 있으면, 잘못해서 유저 영역을 소거해 버리면 유저 부트 프로그램이 올바르게 동작하지 않게 되기 때문에 있다.
또, 싱글 칩 모드에 있어서는, 유저 부트 영역에 엔디안 정보가 저장되고 있어도, 유저 부트를 사용하지 않는 유저에게 있어서는 불편할 것이고, 싱글 칩 모드로 동작 중에 유저 부트 영역에 액세스할 수 없다고 하는 제한이 있기 때문이다.
또한, 유저가 프로그램을 플래시 메모리(15)에 기록하면, 함께 엔디안 정보도 기록하는 것으로 한다. 또, 도 5(b)에 있어서는, 셀렉터(31)가, 유저 부트 영역의 OFS가 저장되는 어드레스와 유저 영역의 OFS가 저장되는 어드레스를 선택적으로 출력한다고 설명했지만, 도 4(a)에 나타낸 바와 같이 부트 영역에도 OFS가 저장되고 있는 경우에는, 셀렉터(31)가, MD단자에 따라 3개의 어드레스 중에서 선택적으로 1개의 어드레스를 출력하도록 해도 된다.
이상 설명한 바와 같이, 본 실시의 형태에 있어서의 마이크로 컴퓨터(1)에 의하면, CPU(11)의 리셋이 해제되기 전에, 데이터 전송 회로(22)가 플래시 메모리(15)의 소정 어드레스로부터 엔디안 정보를 판독하여 CPU(11)에 설정하도록 했으므로, 엔디안을 설정하기 위한 외부 단자를 삭감하는 것이 가능해진다. 따라서, 유저가 사용 가능한 외부 단자를 늘리는 것이 가능해진다.
또, 동작 모드에 따라 플래시 메모리의 상이한 영역에 엔디안 정보를 저장하였으므로, 동작 모드에 의한 액세스 제한 등에 의해서 엔디안 정보를 변경할 수 없거나, 엔디안 정보가 잘못해서 소거되거나 한다고 하는 불편을 방지하는 것이 가능해진다.
(제2의 실시의 형태)
도 6은, 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 구성예를 나타내는 블럭도이다. 도 1에 나타내는 제1의 실시의 형태에 있어서의 마이크로 컴퓨터와 비교하면, 데이터 전송 회로(41)의 기능이 다른 점과 플래시 메모리가 부트 영역용 및 유저 부트 영역용의 플래시 메모리(42)와 유저 영역용의 플래시 메모리(43)로 나누어져 있는 점만이 다르다. 따라서, 중복하는 구성 및 기능의 상세한 설명은 반복하지 않는다.
플래시 IF(16)는, 플래시 메모리(부트 영역 또는 유저 부트 영역)(42)로부터 플래시 메모리(유저 영역 )(43)로 액세스가 전환된 경우, 또는 플래시 메모리(43)로부터 플래시 메모리(42)로 액세스가 전환된 경우에, 영역 변환 신호를 데이터 전송 회로(41)에 출력한다. 즉, 플래시 IF(16)는, 기동시, 영역 변환시, 정지 인터럽트 등에 영역 변환 신호를 데이터 전송 회로(41)에 출력한다.
데이터 전송 회로(41)가 도 5에 나타내는 데이터 전송 회로(22)와 다른 점은, 제어 회로(33)가 영역 변환 신호를 받으면, 어느 플래시 메모리에 액세스가 전환되었는지에 따라 셀렉터(31)에 대응하는 어드레스를 출력시켜, 버스 아비터(13)에 플래시 메모리(42 또는 43)의 OFS(엔디안 정보 저장 영역)에 대한 액세스를 행하게 하는 점이다. 데이터 FF(32)가 버스 아비터(13)로부터 받은 엔디안 정보를 CPU(11)에 설정하는 점은 같다.
도 7은, 본 발명의 제2의 실시의 형태에 있어서의 마이크로 컴퓨터(1)의 동작의 일례를 설명하기 위한 플로차트(flow chart)이다. 우선, 내부 리셋이 해제되면, 데이터 전송 회로(41)가 부트 모드 또는 유저 부트 모드의 엔디안 정보를 판독하여, CPU(11)에 설정한다(S11).
다음에, CPU(11)의 리셋이 해제되면, CPU(11)는, 부트 영역 또는 유저 부트 영역 내의 프로그램을 설정된 엔디안으로 실행함으로써, 전원, 클락(clock) 등의 시스템의 초기화를 행하는 스타트 업 처리를 실행하고(S12), 유저 프로그램의 실행 지시 대기가 된다(S13).
유저 프로그램의 실행 지시가 있으면, CPU(11)는 유저 영역에 유저 프로그램이 있는지 아닌지를 판정한다(S14). 예를 들어, 유저 영역의 선두 영역에 키워드가 기록되어 있는지 아닌지, 등의 판정 방법에 의해서 유저 영역에 유저 프로그램이 있는지 아닌지 판정된다.
유저 영역에 유저 프로그램이 있는 경우에는(S14, 유), 그대로 스텝 S16으로 처리가 진행된다. 유저 영역에 유저 프로그램이 없는 경우에는(S14, 무), 유저 영역에 유저 프로그램을 기록(S15), 스텝 S16으로 처리가 진행된다.
스텝 S16에 있어서, CPU(11)가, 유저 영역 상의 유저 프로그램에 분기하는 명령을 실행한다. 이때, 데이터 전송 회로(41)는, 부트 영역 또는 유저 부트 영역으로부터 유저 영역에 액세스가 전환된 것을 검지하고, 유저 모드의 엔디안 정보를 판독하여, CPU(11)에 설정한다.
다음에, CPU(11)는, 데이터 전송 회로(41)로부터 출력되는 엔디안 정보에 따라서 엔디안을 전환하여 유저 프로그램을 실행한다(S17). 이때, CPU(11)가 실행하는 명령은, 부트 영역 또는 유저 부트 영역 상의 프로그램으로부터 유저 영역 상의 프로그램으로 분기하는 명령이기 때문에, 파이프라인에 들어가 있는 명령은 모두 클리어 된다. 그 때문에, 이때 CPU(11)의 엔디안을 전환하였다고 해도, 전환된 후의 엔디안에 대응하는 명령이 유저 영역으로부터 새롭게 페치(fetch)되게 되기 때문에, 특별히 동작상 문제는 없다.
CPU(11)가 유저 영역 상의 유저 프로그램을 실행하고 있을 때, 시스템 정지의 인터럽트 등을 받으면, 유저 프로그램의 처리를 종료하고, 메모리 영역의 개방, 스택 영역의 개방 등의 처리를 행하고(S18), 스텝 S19로 처리가 진행된다.
스텝 S19에 있어서, CPU(11)가, 부트 영역 또는 유저 부트 영역 상의 유저 프로그램에 분기하는 명령을 실행한다. 이때, 데이터 전송 회로(41)는, 유저 영역으로부터 부트 영역 또는 유저 부트 영역으로 액세스가 전환된 것을 검지하여, 부트 모드 또는 유저 부트 모드의 엔디안 정보를 판독하여, CPU(11)에 설정한다.
그리고, CPU(11)는, 부트 영역 또는 유저 부트 영역 상의 프로그램을 설정된 엔디안으로 실행하고, 유저 프로그램을 한층 더 실행하는 경우에는 스텝 S13으로 되돌아와 유저 프로그램의 실행 지시 대기를 행한다. 또, 유저 프로그램을 실행하지 않으면, 마이크로 컴퓨터(1)의 종료 처리를 행하여(S20), 처리를 종료한다.
이상의 설명은, 유저 영역 (플래시 메모리(43))에 1개의 엔디안 정보가 저장되는 경우에 관한 것이었지만, 유저 영역을 복수의 영역으로 분할하여, 영역마다 엔디안 정보를 저장하도록 하고, 액세스하는 영역이 전환될 때마다 CPU(11)에 엔디안 정보를 재설정하도록 해도 된다.
이상 설명한 바와 같이, 본 실시의 형태에 있어서의 마이크로 컴퓨터(1)에 의하면, 데이터 전송 회로(41)가, 부트 영역 또는 유저 부트 영역으로부터 유저 영역으로 액세스가 전환되는지, 또는 유저 영역으로부터 부트 영역 또는 유저 부트 영역으로 액세스가 전환되는 것을 검지하고, CPU(11)에 엔디안 정보를 설정하도록 했다. 이것에 의해서, CPU(11)의 리셋 해제 직후뿐만이 아니라, CPU(11)의 동작 중이어도 동작 모드나 액세스 영역에 의해서 엔디안을 전환하는 것이 가능해진다.
이번 개시된 실시의 형태는, 모든 점에서 예시이며 제한적인 것은 아니라고 생각하여야 할 것이다. 본 발명의 범위는 상기한 설명이 아니라 특허 청구의 범위에 의해서 표시되고, 특허 청구의 범위와 균등 범위 내에서의 모든 변경이 본 발명의 범위에 포함되는 것으로 보아야 한다.
1: 마이크로 컴퓨터 11 : CPU
12 : CIF 13 : 버스 아비터
14 : DMAC 15, 42, 43 : 플래시 메모리
16 : 플래시 IF 17 : SRAM
18 : SRAM IF 19 : EBIU
20 : PBIU 21 : 주변 IP
22, 41 : 데이터 전송 회로 23 : 내부 버스
31 : 셀렉터 32 : 데이터 FF(flip-flop)
33 : 제어 회로
12 : CIF 13 : 버스 아비터
14 : DMAC 15, 42, 43 : 플래시 메모리
16 : 플래시 IF 17 : SRAM
18 : SRAM IF 19 : EBIU
20 : PBIU 21 : 주변 IP
22, 41 : 데이터 전송 회로 23 : 내부 버스
31 : 셀렉터 32 : 데이터 FF(flip-flop)
33 : 제어 회로
Claims (6)
- 프로그램을 실행하는 프로세서와,
쓰기가 가능한 불휘발 메모리와,
상기 불휘발 메모리에 저장된 정보를 판독하는 데이터 전송 회로
를 구비하고,
상기 프로세서의 메모리 맵은, 상기 프로세서가 제1 동작 모드로 설정된 때에 사용되는 제1 영역과, 상기 프로세서가 제2 동작 모드로 설정된 때에 사용되는 제2 영역을 가지며,
상기 제1 영역은 제1 엔디안 정보가 저장되는 상기 불휘발 메모리의 저장 장소가 할당되는 제3 영역을 갖고,
상기 제2 영역은 제2 엔디안 정보가 저장되는 상기 불휘발 메모리의 저장 장소가 할당되는 제4 영역을 가지며,
상기 데이터 전송 회로는, 상기 프로세서가 상기 제1 동작 모드로 설정될 때, 상기 제3 영역에 대응하는 어드레스를 출력해서 상기 불휘발 메모리로부터 상기 제1 엔디안 정보를 판독하여, 상기 프로세서에 상기 제1 엔디안 정보로 특정되는 엔디안을 설정하고, 상기 프로세서가 상기 제2 동작 모드로 설정될 때, 상기 제4 영역에 대응한 어드레스를 출력해서 상기 불휘발 메모리로부터 상기 제2 엔디안 정보를 판독하여, 상기 프로세서에 상기 제2 엔디안 정보로 특정되는 엔디안을 설정하는, 마이크로 컴퓨터. - 제 1 항에 있어서,
상기 제1 동작 모드 및 제2 동작 모드의 어느 쪽으로 설정되는 것인가를 나타내는 정보가 입력되는 외부 단자를 가지며,
상기 데이터 전송 회로는, 상기 외부 단자에 의해 설정된 동작 모드에 따라 상기 제3 및 제4 영역의 어느 쪽으로 대응한 어드레스를 출력하는, 마이크로 컴퓨터. - 제 2 항에 있어서,
상기 데이터 전송 회로는, 상기 프로세서의 리셋이 어서트 되어 있을 때, 상기 제1 및 제2 엔디안 정보 중 상기 외부 단자로 설정된 동작 모드에 대응한 엔디안 정보를 상기 불휘발 메모리로부터 상기 제1 및 제2 엔디안 정보의 어느 쪽을 판독하는, 마이크로 컴퓨터. - 제 1 항에 있어서,
상기 데이터 전송 회로는, 상기 프로세서의 리셋이 어서트 되어 있을 때에, 상기 제1 및 제2 엔디안 정보 중 마이크로 컴퓨터의 외부 단자로 설정된 동작 모드에 대응한 엔디안 정보를 상기 불휘발 메모리로부터 판독하고,
상기 프로세서는 리셋의 어서트가 해제된 후에, 상기 데이터 전송 회로로부터 출력된 엔디안 정보에 의해 특정되는 엔디안으로 동작을 개시하는, 마이크로 컴퓨터. - 제 4 항에 있어서,
내부 리셋이 어서트 되어 있을 때, 상기 프로세서의 리셋이 행해지고, 상기 내부 리셋의 어서트가 해제되면 상기 데이터 전송 회로는 상기 제1 및 제2 엔디안 정보의 어느 쪽을 상기 불휘발 메모리로부터 판독하는, 마이크로 컴퓨터. - 제 1 항에 있어서,
상기 프로세서가 상기 제1 동작 모드에서 실행하는 프로그램으로부터 상기 제2 동작 모드에서 실행하는 프로그램으로 분기하는 것을 검지하고 상기 데이터 전송 회로는 상기 제4 영역에 대응하는 어드레스를 출력해서 상기 불휘발 메모리로부터 상기 제2 엔디안 정보를 판독하여, 상기 프로세서에 상기 제2 엔디안 정보로 특정되는 엔디안을 설정하며,
상기 프로세서는, 상기 제2 엔디안 정보로 특정되는 엔디안이 설정된 후에, 상기 제2 동작 모드에서 실행하는 프로그램을 실행하는, 마이크로 컴퓨터.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010097253A JP5622429B2 (ja) | 2010-04-20 | 2010-04-20 | マイクロコンピュータ |
JPJP-P-2010-097253 | 2010-04-20 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110035359A Division KR101793282B1 (ko) | 2010-04-20 | 2011-04-15 | 마이크로 컴퓨터 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170123301A KR20170123301A (ko) | 2017-11-07 |
KR101913968B1 true KR101913968B1 (ko) | 2018-10-31 |
Family
ID=44789094
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110035359A KR101793282B1 (ko) | 2010-04-20 | 2011-04-15 | 마이크로 컴퓨터 |
KR1020170140392A KR101913968B1 (ko) | 2010-04-20 | 2017-10-26 | 마이크로 컴퓨터 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110035359A KR101793282B1 (ko) | 2010-04-20 | 2011-04-15 | 마이크로 컴퓨터 |
Country Status (3)
Country | Link |
---|---|
US (3) | US9395999B2 (ko) |
JP (1) | JP5622429B2 (ko) |
KR (2) | KR101793282B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5622429B2 (ja) * | 2010-04-20 | 2014-11-12 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ |
US10120682B2 (en) * | 2014-02-28 | 2018-11-06 | International Business Machines Corporation | Virtualization in a bi-endian-mode processor architecture |
US20170123792A1 (en) * | 2015-11-03 | 2017-05-04 | Imagination Technologies Limited | Processors Supporting Endian Agnostic SIMD Instructions and Methods |
CN109284135B (zh) * | 2018-09-07 | 2022-02-01 | 深圳市航顺芯片技术研发有限公司 | 一种简捷调用微控制器内部启动程序的方法 |
KR20210143048A (ko) | 2020-05-19 | 2021-11-26 | 삼성전자주식회사 | 상이한 엔디언 포맷에 따른 데이터 변환을 위한 인터페이스 회로를 갖는 메모리 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341345B1 (en) | 1995-02-24 | 2002-01-22 | International Business Machines Corporation | Mixed-endian computer system that provides cross-endian data sharing |
US20050251650A1 (en) | 2004-04-29 | 2005-11-10 | Microsoft Corporation | Dynamic endian switching |
US7533225B1 (en) | 2004-08-17 | 2009-05-12 | Sun Microsystems, Inc. | Method and apparatus for enabling adaptive endianness |
WO2010029794A1 (ja) | 2008-09-12 | 2010-03-18 | 株式会社ルネサステクノロジ | データ処理装置及び半導体集積回路装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5408664A (en) * | 1992-06-19 | 1995-04-18 | Silicon Graphics, Incorporated | System and Method for booting computer for operation in either of two byte-order modes |
US5687337A (en) | 1995-02-24 | 1997-11-11 | International Business Machines Corporation | Mixed-endian computer system |
JPH0997211A (ja) * | 1995-09-29 | 1997-04-08 | Matsushita Electric Ind Co Ltd | バス制御装置、及びバス制御装置を含む情報処理装置 |
JPH11212945A (ja) * | 1998-01-26 | 1999-08-06 | Mitsubishi Electric Corp | マイクロコンピュータおよびそのメモリ |
JP3659048B2 (ja) | 1999-02-16 | 2005-06-15 | 株式会社日立製作所 | オペレーティングシステム及び計算機 |
JP2002251385A (ja) * | 2001-02-23 | 2002-09-06 | Nec Microsystems Ltd | マイクロコンピュータ |
JP2003173327A (ja) * | 2001-12-07 | 2003-06-20 | Hitachi Ltd | 半導体集積回路 |
JP2005209105A (ja) * | 2004-01-26 | 2005-08-04 | Matsushita Electric Ind Co Ltd | マルチスレッドプロセッサ |
JP5622429B2 (ja) * | 2010-04-20 | 2014-11-12 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ |
-
2010
- 2010-04-20 JP JP2010097253A patent/JP5622429B2/ja not_active Expired - Fee Related
-
2011
- 2011-04-13 US US13/086,002 patent/US9395999B2/en active Active
- 2011-04-15 KR KR1020110035359A patent/KR101793282B1/ko active IP Right Grant
-
2016
- 2016-06-29 US US15/197,078 patent/US9910770B2/en active Active
-
2017
- 2017-10-26 KR KR1020170140392A patent/KR101913968B1/ko active IP Right Grant
-
2018
- 2018-01-22 US US15/876,780 patent/US10140207B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341345B1 (en) | 1995-02-24 | 2002-01-22 | International Business Machines Corporation | Mixed-endian computer system that provides cross-endian data sharing |
US20050251650A1 (en) | 2004-04-29 | 2005-11-10 | Microsoft Corporation | Dynamic endian switching |
US7533225B1 (en) | 2004-08-17 | 2009-05-12 | Sun Microsystems, Inc. | Method and apparatus for enabling adaptive endianness |
WO2010029794A1 (ja) | 2008-09-12 | 2010-03-18 | 株式会社ルネサステクノロジ | データ処理装置及び半導体集積回路装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5622429B2 (ja) | 2014-11-12 |
US20110258422A1 (en) | 2011-10-20 |
US9910770B2 (en) | 2018-03-06 |
US9395999B2 (en) | 2016-07-19 |
US20160314068A1 (en) | 2016-10-27 |
US10140207B2 (en) | 2018-11-27 |
KR20110116990A (ko) | 2011-10-26 |
KR20170123301A (ko) | 2017-11-07 |
KR101793282B1 (ko) | 2017-11-02 |
US20180143900A1 (en) | 2018-05-24 |
JP2011227730A (ja) | 2011-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101913968B1 (ko) | 마이크로 컴퓨터 | |
US10936327B2 (en) | Method of implementing magnetic random access memory (MRAM) for mobile system-on-chip boot | |
US7296143B2 (en) | Method and system for loading processor boot code from serial flash memory | |
JP2001229031A (ja) | 割込強制レジスタを含む柔軟な割込コントローラ | |
JP4226085B2 (ja) | マイクロプロセッサ及びマルチプロセッサシステム | |
JP3226055B2 (ja) | 情報処理装置 | |
JP2010039645A (ja) | 制御装置、情報処理装置、及びメモリモジュール認識方法 | |
KR101542878B1 (ko) | 버퍼램을 포함하는 불휘발성 메모리 장치 및 그것의 부트 코드 관리 방법 | |
JPH11272603A (ja) | バスブリッジ装置及びトランザクションフォワード方法 | |
JP6143841B2 (ja) | コンテキストスイッチを伴うマイクロコントローラ | |
KR100534613B1 (ko) | 플래쉬 메모리를 이용한 시스템 부팅 장치 및 그 방법 | |
US8117427B2 (en) | Motherboard, storage device and controller thereof, and booting method | |
JP5823000B2 (ja) | マイクロコンピュータ | |
US7206894B2 (en) | Microcomputer application system, microcomputer, signal processing system and signal processing LSI | |
JP2006127407A (ja) | 半導体集積回路 | |
JP3077807B2 (ja) | マイクロコンピュータシステム | |
JP2005275703A (ja) | プロセッサ及びコンテキスト切り替え方法 | |
US20090100220A1 (en) | Memory system, control method thereof and computer system | |
JP2004295874A (ja) | マイコン応用システムおよびマイコン、並びに、信号処理システムおよび信号処理lsi | |
KR100486252B1 (ko) | 캐쉬 장치 및 이에 적합한 캐쉬 제어 방법 | |
JP4641391B2 (ja) | ダイレクトメモリアクセス装置及びその制御方法、データ処理装置 | |
JPH0442329A (ja) | データ処理装置 | |
JPH0221614B2 (ko) | ||
JP2004288203A (ja) | プロセッサコア及びこれを用いたプロセッサ | |
JP2004118235A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |