日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

A20 看门狗

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 A20 看门狗 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

? ? ? ?說到看門狗,應該不會陌生,看門狗說白了就是一個定時器,但是它有一個非常重要的功能就是復位系統(tǒng)。在A20里,看門狗的操作非常簡單,只有兩個寄存器,不需要操作時鐘相關的東西,系統(tǒng)起來后可以直接使用,它的最大定時時間為16秒。

?

一、目的

? ? ? ?學習使用A20的看門狗,實現(xiàn)軟件復位系統(tǒng)。

?

二、源代碼說明

? ? ?start.S文件。首先禁止CPU的IRQ和FIQ,設置為管理模式,需要注意的是,這里設置異常向量表的起始地址為start.S文件里的第一指令的地址,學過ARM的都知道,ARM的異常向量表可以設置在低地址(0地址),也可以設置在高地址(0xffff0000地址,通常在使能了MMU后使用),但是目前Cortex-A7體系結構已經可以指定異常向量表的地址,這樣就省去了搬移的操作。然后設置堆棧指針,最后調用C語言的main函數(shù)。

1 /* 2 * (C) Copyright 2014 conan liang <lknlfy@163.com> 3 * 4 */ 5 6 7 /* global entry point */ 8 .global _start 9 _start: 10 b reset 11 12 13 reset: 14 /* disable IRQ & FIQ, set the cpu to SVC32 mode */ 15 mrs r0, cpsr 16 and r1, r0, #0x1f 17 teq r1, #0x1a 18 bicne r0, r0, #0x1f 19 orrne r0, r0, #0x13 20 orr r0, r0, #0xc0 21 msr cpsr, r0 22 23 /* set exception vector table */ 24 ldr r0, =_start 25 mcr p15, 0, r0, c12, c0, 0 26 27 /* setup stack, so we can call C code */ 28 ldr sp, =(1024 * 10) 29 30 /* jump to main function */ 31 bl main 32 loop: 33 b loop

? ? ? main.c文件。首先初始化看門狗,設置它在3秒后執(zhí)行系統(tǒng)復位操作(如果參數(shù)值小于0則表示關閉看門狗),然后初始化LED所在IO管腳,設置為輸出功能,并且輸出低電平,即一開始兩個LED是熄滅的,接著是一段延時,目的是可以看到兩個LED閃爍,如果觀察現(xiàn)象時看到兩個LED閃爍,那也說明了看門狗正常工作了。

1 #include "io.h" 2 #include "watchdog.h" 3 4 5 #define SUNXI_PIO_BASE (0x01C20800) 6 #define PH_CFG2 (SUNXI_PIO_BASE + 0x104) 7 #define PH_DAT (SUNXI_PIO_BASE + 0x10C) 8 9 10 /* set two LEDs on */ 11 static void set_led_on(void) 12 { 13 unsigned int tmp; 14 15 /* PH20 and PH21 output 1 */ 16 tmp = readl(PH_DAT); 17 tmp |= (0x1 << 20); 18 tmp |= (0x1 << 21); 19 writel(tmp, PH_DAT); 20 } 21 22 /* init two PIOs */ 23 static void led_init(void) 24 { 25 unsigned int tmp; 26 27 /* configure PH20 and PH21 output */ 28 tmp = readl(PH_CFG2); 29 tmp &= ~(0x7 << 16); 30 tmp &= ~(0x7 << 20); 31 tmp |= (0x1 << 16); 32 tmp |= (0x1 << 20); 33 writel(tmp, PH_CFG2); 34 /* PH20 and PH21 output 0 */ 35 tmp = readl(PH_DAT); 36 tmp &= ~(0x1 << 20); 37 tmp &= ~(0x1 << 21); 38 writel(tmp, PH_DAT); 39 } 40 41 42 int main(void) 43 { 44 int i; 45 46 /* let watchdog reset the system after 3 second */ 47 sunxi_watchdog_init(3); 48 /* init LEDs */ 49 led_init(); 50 /* some delay, so we can see two LEDs off a while */ 51 for (i = 0; i < 50000; i++); 52 /* set two LEDs on */ 53 set_led_on(); 54 while (1); 55 56 return 0; 57 }

? ? ? watchdog.c文件。看門狗的驅動程序,非常簡單。

1 #include "watchdog.h" 2 #include "io.h" 3 4 /* watchdog interval value */ 5 static unsigned int watchdog_intv_val [] = { 6 0b0000, // 0.5s 7 0b0001, // 1s 8 0b0010, // 2s 9 0b0011, // 3s 10 0b0100, // 4s 11 0b0101, // 5s 12 0b0110, // 6s 13 0b0111, // 8s 14 0b0111, // 8s 15 0b1000, // 10s 16 0b1000, // 10s 17 0b1001, // 12s 18 0b1001, // 12s 19 0b1010, // 14s 20 0b1010, // 14s 21 0b1011, // 16s 22 0b1011 // 16s 23 }; 24 25 /* reg bits */ 26 #define WDOG_OFF (-1) 27 #define WDOG_RST_EN (1) 28 #define WDOG_EN (0) 29 #define WDOG_RSTART (0) 30 31 static void sunxi_watchdog_set(int time) 32 { 33 if (time >= 0) { 34 /* should not larger than 16 seconds */ 35 if(time > 16) 36 time = 16; 37 writel((watchdog_intv_val[time] << 3) | (1 << WDOG_RST_EN) | (1 << WDOG_EN), SUNXI_WDOG_MODE_REG); 38 } else { 39 /* disable watchdog */ 40 writel(0, SUNXI_WDOG_MODE_REG); 41 } 42 /* restart watchdog */ 43 writel(1 << WDOG_RSTART, SUNXI_WDOG_CTRL_REG); 44 } 45 46 int sunxi_watchdog_init(int val) 47 { 48 sunxi_watchdog_set(val); 49 50 return 0; 51 }

?

三、驗證

? ? ? ?使用arm-linux-gnueabihf工具編譯后生成watchdog.b文件,再使用mksunxiboot工具在watchdog.b文件前面加上一個頭部,最終生成watchdog.bin文件,使用以下命令將watchdog.bin文件燒寫到TF中:

#sudo dd if=./watchdog.bin of=/dev/sdb bs=1024 seek=8

? ? ?將TF卡插入Cubieboard2,上電即可看到兩個LED出現(xiàn)短時的周期閃爍,效果不好用圖片展示,因此就不上圖了。

總結

以上是生活随笔為你收集整理的A20 看门狗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本少妇色 | 亚洲视频自拍偷拍 | 国产在线欧美在线 | 日本 片 成人 在线 九色麻豆 | 一级做a爰片久久毛片 | 日本在线观看一区 | 美女xx网站| 香蕉私人影院 | 午夜精品网 | 国产精品mv | 亚洲国产精品免费 | 狠狠干天天干 | 亚洲一区二区三区高清视频 | 青青操精品| 情趣五月天 | 久久久久久久网站 | 激情午夜网 | 朋友的姐姐2在线观看 | 六月激情| 国产成人无码www免费视频播放 | 亚洲激情视频 | 国产精品国产三级国产普通话蜜臀 | 日韩一级二级 | 午夜黄色福利视频 | 黑人巨茎大战欧美白妇 | 亚洲第一色视频 | 不卡的毛片 | 美女日日日| 欧美一a一片一级一片 | 国产精品一区二区6 | 亚洲成人免费在线观看 | 日韩成人无码 | 久久久无码18禁高潮喷水 | 大尺度摸揉捏胸床戏视频 | 黄色一级片在线播放 | 精品一区二区三区无码按摩 | 丁香七月激情 | av无码精品一区二区三区宅噜噜 | 丰满尤物白嫩啪啪少妇 | 波多野结衣黄色片 | 狂野欧美| 亚洲在线资源 | 久久羞羞 | 中文字幕人妻一区二 | 91麻豆免费看 | 国产极品美女高潮无套在线观看 | 亚洲影院在线 | 美女少妇直播 | 青春草国产视频 | 色图视频 | 色哟哟中文字幕 | 欧美午夜久久 | 日本美女视频 | xxxxx在线观看 | 国产无套免费网站69 | 精品久久一二三区 | 久久天天综合 | 亚洲视频色图 | 日韩欧美国产电影 | 成人高潮片免费 | 欧美被狂躁喷白浆精品 | 在线观看毛片av | 午夜在线精品 | 亚洲男人第一av | 午夜视频福利在线观看 | 激情内射亚洲一区二区三区爱妻 | 国产成人精品一区二区三区四区 | 香蕉视频传媒 | 久久精品视频免费观看 | 亚洲第一偷拍 | 91干| 欧美精品久久久久久久久老牛影院 | 欧美日韩国产一级 | 亚洲色成人www永久在线观看 | av在线免费观看网址 | 婷婷影视 | 美女福利网站 | 毛片无码一区二区三区a片视频 | 午夜福利电影 | 视频一区在线播放 | 91草视频| 三级特黄视频 | av高清 | 全黄一级男人和女人 | 中文字幕高清在线 | 九九精品在线视频 | 日韩精品一区二区三区网站 | 美女上床网站 | 奇米四色7777 | 国产精品成人网 | 强行糟蹋人妻hd中文字幕 | 日韩精品一区二区三 | www.黄色国产 | 国产亚洲视频在线观看 | 日本www色视频 | 最新在线观看av | 蜜臀久久精品久久久久久酒店 | 喷水av| 一级片视频在线观看 |