imx6ull 硬體watchdog使用

2021-10-11 11:41:13 字數 2449 閱讀 2409

三 核心餵狗

四 注意事項

4.1 usb公升級

hd-imx6ull-mb開發板,板載了乙個硬體看門狗,下面介紹如何開啟這個硬體看門狗。

核心板上看門狗晶元是sp706,r314和r315兩個電阻預設已經焊接,

早期部分電路板,r314未焊接,nrst_in不受wdo控制,看門狗功能一直關閉。

核心板引出了引腳wdo_en,直接將這個引腳接到3.3v,可關閉看門狗功能。

上圖晶元的wdi為晶元輸入引腳,連線到snvs_tamper0。根據晶元手冊,當這個引腳保持high or low 1.6s,wdo引腳會輸出低電平。所以我們需要不斷翻轉snvs_tamper0防止sp706拉低wdo(間接拉低nrst_in)導致imx6ull復位。

因為看門狗功能,在晶元上電後,就一直開啟,所以我們需要在uboot中就開始餵狗。

在 driver/watchdog中修改imx_watchdog.c,新增看門狗初始化和餵狗程式:

*

* watchdog.c - driver for i.mx on-chip watchdog

** licensed under the gpl-

2 or later.*/

#include

#include

#include

#include

#ifdef config_imx_watchdog

/* */

#define sw_mux_gpio5_io00 *((volatile unsigned int *)0x02290008)

#define sw_pad_gpio5_io00 *((volatile unsigned int *)0x0229004c)

#define gpio5_dr *((volatile unsigned int *)0x020ac000)

#define gpio5_gdir *((volatile unsigned int *)0x020ac004)

#define gpio5_psr *((volatile unsigned int *)0x020ac008)

#define gpio5_icr1 *((volatile unsigned int *)0x020ac00c)

#define gpio5_icr2 *((volatile unsigned int *)0x020ac010)

#define gpio5_imr *((volatile unsigned int *)0x020ac014)

#define gpio5_isr *((volatile unsigned int *)0x020ac018)

#define gpio5_edge_sel *((volatile unsigned int *)0x020ac01c)

void

hw_watchdog_reset

(void

)void

hw_watchdog_init

(void

)#endif

void

__attribute__

((weak)

)reset_cpu

(ulong addr)

在/config/mx6ullevk.h最後面新增如下內容

/* watchdog config */

#define config_hw_watchdog

#define config_imx_watchdog

進行如下操作後,。

watchdog: watchdog ;

pinctrl_wdt: wdtgrp ;

執行menuconfig,進入如下配置頁面:

device drivers -> watchdog timer support開啟如下兩項:

在沒有及時餵狗的情況下,硬體看門狗會不斷復位晶元。且,imx6ull進入usb公升級模式時,執行的第一段**,是晶元廠商固化在晶元中的,其中不會翻轉gpio餵狗。所以當硬體看門狗開啟的情況下,晶元會不斷復位。

解決方法是,使用其他方式製作sd卡公升級包,或者在刷機時,臨時關閉看門狗。

IMX6ULL啟動流程

假設板子設定為sd tf卡啟動,boot rom程式會做什麼?把程式從sd tf卡讀出來,執行。從 讀?從sd tf卡讀,這需要先初始化sd tf卡 根據efuse或gpio的設定初始化sd tf卡。讀到 去?讀到記憶體即ddr去,這需要先初始化ddr。除了初始化啟動裝置 初始化ddr,還需要初始化...

IMX6ULL學習筆記(一)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。bin檔案前面要新增頭部 ivt boot data dcd資料 由官方手冊可知要燒寫到sd卡中的load.imx檔案在sd卡中的起始位址是0x400,也就是1...

IMX6ULL學習筆記(三)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。鏈結指令碼的例子 sections rodata align 4 data align 4 bss start bss align 4 bss end bss ...