Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dgr6878
rt-thread
提交
7043451e
R
rt-thread
项目概览
dgr6878
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7043451e
编写于
10月 26, 2020
作者:
B
bigmagic
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add raspi4 watchdog driver
上级
9cd38972
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
219 addition
and
3 deletion
+219
-3
bsp/raspberry-pi/raspi4-32/.config
bsp/raspberry-pi/raspi4-32/.config
+39
-3
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.c
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.c
+141
-0
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.h
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.h
+25
-0
bsp/raspberry-pi/raspi4-32/driver/raspi4.h
bsp/raspberry-pi/raspi4-32/driver/raspi4.h
+12
-0
bsp/raspberry-pi/raspi4-32/rtconfig.h
bsp/raspberry-pi/raspi4-32/rtconfig.h
+2
-0
未找到文件。
bsp/raspberry-pi/raspi4-32/.config
浏览文件 @
7043451e
...
...
@@ -147,7 +147,7 @@ CONFIG_RT_USING_SPI=y
# CONFIG_RT_USING_SFUD is not set
# CONFIG_RT_USING_ENC28J60 is not set
# CONFIG_RT_USING_SPI_WIFI is not set
# CONFIG_RT_USING_WDT is not set
CONFIG_RT_USING_WDT
=
y
# CONFIG_RT_USING_AUDIO is not set
# CONFIG_RT_USING_SENSOR is not set
# CONFIG_RT_USING_TOUCH is not set
...
...
@@ -170,6 +170,7 @@ CONFIG_RT_USING_LIBC=y
CONFIG_RT_USING_POSIX
=
y
# CONFIG_RT_USING_POSIX_MMAP is not set
# CONFIG_RT_USING_POSIX_TERMIOS is not set
# CONFIG_RT_USING_POSIX_GETLINE is not set
# CONFIG_RT_USING_POSIX_AIO is not set
# CONFIG_RT_USING_MODULE is not set
...
...
@@ -216,7 +217,9 @@ CONFIG_RT_USING_POSIX=y
#
# IoT - internet of things
#
# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
# CONFIG_PKG_USING_PAHOMQTT is not set
# CONFIG_PKG_USING_UMQTT is not set
# CONFIG_PKG_USING_WEBCLIENT is not set
# CONFIG_PKG_USING_WEBNET is not set
# CONFIG_PKG_USING_MONGOOSE is not set
...
...
@@ -262,7 +265,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_GAGENT_CLOUD is not set
# CONFIG_PKG_USING_ALI_IOTKIT is not set
# CONFIG_PKG_USING_AZURE is not set
# CONFIG_PKG_USING_TENCENT_IOT
HUB
is not set
# CONFIG_PKG_USING_TENCENT_IOT
_EXPLORER
is not set
# CONFIG_PKG_USING_JIOT-C-SDK is not set
# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
# CONFIG_PKG_USING_JOYLINK is not set
...
...
@@ -284,6 +287,10 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_CAPNP is not set
# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
# CONFIG_PKG_USING_AGILE_TELNET is not set
# CONFIG_PKG_USING_NMEALIB is not set
# CONFIG_PKG_USING_AGILE_JSMN is not set
# CONFIG_PKG_USING_PDULIB is not set
# CONFIG_PKG_USING_BTSTACK is not set
#
# security packages
...
...
@@ -292,6 +299,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_libsodium is not set
# CONFIG_PKG_USING_TINYCRYPT is not set
# CONFIG_PKG_USING_TFM is not set
# CONFIG_PKG_USING_YD_CRYPTO is not set
#
# language packages
...
...
@@ -308,6 +316,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_STEMWIN is not set
# CONFIG_PKG_USING_WAVPLAYER is not set
# CONFIG_PKG_USING_TJPGD is not set
# CONFIG_PKG_USING_HELIX is not set
#
# tools packages
...
...
@@ -326,7 +335,9 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
# CONFIG_PKG_USING_BS8116A is not set
# CONFIG_PKG_USING_GPS_RMC is not set
# CONFIG_PKG_USING_URLENCODE is not set
# CONFIG_PKG_USING_UMCN is not set
#
# system packages
...
...
@@ -337,6 +348,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_LWEXT4 is not set
# CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_FAL is not set
# CONFIG_PKG_USING_FLASHDB is not set
# CONFIG_PKG_USING_SQLITE is not set
# CONFIG_PKG_USING_RTI is not set
# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
...
...
@@ -349,6 +361,11 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_SYSWATCH is not set
# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
# CONFIG_PKG_USING_PLCCORE is not set
# CONFIG_PKG_USING_RAMDISK is not set
# CONFIG_PKG_USING_MININI is not set
# CONFIG_PKG_USING_QBOOT is not set
# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
# CONFIG_PKG_USING_PPOOL is not set
#
# peripheral libraries and drivers
...
...
@@ -386,6 +403,7 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_RPLIDAR is not set
# CONFIG_PKG_USING_AS608 is not set
# CONFIG_PKG_USING_RC522 is not set
# CONFIG_PKG_USING_WS2812B is not set
# CONFIG_PKG_USING_EMBARC_BSP is not set
# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
# CONFIG_PKG_USING_MULTI_RTIMER is not set
...
...
@@ -393,6 +411,15 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_BEEP is not set
# CONFIG_PKG_USING_EASYBLINK is not set
# CONFIG_PKG_USING_PMS_SERIES is not set
# CONFIG_PKG_USING_CAN_YMODEM is not set
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
# CONFIG_PKG_USING_QLED is not set
# CONFIG_PKG_USING_PAJ7620 is not set
# CONFIG_PKG_USING_AGILE_CONSOLE is not set
# CONFIG_PKG_USING_LD3320 is not set
# CONFIG_PKG_USING_WK2124 is not set
# CONFIG_PKG_USING_LY68L6400 is not set
# CONFIG_PKG_USING_DM9051 is not set
#
# miscellaneous packages
...
...
@@ -429,6 +456,11 @@ 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
# CONFIG_PKG_USING_CRCLIB is not set
# CONFIG_PKG_USING_THREES is not set
# CONFIG_PKG_USING_2048 is not set
# CONFIG_PKG_USING_LWGPS is not set
# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
#
# Privated Packages of RealThread
...
...
@@ -461,6 +493,10 @@ CONFIG_RT_USING_POSIX=y
# CONFIG_PKG_USING_ZBAR is not set
# CONFIG_PKG_USING_MCF is not set
# CONFIG_PKG_USING_URPC is not set
# CONFIG_PKG_USING_BSAL is not set
# CONFIG_PKG_USING_DCM is not set
# CONFIG_PKG_USING_EMQ is not set
# CONFIG_PKG_USING_CFGM is not set
CONFIG_BCM2711_SOC
=
y
# CONFIG_BSP_SUPPORT_FPU is not set
...
...
@@ -487,7 +523,7 @@ CONFIG_BSP_USING_SPI0_DEVICE0=y
# CONFIG_BSP_USING_SPI0_DEVICE1 is not set
CONFIG_BSP_USING_CORETIMER
=
y
# CONFIG_BSP_USING_SYSTIMER is not set
# CONFIG_BSP_USING_WDT is not set
CONFIG_BSP_USING_WDT
=
y
# CONFIG_BSP_USING_RTC is not set
# CONFIG_BSP_USING_SDIO is not set
...
...
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.c
0 → 100644
浏览文件 @
7043451e
/*
* Copyright (c) 2006-2020, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020-10-26 bigmagic first version
*/
#include <rthw.h>
#include "drv_wdt.h"
#include "raspi4.h"
#ifdef BSP_USING_WDT
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
static
struct
raspi_wdt_driver
bcm_wdt
;
void
raspi_watchdog_init
(
rt_uint32_t
time_init
)
{
bcm_wdt
.
timeout
=
time_init
;
}
void
raspi_watchdog_start
()
{
volatile
rt_uint32_t
cur
;
PM_WDOG
=
PM_PASSWORD
|
(
SECS_TO_WDOG_TICKS
(
bcm_wdt
.
timeout
)
&
PM_WDOG_TIME_SET
);
cur
=
(
PM_RSTC
);
PM_RSTC
=
PM_PASSWORD
|
(
cur
&
PM_RSTC_WRCFG_CLR
)
|
PM_RSTC_WRCFG_FULL_RESET
;
}
void
raspi_watchdog_stop
()
{
PM_RSTC
=
PM_PASSWORD
|
PM_RSTC_RESET
;
}
void
raspi_watchdog_clr
()
{
bcm_wdt
.
timeout
=
0
;
}
void
raspi_watchdog_set_timeout
(
rt_uint32_t
timeout_us
)
{
bcm_wdt
.
timeout
=
timeout_us
;
}
rt_uint64_t
raspi_watchdog_get_timeout
()
{
return
bcm_wdt
.
timeout
;
}
rt_uint64_t
raspi_watchdog_get_timeleft
()
{
rt_uint32_t
ret
=
(
PM_WDOG
);
return
WDOG_TICKS_TO_SECS
(
ret
&
PM_WDOG_TIME_SET
);
}
static
rt_err_t
raspi_wdg_init
(
rt_watchdog_t
*
wdt
)
{
/*init for 10S*/
raspi_watchdog_init
(
1000000
);
raspi_watchdog_start
();
raspi_watchdog_stop
();
return
RT_EOK
;
}
static
rt_err_t
raspi_wdg_control
(
rt_watchdog_t
*
wdt
,
int
cmd
,
void
*
arg
)
{
rt_uint64_t
timeout_us
=
0
;
switch
(
cmd
)
{
case
RT_DEVICE_CTRL_WDT_SET_TIMEOUT
:
timeout_us
=
*
((
rt_uint32_t
*
)
arg
)
*
1000000
;
if
(
timeout_us
>=
0xFFFFFFFF
)
timeout_us
=
0xFFFFFFFF
;
raspi_watchdog_set_timeout
((
rt_uint32_t
)
timeout_us
);
break
;
case
RT_DEVICE_CTRL_WDT_GET_TIMEOUT
:
timeout_us
=
raspi_watchdog_get_timeout
();
*
((
rt_uint32_t
*
)
arg
)
=
timeout_us
/
1000000
;
break
;
case
RT_DEVICE_CTRL_WDT_GET_TIMELEFT
:
timeout_us
=
raspi_watchdog_get_timeleft
();
*
((
rt_uint32_t
*
)
arg
)
=
timeout_us
/
1000000
;
break
;
case
RT_DEVICE_CTRL_WDT_KEEPALIVE
:
raspi_watchdog_clr
();
break
;
case
RT_DEVICE_CTRL_WDT_START
:
raspi_watchdog_start
();
break
;
case
RT_DEVICE_CTRL_WDT_STOP
:
raspi_watchdog_stop
();
break
;
default:
return
RT_EIO
;
}
return
RT_EOK
;
}
static
const
struct
rt_watchdog_ops
raspi_wdg_pos
=
{
raspi_wdg_init
,
raspi_wdg_control
,
};
static
rt_watchdog_t
raspi_wdg
;
int
rt_hw_wdt_init
(
void
)
{
raspi_wdg
.
ops
=
&
raspi_wdg_pos
;
rt_hw_watchdog_register
(
&
raspi_wdg
,
"wdg"
,
0
,
RT_NULL
);
return
RT_EOK
;
}
INIT_DEVICE_EXPORT
(
rt_hw_wdt_init
);
/**
* Reboot
*/
int
reboot
(
void
)
{
unsigned
int
r
;
rt_kprintf
(
"reboot system...
\n
"
);
rt_thread_mdelay
(
100
);
r
=
PM_RSTS
;
// trigger a restart by instructing the GPU to boot from partition 0
r
&=
~
0xfffffaaa
;
PM_RSTS
|=
(
PM_PASSWORD
|
r
);
// boot from partition 0
PM_WDOG
|=
(
PM_PASSWORD
|
0x0A
);
PM_RSTC
|=
(
PM_PASSWORD
|
PM_RSTC_WRCFG_FULL_RESET
);
while
(
1
);
return
0
;
}
MSH_CMD_EXPORT
(
reboot
,
reboot
system
...);
#endif
/*BSP_USING_WDT */
bsp/raspberry-pi/raspi4-32/driver/drv_wdt.h
0 → 100644
浏览文件 @
7043451e
/*
* Copyright (c) 2006-2020, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2020-10-26 bigmagic first version
*/
#ifndef __DRV_WDT_H__
#define __DRV_WDT_H__
#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"
struct
raspi_wdt_driver
{
rt_uint32_t
timeout
;
};
int
rt_hw_wdt_init
(
void
);
#endif
\ No newline at end of file
bsp/raspberry-pi/raspi4-32/driver/raspi4.h
浏览文件 @
7043451e
...
...
@@ -119,6 +119,18 @@ typedef enum {
#define GIC_ACK_INTID_MASK 0x000003ff
//watchdog
#define PM_RSTC HWREG32(PER_BASE + 0x0010001c)
#define PM_RSTS HWREG32(PER_BASE + 0x00100020)
#define PM_WDOG HWREG32(PER_BASE + 0x00100024)
#define PM_PASSWORD (0x5A000000)
#define PM_WDOG_TIME_SET (0x000fffff)
#define PM_RSTS_HADWRH_SET (0x00000040)
#define PM_RSTC_WRCFG_FULL_RESET (0x00000020)
#define PM_RSTC_WRCFG_CLR (0xffffffcf)
#define PM_RSTC_RESET (0x00000102)
/* the basic constants and interfaces needed by gic */
rt_inline
rt_uint32_t
platform_get_gic_dist_base
(
void
)
{
...
...
bsp/raspberry-pi/raspi4-32/rtconfig.h
浏览文件 @
7043451e
...
...
@@ -87,6 +87,7 @@
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_PIN
#define RT_USING_SPI
#define RT_USING_WDT
/* Using USB */
...
...
@@ -178,6 +179,7 @@
#define BSP_USING_SPI0_BUS
#define BSP_USING_SPI0_DEVICE0
#define BSP_USING_CORETIMER
#define BSP_USING_WDT
/* Board Peripheral Drivers */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录