remove unused timer interrupt handler
This commit is contained in:
		@@ -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
 | 
					C_SRCS    = $(wildcard src/*.c)  $(BSP_BASE)/drivers/fe300prci/fe300prci_driver.c $(BSP_BASE)/drivers/plic/plic_driver.c
 | 
				
			||||||
CXX_SRCS  = $(wildcard src/*.cpp) 
 | 
					CXX_SRCS  = $(wildcard src/*.cpp) 
 | 
				
			||||||
HEADERS   = $(wildcard src/*.h)
 | 
					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
 | 
					CXXFLAGS  = -fno-use-cxa-atexit
 | 
				
			||||||
LDFLAGS   = -Wl,--wrap=printf
 | 
					LDFLAGS   = -Wl,--wrap=printf
 | 
				
			||||||
LDFLAGS  += -g -lstdc++ -fno-use-cxa-atexit -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) -mcmodel=medany
 | 
					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 <cstdio>
 | 
				
			||||||
#include <cstdint>
 | 
					#include <cstdint>
 | 
				
			||||||
 | 
					#include <array>
 | 
				
			||||||
#include "hifive1_io.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define IOF_ENABLE_TERMINAL (0x30000)
 | 
					#define IOF_ENABLE_TERMINAL (0x30000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,21 +31,6 @@ extern "C" void handle_m_ext_interrupt() {
 | 
				
			|||||||
      exit(1 + (uintptr_t) int_num);
 | 
					      exit(1 + (uintptr_t) int_num);
 | 
				
			||||||
    PLIC_complete_interrupt(&g_plic, 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
 | 
					/*! \brief dummy interrupt handler
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -83,9 +65,10 @@ static void msi_interrupt_handler(){
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void platform_init(){
 | 
					void platform_init(){
 | 
				
			||||||
    // configure clocks
 | 
						// UART init section TODO: clarify how to get the functions from init.c?
 | 
				
			||||||
    PRCI_use_hfxosc(1); // is equivalent to
 | 
						GPIO_REG(GPIO_IOF_SEL) &= ~IOF0_UART0_MASK;
 | 
				
			||||||
    qspi1::sckdiv_reg() = 8;
 | 
						GPIO_REG(GPIO_IOF_EN) |= IOF0_UART0_MASK;
 | 
				
			||||||
 | 
						UART0_REG(UART_REG_TXCTRL) |= UART_TXEN;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    F_CPU=PRCI_measure_mcycle_freq(20, RTC_FREQ);
 | 
					    F_CPU=PRCI_measure_mcycle_freq(20, RTC_FREQ);
 | 
				
			||||||
    printf("core freq at %d Hz\n", F_CPU);
 | 
					    printf("core freq at %d Hz\n", F_CPU);
 | 
				
			||||||
@@ -98,18 +81,10 @@ void platform_init(){
 | 
				
			|||||||
    clear_csr(mie, MIP_MTIP);
 | 
					    clear_csr(mie, MIP_MTIP);
 | 
				
			||||||
    for (auto& h:g_ext_interrupt_handlers) h=no_interrupt_handler;
 | 
					    for (auto& h:g_ext_interrupt_handlers) h=no_interrupt_handler;
 | 
				
			||||||
    configure_irq(1, msi_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.
 | 
					    // Enable interrupts in general.
 | 
				
			||||||
    set_csr(mstatus, MSTATUS_MIE);
 | 
					    set_csr(mstatus, MSTATUS_MIE);
 | 
				
			||||||
 | 
					    // Enable the Machine-External bit in MIE
 | 
				
			||||||
 | 
					    set_csr(mie, MIP_MEIP);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*! \brief main function
 | 
					/*! \brief main function
 | 
				
			||||||
@@ -121,15 +96,12 @@ int main() {
 | 
				
			|||||||
    int * plic_b_pending           = (int *)(0xA0000000+PLIC_PENDING_OFFSET);
 | 
					    int * plic_b_pending           = (int *)(0xA0000000+PLIC_PENDING_OFFSET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int * local_sync_bit           = (int *)(local_mem_base + 10);
 | 
					    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);
 | 
					    int hartid = read_csr(mhartid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *local_sync_bit = 0;
 | 
					    *local_sync_bit = 0;
 | 
				
			||||||
	GPIO_REG(GPIO_IOF_EN) |= IOF_ENABLE_TERMINAL; // enable GPIO connection to the terminal
 | 
					 | 
				
			||||||
    platform_init();
 | 
					    platform_init();
 | 
				
			||||||
    // Enable the Machine-External bit in MIE
 | 
					 | 
				
			||||||
    set_csr(mie, MIP_MEIP);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (hartid == 0) {
 | 
					    if (hartid == 0) {
 | 
				
			||||||
    	int val_a = 5;
 | 
					    	int val_a = 5;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,5 @@
 | 
				
			|||||||
#define HELLO_RAVEN_H_
 | 
					#define HELLO_RAVEN_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern "C" void handle_m_ext_interrupt();
 | 
					extern "C" void handle_m_ext_interrupt();
 | 
				
			||||||
extern "C" void handle_m_time_interrupt();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* HELLO_RAVEN_H_ */
 | 
					#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_ */
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user