Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
红岛
rt-thread
提交
d5f83970
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,发现更多精彩内容 >>
提交
d5f83970
编写于
3月 01, 2020
作者:
B
bigmagic
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add raspi3-64 wdt driver
上级
972f2847
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
58 addition
and
37 deletion
+58
-37
bsp/raspberry-pi/raspi3-32/driver/drv_wdt.c
bsp/raspberry-pi/raspi3-32/driver/drv_wdt.c
+22
-0
bsp/raspberry-pi/raspi3-64/.config
bsp/raspberry-pi/raspi3-64/.config
+2
-2
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.c
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.c
+31
-31
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.h
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.h
+1
-4
bsp/raspberry-pi/raspi3-64/rtconfig.h
bsp/raspberry-pi/raspi3-64/rtconfig.h
+2
-0
未找到文件。
bsp/raspberry-pi/raspi3-32/driver/drv_wdt.c
浏览文件 @
d5f83970
...
@@ -114,4 +114,26 @@ int rt_hw_wdt_init(void)
...
@@ -114,4 +114,26 @@ int rt_hw_wdt_init(void)
}
}
INIT_DEVICE_EXPORT
(
rt_hw_wdt_init
);
INIT_DEVICE_EXPORT
(
rt_hw_wdt_init
);
/**
* Reboot
*/
int
reboot
(
void
)
{
unsigned
int
r
;
rt_kprintf
(
"reboot system...
\n
"
);
rt_thread_mdelay
(
100
);
// trigger a restart by instructing the GPU to boot from partition 0
r
=
PM_RSTS
;
r
&=
~
0xfffffaaa
;
PM_RSTS
=
PM_PASSWORD
|
r
;
// boot from partition 0
PM_WDOG
=
PM_PASSWORD
|
10
;
PM_RSTC
=
PM_PASSWORD
|
PM_RSTC_WRCFG_FULL_RESET
;
while
(
1
);
return
0
;
}
MSH_CMD_EXPORT
(
reboot
,
reboot
system
...);
#endif
/*BSP_USING_WDT */
#endif
/*BSP_USING_WDT */
bsp/raspberry-pi/raspi3-64/.config
浏览文件 @
d5f83970
...
@@ -164,7 +164,7 @@ CONFIG_RT_MMCSD_THREAD_PREORITY=22
...
@@ -164,7 +164,7 @@ CONFIG_RT_MMCSD_THREAD_PREORITY=22
CONFIG_RT_MMCSD_MAX_PARTITION
=
16
CONFIG_RT_MMCSD_MAX_PARTITION
=
16
CONFIG_RT_SDIO_DEBUG
=
y
CONFIG_RT_SDIO_DEBUG
=
y
# CONFIG_RT_USING_SPI is not set
# CONFIG_RT_USING_SPI 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_AUDIO is not set
# CONFIG_RT_USING_SENSOR is not set
# CONFIG_RT_USING_SENSOR is not set
# CONFIG_RT_USING_TOUCH is not set
# CONFIG_RT_USING_TOUCH is not set
...
@@ -470,7 +470,7 @@ CONFIG_RT_USING_SYSTIMER1=y
...
@@ -470,7 +470,7 @@ CONFIG_RT_USING_SYSTIMER1=y
CONFIG_RT_USING_SYSTIMER3
=
y
CONFIG_RT_USING_SYSTIMER3
=
y
# CONFIG_BSP_USING_I2C is not set
# CONFIG_BSP_USING_I2C is not set
# CONFIG_BSP_USING_SPI is not set
# CONFIG_BSP_USING_SPI 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_RTC is not set
CONFIG_BSP_USING_SDIO
=
y
CONFIG_BSP_USING_SDIO
=
y
CONFIG_BSP_USING_SDIO0
=
y
CONFIG_BSP_USING_SDIO0
=
y
...
...
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.c
浏览文件 @
d5f83970
...
@@ -8,30 +8,14 @@
...
@@ -8,30 +8,14 @@
* 2019-07-29 zdzn first version
* 2019-07-29 zdzn first version
*/
*/
#include "drv_wdt.h"
#include "drv_wdt.h"
#include "raspi.h"
#ifdef BSP_USING_WDT
#ifdef BSP_USING_WDT
#define PM_RSTC 0x1c
#define PM_RSTS 0x20
#define PM_WDOG 0x24
#define PM_PASSWORD 0x5a000000
#define PM_WDOG_TIME_SET 0x000fffff
#define PM_RSTC_WRCFG_CLR 0xffffffcf
#define PM_RSTS_HADWRH_SET 0x00000040
#define PM_RSTC_WRCFG_SET 0x00000030
#define PM_RSTC_WRCFG_FULL_RESET 0x00000020
#define PM_RSTC_RESET 0x00000102
#define PM_RSTS_PARTITION_CLR 0xfffffaaa
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
static
struct
raspi_wdt_driver
bcm_wdt
=
static
struct
raspi_wdt_driver
bcm_wdt
;
{
.
base
=
PER_BASE
,
};
void
raspi_watchdog_init
(
rt_uint32_t
time_init
)
void
raspi_watchdog_init
(
rt_uint32_t
time_init
)
{
{
...
@@ -41,21 +25,14 @@ void raspi_watchdog_init(rt_uint32_t time_init)
...
@@ -41,21 +25,14 @@ void raspi_watchdog_init(rt_uint32_t time_init)
void
raspi_watchdog_start
()
void
raspi_watchdog_start
()
{
{
volatile
rt_uint32_t
cur
;
volatile
rt_uint32_t
cur
;
bcm283x_peri_write
(
bcm_wdt
.
base
+
PM_WDOG
,
PM_PASSWORD
PM_WDOG
=
PM_PASSWORD
|
(
SECS_TO_WDOG_TICKS
(
bcm_wdt
.
timeout
)
&
PM_WDOG_TIME_SET
);
|
(
SECS_TO_WDOG_TICKS
(
bcm_wdt
.
timeout
)
&
PM_WDOG_TIME_SET
));
cur
=
PM_RSTC
;
bcm283x_peri_write
(
bcm_wdt
.
base
+
PM_WDOG
,
PM_PASSWORD
PM_RSTC
=
PM_PASSWORD
|
(
cur
&
PM_RSTC_WRCFG_CLR
)
|
PM_RSTC_WRCFG_FULL_RESET
;
|
(
SECS_TO_WDOG_TICKS
(
bcm_wdt
.
timeout
)
&
PM_WDOG_TIME_SET
));
cur
=
bcm283x_peri_read
(
bcm_wdt
.
base
+
PM_RSTC
);
bcm283x_peri_write
(
bcm_wdt
.
base
+
PM_RSTC
,
PM_PASSWORD
|
(
cur
&
PM_RSTC_WRCFG_CLR
)
|
PM_RSTC_WRCFG_FULL_RESET
);
}
}
void
raspi_watchdog_stop
()
void
raspi_watchdog_stop
()
{
{
bcm283x_peri_write
(
bcm_wdt
.
base
+
PM_RSTC
,
PM_PASSWORD
|
PM_RSTC_RESET
)
;
PM_RSTC
=
PM_PASSWORD
|
PM_RSTC_RESET
;
}
}
void
raspi_watchdog_clr
()
void
raspi_watchdog_clr
()
...
@@ -63,7 +40,7 @@ void raspi_watchdog_clr()
...
@@ -63,7 +40,7 @@ void raspi_watchdog_clr()
bcm_wdt
.
timeout
=
0
;
bcm_wdt
.
timeout
=
0
;
}
}
void
raspi_watchdog_set_timeout
(
rt_uint32_t
timeout_us
)
void
raspi_watchdog_set_timeout
(
rt_uint32_t
timeout_us
)
{
{
bcm_wdt
.
timeout
=
timeout_us
;
bcm_wdt
.
timeout
=
timeout_us
;
}
}
...
@@ -75,7 +52,7 @@ rt_uint64_t raspi_watchdog_get_timeout()
...
@@ -75,7 +52,7 @@ rt_uint64_t raspi_watchdog_get_timeout()
rt_uint64_t
raspi_watchdog_get_timeleft
()
rt_uint64_t
raspi_watchdog_get_timeleft
()
{
{
rt_uint32_t
ret
=
bcm283x_peri_read
(
bcm_wdt
.
base
+
PM_WDOG
)
;
rt_uint32_t
ret
=
PM_WDOG
;
return
WDOG_TICKS_TO_SECS
(
ret
&
PM_WDOG_TIME_SET
);
return
WDOG_TICKS_TO_SECS
(
ret
&
PM_WDOG_TIME_SET
);
}
}
...
@@ -136,5 +113,28 @@ int rt_hw_wdt_init(void)
...
@@ -136,5 +113,28 @@ int rt_hw_wdt_init(void)
rt_hw_watchdog_register
(
&
raspi_wdg
,
"wdg"
,
0
,
RT_NULL
);
rt_hw_watchdog_register
(
&
raspi_wdg
,
"wdg"
,
0
,
RT_NULL
);
return
RT_EOK
;
return
RT_EOK
;
}
}
INIT_DEVICE_EXPORT
(
rt_hw_wdt_init
);
INIT_DEVICE_EXPORT
(
rt_hw_wdt_init
);
/**
* Reboot
*/
int
reboot
(
void
)
{
unsigned
int
r
;
rt_kprintf
(
"reboot system...
\n
"
);
rt_thread_mdelay
(
100
);
// trigger a restart by instructing the GPU to boot from partition 0
r
=
PM_RSTS
;
r
&=
~
0xfffffaaa
;
PM_RSTS
=
PM_PASSWORD
|
r
;
// boot from partition 0
PM_WDOG
=
PM_PASSWORD
|
10
;
PM_RSTC
=
PM_PASSWORD
|
PM_RSTC_WRCFG_FULL_RESET
;
while
(
1
);
return
0
;
}
MSH_CMD_EXPORT
(
reboot
,
reboot
system
...);
#endif
/*BSP_USING_WDT */
#endif
/*BSP_USING_WDT */
bsp/raspberry-pi/raspi3-64/driver/drv_wdt.h
浏览文件 @
d5f83970
...
@@ -11,16 +11,13 @@
...
@@ -11,16 +11,13 @@
#ifndef __DRV_WDT_H__
#ifndef __DRV_WDT_H__
#define __DRV_WDT_H__
#define __DRV_WDT_H__
#include <rtdef.h>
#include <rtthread.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <rtdevice.h>
#include <drivers/watchdog.h>
#include "b
cm283x
.h"
#include "b
oard
.h"
struct
raspi_wdt_driver
struct
raspi_wdt_driver
{
{
volatile
rt_uint32_t
base
;
rt_uint32_t
timeout
;
rt_uint32_t
timeout
;
};
};
...
...
bsp/raspberry-pi/raspi3-64/rtconfig.h
浏览文件 @
d5f83970
...
@@ -110,6 +110,7 @@
...
@@ -110,6 +110,7 @@
#define RT_MMCSD_THREAD_PREORITY 22
#define RT_MMCSD_THREAD_PREORITY 22
#define RT_MMCSD_MAX_PARTITION 16
#define RT_MMCSD_MAX_PARTITION 16
#define RT_SDIO_DEBUG
#define RT_SDIO_DEBUG
#define RT_USING_WDT
/* Using USB */
/* Using USB */
...
@@ -197,6 +198,7 @@
...
@@ -197,6 +198,7 @@
#define BSP_USING_SYSTIMER
#define BSP_USING_SYSTIMER
#define RT_USING_SYSTIMER1
#define RT_USING_SYSTIMER1
#define RT_USING_SYSTIMER3
#define RT_USING_SYSTIMER3
#define BSP_USING_WDT
#define BSP_USING_SDIO
#define BSP_USING_SDIO
#define BSP_USING_SDIO0
#define BSP_USING_SDIO0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录