三 核心餵狗
四 注意事項
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,新增看門狗初始化和餵狗程式:
在/config/mx6ullevk.h最後面新增如下內容*
* 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)
進行如下操作後,。/* watchdog config */
#define config_hw_watchdog
#define config_imx_watchdog
執行menuconfig,進入如下配置頁面:watchdog: watchdog ;
pinctrl_wdt: wdtgrp ;
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 ...