forked from Firmware/Firmwares
remove unused timer interrupt handler
This commit is contained in:
parent
9157a42042
commit
9e9b644e29
@ -3,7 +3,7 @@ TARGET = hello_raven
|
||||
C_SRCS = $(wildcard src/*.c) $(BSP_BASE)/drivers/fe300prci/fe300prci_driver.c $(BSP_BASE)/drivers/plic/plic_driver.c
|
||||
CXX_SRCS = $(wildcard src/*.cpp)
|
||||
HEADERS = $(wildcard src/*.h)
|
||||
CFLAGS = -g -fno-builtin-printf -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -I./src
|
||||
CFLAGS = -g -fno-builtin-printf -DUSE_PLIC -I./src
|
||||
CXXFLAGS = -fno-use-cxa-atexit
|
||||
LDFLAGS = -Wl,--wrap=printf
|
||||
LDFLAGS += -g -lstdc++ -fno-use-cxa-atexit -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) -mcmodel=medany
|
||||
|
Binary file not shown.
@ -5,10 +5,7 @@
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdint>
|
||||
|
||||
#include "hifive1_io.h"
|
||||
|
||||
|
||||
#include <array>
|
||||
|
||||
#define IOF_ENABLE_TERMINAL (0x30000)
|
||||
|
||||
@ -34,21 +31,6 @@ extern "C" void handle_m_ext_interrupt() {
|
||||
exit(1 + (uintptr_t) int_num);
|
||||
PLIC_complete_interrupt(&g_plic, int_num);
|
||||
}
|
||||
/*! \brief mtime interval interrupt
|
||||
*
|
||||
*/
|
||||
extern "C" void handle_m_time_interrupt(){
|
||||
clear_csr(mie, MIP_MTIP);
|
||||
// Reset the timer for 3s in the future.
|
||||
// This also clears the existing timer interrupt.
|
||||
volatile uint64_t * mtime = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIME);
|
||||
volatile uint64_t * mtimecmp = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIMECMP);
|
||||
uint64_t now = *mtime;
|
||||
uint64_t then = now + RTC_FREQ;
|
||||
*mtimecmp = then;
|
||||
// Re-enable the timer interrupt.
|
||||
set_csr(mie, MIP_MTIP);
|
||||
}
|
||||
/*! \brief dummy interrupt handler
|
||||
*
|
||||
*/
|
||||
@ -83,9 +65,10 @@ static void msi_interrupt_handler(){
|
||||
*
|
||||
*/
|
||||
void platform_init(){
|
||||
// configure clocks
|
||||
PRCI_use_hfxosc(1); // is equivalent to
|
||||
qspi1::sckdiv_reg() = 8;
|
||||
// UART init section TODO: clarify how to get the functions from init.c?
|
||||
GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
|
||||
GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
|
||||
UART0_REG(UART_REG_TXCTRL) |= UART_TXEN;
|
||||
|
||||
F_CPU=PRCI_measure_mcycle_freq(20, RTC_FREQ);
|
||||
printf("core freq at %d Hz\n", F_CPU);
|
||||
@ -98,18 +81,10 @@ void platform_init(){
|
||||
clear_csr(mie, MIP_MTIP);
|
||||
for (auto& h:g_ext_interrupt_handlers) h=no_interrupt_handler;
|
||||
configure_irq(1, msi_interrupt_handler);
|
||||
// Set the machine timer to go off in 1 second.
|
||||
volatile uint64_t * mtime = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIME);
|
||||
volatile uint64_t * mtimecmp = (uint64_t*) (CLINT_CTRL_ADDR + CLINT_MTIMECMP);
|
||||
uint64_t now = *mtime;
|
||||
uint64_t then = now + RTC_FREQ;
|
||||
*mtimecmp = then;
|
||||
// Enable the Machine-External bit in MIE
|
||||
set_csr(mie, MIP_MEIP);
|
||||
// Enable the Machine-Timer bit in MIE
|
||||
set_csr(mie, MIP_MTIP);
|
||||
// Enable interrupts in general.
|
||||
set_csr(mstatus, MSTATUS_MIE);
|
||||
// Enable the Machine-External bit in MIE
|
||||
set_csr(mie, MIP_MEIP);
|
||||
}
|
||||
|
||||
/*! \brief main function
|
||||
@ -121,15 +96,12 @@ int main() {
|
||||
int * plic_b_pending = (int *)(0xA0000000+PLIC_PENDING_OFFSET);
|
||||
|
||||
int * local_sync_bit = (int *)(local_mem_base + 10);
|
||||
int * target_sync_bit = (int *)(target_mem_base + 10);
|
||||
volatile int * target_sync_bit = (int *)(target_mem_base + 10);
|
||||
|
||||
int hartid = read_csr(mhartid);
|
||||
|
||||
*local_sync_bit = 0;
|
||||
GPIO_REG(GPIO_IOF_EN) |= IOF_ENABLE_TERMINAL; // enable GPIO connection to the terminal
|
||||
platform_init();
|
||||
// Enable the Machine-External bit in MIE
|
||||
set_csr(mie, MIP_MEIP);
|
||||
|
||||
if (hartid == 0) {
|
||||
int val_a = 5;
|
||||
|
@ -2,6 +2,5 @@
|
||||
#define HELLO_RAVEN_H_
|
||||
|
||||
extern "C" void handle_m_ext_interrupt();
|
||||
extern "C" void handle_m_time_interrupt();
|
||||
|
||||
#endif /* HELLO_RAVEN_H_ */
|
||||
|
@ -1,16 +0,0 @@
|
||||
/*
|
||||
* peripherals.c
|
||||
*
|
||||
* Created on: 10.09.2018
|
||||
* Author: eyck
|
||||
*/
|
||||
|
||||
#include "hifive1_io.h"
|
||||
|
||||
template<> volatile bool qspi0::spi_active=false;
|
||||
template<> volatile bool qspi1::spi_active=false;
|
||||
template<> volatile bool qspi2::spi_active=false;
|
||||
template<> volatile bool pwm0::pwm_active=false;
|
||||
template<> volatile bool pwm1::pwm_active=false;
|
||||
template<> volatile bool pwm2::pwm_active=false;
|
||||
|
@ -1,26 +0,0 @@
|
||||
/*
|
||||
* peripherals.h
|
||||
*
|
||||
* Created on: 29.07.2018
|
||||
* Author: eyck
|
||||
*/
|
||||
|
||||
#ifndef HIFIVE1_IO_H_
|
||||
#define HIFIVE1_IO_H_
|
||||
|
||||
#include "io/gpio.h"
|
||||
#include "io/spi.h"
|
||||
#include "io/pwm.h"
|
||||
#include "io/uart.h"
|
||||
|
||||
using gpio0=gpio_regs<0x10012000>;
|
||||
using uart0=uart_regs<0x10013000>;
|
||||
using uart1=uart_regs<0x10023000>;
|
||||
using qspi0=spi_regs<0x10014000>;
|
||||
using qspi1=spi_regs<0x10024000>;
|
||||
using qspi2=spi_regs<0x10034000>;
|
||||
using pwm0 =pwm_regs<0x10015000>;
|
||||
using pwm1 =pwm_regs<0x10025000>;
|
||||
using pwm2 =pwm_regs<0x10035000>;
|
||||
|
||||
#endif /* HIFIVE1_IO_H_ */
|
Loading…
Reference in New Issue
Block a user