0
Nios_2_r2c 프로세서의 데이터 캐시를 우회하기 위해 코드를 제거하고 코드를 추가해야하는 다음 C 소스 파일이 있습니다. 나는 이것을 할 방법이 없다. Nios II 프로세서의 데이터 케이지 바이 패스
// file: switches.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "switches.h"
static struct pio_regs *SW = (struct pio_regs *)SWITCH_BASE;
static REGISTER SH_SW;
bits get_RUN (void) {
SH_SW = SW->data;
return getbit(SH_SW, 17);
}
--------------------------
// file: ledr.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "ledr.h"
static struct pio_regs *LEDR = (struct pio_regs *)LEDR_BASE;
static REGISTER SH_LEDR;
void LEDR_Init (void) {
SH_LEDR = 0;
LEDR->data = 0;
}
void show_RUN (bits RUN) {
SH_LEDR = putbit (SH_LEDR, RUN, 12);
LEDR->data = SH_LEDR;
}
는 I/O를 읽고 사용하는 인라인 어셈블리 알았어요 및 쓰기 :
// file: switches.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "switches.h"
static struct pio_regs *SW = (struct pio_regs *)SWITCH_BASE;
static REGISTER SH_SW;
bits get_RUN (void) {
//SH_SW = SW->data;
__asm("ldwio %0, %1" : "=r"(SH_SW) : "m"(SW->data));
return getbit(SH_SW, 17);
}
----------------------
// file: ledr.c
#include "system.h"
#include "pio_regs.h"
#include "bsu_macros.h"
#include "ledr.h"
static struct pio_regs *LEDR = (struct pio_regs *)LEDR_BASE;
static REGISTER SH_LEDR;
void LEDR_Init (void) {
SH_LEDR = 0;
//LEDR->data = 0;
__asm("stwio %0, %1" : "=r"(SH_LEDR) : "m"(SW->data));
}
void show_RUN (bits RUN) {
SH_LEDR = putbit (SH_LEDR, RUN, 12);
//LEDR->data = SH_LEDR;
__asm("stwio %0, %1" : "=r"(SH_SW) : "m"(SW->data));
}
으로 캐시를 항상하고 그들이 어떻게 아니거나하면 ... –
이궁, 당신이 나타납니다 돕고있다 이 질문을하는 유일한 사람 (인터넷에서). 축하해! BTW, 나는이 책을 가지고 있다고 가정합니다. http://www.altera.com/literature/hb/nios2/n2cpu_nii5v1.pdf 당신이하려는 일에 대한 설명은 2-14 페이지를보십시오. – KevinDTimm
페이지 3-53 – KevinDTimm