組み込み型オペレーティングシステム開発プロジェクトCH 6
4050 ワード
インタラプトコントローラ
#include "stdint.h"
#include "HalUart.h"
#include "stdio.h"
static void Hw_init();
void main(void){
Hw_init();
uint32_t i= 100;
while(i--){
Hal_uart_put_char('N');
}
putstr("\n");
putstr("Jello world\n");
i=10;
char *str = "hihi first printf";
debug_printf("%u: %x %s\n",1,14,str);
while(i--){
uint8_t c= Hal_uart_get_char();
Hal_uart_put_char(c);
}
while(true); // add here!
}
static void Hw_init(){
Hal_uart_init();
}
データテーブル
CPU control register
typedef union CpuControl_t
{
uint32_t all;
struct {
uint32_t Enable:1; // 0
uint32_t reserved:31;
} bits;
} CpuControl_t;
- reserved
- b0 = disable the CPU interface for this GIC
- b1 = enable the CPU interface for this GIC
Priority Mask register.
typedef union PriorityMask_t
{
uint32_t all;
struct {
uint32_t Reserved:4; // 3:0
uint32_t Prioritymask:4; // 7:4
uint32_t reserved:24;
} bits;
} PriorityMask_t;
- reserved
-Priority Mask
- reserved
BInsry Printer register
typedef union BinaryPoint_t
{
uint32_t all;
struct {
uint32_t Binarypoint:3; // 2:0
uint32_t reserved:29;
} bits;
} BinaryPoint_t;
- reserved
- The criteria of comparing priority for pre-emption.
Interrupt acknowledge register
typedef union InterruptAck_t
{
uint32_t all;
struct {
uint32_t InterruptID:10; // 9:0
uint32_t CPUsourceID:3; // 12:10
uint32_t reserved:19;
} bits;
} InterruptAck_t;
- reserved
- CPU ID, reserved for multi processor.
- The Interrupt number, read only.
End of Interrupt register
typedef union EndOfInterrupt_t
{
uint32_t all;
struct {
uint32_t InterruptID:10; // 9:0
uint32_t CPUsourceID:3; // 12:10
uint32_t reserved:19;
} bits;
} EndOfInterrupt_t;
Reference
この問題について(組み込み型オペレーティングシステム開発プロジェクトCH 6), 我々は、より多くの情報をここで見つけました https://velog.io/@dddd/임베디드-OS-개발-프로젝트-CH6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol