亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cpuio.c

?? 《嵌入式固件開發》一書的源碼
?? C
字號:
#include "cpuio.h"#include "genlib.h"#include "stddefs.h"int probe (NATURAL32,NATURAL32);voidmcf5206_init (){    /* Initialize System Protection Resources.  Software Watchdog   */    /* disabled, and Bus Monitor enabled. */    IMM->sim.SYPCR = ( 0        | MCF5206_SIM_SYPCR_BME     /* yields bus error if no TA */        | MCF5206_SIM_SYPCR_BM_1024        ) ;    /* Disable Bus monitor and SWT while CPU halted.  */    IMM->sim.SIMR = ( 0        | MCF5206_SIM_SIMR_FRZ1        | MCF5206_SIM_SIMR_FRZ0        ) ;    /* Mask all interrupt sources, and ack all.  */    IMM->sim.IMR = ( 0        | MCF5206_SIM_IMR_UART2        | MCF5206_SIM_IMR_UART1        | MCF5206_SIM_IMR_MBUS        | MCF5206_SIM_IMR_T2        | MCF5206_SIM_IMR_T1        | MCF5206_SIM_IMR_SWT        | MCF5206_SIM_IMR_EINT7        | MCF5206_SIM_IMR_EINT6        | MCF5206_SIM_IMR_EINT5        | MCF5206_SIM_IMR_EINT4        | MCF5206_SIM_IMR_EINT3        | MCF5206_SIM_IMR_EINT2        | MCF5206_SIM_IMR_EINT1        ) ;    IMM->sim.IPR = ~0;#if 0    /* Init PPDDR to all inputs. */    IMM->gpio.PPDDR = 0;    /* Initialize PPDAT. */    IMM->gpio.PPDAT = 0;#endif    /* Configure multiplexed pins        - UART2 RTS        - External interrupts pins are IRQs, not IPLs        - 8bit Parallel Port I/O, not PST/DDATA        - WE0, WE1, CS4, CS5    ELS: WARNING! comment does not match manual. */    IMM->sim.PAR = ( 0        | MCF5206_SIM_PAR_PAR7_RTS2        | MCF5206_SIM_PAR_PAR1  /* WE0, WE1, CS4, CS5 */        ) ;    /* Setup Interrupt Source Vectors */    IMM->sim.ICR1 = ( 0        | MCF5206_SIM_ICR_AVEC      /* IPL/IRQ 1 */        | MCF5206_SIM_ICR_IL(1)        | MCF5206_SIM_ICR_IP(1)        ) ;    IMM->sim.ICR2 = ( 0        | MCF5206_SIM_ICR_AVEC      /* unusable */        | MCF5206_SIM_ICR_IL(2)        | MCF5206_SIM_ICR_IP(3)        ) ;    IMM->sim.ICR3 = ( 0        | MCF5206_SIM_ICR_AVEC      /* unusable */        | MCF5206_SIM_ICR_IL(2)        | MCF5206_SIM_ICR_IP(2)        ) ;    IMM->sim.ICR4 = ( 0        | MCF5206_SIM_ICR_IL(4)     /* IRQ 4, MC68HC901 */        | MCF5206_SIM_ICR_IP(2)        ) ;    IMM->sim.ICR5 = ( 0        | MCF5206_SIM_ICR_AVEC      /* unusable */        | MCF5206_SIM_ICR_IL(2)        | MCF5206_SIM_ICR_IP(1)        ) ;    IMM->sim.ICR6 = ( 0        | MCF5206_SIM_ICR_AVEC      /* unusable */        | MCF5206_SIM_ICR_IL(2)        | MCF5206_SIM_ICR_IP(0)        ) ;    IMM->sim.ICR7 = ( 0        | MCF5206_SIM_ICR_AVEC      /* IPL/IRQ 7, Abort/NMI */        | MCF5206_SIM_ICR_IL(7)        | MCF5206_SIM_ICR_IP(3)        ) ;    IMM->sim.ICR8 = ( 0        | MCF5206_SIM_ICR_AVEC      /* Software Watchdog */        | MCF5206_SIM_ICR_IL(7)        | MCF5206_SIM_ICR_IP(2)        ) ;    IMM->sim.ICR9 = ( 0        | MCF5206_SIM_ICR_AVEC      /* Timer 1 */        | MCF5206_SIM_ICR_IL(5)        | MCF5206_SIM_ICR_IP(3)        ) ;    IMM->sim.ICR10 = ( 0        | MCF5206_SIM_ICR_AVEC      /* Timer 2 */        | MCF5206_SIM_ICR_IL(5)        | MCF5206_SIM_ICR_IP(2)        ) ;    IMM->sim.ICR11 = ( 0        | MCF5206_SIM_ICR_AVEC      /* MBUS */        | MCF5206_SIM_ICR_IL(3)        | MCF5206_SIM_ICR_IP(0)        ) ;    IMM->sim.ICR12 = ( 0        | MCF5206_SIM_ICR_AVEC      /* UART 1 */        | MCF5206_SIM_ICR_IL(3)        | MCF5206_SIM_ICR_IP(2)        ) ;    IMM->sim.ICR13 = ( 0        | MCF5206_SIM_ICR_AVEC      /* UART 2 */        | MCF5206_SIM_ICR_IL(3)        | MCF5206_SIM_ICR_IP(1)        ) ;    /* Software Watchdog, not used since disabled above */    IMM->sim.SWIVR = 0x0F;          /* uninitiliazed vector */    IMM->sim.SWSR  = 0x55;    IMM->sim.SWSR  = 0xAA;    /* Reset timers and disable them */    IMM->timer.TMR1 = ( 0        | MCF5206_TIMER_TMR_CLK_STOP        | MCF5206_TIMER_TMR_RST        ) ;    IMM->timer.TER1 = ( 0        | MCF5206_TIMER_TER_REF        | MCF5206_TIMER_TER_CAP        ) ;    IMM->timer.TMR2 = ( 0        | MCF5206_TIMER_TMR_CLK_STOP        | MCF5206_TIMER_TMR_RST        ) ;    IMM->timer.TER2 = ( 0        | MCF5206_TIMER_TER_REF        | MCF5206_TIMER_TER_CAP        ) ;}voidmcf5206_cs_init(){    /* This routine initializes ChipSelects to setup peripherals     * and other board memory devices.  */    /*     * ChipSelect 0 - Boot FLASH 29F010     *     * ChipSelect 0 is the global chip select coming out of system reset.     * CS0 is asserted for every access until CSMR0 is written.  Therefore,     * the entire ChipSelect must be properly set prior to asserting     * CSCR0_V.     */    IMM->cs.CSAR0 = MCF5206_CS_CSAR_BASE(FLASH_ADDRESS);    IMM->cs.CSCR0 = ( 0        | MCF5206_CS_CSCR_WS(3)        | MCF5206_CS_CSCR_AA        /* TA_ generated internally */        | MCF5206_CS_CSCR_PS_16        | MCF5206_CS_CSCR_WR        | MCF5206_CS_CSCR_RD        ) ;    IMM->cs.CSMR0 = MCF5206_CS_CSMR_MASK_256K;    /* ChipSelect 1 - IACK */    IMM->cs.CSAR1 = MCF5206_IACK_ADDRESS;    IMM->cs.CSMR1 = ( 0        | MCF5206_IACK_MASK        | MCF5206_CS_CSMR_SC        | MCF5206_CS_CSMR_SD        | MCF5206_CS_CSMR_UC        | MCF5206_CS_CSMR_UD        ) ;    IMM->cs.CSCR1 = ( 0        | MCF5206_CS_CSCR_PS_8        | MCF5206_CS_CSCR_WR        | MCF5206_CS_CSCR_RD        ) ;    /* ChipSelect 2 - MC68HC901 */    IMM->cs.CSAR2 = MCF5206_CS_CSAR_BASE(MC68HC901_ADDRESS);    IMM->cs.CSMR2 = ( 0        | MCF5206_CS_CSMR_MASK_64K        | MCF5206_CS_CSMR_SC        | MCF5206_CS_CSMR_UC        ) ;    IMM->cs.CSCR2 = ( 0        | MCF5206_CS_CSCR_PS_8        | MCF5206_CS_CSCR_WR        | MCF5206_CS_CSCR_RD        ) ;    /* ChipSelect 3 - ISA FPGA - Externally terminated */    IMM->cs.CSAR3 = MCF5206_CS_CSAR_BASE(ISA_ADDRESS);    IMM->cs.CSMR3 = ( 0        | MCF5206_CS_CSMR_MASK_1M        ) ;    IMM->cs.CSCR3 = ( 0        | MCF5206_CS_CSCR_PS_16        | MCF5206_CS_CSCR_WR        | MCF5206_CS_CSCR_RD        ) ;    /* ChipSelect 4,5,6 and 7 - Empty */    IMM->cs.CSAR4 = 0;    IMM->cs.CSMR4 = 0;    IMM->cs.CSCR4 = 0;    IMM->cs.CSAR5 = 0;    IMM->cs.CSMR5 = 0;    IMM->cs.CSCR5 = 0;    IMM->cs.CSAR6 = 0;    IMM->cs.CSMR6 = 0;    IMM->cs.CSCR6 = 0;    IMM->cs.CSAR7 = 0;    IMM->cs.CSMR7 = 0;    IMM->cs.CSCR7 = 0;    /* Default Memory Configuration Register, DMCR.  Since Bus Monitor       enabled above, and DMCR ignores default memory, we should get       a bus error on accessing default memory.  */    IMM->cs.DMCR = 0;}voidmcf5206_dramc_init(){    /* This routine initializes DRAM Controller and determines size     * of installed DRAM.  */    unsigned dram_size, bank_two, junk;    /* DRAM Controller Refresh Register calculation:     *     * Refresh cycle time = RC * 16 * ( 1 / System Frequency )     *     * 15.6us = RC * 16 * ( 1 / 25MHz )     *     24 = RC     */    IMM->dramc.DCRR = 24;    /* IMM->dramc.DCTR = 0; */    IMM->dramc.DCAR0 = MCF5206_DRAMC_DCAR_BASE(DRAM_ADDRESS);    IMM->dramc.DCMR0 = MCF5206_DRAMC_DCMR_MASK_16M;    IMM->dramc.DCCR0 = ( 0        | MCF5206_DRAMC_DCCR_PS_32        | MCF5206_DRAMC_DCCR_BPS_512B        | MCF5206_DRAMC_DCCR_PM_BURSTPAGE        | MCF5206_DRAMC_DCCR_WR        | MCF5206_DRAMC_DCCR_RD        ) ;    IMM->dramc.DCAR1 = 0;    IMM->dramc.DCMR1 = 0;    IMM->dramc.DCCR1 = 0;    /* Determine size of DRAM Bank 0 */    if (probe(DRAM_ADDRESS,0x00800000))    {        dram_size = 0x01000000;    }    else    {        IMM->dramc.DCMR0 = MCF5206_DRAMC_DCMR_MASK_4M;        if (probe(DRAM_ADDRESS,0x00100000))        {            dram_size = 0x00400000;        }        else        {            IMM->dramc.DCMR0 = MCF5206_DRAMC_DCMR_MASK_1M;            dram_size = 0x00100000;        }    }    /* Now check DRAM Bank 1 for existance by enabling identical     * to DRAM Bank 0, and probing */    IMM->dramc.DCCR1 = IMM->dramc.DCCR0;    IMM->dramc.DCMR1 = IMM->dramc.DCMR0;    IMM->dramc.DCAR1 = MCF5206_DRAMC_DCAR_BASE(dram_size);    if (probe(DRAM_ADDRESS+dram_size,4))        bank_two = 1;    else        bank_two = 0;    IMM->dramc.DCAR1 = 0;    IMM->dramc.DCMR1 = 0;    IMM->dramc.DCCR1 = 0;#ifdef CHANGE_DRAM_WIDTH    {    unsigned dccr, dcmr;    dccr = IMM->dramc.DCCR0;    dcmr = IMM->dramc.DCMR0;    dccr &= ~MCF5206_DRAMC_DCCR_PS_MASK;    switch (board_get_dramw())    {        case 8:            dccr |= MCF5206_DRAMC_DCCR_PS_8;            dcmr >>= 2;            break;        case 16:            dccr |= MCF5206_DRAMC_DCCR_PS_16;            dcmr >>= 1;            break;        case 32:            dccr |= MCF5206_DRAMC_DCCR_PS_32;            dcmr >>= 0;            break;    }    IMM->dramc.DCCR0 = dccr;    IMM->dramc.DCMR0 = dcmr;    }#endif    /* Prime the pump, dummy reads */    junk = *(NATURAL32 *)0x00000000;    junk = *(NATURAL32 *)0x00000004;    junk = *(NATURAL32 *)0x00000008;    junk = *(NATURAL32 *)0x0000000C;    junk = *(NATURAL32 *)0x00000010;    junk = *(NATURAL32 *)0x00000014;    junk = *(NATURAL32 *)0x00000018;    junk = *(NATURAL32 *)0x0000001C;    if (bank_two)    {        IMM->dramc.DCCR1 = IMM->dramc.DCCR0;        IMM->dramc.DCMR1 = IMM->dramc.DCMR0;        IMM->dramc.DCAR1 = MCF5206_DRAMC_DCAR_BASE(dram_size);        /*         * Prime the pump, dummy reads         */        junk = *(NATURAL32 *)(dram_size + 0x00000000);        junk = *(NATURAL32 *)(dram_size + 0x00000004);        junk = *(NATURAL32 *)(dram_size + 0x00000008);        junk = *(NATURAL32 *)(dram_size + 0x0000000C);        junk = *(NATURAL32 *)(dram_size + 0x00000010);        junk = *(NATURAL32 *)(dram_size + 0x00000014);        junk = *(NATURAL32 *)(dram_size + 0x00000018);        junk = *(NATURAL32 *)(dram_size + 0x0000001C);    }}#define PATTERN_1   (0xA55A9669)#define PATTERN_2   (0xF0F0F0F0)intprobe (NATURAL32 base, NATURAL32 offset){    /* This routine non-destructively probes a memory address to     * determine if physical memory exists, or if the address     * is shadowed or non-existant at all.  A return value of 1     * indicates physical memory (that is not shadowed) exists at     * the address, a return value of 0 indicates that no physical     * memory is present. */    NATURAL32 base_orig;    NATURAL32 offset_orig;    NATURAL32 data;    /* Step 1) Retain original values of address contents. */    base_orig = *(NATURAL32 *)(base);    asm ("  nop");    offset_orig = *(NATURAL32 *)(base + offset);    asm ("  nop");    /* Step 2) Write Pattern 2 to 'offset' */    *(NATURAL32 *)(base + offset) = PATTERN_2;    asm ("  nop");    /* Step 3) Pattern 1 'base' in order to detect shadow.  */    *(NATURAL32 *)(base) = PATTERN_1;    asm ("  nop");    /* Step 4) Read 'offset' */    data = *(NATURAL32 *)(base + offset);    asm ("  nop");    /* Step 5) Restore original values */    *(NATURAL32 *)(base + offset) = offset_orig;    asm ("  nop");    *(NATURAL32 *)(base) = base_orig;    asm ("  nop");    if (data == PATTERN_2)    {        return 1;       /* Real physical memory exists at address */    }    else    {        return 0;       /* No physical memory exists at physical address */    }}int (*remoteputchar)(), (*remotegetchar)(), (*remotegotachar)();int (*remoterawon)(), (*remoterawoff)();int ConsoleBaudRate;voidInitUART(int baud){    ushort  ubg;    if (baud == 0)        baud = ConsoleBaudRate;    ConsoleBaudRate = baud;    InitRemoteIO();    /* UART1 reset: */    IMM->uart1.UCR = 0x10;      /* Reset mode register pointer */    IMM->uart1.UCR = 0x20;      /* Reset receiver */    IMM->uart1.UCR = 0x30;      /* Reset transmitter */    IMM->uart1.UCR = 0x40;      /* Reset error status */    IMM->uart1.UCR = 0x50;      /* Reset break change interrupt */    /* UART1 mode: */    IMM->uart1.UMR = 0x13;      /* 8bit char, no parity */    IMM->uart1.UMR = 0x07;      /* 1 stop bit */    /* CLock select (UCSR): */    IMM->uart1.USR = 0xdd;      /* Use internal clock */    /* UART1 baudrate divisors: */    ubg = CPU_CLOCK_FREQUENCY/32/baud;    IMM->uart1.UBG1 =  (uchar)((ubg & 0xff00) >> 8);    IMM->uart1.UBG2 =  (uchar)(ubg & 0x00ff);    IMM->uart1.UCR = 0x05;      /* Enable xmt & rcv */}intrputchar(char c){    while((IMM->uart1.USR & 0x04) == 0);    IMM->uart1.UBUF = c;    return((int)c);}intgetchar(void){    while((IMM->uart1.USR & 0x01) == 0);    return((int)(IMM->uart1.UBUF));}intgotachar(){    return(IMM->uart1.USR & 0x01);}voidinitCPUio(){}intdevInit(int baud){    InitUART(baud);    return(0);}voidrawon(void){    if (remoterawon)        remoterawon();}voidrawoff(void){    if (remoterawoff)        remoterawoff();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线看| 91麻豆精品秘密| 国产片一区二区三区| 国产成人在线视频免费播放| 亚洲精品一区二区在线观看| 国产成人啪免费观看软件| 一本大道综合伊人精品热热| 精品成人佐山爱一区二区| 日韩欧美成人激情| 欧美中文字幕不卡| 99久久国产综合精品麻豆| 日韩一级精品视频在线观看| 亚洲裸体在线观看| 国产高清在线精品| 日韩久久久久久| 日韩电影一区二区三区| 91激情在线视频| 国产精品成人一区二区三区夜夜夜| 美国欧美日韩国产在线播放| 欧美日韩高清一区二区三区| 亚洲欧美另类图片小说| 国产精品原创巨作av| 精品福利一区二区三区免费视频| 日韩精品成人一区二区在线| 日本精品裸体写真集在线观看| 国产精品久久久久三级| 成人国产免费视频| 国产精品美女视频| 国产不卡视频一区二区三区| 国产欧美一二三区| 成人动漫一区二区在线| 日本一区二区三区四区在线视频 | 青青草国产成人99久久| 欧美日韩中文字幕一区二区| 一区二区三区四区在线播放| 91在线高清观看| 亚洲女同一区二区| 在线观看亚洲一区| 亚洲午夜激情av| 91.xcao| 日韩电影免费在线观看网站| 3atv一区二区三区| 九九视频精品免费| 26uuuu精品一区二区| 国产精品综合在线视频| 欧美激情自拍偷拍| 91女厕偷拍女厕偷拍高清| 一区二区三区美女视频| 欧美人与禽zozo性伦| 美女脱光内衣内裤视频久久网站| 精品人在线二区三区| 成人做爰69片免费看网站| 亚洲欧美另类小说| 欧美一级艳片视频免费观看| 色嗨嗨av一区二区三区| 亚洲高清一区二区三区| 欧美一卡在线观看| 床上的激情91.| 亚洲午夜久久久久久久久电影院 | 亚洲福利电影网| 91精品国产91久久久久久一区二区| 狠狠色综合播放一区二区| 中文字幕亚洲欧美在线不卡| 欧美色手机在线观看| 久久99精品国产麻豆不卡| 国产精品久久三| 欧美日韩激情一区| 国产999精品久久久久久| 亚洲美女屁股眼交| 2014亚洲片线观看视频免费| 色视频成人在线观看免| 亚洲国产成人av网| 色综合天天综合网天天看片| 日韩精品午夜视频| 国产日韩欧美一区二区三区乱码 | 国产一区二区三区四区五区美女| 亚洲少妇中出一区| 欧美mv日韩mv亚洲| 欧美综合天天夜夜久久| 国产精品99久久不卡二区| 亚洲成人免费影院| 国产精品久久久久一区二区三区| 欧美大片国产精品| 欧美中文字幕一二三区视频| 成人动漫一区二区三区| 久久成人综合网| 亚洲一区成人在线| 国产精品久久久久7777按摩| 日韩欧美高清在线| 欧美喷潮久久久xxxxx| 99久久精品国产精品久久| 精品亚洲成av人在线观看| 午夜精品久久久久影视| 亚洲日本va在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美吞精做爰啪啪高潮| 色综合网色综合| 99视频超级精品| 成人免费毛片aaaaa**| 美女任你摸久久| 日本网站在线观看一区二区三区| 亚洲精品一二三四区| 国产精品久久久久影院亚瑟| 久久一日本道色综合| 欧美不卡一二三| 制服丝袜一区二区三区| 欧美日韩高清一区二区不卡| 欧美性三三影院| 欧美一a一片一级一片| 91视频国产观看| 99精品1区2区| 色呦呦网站一区| 91久久精品一区二区三| 91福利精品第一导航| 91福利国产精品| 欧美日韩国产a| 欧美一区二区三区免费观看视频 | 亚洲成a天堂v人片| 亚洲国产精品久久久男人的天堂| 狠狠久久亚洲欧美| 狠狠色综合日日| 国产99久久久久久免费看农村| 国产成人自拍网| 成人精品国产一区二区4080| 成人avav影音| 色婷婷综合久久久中文字幕| 91麻豆精东视频| 欧美三级乱人伦电影| 欧美精品亚洲二区| 在线播放中文一区| 欧美大胆人体bbbb| 久久精品日韩一区二区三区| 中文字幕成人av| 亚洲免费在线看| 视频一区视频二区在线观看| 蜜臀va亚洲va欧美va天堂| 国产一区二区美女| 成人免费三级在线| 91黄视频在线| 欧美成人三级电影在线| 国产三级欧美三级| 亚洲精品国产一区二区三区四区在线| 亚洲韩国一区二区三区| 日本欧美韩国一区三区| 国产成人啪午夜精品网站男同| 99国产精品久| 91麻豆精品国产自产在线观看一区| 欧美成人aa大片| 亚洲欧美综合另类在线卡通| 亚洲成人一区二区在线观看| 精品一区二区三区影院在线午夜| 丁香啪啪综合成人亚洲小说| 欧洲人成人精品| 久久久精品2019中文字幕之3| 亚洲特级片在线| 久久国产精品色婷婷| 91丨porny丨首页| 日韩欧美另类在线| 中文字幕一区在线观看| 日韩福利视频网| 99久久久久久| 久久在线免费观看| 香港成人在线视频| 成人av在线一区二区三区| 欧美精品丝袜中出| 中文字幕中文字幕中文字幕亚洲无线 | 日韩精品一区二区三区四区| 国产精品剧情在线亚洲| 美女视频黄久久| 欧美三级电影网| 亚洲欧美怡红院| 国产成人综合在线| 国产精品久久久久久久午夜片 | 欧美一区在线视频| 亚洲免费在线观看视频| 国产不卡一区视频| 日韩欧美国产一区二区三区 | 国产精品久久久久永久免费观看| 另类专区欧美蜜桃臀第一页| 欧美日韩免费观看一区二区三区 | 美女国产一区二区| 欧美日韩国产综合一区二区 | 捆绑紧缚一区二区三区视频| 在线视频你懂得一区| 国产精品久久久久精k8| 国产成人综合亚洲91猫咪| 日韩欧美专区在线| 日日夜夜免费精品| 欧美日韩一区二区三区高清| 自拍偷在线精品自拍偷无码专区| 精品一区二区三区在线观看| 日韩免费看网站| 日本免费在线视频不卡一不卡二| 欧美中文一区二区三区| 亚洲综合激情另类小说区| 色综合天天综合色综合av | 欧美最猛黑人xxxxx猛交| 亚洲欧美综合另类在线卡通| a4yy欧美一区二区三区| 中文字幕日韩一区|