summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2020-06-04 11:04:05 +0800
committerGitHub <[email protected]>2020-06-04 11:04:05 +0800
commit1b60cdaefbb17c5b2a569b357bd45bfc47cd66cc (patch)
tree0639c925ca91511d5890024359923a912e8c71fd /bsp
parent6a1c9f3222246072064c551735378c355cb0b758 (diff)
parent266716a959348dea4ce182555e27b890bf9e6e29 (diff)
Merge pull request #3650 from bigmagic123/fix_raspi2
fix raspi bsp
Diffstat (limited to 'bsp')
-rw-r--r--bsp/raspberry-pi/raspi2/cpu/cp15.h1
-rw-r--r--bsp/raspberry-pi/raspi2/cpu/interrupt.c6
-rw-r--r--bsp/raspberry-pi/raspi2/driver/board.c5
-rw-r--r--bsp/raspberry-pi/raspi3-32/driver/board.c5
4 files changed, 10 insertions, 7 deletions
diff --git a/bsp/raspberry-pi/raspi2/cpu/cp15.h b/bsp/raspberry-pi/raspi2/cpu/cp15.h
index ebea3f0fe3..141a22a675 100644
--- a/bsp/raspberry-pi/raspi2/cpu/cp15.h
+++ b/bsp/raspberry-pi/raspi2/cpu/cp15.h
@@ -6,6 +6,7 @@ unsigned long rt_cpu_get_smp_id(void);
void rt_cpu_mmu_disable(void);
void rt_cpu_mmu_enable(void);
void rt_cpu_tlb_set(volatile unsigned long*);
+void rt_hw_vector_init(void);
void rt_cpu_vector_set_base(unsigned int addr);
diff --git a/bsp/raspberry-pi/raspi2/cpu/interrupt.c b/bsp/raspberry-pi/raspi2/cpu/interrupt.c
index d502977c3e..93513f3da3 100644
--- a/bsp/raspberry-pi/raspi2/cpu/interrupt.c
+++ b/bsp/raspberry-pi/raspi2/cpu/interrupt.c
@@ -29,8 +29,14 @@ rt_uint32_t rt_interrupt_from_thread;
rt_uint32_t rt_interrupt_to_thread;
rt_uint32_t rt_thread_switch_interrupt_flag;
+extern void rt_cpu_vector_set_base(unsigned int addr);
extern int system_vectors;
+void rt_hw_vector_init(void)
+{
+ rt_cpu_vector_set_base((unsigned int)&system_vectors);
+}
+
static void default_isr_handler(int vector, void *param)
{
rt_kprintf("unhandled irq: %d\n", vector);
diff --git a/bsp/raspberry-pi/raspi2/driver/board.c b/bsp/raspberry-pi/raspi2/driver/board.c
index 30f8cd93a1..78cac6ba4d 100644
--- a/bsp/raspberry-pi/raspi2/driver/board.c
+++ b/bsp/raspberry-pi/raspi2/driver/board.c
@@ -26,6 +26,7 @@
#include "board.h"
#include "drv_uart.h"
+#include "cp15.h"
void rt_hw_timer_isr(int vector, void *parameter)
{
@@ -65,7 +66,7 @@ void rt_hw_board_init(void)
{
/* initialize hardware interrupt */
rt_hw_interrupt_init();
- vector_copy();
+ rt_hw_vector_init();
/* initialize uart */
rt_hw_uart_init();
@@ -82,7 +83,7 @@ void rt_hw_board_init(void)
#endif
/* initialize timer for os tick */
- // rt_hw_timer_init();
+ rt_hw_timer_init();
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
diff --git a/bsp/raspberry-pi/raspi3-32/driver/board.c b/bsp/raspberry-pi/raspi3-32/driver/board.c
index a1b3d603c8..9cd929662e 100644
--- a/bsp/raspberry-pi/raspi3-32/driver/board.c
+++ b/bsp/raspberry-pi/raspi3-32/driver/board.c
@@ -73,10 +73,6 @@ void ipi_handler()
rt_scheduler_ipi_handler(0,RT_NULL);
}
#endif
-void vector_copy(void)
-{
- rt_memcpy((void*)0x0, (void*)0x8000, 64);
-}
void idle_wfi(void)
{
@@ -87,7 +83,6 @@ void rt_hw_board_init(void)
{
/* initialize hardware interrupt */
rt_hw_interrupt_init();
- vector_copy();
rt_hw_vector_init();
/* initialize uart */
rt_hw_uart_init();