watdog(3)

原创 2013年12月05日 17:02:34

把watdog一直开着,当来一个watdog 中断,打印一句话,当灯亮/灯灭。

*********************************************************************************

watdog.h:

//interrupt

#define VIC0INTENABLE(*(volatile unsigned long *)0x71200010

#define VIC0INTSELECT (*(volatile unsigned long *)0x7120000C)

//模拟watdog
#define VIC0SOFTINT (*(volatile unsigned long *)0x71200018)
#define VIC0SOFTINTCLAR (*(volatile unsigned long *)0x7120001C)
//watdog
#define WTCON    (*(volatile unsigned long *)0x7E004000) 
#define WTDAT    (*(volatile unsigned long *)0x7E004004) 
#define WTCNT    (*(volatile unsigned long *)0x7E004008) 
#define WTCLRINT (*(volatile unsigned long *)0x7E00400C)
//led
#define GPMCON (*(volatile unsigned long *)0x7F008820)
#define GPMDAT (*(volatile unsigned long *)0x7F008824)

*****************************************************************************

test.c:

#include "watdog.h"
void hander_irq();
int (*printf)(char *,...) = (void *)0x57e11d4c;
int tmp=0;
int main()
{
*(volatile unsigned long *)0x56000000 = hander_irq;
//cpsr
__asm__ __volatile__(


"mrs r0,cpsr\n"
"bic r0,r0,#0x80\n"
"msr cpsr,r0\n"
:
:
:"r0","memory"
);
//enable
VIC0INTENABLE |=(1<<26);
//select
VIC0INTSELECT &=~(1<<26);
  //softirq
// VIC0SOFTINT |=(1<<26);


//watdog
WTCON = (1<<2)|(0<<3)|(1<<5)|(255<<8);

//如果WTCON=(1<<0)|(1<<2)|(0<<3)|(1<<5)|(255<<8);中断来的时候就是重启
WTCNT = 0x8000;
WTDAT = 0x8000;
//led
GPMCON = (1<<0)|(1<<4)|(1<<8)|(1<<12);
}
void hander_irq()
{
WTCLRINT = 0;//清楚watdog,wadcnt减完了又会来一次中断,watdat又填充watcnt
printf("this is wat_dong:wang wang\n");
if(tmp == 0)
{
GPMDAT = 0;
tmp = 1;
}
else
{
GPMDAT = 0xf;
tmp = 0;
}
}

*********************************************************************************

vector.s

b reset
b und
b swi
b pre_abt
b data_abt
.word 0x0
b irq
b firq
reset:
und:
mov sp,#0x56000000
mov ip,sp
stmdb sp!,{fp,ip,lr}
sub fp,ip,#4

ldr r0,=string_und
ldr r1,printf
blx r1

mov sp,#0x56000000
ldmdb sp,{fp,sp,pc}^
swi:
mov sp,#0x56000000
mov ip,sp
stmdb sp!,{fp,ip,lr}
sub fp,ip,#4

ldr r0,=string_swi
ldr r1,printf
blx r1

mov sp,#0x56000000
ldmdb sp,{fp,sp,pc}^
pre_abt:
data_abt:
mov sp,#0x56000000
mov ip,sp
sub lr,lr,#4
stmdb sp!,{fp,ip,lr}
sub fp,ip,#4

ldr r0,=string_pre_abt
ldr r1,printf
blx r1

mov sp,#0x56000000
ldmdb sp,{fp,sp,pc}^
irq:
mov sp,#0x56000000
mov ip,sp
sub lr,lr,#4
stmdb sp!,{fp,ip,lr}
sub fp,ip,#4
# 调用函数
mov r0,#0x56000000
ldr r1,[r0]
blx r1

mov sp,#0x56000000
ldmdb sp,{fp,sp,pc}^
firq:
printf:
.word 0x57e11d4c
string_und:
.asciz "hello undefine \n"
.align 2
string_swi:
.asciz "hello swi\n"
.align 2
string_pre_abt:
.asciz "hell data_abt\n"
.align 2
string_irq:
.asciz "hello irq ,wang wang wang  \n"
.align 2

*******************************************************************


makefile同以前。


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

(1)内部中断—watdog

还有几天的时间,反反复复,借这个机会,重来一下bootloader,一直以来是一个yihan. 也复习一下,6410的裸版开发。这么些天没有学习,大概一个月的时间,好好整理一下心情,进入工作了!加油啊...

手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加

/* text1.txt text2.txt text3.txt begin begin begin 10 11 12 15 16 17 ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

51nod 1238 最小公倍数之和 V3

题目描述: 求: ∑ni=1∑nj=1lcm(i,j)\sum_{i = 1}^n \sum_{j = 1}^n lcm(i, j) 题解: ∑ni=1∑nj=1lcm(i,j)\sum_{i...

sublime text3 快捷键

转自:http://blog.sina.com.cn/s/blog_73c5cfbe0101ldj8.html 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选...

使用CSS3的@media来编写响应式的页面

首先要知道,我们为什么要写自适应的页面(响应式页面) 【直接看干货】 众所周知,电脑、平板、手机的屏幕是差距很大的,假如在电脑上写好了一个页面,在电脑上看起来不错,但是如果放到手机上的话,那可能就...

【区间DP】【二维线段树】【二维树状数组】2017.5.20 T3 deliver 题解

Problem 3 (deliver.pas/cpp/c) 【题目描述】 有一个军队正在编队。他们有n个人,编号1-n,编队结构如下: 1.一个军队有一个指挥官 2.编号小于他们指挥官编号的组...

python学习笔记3

学习声明:笔者的python环境是3.x#!/usr/bin/env python3 #coding=utf-8 #时间 ''' import time print(time.time()) #获取...

实验室智能管理系统(3)——zigbee部分

我使用的是ZStack-CC2530-2.5.1 修改了Sample app代码SampleApp.c/************************************************...

C++学习 9 深入STL 3

typename, typeid, iterator category type traits , iterator traits -Iterator adapter, container adap...

3.SparkSQL学习

sparkSQL的发展历程。 A:hive and shark       sparkSQL的前身是shark。在hadoop发展过程中,为了给熟悉RDBMS但又不理解MapReduce的技术人员...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)