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

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

?? main.c

?? 一個外國牛人做的ucos2向mcf5307的移植
?? C
字號:
/*  main.c
 *
 *	Motorola Coldfire MCF5307 port to MicroC/OS-II
 *
 *  Ross Berteig
 *  Cheshire Engineering Corp
 *  650 Sierra Madre Villa, Suite 201
 *  Pasadena  CA 91107
 *  +1-626-351-5493       +1-626-351-8645 FAX
 *  Ross@CheshireEng.com, www.CheshireEng.com
 *
 *  Copyright (C) 1998 Cheshire Engineering Corporation.
 *  Based on a port to uCOS version 1.x by David Fiddes.
 *  Portions Copyright (C) 1997 David Fiddes, D.J.Fiddes@hw.ac.uk
 *  Anything that no longer works is probably not his fault.
 *
 *  This module provides the C main entry point and general
 *  initialization of the Arnewsh SBC5307 Evaluation Board.
 *
 *  Builds with the Diab Data C compiler, tested under SDS SingleStep.
 *  Should work as S-record download into dBUG also, but will be
 *  harder to prove to work.
 */

#include "includes.h"			/* uCOS definitions */
#include <stdio.h>
#include <string.h>


/*  EarlyInit
 *
 *	Place for hardware and other intialization to be done
 *  after C runtime initializations, but before MicroC/OS-II
 *  is started.
 *
 *  Notice that this assumes that some other piece of system code
 *  has already made the SDRAM work.  This could either be the
 *  dBUG monitor, a configuration file for SingleStep, or a
 *  custom boot loader.
 */ 
void EarlyInit()
{
    register MCF5307_IMM *imm = &__MBAR;

    // Mask out all interrupts
    imm->sim.IMR = ~0;

    // Set parallel port as 2 bytes of useful bits, all outputs
    imm->sim.PAR = 0xffff;
    imm->parallel_port.PADDR = 0xffff;
    imm->parallel_port.PADAT = 0;

    // magic settings needed for 5307 to correctly stack exceptions.
    // Without this setting, 0x00000000 is occasionally used as the
    // return address in the exception frame, causing bad things to
    // happen.
    imm->sim.MPARK = MCF5307_SIM_MPARK_EARBCTRL | MCF5307_SIM_MPARK_SHOWDATA;

    // Set Chip Select system to match dBUG monitor and linker config
    //
    // This must be done so that the uC/OS kernel, when downloaded and
    // run from SingleStep, will be able to count on the correct PC
    // value in stacked exception frames.  Setting up CS0 here is sufficient.
    // So is setting MPARK to include EARBCTRL|SHOWDATA as shown later.
    
    // CS0:  1 Mb at 0xffe00000 - 0xffefffff, WS=3, AA=1, PS=16bit, no bursts
    imm->cs.CSAR0 = 0xFFE0;
    imm->cs.CSMR0 = 0x000F0001;
    imm->cs.CSCR0 = 0x0D80;

    // CS1: unused, V=0
    imm->cs.CSAR1 = 0x0080;	// 0xffff
    imm->cs.CSMR1 = 0x00000000;	// 0x00000001
    imm->cs.CSCR1 = 0x0100;

    // CS2 - CS7 are 2 Mb each, based at 0xfe400000.
    imm->cs.CSBAR = 0xFE;
    imm->cs.CSMR2 = 0x00000001;	// CS2: Valid, 32bit, AA=1, WS=0
    imm->cs.CSCR2 = 0x0140;
    imm->cs.CSMR3 = 0x00000015; // CS3: Valid, 16bit, AA=1, SC, UC
    imm->cs.CSCR3 = 0x0080;
    imm->cs.CSMR4 = 0x00000001; // CS4: Valid, 16bit, AA=1, SC, UC
    imm->cs.CSCR4 = 0x0080;
    imm->cs.CSMR5 = 0x0000001f; // 0x0000001F;
    imm->cs.CSCR5 = 0x0100;
    imm->cs.CSMR6 = 0x0000001f;
    imm->cs.CSCR6 = 0x0100;
    imm->cs.CSMR7 = 0x0000001f;
    imm->cs.CSCR7 = 0x0100;

    // Interrupt controls to match dBUG
    imm->sim.AVCR = 0xFF;
    imm->sim.ICR0 = 0x9E;
    imm->sim.ICR1 = 0x97;
    imm->sim.ICR2 = 0x95;
    imm->sim.ICR3 = 0x8C;
    imm->sim.ICR4 = 0x8E;
    imm->sim.ICR5 = 0x8D;
    imm->sim.ICR6 = 0x88;
    imm->sim.ICR7 = 0x89;
    imm->sim.ICR8 = 0x8A;
    imm->sim.ICR9 = 0x8B;
    imm->sim.ICR10 = 0x84;
    imm->sim.ICR11 = 0x86;
    
}

/*  HookOSVectors()
 *
 *	Set the vectors required for uC/OS operation.
 */

void HookOSVectors()
{
    ADDRESS *vect = (ADDRESS *)0x00000000;
    
    // Hook required vectors:
    vect[14] = (ADDRESS)&CPUFormatError; /* Format Error Exception */
    vect[24+5] = (ADDRESS)&OSTickISR;	/* AutoVector 5 - Timer tick */
    vect[32+14] = (ADDRESS)&OSCtxSw;	/* Trap 14 - Do a context switch */
}


/*  StartTicking
 *
 *	Setup and release the TIMER1 as a periodic interrupt source.
 *  We need a heartbeat for the uC/OS task scheduler to use for
 *  task preemption.  This should have a 10 ms period to match the
 *  declaration of OS_TICKS_PER_SEC in OS_CFG.h.
 *
 *  The frequency is 100Hz =  BCLK / (1 or 16) / prescale / reference
 *	=  45 MHz / 1 / 45 / 10000
 */

void StartTicking()
{
    register MCF5307_IMM *imm = &__MBAR;

    // disable timer1 interrupts
    imm->sim.IMR |= MCF5307_SIM_IMR_TIMER1;

    // reset the timer
    imm->timer.TMR1 = MCF5307_TIMER_TMR_RST; // enable
    imm->timer.TMR1 = 0x0000;		     // reset

    // setup timer
    imm->timer.TMR1 = MCF5307_TIMER_TMR_RST; // enable
    imm->timer.TMR1 = MCF5307_TIMER_TMR_PS(45) |	// Prescale
		      MCF5307_TIMER_TMR_CE_NONE |	// No capture
		      MCF5307_TIMER_TMR_ORI |		// Output Ref Int enable
		      MCF5307_TIMER_TMR_FRR |		// Free run restart
		      MCF5307_TIMER_TMR_CLK_STOP |	// Stopped clock
		      MCF5307_TIMER_TMR_RST;		// Enabled
    imm->timer.TCN1 = 0;			// zero count
    imm->timer.TRR1 = 10000;			// 10 msec period

    // start timer
    imm->timer.TMR1 |= MCF5307_TIMER_TMR_CLK_MSCLK;

    //enable timer1 interrupts
    imm->sim.ICR1 = MCF5307_SIM_ICR_AVEC |
		    MCF5307_SIM_ICR_IL(5) |
		    0x0003; //MCF5307_SIM_ICR_HI2 
    imm->sim.IMR &= ~MCF5307_SIM_IMR_TIMER1;
}


/*  StartupTask
 *
 *	Task function for system startup task created in main().  Its
 *  primary duty is to enable the tick interrupt so that the task
 *  scheduler will get its heartbeats. This must be done after at least
 *  one task is created and running (e.g. this task) to eliminate a
 *  race condition in the kernel. 
 */

void StartupTask(void *data)
{
    extern void StartupMain(void);
    
    OS_ENTER_CRITICAL();
    StartTicking();
    OS_EXIT_CRITICAL();

    StartupMain();
    OSTaskDel(OS_PRIO_SELF);
}

/*  main
 *
 *	Where everything starts.
 *
 *	Called out of Diab's crt0.s.  We assume that we are running
 *  from downloaded code in the eval board.  This means that basic
 *  hardware services such as the DRAM are present and initialized.
 *  We will call a pro-forma hardware initialization routine to setup
 *  our timer tick and any other services we need not supplied by the
 *  dBUG initialization.
 */

void main()
{
    OS_STK StartupTaskStack[1024];
    memset(StartupTaskStack, 0x55, sizeof(StartupTaskStack));

    EarlyInit();
    HookOSVectors();
    OSInit();
    OSTaskCreate(StartupTask,
		 (void *)0,
		 &StartupTaskStack[1023],
		 OS_LOWEST_PRIO - 4);
    OSStart();

    /*
     * Can't get here, but plug the possible leak with another
     * HALT instruction just in case.
     */

    asm (" HALT ");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产免费网站| 午夜电影网亚洲视频| 国产一区二区三区综合| 久久综合精品国产一区二区三区| 麻豆国产一区二区| 久久亚洲影视婷婷| 成人av网址在线| 一区二区三区精品在线观看| 欧美日韩免费电影| 石原莉奈在线亚洲三区| 精品国产免费一区二区三区香蕉| 国产盗摄一区二区| 亚洲老司机在线| 欧美一区二区三区在线| 成人视屏免费看| 亚洲国产精品久久久久秋霞影院| 91精品国产综合久久精品图片| 激情深爱一区二区| 亚洲情趣在线观看| 欧美成人三级电影在线| av一区二区三区| 日韩专区欧美专区| 国产精品视频观看| 欧美美女喷水视频| 国产91在线观看| 亚洲福利电影网| 日本一区二区不卡视频| 欧美日韩一区二区三区四区五区| 毛片一区二区三区| 亚洲色图清纯唯美| 精品88久久久久88久久久| 91浏览器在线视频| 狠狠色丁香婷综合久久| 亚洲影院免费观看| 国产亚洲一区二区在线观看| 欧美天堂亚洲电影院在线播放| 精品在线免费视频| 亚洲一二三级电影| 中文字幕精品综合| 精品欧美一区二区在线观看| 欧美性感一区二区三区| 成人精品小蝌蚪| 久久99热狠狠色一区二区| 亚洲蜜臀av乱码久久精品| 精品久久久久久久久久久院品网| 日本韩国一区二区三区视频| 国产高清一区日本| 亚洲6080在线| 亚洲黄网站在线观看| 国产欧美日韩亚州综合 | 国产一区二区三区高清播放| 一区二区三区成人在线视频| 久久久亚洲精品石原莉奈| 69堂国产成人免费视频| 在线中文字幕一区| 成人av高清在线| 国产盗摄女厕一区二区三区| 久久精品99国产精品日本| 日本在线不卡视频| 午夜激情久久久| 国产精品888| 精品一区二区三区欧美| 免费在线观看一区二区三区| 午夜免费欧美电影| 一区二区三区 在线观看视频 | 欧美一区二区三区的| 91福利在线导航| 91电影在线观看| 色一情一乱一乱一91av| 99久久精品费精品国产一区二区| 国产成人综合在线| 国产精品一区在线| 国产一区二区三区综合| 国产一区二区不卡在线| 国产在线不卡一区| 国产风韵犹存在线视精品| 高清久久久久久| 国产成人精品影院| 成人福利视频在线| 97精品久久久午夜一区二区三区| 99re热这里只有精品免费视频| av激情亚洲男人天堂| 99久久精品免费观看| 一本大道综合伊人精品热热| 欧美性感一类影片在线播放| 精品视频一区二区不卡| 欧美一级黄色片| 久久综合色8888| 国产精品久久毛片av大全日韩| 日韩理论在线观看| 亚洲国产综合色| 日韩电影免费在线观看网站| 黄网站免费久久| 国产激情视频一区二区三区欧美| 成人aaaa免费全部观看| 91久久一区二区| 欧美一区日韩一区| 国产欧美日韩激情| 亚洲在线观看免费| 久久精品免费观看| www.成人在线| 777欧美精品| 中文在线资源观看网站视频免费不卡 | 国内成+人亚洲+欧美+综合在线 | 日韩一区二区免费视频| 久久这里都是精品| 亚洲精品综合在线| 青青草国产精品亚洲专区无| 国产麻豆视频一区二区| 色视频成人在线观看免| 日韩午夜小视频| 国产精品久久久久天堂| 日韩中文字幕不卡| 99久久精品久久久久久清纯| 欧美日韩精品免费| 国产精品美女久久久久aⅴ| 亚洲成av人影院| 国产成人av福利| 国产精品久久久久精k8| 亚洲图片欧美色图| 国产69精品一区二区亚洲孕妇| 精品视频色一区| 国产精品久久久一本精品| 免费xxxx性欧美18vr| 色8久久人人97超碰香蕉987| 精品国产免费一区二区三区四区 | 洋洋av久久久久久久一区| 久久99久久99| 欧美午夜电影网| 欧美国产成人精品| 精品在线免费观看| 欧美精品99久久久**| 中文字幕一区二区三中文字幕| 日本欧美一区二区三区乱码| 91亚洲精品久久久蜜桃| 国产亚洲女人久久久久毛片| 日韩av成人高清| 欧美色精品天天在线观看视频| 国产精品成人一区二区艾草| 极品瑜伽女神91| 91精品国产91久久久久久最新毛片| 日韩理论片中文av| 成人做爰69片免费看网站| 337p日本欧洲亚洲大胆精品| 性做久久久久久免费观看欧美| 91视频com| 国产精品久久三| 成人性生交大片免费看中文| 久久久亚洲国产美女国产盗摄| 奇米精品一区二区三区在线观看一| 欧洲中文字幕精品| 亚洲欧美日韩电影| 不卡的电视剧免费网站有什么| 精品国产91乱码一区二区三区| 五月激情综合色| 欧美日韩精品福利| 午夜视频在线观看一区| 欧美日韩一区二区在线观看| 一二三四区精品视频| 色婷婷av一区二区三区软件| 亚洲女性喷水在线观看一区| 99久精品国产| 亚洲欧美偷拍另类a∨色屁股| 94色蜜桃网一区二区三区| 国产精品嫩草99a| www.亚洲在线| 自拍偷拍国产亚洲| 色综合av在线| 亚洲影院免费观看| 欧美精品aⅴ在线视频| 天堂精品中文字幕在线| 91精品国产91热久久久做人人 | 99视频热这里只有精品免费| 欧美高清在线一区二区| www.av亚洲| 亚洲老司机在线| 欧美日韩一区二区在线视频| 午夜电影一区二区| 日韩欧美中文字幕公布| 欧美日韩精品一区二区天天拍小说| 亚洲国产wwwccc36天堂| 91精品国产综合久久久久久久久久| 日本不卡一二三区黄网| 久久久久九九视频| 成人听书哪个软件好| 亚洲综合免费观看高清在线观看 | 欧美一区二区视频网站| 精品写真视频在线观看| 欧美激情综合网| 在线欧美日韩国产| 美国三级日本三级久久99| 欧美国产欧美综合| 91激情在线视频| 奇米一区二区三区| 国产精品美女久久久久aⅴ | 亚洲精品精品亚洲| 8v天堂国产在线一区二区| 国产精品996| 亚洲超碰精品一区二区| 国产亚洲精品资源在线26u|