日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2024年10月14日(星期一)

正在發(fā)生

2018年10月14日 | Tiny4412中斷控制器(GIC)之WDT中斷

發(fā)布者:MindfulCreator 來源: eefocus關(guān)鍵字:Tiny4412  中斷控制器  GIC  WDT中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

#include "regs.h"

void enable_mmu(unsigned long ttb);

void init_ttb(unsigned long *ttb_base);

void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa);

void memset(char *buf, char ch, int size);

void memcpy(char *dst, char *src, int size);

void do_irq(unsigned long regs[]);

void (*printf)(char *, ...) = 0x43e11434;

void main(void)

{    

    unsigned long  vector_base = 0xffff0000;

    unsigned long  tt_base = 0x73000000;

    unsigned long *pdo_irq = 0x75000000;

    extern unsigned long vectors_start, vectors_end;

    memset(tt_base, 0x00, 16 * 1024);

    mmap(tt_base, vector_base, 0x70000000);    

    enable_mmu(tt_base);

    memcpy(vector_base, vectors_start, 0x100);

    *pdo_irq = do_irq;

    

    __asm__ __volatile__ (

        "cpsie i\n"

    );

 

    //--------------------------------------------------

    ICCICR_CPU0 = 1;

    ICCPMR_CPU0 =  0xff;  //Priority Unmask All Interrupt

    ICDDCR = 1;    

    

    //------ Watchdog IRQ ID is 75------------------

    ICDIPR18_CPU0 = ~(0xff << 24);// the Zero is Highest priority 

    ICDIPTR18_CPU0 = (1 << 24);     // for CPU0   , refer  PG815 

    ICDISER2_CPU0 =  (1 << 11);      // enable interrupt 0 --- SGI0 

    //---------- Configure WDT ----------------------

    // 200000000 / 128 / 256 = 6103,即頻率6103

    WTCNT = 6103;    // 1秒鐘減完

    WTDAT = 6103;    // WTCNT 1秒鐘減完后把WTDAT值裝入WTCNT中繼續(xù)減

    WTCON = (1 << 2) | (3 << 3) | (1 << 5) | (0xff << 8) ; //啟動看門狗

}

void do_irq(unsigned long regs[])

{

    printf("watchdog: wang wang wang ....\n");

    WTCLRINT = 0;

}

void enable_mmu(unsigned long ttb)

{    

    unsigned long c1_flags;

    init_ttb(ttb);

    c1_flags = 1 | (1 << 3) | ( 1 << 11) | ( 1 << 13) |  (1 << 28);

    __asm__ __volatile__ (

        "mvn r0, #0 \n"            

        "mcr p15, 0, r0, c3, c0, 0\n"

        "mcr p15, 0, %1, c2, c0, 0\n" //configure ttb

        "mrc p15, 0, r0, c1, c0, 0\n"

        "orr %0, r0, %0\n"

        "mcr p15, 0, %0, c1, c0, 0\n" //enable mmu

        :

        : "r" (c1_flags), "r" (ttb)

        : "r0"

    );

}

void init_ttb(unsigned long *ttb_base)

{

    unsigned long va, pa;

    for (va = 0x00000000; va < 0x10000000; va += 0x100000) { //Others

        pa = va;

        ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;    

    }

    for (va = 0x10000000; va < 0x14000000; va += 0x100000) { //SFR

        pa = va;

        ttb_base[ va >> 20] = (pa & 0xfff00000) |  2;    

    }

    for (va = 0x40000000; va < 0x80000000; va += 0x100000) { //DRAM

        pa = va;

        ttb_base[ va >> 20] = (pa & 0xfff00000) | 2;    

    }

}

void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa)

{

    ttb_base[ va >> 20] = (pa & 0xfff00000) |  2;    

}

void memset(char *buf, char ch, int size)

{

    int i;

    for (i = 0; i < size; i ++)

        buf[i] = ch;

}

void memcpy(char *dst, char *src, int size)

{

    int i;

    for (i = 0; i < size; i ++) 

        dst[i] = src[i];    

}

__asm__ (

"vectors:\n"

    "b reset\n"

    "b und\n"

    "b swi\n"

    "b pre_abt\n"

    "b dat_abt\n"

    ".word 0\n"

    "b irq\n"

    "b fiq\n"

"reset:\n"

"und:\n"

    "mov sp, #0x74000000\n"

    "stmfd sp!, {r0-r12, lr}\n"

    "mov r0, sp\n"

    "mov r3, #0x74000000\n"

    "ldr r3, [r3]\n"

    "blx r3\n"

    "mov sp, #0x74000000\n"

    "ldmea sp, {r0-r12, pc}^\n"

"swi:\n"

"pre_abt:\n"

"dat_abt:\n"

"fiq:\n"

"irq:\n"

    "mov sp, #0x75000000\n"

    "sub lr, lr, #4    \n"

    "stmfd sp!, {r0-r12, lr}\n"

    

    "mov r0, sp\n"

    "mov r3, #0x75000000\n"

    "ldr r3, [r3]\n"

    "blx r3\n"

    "mov sp, #0x75000000\n"

    "ldmea sp, {r0-r12, pc}^\n"

"EOV:\n"

"vectors_start:\n"

    ".word vectors\n"

"vectors_end:\n"

    ".word EOV\n"

);

====================================================================

Makefile文件:

default:

    arm-linux-gcc -c test.c  -o test.o

    arm-linux-ld  -Ttext=0x70003000  test.o  -o test

    arm-linux-objcopy  -O binary  test  test.bin

clean:

    rm -f test.o  test  test.bin   *~ 

===============================================================


關(guān)鍵字:Tiny4412  中斷控制器  GIC  WDT中斷 引用地址:Tiny4412中斷控制器(GIC)之WDT中斷

上一篇:Tiny4412中斷控制器(GIC)之PWM
下一篇:Tiny4412中斷控制器(GIC)之外部中斷

推薦閱讀

上一此實驗我們講解了如何對代碼進行重定位,但是將代碼重定位到只有256K的IRAM中作用不大。正確的做法是將代碼重定位到容量更大的主存中,即DRAM中。Exynos4412中有兩個獨立的DRAM控制器,分別叫DMC0和DMC1。DMC0和DMC1分別支持最大1.5GB的DRAM,它們都支持DDR2/DDR3和LPDDR2等,512 Mb, 1 Gb, 2 Gb, 4 Gb and 8 Gbit的內(nèi)存設(shè)備,支持16/32bit...
MSP430F5xxx ADC12 框圖使用流程AD部分主要配置ADC12模塊的時鐘、參考源、采樣通道、采樣模式、存儲和采樣保持。 下面一個部分一個部分來。第一個是ADC12模塊的時鐘,這個是模塊運行時的時鐘,跟采樣定時器是兩個概念,曾經(jīng)我有一段時間被迷惑住了。這個由ADC12CTL1里面的ADC12SSEL和ADC12DIV配置,可以選擇ADC12OSC/ACLK/SMCLK/MCLK,TI例程里面好像都...
早前來自工信部官網(wǎng)的消息顯示,北京在9月份就實現(xiàn)了5G SA組網(wǎng)全覆蓋。 工信部表示,到目前為止,北京市各基礎(chǔ)電信企業(yè)已全面完成5G SA組網(wǎng)核心網(wǎng)建設(shè)、優(yōu)化和整體部署工作。核心網(wǎng)側(cè)網(wǎng)元已具備基站接入能力,已建成的4.4萬個5G基站全部接入了獨立組網(wǎng)核心網(wǎng),實現(xiàn)了5G SA組網(wǎng)全覆蓋。 有趣的是,在北京之后,又有一個城市——寧波,實現(xiàn)了5G SA組網(wǎng)全...
Microchip發(fā)布2.3版TimeProvider? 4100主時鐘授時和同步系統(tǒng),保護關(guān)鍵基礎(chǔ)設(shè)施網(wǎng)絡(luò)Microchip全新主時鐘產(chǎn)品功能進一步增強,提高了部署的靈活性、安全性和可擴展性包括5G移動、公用事業(yè)、有線電視、交通、國防和數(shù)據(jù)中心等在內(nèi)的基礎(chǔ)設(shè)施通信網(wǎng)絡(luò)需要從全球定位系統(tǒng)(GPS)或其他全球衛(wèi)星系統(tǒng)獲取并維持精確授時信號。當全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)信號不...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved