国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

T113-I打造高可靠性嵌入式系統,1.12秒極限下的看門狗喂狗之法

眺望電子 ? 2025-08-22 08:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前言:

嵌入式系統使用中,看門狗(Watchdog)是保障系統穩定性的重要機制之一,守護著系統的穩定運行。常規實現是通過應用層參與喂狗操作,存在不穩定因素,也無法處理系統啟動過程中的異常。本文將分享一種在T113-I平臺上實現的uboot至kernel看門狗無縫銜接技術,且做到系統全自動喂狗,真正保障系統的高可靠性。


一、難點分析

實現從上電開始的系統全自動喂狗機制,可以確保系統在任何階段都不會因看門狗超時而重啟復位。然而,高可靠的嵌入式系統往往需要監管嚴苛且及時,能夠在異常的第一時間產生響應,因此又需要選用超時時間極短的看門狗芯片。

喂狗間隙短,從uboot至kernel的無縫切換便成了橫亙在高可靠性嵌入式系統設計中的一大難題。

二、環境說明

主控平臺:眺望電子AC113I-92M-SNLI工業級核心板,基于全志T113-I處理器

看門狗芯片:思瑞浦(3PEAK)TPV6823S-TR,其復位時間為 1.12 秒;


324d779e-7eef-11f0-9080-92fbcf53809c.png

SDK版本:talowe-T113-I-Tina-sdk.tar.gz,

虛擬機環境:ubuntu20.04

硬件原理圖:PE1為喂狗引腳


327040e4-7eef-11f0-9080-92fbcf53809c.png


三、方案設計

針對 1.12 秒的復位時間限制,制定了如下分階段的實現方案,確保從 uboot 到 kernel 的全過程都能及時喂狗:

階段 1:uboot 電平翻轉,驗證喂狗引腳的控制能力。

階段 2:uboot 喂狗,確保在 uboot 命令行停留時不會超時重啟。

階段 3:kernel 喂狗,保證系統進入內核后能持續喂狗。

階段 4:uboot 到 kernel 的無縫銜接,確保系統從上電到完全啟動的整個過程中,看門狗不會超時重啟。


四、實現步驟

4.1uboot 電平翻轉測試驗證

喂狗引腳為 PE1,我們需要先驗證對該引腳的電平控制能力。通過查閱《T113-i_User_Manual_V1.5.pdf》,找到 PE 相關寄存器的地址。

328d0742-7eef-11f0-9080-92fbcf53809c.png

在brandy/brandy-2.0/u-boot-2018/cmd/ 目錄下新建 gpio_toggle.c 文件,編寫碼實現 PE1 引腳的輸出模式設置和電平翻轉功能

brandy/brandy-2.0/u-boot-2018/cmd/gpio_toggle.c

#include#include
#defineT113_I_GPIOE_CFG00x020000C0#defineT113_I_GPIOE_CFG10x020000C4#defineT113_I_GPIOE_DAT0x020000D0#defineT113_I_GPIOE_DRV00x020000D4#defineT113_I_GPIOE_DRV10x020000D8#defineT113_I_GPIOE_PULL00x020000E4
intgpio_toggle(cmd_tbl_t*cmdtp,intflag,intargc,char*constargv[]){ printf("## test gpio Toggle...\n");
// 設置PE1為輸出模式 unsignedint*PE1_CFG0 = (unsignedint*)(T113_I_GPIOE_CFG0); unsignedintPE1_CFG0_val =readl(PE1_CFG0); PE1_CFG0_val &= ~(0xf< // 電平翻轉 unsignedint*PE1_DAT = (unsignedint*)(T113_I_GPIOE_DAT); unsignedintPE1_DAT_val =readl(PE1_DAT); PE1_DAT_val ^= (0x1< return0;}
U_BOOT_CMD( gpio_toggle,1,0,gpio_toggle, "talowe test gpio Toggle", "no parameters\n");

修改Makefile 和 Kconfig 文件,添加相關配置

brandy/brandy-2.0/u-boot-2018/cmd/Makefile

obj-$(CONFIG_CMD_GPIO_TOGGLE) += gpio_toggle.o

brandy/brandy-2.0/u-boot-2018/cmd/Kconfig

configCMD_GPIO_TOGGLEbool"GPIO toggle"help Activatethisoption to test GPIO toggle.

配置 sun8iw20p1_auto_t113_i_defconfig選項

上電后按住鍵盤的 s 進入 uboot 命令行,執行 gpio_toggle 指令,用萬用表測試 PE1 引腳的電平,可發現執行一次指令,電平狀態翻轉一次,驗證成功。

brandy/brandy-2.0/u-boot-2018/configs/sun8iw20p1_auto_t113_i_defconfig

CONFIG_CMD_GPIO_TOGGLE=y

編譯后燒寫uboot固件進行測試

在uboot命令行進行測試,上電一直按住鍵盤的s進入uboot命令行,執行以下指令

=> gpio_toggle

會有以下信息輸出,用萬用表測試PE1引腳的電平,發現執行一次翻轉一次電平狀態

32af7cc8-7eef-11f0-9080-92fbcf53809c.png

至此完成驗證寄存器翻轉電平方案成功,接下來進入下一步。

4.2uboot PE1引腳自動喂狗實現

實現 uboot 自帶的 hw_watchdog 接口,編寫代碼完成 PE1 引腳的初始化(設置為輸出模式)和喂狗操作(電平翻轉)。

#include#include#include
#defineT113_I_GPIOE_CFG0 0x020000C0#defineT113_I_GPIOE_CFG1 0x020000C4#defineT113_I_GPIOE_DAT 0x020000D0#defineT113_I_GPIOE_DRV0 0x020000D4#defineT113_I_GPIOE_DRV1 0x020000D8#defineT113_I_GPIOE_PULL0 0x020000E4
voidhw_watchdog_reset(void){ if(get_boot_work_mode()) return;
unsignedint*PE1_DAT = (unsignedint*)(T113_I_GPIOE_DAT); unsignedintPE1_DAT_val =readl(PE1_DAT); PE1_DAT_val ^= (0x1<voidhw_watchdog_init(void){ // 設置PE1為輸出模式 unsignedint*PE1_CFG0 = (unsignedint*)(T113_I_GPIOE_CFG0); unsignedintPE1_CFG0_val =readl(PE1_CFG0); PE1_CFG0_val &= ~(0xf< // 設置PE1驅動等級(默認為1,可以不用) // unsigned int *PE1_DRV0 = (unsigned int *)(T113_I_GPIOE_DRV0); // unsigned int PE1_DRV0_val = readl(PE1_DRV0); // PE1_DRV0_val &= ~(0x3 << 4*1);? ? // PE1_DRV0_val |= (0x10 << 4*1);? ? // writel(PE1_DRV0_val, PE1_DRV0);
// 設置PE1電平,由于硬件電路該引腳為高阻,所以一開始先翻轉下 // unsigned int *PE1_DAT = (unsigned int *)(T113_I_GPIOE_DAT); // unsigned int PE1_DAT_val = readl(PE1_DAT); // PE1_DAT_val ^= (0x1 << 1);? ? // writel(PE1_DAT_val, PE1_DAT);? ? // PE1_DAT_val ^= (0x1 << 1);? ? // writel(PE1_DAT_val, PE1_DAT);
// // 默認為無上下拉,符合需求不用管
hw_watchdog_reset();}

在以下文件新增

1obj-$(CONFIG_T113_I_WATCHDOG_REG) += t113_I_watchdog_reg.o

config T113_I_WATCHDOG_REGbool"T113_I hw watchdog"depends on ARCH_SUNXIselectHW_WATCHDOGhelp Say Y here toenablethe T113_I hw watchdog driver.

在相關配置文件中添加該看門狗驅動的配置選項,然后修改全志板級文件 board.c,在板級初始化過程中調用 hw_watchdog_init () 函數,新增PE1的初始化調用,開啟 uboot 階段的喂狗功能。

diff --git a/brandy/brandy-2.0/u-boot-2018/board/sunxi/board.c b/brandy/brandy-2.0/u-boot-2018/board/sunxi/board.cindex 0019f45..4233b22 100644--- a/brandy/brandy-2.0/u-boot-2018/board/sunxi/board.c+++ b/brandy/brandy-2.0/u-boot-2018/board/sunxi/board.c@@ -54,6 +54,9 @@#endif#include #include +#ifdef CONFIG_T113_I_WATCHDOG_REG+#include +#endif

int __attribute__((weak)) sunxi_set_sramc_mode(void)@@ -219,6 +222,9 @@int board_init(void)
sunxi_plat_init();
+#ifdef CONFIG_T113_I_WATCHDOG_REG+hw_watchdog_init();+#endifint work_mode = get_boot_work_mode();
ret = axp_gpio_init();

驗證:開啟看門狗電路設計預留的硬件撥碼開關,上電后進入 uboot 命令行,系統不會因超時重啟,說明 uboot 喂狗實現成功。

4.3kernel PE1 引腳自動喂狗實現

在內核中開啟 CONFIG_GPIO_WATCHDOG 選項

CONFIG_GPIO_WATCHDOG=y

設備樹中新增看門狗配置

watchdog: watchdog {compatible ="linux,wdt-gpio";gpios = <&pio PE 1 GPIO_ACTIVE_HIGH>;hw_algo ="toggle";hw_margin_ms = <1000>; #always-running ="true"; };

驗證:進入系統后,開啟看門狗電路設計預留的硬件撥碼開關,系統不會重啟,表明 kernel 喂狗功能正常。

4.4uboot 到 kernel 的銜接

關鍵一步,經測試在kernel啟動的0.2秒左右看門狗會出現超時,為避免 kernel 啟動初期因打印信息過多導致喂狗不及時,需要修改打印等級。減少啟動過程中的打印輸出,確保kernel能及時接管喂狗任務,實現uboot到kernel的無縫銜接。

在 device/config/chips/t113_i/configs/evb1_auto/buildroot/env.cfg 文件中,將 loglevel 從8修改為5或6。

diff--git a/device/config/chips/t113_i/configs/evb1_auto/buildroot/env.cfg b/device/config/chips/t113_i/configs/evb1_auto/buildroot/env.cfgindex bc1d41d..52d32d2100755---a/device/config/chips/t113_i/configs/evb1_auto/buildroot/env.cfg+++b/device/config/chips/t113_i/configs/evb1_auto/buildroot/env.cfg@@-8,7+8,7@@ mmc_root=/dev/mmcblk0p5mtd_name=sysrootfstype=ubifs,rwinit=/init-loglevel=8+loglevel=5cma=16Mmac=wifi_mac=

五、總結

通過以上步驟,我們成功在T113-I平臺上實現了從 uboot 到 kernel 的看門狗無縫銜接,系統能夠全自動喂狗,無需應用層干預,極大地提高了系統的穩定性和可靠性。相信這一方案對于需要高穩定性的嵌入式項目具有重要的應用價值,十分適用于對系統穩定性要求極高的工業控制物聯網設備。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 看門狗
    +關注

    關注

    10

    文章

    610

    瀏覽量

    72946
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3747

    瀏覽量

    133635
  • 核心板
    +關注

    關注

    6

    文章

    1399

    瀏覽量

    32010
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    看門狗多任務系統喂狗方法詳解

    看門狗分硬件看門狗和 軟件看門狗。硬件看門狗是利用一個定時器電路,其定時輸出連接到電路的復位端,程序在一定時間范圍內對定時器清零(俗稱“喂狗
    的頭像 發表于 07-05 09:21 ?2w次閱讀
    <b class='flag-5'>看門狗</b>多任務<b class='flag-5'>系統</b>及<b class='flag-5'>喂狗</b>方法詳解

    新手如何開發高可靠性嵌入式系統

    開發高可靠性嵌入式系統需要這七招成為一個正式的工程師。它是一個艱辛的過程,需要開發人員維護和管理系統的每個比特和字節。從規范完善的開發周期到嚴格執行和
    發表于 08-02 10:04

    開發高可靠性嵌入式系統的技巧有哪些?

    的感覺,但僅僅因為軟件在受控條件的那一刻運行正常并不意味著明天或一年后還會運行正常。從規范完善的開發周期到嚴格執行和系統檢查,開發高可靠性嵌入式
    發表于 09-29 08:10

    嵌入式系統看門狗計數器怎么清零?

    嵌入式系統中,為了使系統在異常情況能自動恢復,一般都會引入看門狗電路。看門狗電路其實就是一個
    發表于 03-09 06:16

    利用看門狗改善系統可靠性―如何正確選擇器件

    本文主要講述的是利用看門狗改善系統可靠性―如何正確選擇器件。
    發表于 04-23 08:46 ?10次下載

    利用看門狗改善系統可靠性

    利用看門狗改善系統可靠性
    發表于 04-27 10:34 ?22次下載
    利用<b class='flag-5'>看門狗</b>改善<b class='flag-5'>系統</b><b class='flag-5'>可靠性</b>

    什么是stm32看門狗?獨立看門狗和窗口看門狗工作原理解析

    stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立看門狗
    的頭像 發表于 11-06 11:48 ?2.8w次閱讀
    什么是stm32<b class='flag-5'>看門狗</b>?獨立<b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

    uC/OS-II 系統的多任務看門狗設計

    嵌入式系統中為提高微型機系統可靠性和安全, 常用的方法就是使用看門狗
    發表于 11-30 06:39 ?959次閱讀

    基于嵌入式系統看門狗的原理與使用

    在產品化的嵌入式系統中,為了使系統在異常情況能自動復位,一般都需要引入看門狗
    的頭像 發表于 02-08 18:27 ?8441次閱讀
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>中<b class='flag-5'>看門狗</b>的原理與使用

    對于MCU看門狗IIWDG WWDG喂狗時間的配置參考

    對于MCU看門狗IIWDG WWDG喂狗時間的配置參考可以參考MCU的datasheet;在每個MCU的datasheet中都有這樣的表格:6.3.25 Timer
    發表于 10-28 12:06 ?13次下載
    對于MCU<b class='flag-5'>看門狗</b>IIWDG WWDG<b class='flag-5'>喂狗</b>時間的配置參考

    嵌入式系統】獨立看門狗原理+看門狗實驗分析

    嵌入式系統】獨立看門狗原理+看門狗實驗分析1、看門狗模塊概述在由單片機構成的微機系統中,由于單
    發表于 11-25 09:51 ?1次下載
    【<b class='flag-5'>嵌入式</b><b class='flag-5'>系統</b>】獨立<b class='flag-5'>看門狗</b>原理+<b class='flag-5'>看門狗</b>實驗分析

    STM32中的獨立看門狗和窗口看門狗

    和窗口看門狗。 獨立看門狗:使用的是外部時鐘,即使主頻不工作了,看門狗也能正常工作。只要在到達喂狗時間的上限前喂狗即表示程序是正常的,這點和
    的頭像 發表于 12-22 16:58 ?3190次閱讀

    飛凌嵌入式T113-i開發板的調屏方法

    對于飛凌嵌入式T113-i開發板的調屏問題,需要按照以下步驟進行操作
    的頭像 發表于 01-29 16:25 ?2212次閱讀

    基于全志T113-i多核異構處理器的全國產嵌入式核心板簡介

    一、嵌入式核心板產品介紹 基于全志公司的T113-i處理器精心設計的多核異構處理器、工業級ECK30-T13IA系列嵌入式核心板,采用郵票孔連接的低成本、低功耗、高性價比、
    的頭像 發表于 10-25 13:40 ?2100次閱讀

    喂狗”的藝術:看門狗不叫,才是系統

    程序的。現實里的會追飛盤,PLC里的看門狗追的是跑飛的程序。 本質上是一個計時器,用于監控程序的運行狀態。主程序在正常運行時,需要定期“喂狗”(即重置計時器)。一旦程序跑飛或陷入死循環,導致無法及時
    的頭像 發表于 11-25 10:50 ?306次閱讀
    “<b class='flag-5'>喂狗</b>”的藝術:<b class='flag-5'>看門狗</b>不叫,才是<b class='flag-5'>系統</b>好