Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
红岛
rt-thread
提交
773f7cdf
R
rt-thread
项目概览
红岛
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
773f7cdf
编写于
2月 26, 2020
作者:
B
bigmagic
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp/raspi3-64]add core timer driver
上级
b6031497
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
146 addition
and
263 deletion
+146
-263
bsp/raspberry-pi/raspi3-64/.config
bsp/raspberry-pi/raspi3-64/.config
+43
-5
bsp/raspberry-pi/raspi3-64/driver/Kconfig
bsp/raspberry-pi/raspi3-64/driver/Kconfig
+13
-8
bsp/raspberry-pi/raspi3-64/driver/bcm283x.h
bsp/raspberry-pi/raspi3-64/driver/bcm283x.h
+10
-0
bsp/raspberry-pi/raspi3-64/driver/board.c
bsp/raspberry-pi/raspi3-64/driver/board.c
+34
-5
bsp/raspberry-pi/raspi3-64/rtconfig.h
bsp/raspberry-pi/raspi3-64/rtconfig.h
+8
-209
libcpu/aarch64/cortex-a53/context_gcc.S
libcpu/aarch64/cortex-a53/context_gcc.S
+25
-0
libcpu/aarch64/cortex-a53/trap.c
libcpu/aarch64/cortex-a53/trap.c
+13
-36
未找到文件。
bsp/raspberry-pi/raspi3-64/.config
浏览文件 @
773f7cdf
...
...
@@ -67,12 +67,9 @@ CONFIG_RT_USING_DEVICE_OPS=y
CONFIG_RT_USING_CONSOLE
=
y
CONFIG_RT_CONSOLEBUF_SIZE
=
128
CONFIG_RT_CONSOLE_DEVICE_NAME
=
"uart1"
CONFIG_RT_VER_NUM
=
0
x4000
2
CONFIG_RT_VER_NUM
=
0
x4000
3
CONFIG_ARCH_CPU_64BIT
=
y
CONFIG_ARCH_ARM
=
y
# CONFIG_RT_USING_CPU_FFS is not set
CONFIG_ARCH_ARM_CORTEX_AARCH64
=
y
CONFIG_ARCH_ARM_CORTEX_A53
=
y
# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
#
...
...
@@ -150,6 +147,8 @@ CONFIG_RT_USING_PIN=y
# CONFIG_RT_USING_SENSOR is not set
# CONFIG_RT_USING_TOUCH is not set
# CONFIG_RT_USING_HWCRYPTO is not set
# CONFIG_RT_USING_PULSE_ENCODER is not set
# CONFIG_RT_USING_INPUT_CAPTURE is not set
# CONFIG_RT_USING_WIFI is not set
#
...
...
@@ -216,6 +215,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
# CONFIG_PKG_USING_MYMQTT is not set
# CONFIG_PKG_USING_WEBTERMINAL is not set
# CONFIG_PKG_USING_CJSON is not set
# CONFIG_PKG_USING_JSMN is not set
...
...
@@ -269,6 +269,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_DLT645 is not set
# CONFIG_PKG_USING_QXWZ is not set
# CONFIG_PKG_USING_SMTP_CLIENT is not set
# CONFIG_PKG_USING_ABUP_FOTA is not set
#
# security packages
...
...
@@ -306,6 +307,10 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_ADBD is not set
# CONFIG_PKG_USING_COREMARK is not set
# CONFIG_PKG_USING_DHRYSTONE is not set
# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
#
# system packages
...
...
@@ -324,6 +329,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_LITTLEFS is not set
# CONFIG_PKG_USING_THREAD_POOL is not set
# CONFIG_PKG_USING_ROBOTS is not set
# CONFIG_PKG_USING_EV is not set
#
# peripheral libraries and drivers
...
...
@@ -331,6 +337,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
# CONFIG_PKG_USING_SHT2X is not set
# CONFIG_PKG_USING_SHT3X is not set
# CONFIG_PKG_USING_STM32_SDIO is not set
# CONFIG_PKG_USING_ICM20608 is not set
# CONFIG_PKG_USING_U8G2 is not set
...
...
@@ -352,9 +359,9 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_I2C_TOOLS is not set
# CONFIG_PKG_USING_NRF24L01 is not set
# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
# CONFIG_PKG_USING_LCD_DRIVERS is not set
# CONFIG_PKG_USING_MAX17048 is not set
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
#
# miscellaneous packages
...
...
@@ -391,6 +398,36 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_VT100 is not set
# CONFIG_PKG_USING_ULAPACK is not set
# CONFIG_PKG_USING_UKAL is not set
#
# Privated Packages of RealThread
#
# CONFIG_PKG_USING_CODEC is not set
# CONFIG_PKG_USING_PLAYER is not set
# CONFIG_PKG_USING_MPLAYER is not set
# CONFIG_PKG_USING_PERSIMMON_SRC is not set
# CONFIG_PKG_USING_JS_PERSIMMON is not set
# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
#
# Network Utilities
#
# CONFIG_PKG_USING_WICED is not set
# CONFIG_PKG_USING_CLOUDSDK is not set
# CONFIG_PKG_USING_POWER_MANAGER is not set
# CONFIG_PKG_USING_RT_OTA is not set
# CONFIG_PKG_USING_RDBD_SRC is not set
# CONFIG_PKG_USING_RTINSIGHT is not set
# CONFIG_PKG_USING_SMARTCONFIG is not set
# CONFIG_PKG_USING_RTX is not set
# CONFIG_RT_USING_TESTCASE is not set
# CONFIG_PKG_USING_NGHTTP2 is not set
# CONFIG_PKG_USING_AVS is not set
# CONFIG_PKG_USING_JOYLINK is not set
# CONFIG_PKG_USING_STS is not set
# CONFIG_PKG_USING_DLMS is not set
# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
# CONFIG_PKG_USING_ZBAR is not set
CONFIG_BCM2836_SOC
=
y
# CONFIG_BSP_SUPPORT_FPU is not set
...
...
@@ -405,6 +442,7 @@ CONFIG_BSP_USING_UART=y
# CONFIG_RT_USING_UART0 is not set
CONFIG_RT_USING_UART1
=
y
CONFIG_BSP_USING_PIN
=
y
CONFIG_BSP_USING_CORETIMER
=
y
# CONFIG_BSP_USING_SYSTIMER is not set
# CONFIG_BSP_USING_I2C is not set
# CONFIG_BSP_USING_SPI is not set
...
...
bsp/raspberry-pi/raspi3-64/driver/Kconfig
浏览文件 @
773f7cdf
...
...
@@ -25,18 +25,23 @@ menu "Hardware Drivers Config"
select RT_USING_PIN
default y
config BSP_USING_CORETIMER
bool "Using core timer"
select RT_USING_CORETIMER
default y
menuconfig BSP_USING_SYSTIMER
bool "Enable SYSTIMER"
select
RT
_USING_SYSTIMER
select
BSP
_USING_SYSTIMER
default n
if RT
_USING_SYSTIMER
config RT_USING_SYSTIMER1
bool "Enable sys timer1"
default n
config RT_USING_SYSTIMER3
bool "Enable sys timer3"
default n
if BSP
_USING_SYSTIMER
config RT_USING_SYSTIMER1
bool "Enable sys timer1"
default n
config RT_USING_SYSTIMER3
bool "Enable sys timer3"
default n
endif
menuconfig BSP_USING_I2C
...
...
bsp/raspberry-pi/raspi3-64/driver/bcm283x.h
浏览文件 @
773f7cdf
...
...
@@ -201,6 +201,16 @@ enum i2c_reason_codes
#define IRQ_DISABLE2 HWREG32(IRQ_BASE + 0x20)
#define IRQ_DISABLE_BASIC HWREG32(IRQ_BASE + 0x24)
/*
* Gtimer IRQ flag
*/
#define SYSTEM_TIMER_IRQ_0 (1 << 0)
#define SYSTEM_TIMER_IRQ_1 (1 << 1)
#define SYSTEM_TIMER_IRQ_2 (1 << 2)
#define SYSTEM_TIMER_IRQ_3 (1 << 3)
#define NON_SECURE_TIMER_IRQ (1 << 1)
/*
* System Timer
*/
...
...
bsp/raspberry-pi/raspi3-64/driver/board.c
浏览文件 @
773f7cdf
...
...
@@ -18,6 +18,20 @@
#include "cp15.h"
#include "mmu.h"
#ifdef BSP_USING_CORETIMER
static
rt_uint64_t
timerStep
;
#define CORE0_TIMER_IRQ_CTRL HWREG32(0x40000040)
int
rt_hw_get_gtimer_frq
(
void
);
void
rt_hw_set_gtimer_val
(
rt_uint64_t
value
);
void
rt_hw_gtimer_enable
(
void
);
void
core0_timer_enable_interrupt_controller
()
{
CORE0_TIMER_IRQ_CTRL
|=
NON_SECURE_TIMER_IRQ
;
}
#endif
#ifdef RT_USING_SMP
extern
void
rt_hw_ipi_handler_install
(
int
ipi_vector
,
rt_isr_handler_t
ipi_isr_handler
);
...
...
@@ -28,15 +42,29 @@ void ipi_handler(){
void
rt_hw_timer_isr
(
int
vector
,
void
*
parameter
)
{
#ifdef BSP_USING_CORETIMER
rt_hw_set_gtimer_val
(
timerStep
);
#else
ARM_TIMER_IRQCLR
=
0
;
#endif
rt_tick_increase
();
}
int
rt_hw_timer_init
(
)
void
rt_hw_timer_init
(
void
)
{
__DSB
();
rt_hw_interrupt_install
(
IRQ_ARM_TIMER
,
rt_hw_timer_isr
,
RT_NULL
,
"tick"
);
rt_hw_interrupt_umask
(
IRQ_ARM_TIMER
);
#ifdef BSP_USING_CORETIMER
__ISB
();
timerStep
=
rt_hw_get_gtimer_frq
();
__DSB
();
timerStep
/=
RT_TICK_PER_SECOND
;
rt_hw_gtimer_enable
();
rt_hw_set_gtimer_val
(
timerStep
);
core0_timer_enable_interrupt_controller
();
#else
__DSB
();
/* timer_clock = apb_clock/(pre_divider + 1) */
ARM_TIMER_PREDIV
=
(
250
-
1
);
...
...
@@ -50,7 +78,7 @@ int rt_hw_timer_init()
/* 23-bit counter, enable interrupt, enable timer */
ARM_TIMER_CTRL
=
(
1
<<
1
)
|
(
1
<<
5
)
|
(
1
<<
7
);
return
0
;
#endif
}
void
idle_wfi
(
void
)
...
...
@@ -68,8 +96,9 @@ void rt_hw_board_init(void)
armv8_map
(
0
,
0
,
0x800000
,
MEM_ATTR_MEMORY
);
armv8_map
(
0x3f00B000
,
0x3f00B000
,
0x1000
,
MEM_ATTR_IO
);
//timer
armv8_map
(
0x3f200000
,
0x3f200000
,
0x16000
,
MEM_ATTR_IO
);
//uart
armv8_map
(
0x40000000
,
0x40000000
,
0x1000
,
MEM_ATTR_IO
);
//core timer
mmu_enable
();
/* initialize hardware interrupt */
rt_hw_interrupt_init
();
// in libcpu/interrupt.c. Set some data structures, no operation on device
rt_hw_vector_init
();
// in libcpu/interrupt.c. == rt_cpu_vector_set_base((rt_ubase_t)&system_vectors);
...
...
@@ -80,7 +109,7 @@ void rt_hw_board_init(void)
rt_hw_timer_init
();
rt_thread_idle_sethook
(
idle_wfi
);
#ifdef RT_USING_CONSOLE
#ifdef RT_USING_CONSOLE
/* set console device */
rt_console_set_device
(
RT_CONSOLE_DEVICE_NAME
);
#endif
/* RT_USING_CONSOLE */
...
...
bsp/raspberry-pi/raspi3-64/rtconfig.h
浏览文件 @
773f7cdf
...
...
@@ -7,12 +7,8 @@
/* RT-Thread Kernel */
#define RT_NAME_MAX 8
/* RT_USING_ARCH_DATA_TYPE is not set */
/* RT_USING_SMP is not set */
#define RT_ALIGN_SIZE 4
/* RT_THREAD_PRIORITY_8 is not set */
#define RT_THREAD_PRIORITY_32
/* RT_THREAD_PRIORITY_256 is not set */
#define RT_THREAD_PRIORITY_MAX 32
#define RT_TICK_PER_SECOND 100
#define RT_USING_OVERFLOW_CHECK
...
...
@@ -25,16 +21,6 @@
#define RT_TIMER_THREAD_STACK_SIZE 2048
#define RT_DEBUG
#define RT_DEBUG_COLOR
/* RT_DEBUG_INIT_CONFIG is not set */
/* RT_DEBUG_THREAD_CONFIG is not set */
/* RT_DEBUG_SCHEDULER_CONFIG is not set */
/* RT_DEBUG_IPC_CONFIG is not set */
/* RT_DEBUG_TIMER_CONFIG is not set */
/* RT_DEBUG_IRQ_CONFIG is not set */
/* RT_DEBUG_MEM_CONFIG is not set */
/* RT_DEBUG_SLAB_CONFIG is not set */
/* RT_DEBUG_MEMHEAP_CONFIG is not set */
/* RT_DEBUG_MODULE_CONFIG is not set */
/* Inter-Thread communication */
...
...
@@ -43,16 +29,12 @@
#define RT_USING_EVENT
#define RT_USING_MAILBOX
#define RT_USING_MESSAGEQUEUE
/* RT_USING_SIGNALS is not set */
/* Memory Management */
#define RT_USING_MEMPOOL
#define RT_USING_MEMHEAP
/* RT_USING_NOHEAP is not set */
#define RT_USING_SMALL_MEM
/* RT_USING_SLAB is not set */
/* RT_USING_MEMHEAP_AS_HEAP is not set */
#define RT_USING_MEMTRACE
#define RT_USING_HEAP
...
...
@@ -60,17 +42,11 @@
#define RT_USING_DEVICE
#define RT_USING_DEVICE_OPS
/* RT_USING_INTERRUPT_INFO is not set */
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 128
#define RT_CONSOLE_DEVICE_NAME "uart1"
#define RT_VER_NUM 0x4000
2
#define RT_VER_NUM 0x4000
3
#define ARCH_CPU_64BIT
#define ARCH_ARM
/* RT_USING_CPU_FFS is not set */
#define ARCH_ARM_CORTEX_AARCH64
#define ARCH_ARM_CORTEX_A53
/* ARCH_CPU_STACK_GROWS_UPWARD is not set */
/* RT-Thread Components */
...
...
@@ -81,7 +57,6 @@
/* C++ features */
/* RT_USING_CPLUSPLUS is not set */
/* Command shell */
...
...
@@ -91,11 +66,9 @@
#define FINSH_HISTORY_LINES 5
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
/* FINSH_ECHO_DISABLE_DEFAULT is not set */
#define FINSH_THREAD_PRIORITY 20
#define FINSH_THREAD_STACK_SIZE 4096
#define FINSH_CMD_SIZE 80
/* FINSH_USING_AUTH is not set */
#define FINSH_USING_MSH
#define FINSH_USING_MSH_DEFAULT
#define FINSH_USING_MSH_ONLY
...
...
@@ -108,275 +81,101 @@
#define DFS_FILESYSTEMS_MAX 2
#define DFS_FILESYSTEM_TYPES_MAX 2
#define DFS_FD_MAX 16
/* RT_USING_DFS_MNTTABLE is not set */
/* RT_USING_DFS_ELMFAT is not set */
#define RT_USING_DFS_DEVFS
/* RT_USING_DFS_ROMFS is not set */
/* RT_USING_DFS_RAMFS is not set */
/* RT_USING_DFS_UFFS is not set */
/* RT_USING_DFS_JFFS2 is not set */
/* Device Drivers */
#define RT_USING_DEVICE_IPC
#define RT_PIPE_BUFSZ 512
/* RT_USING_SYSTEM_WORKQUEUE is not set */
#define RT_USING_SERIAL
/* RT_SERIAL_USING_DMA is not set */
#define RT_SERIAL_RB_BUFSZ 64
/* RT_USING_CAN is not set */
/* RT_USING_HWTIMER is not set */
/* RT_USING_CPUTIME is not set */
/* RT_USING_I2C is not set */
#define RT_USING_PIN
/* RT_USING_ADC is not set */
/* RT_USING_PWM is not set */
/* RT_USING_MTD_NOR is not set */
/* RT_USING_MTD_NAND is not set */
/* RT_USING_PM is not set */
/* RT_USING_RTC is not set */
/* RT_USING_SDIO is not set */
/* RT_USING_SPI is not set */
/* RT_USING_WDT is not set */
/* RT_USING_AUDIO is not set */
/* RT_USING_SENSOR is not set */
/* RT_USING_TOUCH is not set */
/* RT_USING_HWCRYPTO is not set */
/* RT_USING_WIFI is not set */
/* Using USB */
/* RT_USING_USB_HOST is not set */
/* RT_USING_USB_DEVICE is not set */
/* POSIX layer and C standard library */
#define RT_USING_LIBC
/* RT_USING_PTHREADS is not set */
#define RT_USING_POSIX
/* RT_USING_POSIX_MMAP is not set */
/* RT_USING_POSIX_TERMIOS is not set */
/* RT_USING_POSIX_AIO is not set */
/* RT_USING_MODULE is not set */
/* Network */
/* Socket abstraction layer */
/* RT_USING_SAL is not set */
/* Network interface device */
/* RT_USING_NETDEV is not set */
/* light weight TCP/IP stack */
/* RT_USING_LWIP is not set */
/* AT commands */
/* RT_USING_AT is not set */
/* VBUS(Virtual Software BUS) */
/* RT_USING_VBUS is not set */
/* Utilities */
/* RT_USING_RYM is not set */
/* RT_USING_ULOG is not set */
/* RT_USING_UTEST is not set */
/* RT-Thread online packages */
/* IoT - internet of things */
/* PKG_USING_PAHOMQTT is not set */
/* PKG_USING_WEBCLIENT is not set */
/* PKG_USING_WEBNET is not set */
/* PKG_USING_MONGOOSE is not set */
/* PKG_USING_WEBTERMINAL is not set */
/* PKG_USING_CJSON is not set */
/* PKG_USING_JSMN is not set */
/* PKG_USING_LIBMODBUS is not set */
/* PKG_USING_FREEMODBUS is not set */
/* PKG_USING_LJSON is not set */
/* PKG_USING_EZXML is not set */
/* PKG_USING_NANOPB is not set */
/* Wi-Fi */
/* Marvell WiFi */
/* PKG_USING_WLANMARVELL is not set */
/* Wiced WiFi */
/* PKG_USING_WLAN_WICED is not set */
/* PKG_USING_RW007 is not set */
/* PKG_USING_COAP is not set */
/* PKG_USING_NOPOLL is not set */
/* PKG_USING_NETUTILS is not set */
/* PKG_USING_PPP_DEVICE is not set */
/* PKG_USING_AT_DEVICE is not set */
/* PKG_USING_ATSRV_SOCKET is not set */
/* PKG_USING_WIZNET is not set */
/* IoT Cloud */
/* PKG_USING_ONENET is not set */
/* PKG_USING_GAGENT_CLOUD is not set */
/* PKG_USING_ALI_IOTKIT is not set */
/* PKG_USING_AZURE is not set */
/* PKG_USING_TENCENT_IOTHUB is not set */
/* PKG_USING_JIOT-C-SDK is not set */
/* PKG_USING_NIMBLE is not set */
/* PKG_USING_OTA_DOWNLOADER is not set */
/* PKG_USING_IPMSG is not set */
/* PKG_USING_LSSDP is not set */
/* PKG_USING_AIRKISS_OPEN is not set */
/* PKG_USING_LIBRWS is not set */
/* PKG_USING_TCPSERVER is not set */
/* PKG_USING_PROTOBUF_C is not set */
/* PKG_USING_ONNX_PARSER is not set */
/* PKG_USING_ONNX_BACKEND is not set */
/* PKG_USING_DLT645 is not set */
/* PKG_USING_QXWZ is not set */
/* PKG_USING_SMTP_CLIENT is not set */
/* security packages */
/* PKG_USING_MBEDTLS is not set */
/* PKG_USING_libsodium is not set */
/* PKG_USING_TINYCRYPT is not set */
/* language packages */
/* PKG_USING_LUA is not set */
/* PKG_USING_JERRYSCRIPT is not set */
/* PKG_USING_MICROPYTHON is not set */
/* multimedia packages */
/* PKG_USING_OPENMV is not set */
/* PKG_USING_MUPDF is not set */
/* PKG_USING_STEMWIN is not set */
/* PKG_USING_WAVPLAYER is not set */
/* PKG_USING_TJPGD is not set */
/* tools packages */
/* PKG_USING_CMBACKTRACE is not set */
/* PKG_USING_EASYFLASH is not set */
/* PKG_USING_EASYLOGGER is not set */
/* PKG_USING_SYSTEMVIEW is not set */
/* PKG_USING_RDB is not set */
/* PKG_USING_QRCODE is not set */
/* PKG_USING_ULOG_EASYFLASH is not set */
/* PKG_USING_ADBD is not set */
/* PKG_USING_COREMARK is not set */
/* PKG_USING_DHRYSTONE is not set */
/* system packages */
/* PKG_USING_GUIENGINE is not set */
/* PKG_USING_CAIRO is not set */
/* PKG_USING_PIXMAN is not set */
/* PKG_USING_LWEXT4 is not set */
/* PKG_USING_PARTITION is not set */
/* PKG_USING_FAL is not set */
/* PKG_USING_SQLITE is not set */
/* PKG_USING_RTI is not set */
/* PKG_USING_LITTLEVGL2RTT is not set */
/* PKG_USING_CMSIS is not set */
/* PKG_USING_DFS_YAFFS is not set */
/* PKG_USING_LITTLEFS is not set */
/* PKG_USING_THREAD_POOL is not set */
/* PKG_USING_ROBOTS is not set */
/* peripheral libraries and drivers */
/* PKG_USING_SENSORS_DRIVERS is not set */
/* PKG_USING_REALTEK_AMEBA is not set */
/* PKG_USING_SHT2X is not set */
/* PKG_USING_STM32_SDIO is not set */
/* PKG_USING_ICM20608 is not set */
/* PKG_USING_U8G2 is not set */
/* PKG_USING_BUTTON is not set */
/* PKG_USING_PCF8574 is not set */
/* PKG_USING_SX12XX is not set */
/* PKG_USING_SIGNAL_LED is not set */
/* PKG_USING_LEDBLINK is not set */
/* PKG_USING_WM_LIBRARIES is not set */
/* PKG_USING_KENDRYTE_SDK is not set */
/* PKG_USING_INFRARED is not set */
/* PKG_USING_ROSSERIAL is not set */
/* PKG_USING_AGILE_BUTTON is not set */
/* PKG_USING_AGILE_LED is not set */
/* PKG_USING_AT24CXX is not set */
/* PKG_USING_MOTIONDRIVER2RTT is not set */
/* PKG_USING_AD7746 is not set */
/* PKG_USING_PCA9685 is not set */
/* PKG_USING_I2C_TOOLS is not set */
/* PKG_USING_NRF24L01 is not set */
/* PKG_USING_TOUCH_DRIVERS is not set */
/* PKG_USING_LCD_DRIVERS is not set */
/* PKG_USING_MAX17048 is not set */
/* PKG_USING_RPLIDAR is not set */
/* miscellaneous packages */
/* PKG_USING_LIBCSV is not set */
/* PKG_USING_OPTPARSE is not set */
/* PKG_USING_FASTLZ is not set */
/* PKG_USING_MINILZO is not set */
/* PKG_USING_QUICKLZ is not set */
/* PKG_USING_MULTIBUTTON is not set */
/* PKG_USING_FLEXIBLE_BUTTON is not set */
/* PKG_USING_CANFESTIVAL is not set */
/* PKG_USING_ZLIB is not set */
/* PKG_USING_DSTR is not set */
/* PKG_USING_TINYFRAME is not set */
/* PKG_USING_KENDRYTE_DEMO is not set */
/* PKG_USING_DIGITALCTRL is not set */
/* PKG_USING_UPACKER is not set */
/* PKG_USING_UPARAM is not set */
/* samples: kernel and components samples */
/* PKG_USING_KERNEL_SAMPLES is not set */
/* PKG_USING_FILESYSTEM_SAMPLES is not set */
/* PKG_USING_NETWORK_SAMPLES is not set */
/* PKG_USING_PERIPHERAL_SAMPLES is not set */
/* PKG_USING_HELLO is not set */
/* PKG_USING_VI is not set */
/* PKG_USING_NNOM is not set */
/* PKG_USING_LIBANN is not set */
/* PKG_USING_ELAPACK is not set */
/* PKG_USING_ARMv7M_DWT is not set */
/* PKG_USING_VT100 is not set */
/* PKG_USING_ULAPACK is not set */
/* PKG_USING_UKAL is not set */
/* Privated Packages of RealThread */
/* Network Utilities */
#define BCM2836_SOC
/* BSP_SUPPORT_FPU is not set */
/* Hardware Drivers Config */
/* BCM Peripheral Drivers */
#define BSP_USING_UART
/* RT_USING_UART0 is not set */
#define RT_USING_UART1
#define BSP_USING_PIN
/* BSP_USING_SYSTIMER is not set */
/* BSP_USING_I2C is not set */
/* BSP_USING_SPI is not set */
/* BSP_USING_WDT is not set */
/* BSP_USING_RTC is not set */
/* BSP_USING_SDIO is not set */
#define BSP_USING_CORETIMER
/* Board Peripheral Drivers */
/* BSP_USING_HDMI is not set */
#endif
libcpu/aarch64/cortex-a53/context_gcc.S
浏览文件 @
773f7cdf
...
...
@@ -8,6 +8,31 @@
*
2018
-
10
-
06
ZhaoXiaowei
the
first
version
*/
/
*
*
enable
gtimer
*/
.
globl
rt_hw_gtimer_enable
rt_hw_gtimer_enable
:
MOV
X0
,#
1
MSR
CNTP_CTL_EL0
,
X0
RET
/*
*
set
gtimer
CNTP_TVAL_EL0
value
*/
.
globl
rt_hw_set_gtimer_val
rt_hw_set_gtimer_val
:
MSR
CNTP_TVAL_EL0
,
X0
RET
/*
*
get
gtimer
frq
value
*/
.
globl
rt_hw_get_gtimer_frq
rt_hw_get_gtimer_frq
:
MRS
X0
,
CNTFRQ_EL0
RET
.
macro
SAVE_CONTEXT
/
*
Switch
to
use
the
EL0
stack
pointer
.
*/
...
...
libcpu/aarch64/cortex-a53/trap.c
浏览文件 @
773f7cdf
...
...
@@ -56,7 +56,8 @@ void rt_hw_trap_error(struct rt_hw_exp_stack *regs)
rt_hw_cpu_shutdown
();
}
#define GIC_ACK_INTID_MASK 0x000003ff
#define GIC_ACK_INTID_MASK (0x000003ff)
#define CORE0_IRQ_SOURCE (0x40000060)
void
rt_hw_trap_irq
(
void
)
{
...
...
@@ -66,43 +67,19 @@ void rt_hw_trap_irq(void)
extern
struct
rt_irq_desc
isr_table
[];
uint32_t
value
=
0
;
value
=
IRQ_PEND_BASIC
&
0x3ff
;
#ifdef RT_USING_SMP
uint32_t
mailbox_data
;
uint32_t
cpu_id
=
rt_hw_cpu_id
();
uint32_t
int_source
=
CORE_IRQSOURCE
(
cpu_id
);
mailbox_data
=
IPI_MAILBOX_CLEAR
(
cpu_id
);
if
(
int_source
&
0x0f
)
#ifdef BSP_USING_CORETIMER
uint32_t
int_source
=
HWREG32
(
CORE0_IRQ_SOURCE
)
&
0x3ff
;
if
(
int_source
&
0x02
)
{
if
(
int_source
&
0x08
){
isr_func
=
isr_table
[
IRQ_ARM_TIMER
].
handler
;
#ifdef RT_USING_INTERRUPT_INFO
isr_table
[
IRQ_ARM_TIMER
].
counter
++
;
#endif
if
(
isr_func
)
{
param
=
isr_table
[
IRQ_ARM_TIMER
].
param
;
isr_func
(
IRQ_ARM_TIMER
,
param
);
}
}
}
if
(
int_source
&
0xf0
)
{
/*it's a ipi interrupt*/
if
(
mailbox_data
&
0x1
){
/* clear mailbox */
IPI_MAILBOX_CLEAR
(
cpu_id
)
=
mailbox_data
;
isr_func
=
isr_table
[
IRQ_ARM_MAILBOX
].
handler
;
#ifdef RT_USING_INTERRUPT_INFO
isr_table
[
IRQ_ARM_MAILBOX
].
counter
++
;
#endif
if
(
isr_func
)
{
param
=
isr_table
[
IRQ_ARM_MAILBOX
].
param
;
isr_func
(
IRQ_ARM_MAILBOX
,
param
);
}
isr_func
=
isr_table
[
IRQ_ARM_TIMER
].
handler
;
#ifdef RT_USING_INTERRUPT_INFO
isr_table
[
IRQ_ARM_TIMER
].
counter
++
;
#endif
if
(
isr_func
)
{
param
=
isr_table
[
IRQ_ARM_TIMER
].
param
;
isr_func
(
IRQ_ARM_TIMER
,
param
);
}
else
CORE_MAILBOX3_CLEAR
(
cpu_id
)
=
mailbox_data
;
}
#endif
/* local interrupt*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录