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

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

?? io_dm270.c~

?? 針對德州儀器DM270開發板的bootloader,其實現了內核的下載以及文件系統的下載
?? C~
字號:
/* * File: io_dm270.c * * An implementation of a h/w io utility specific to the TI DM270 EVM * platform. This implementation, while  vendor dependent, exposes the * vendor independent io.h interface allowing it to plug generically into * the bootloader. Please see io.h for more info. *  * See Also *   io.h * * Copyright (C) 2002 RidgeRun, Inc. * Author: RidgeRun, Inc  <skranz@ridgerun.com> *  - Derived from io_dsc21.c, 9/6/02, Gregory Nutt *  - Derived from io_dsc25.c, 2/19/03, Gregory Nutt * *  This program is free software; you can redistribute  it and/or modify it *  under  the terms of  the GNU General  Public License as published by the *  Free Software Foundation;  either version 2 of the  License, or (at your *  option) any later version. * *  THIS  SOFTWARE  IS  PROVIDED  ``AS  IS''  AND   ANY  EXPRESS  OR IMPLIED *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT,  INDIRECT, *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *  You should have received a copy of the  GNU General Public License along *  with this program; if not, write  to the Free Software Foundation, Inc., *  675 Mass Ave, Cambridge, MA 02139, USA. * * Please report all bugs/problems to the author or <support@dsplinux.net> * * key: RRGPLCR (do not remove) * */#include "types.h"#include "io.h"#include "usb.h"#include "util.h"//#include "btldr_pi.h" /* for btldr_AddressIsInFlashSpace */#include "dm270-registers.h"#define LOOPS_PER_MSEC 400#define UART0_REGISTER_BASE	0x00030300 /* UART0 */static int CONSOLE_TYPE;  // 0 = serial port device                          // 1 = parallel port device                          // 2 = USB port devicestatic int is_par_char();static void io_putchar_par(unsigned char c);/****************************** Routine: Description: ******************************/static unsigned short inreg_ser(unsigned int reg){  unsigned short val;  val = *((volatile unsigned short *)(UART0_REGISTER_BASE + reg));  return val;}/****************************** Routine: Description: ******************************/static void outreg_ser(unsigned int reg, unsigned short val){  *((volatile unsigned short *)(UART0_REGISTER_BASE + reg)) = val;}/****************************** Routine: Description:******************************/static void uart_init(){//#if 0 // moved to hwinit_dm270.S  if (SER == CONSOLE_TYPE) {    outreg_ser(UART_RFCR,UART_CONST_FIFO_CLEAR);    outreg_ser(UART_TFCR,UART_CONST_FIFO_CLEAR);    outreg_ser(UART_LCR, 0x0000);    outreg_ser(UART_RFCR,UART_TRIGGER_LEVEL_01);    outreg_ser(UART_TFCR,UART_TRIGGER_LEVEL_16);//    outreg_ser(UART_BRSR, UART_BAUD_38400);    outreg_ser(UART_BRSR, UART_BAUD_115200);    outreg_ser(UART_MSR, (UART_NOPARITY | \                         UART_STOPBIT_1  | \                         UART_DATABIT_8));  }  else {    // TBSL *debug* finish later.  }//#endif}/****************************** Routine: Description:   Note: See io.h for description. ******************************/static int is_ser_char(){  if (inreg_ser(UART_SR) & UART_RX_FIFO_NOEMPTY) {    return TRUE;  }  else {    return FALSE;  }}/****************************** Routine: Description: ******************************/static void io_putchar_ser(unsigned char c){  if ('\n' == c) {    io_putchar_ser('\r');  }  while (0 == (inreg_ser(UART_SR) & UART_TX_FIFO_LEVEL)) {}  outreg_ser(UART_DTRR, (unsigned short)c);}/****************************** Routine: Description:   Note: See io.h for description. ******************************/unsigned char io_getchar_ser(void){  unsigned short ch_err_pair;  unsigned char ch, err;//retry:    while (!is_ser_char()){}  ch_err_pair = inreg_ser(UART_DTRR);  ch = ch_err_pair & 0x00FF;  err = ch_err_pair >> 8;  // if (!(UART_DATA_VALID & err)) goto retry;  return ch;}/****************************** Routine: Description:   Note: See io.h for description. ******************************/static int is_char(){	switch(CONSOLE_TYPE) {	case PAR: return is_par_char();	case SER: return is_ser_char();#ifdef USE_USB	case USB: return usb_is_char();#endif	}	return 0;}/****************************** Routine: Description:   Note: See io.h for description.   timeout_sec        -1 -- wait indefinitely for a key press.         0 -- don't wait at all, if a key value              is present now return it, otherwise              return 0.         t -- wait up to this long for a key press              to return, otherwise give up and return              0. ******************************/unsigned char io_getc(int timeout_msec){  int time_remaining = LOOPS_PER_MSEC*timeout_msec;  while (time_remaining--) {    if (is_char()) {      return io_getchar_con();    }  }  return 0;}/****************************** Routine: Description:   Note: See io.h for description. ******************************/unsigned char io_getchar_con(){	switch(CONSOLE_TYPE) {	case PAR: return io_getchar_par();	case SER: return io_getchar_ser();#ifdef USE_USB	case USB: return usb_getchar();#endif	}	return 0;}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void io_putchar(unsigned char c){	switch(CONSOLE_TYPE) {	case PAR: io_putchar_par(c); break;	case SER: io_putchar_ser(c); break;#ifdef USE_USB	case USB: usb_putchar(c); break;#endif	}}/****************************** Routine: Description:   Note: See io.h for description. ******************************/static int is_par_char(){  return FALSE; // TBSL *debug* temp.}/****************************** Routine: Description: ******************************/static void io_putchar_par(unsigned char c){  if ('\n' == c) {    io_putchar_par('\r');  }  // TBSL *debug* finish later.}/****************************** Routine: Description:   Note: See io.h for description. ******************************/unsigned char io_getchar_par(void){  while (!is_par_char()) {}  return 0; // *debug* temp, finish later.}/****************************** Routine: Description:   Note: See io.h for description. ******************************/int io_getbootmode(void){  return 1; // *revisit-skranz* temp.}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void display_board_digit(unsigned char val){  // not applicable to this EVM}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void io_delay(int milliseconds){  volatile int i, j;  for (i=0; i<milliseconds; i++) {    for (j=0; j<LOOPS_PER_MSEC; j++) {    }  }}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void io_StartTimeElapse(int milliseconds){  // *revisit-skranz* not yet implemented  // on this platform.}/****************************** Routine: Description:   Note: See io.h for description. ******************************/int io_TimeElapseHasExpired(){  // *revisit-skranz* not yet implemented  // on this platform.  return 0;}/****************************** Routine: Description:   Note: See io.h for description. TF: This routine should not be in io.h ******************************/int io_AddressIsInFlashSpace(unsigned int addr){  return( btldr_AddressIsInFlashSpace(addr) );}/****************************** Routine: Description:******************************/static void ether_init(){  // *revisit-skranz* to be implemented later.}/****************************** Routine: Description:******************************/static void flash__init(){  // not applicable to this EVM}/****************************** Routine: Description:******************************/static void misc_init(){  // not applicable to this EVM}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void io_init(void){  CONSOLE_TYPE = SER;  misc_init();  uart_init();  flash__init();  // usb_init();}/****************************** Routine: Description:   Note: See io.h for description. ******************************/void io_change_con(new_con){  switch(new_con) {    case SER: CONSOLE_TYPE = SER; break;    case PAR: CONSOLE_TYPE = PAR; break;#ifdef USE_USB    case USB: CONSOLE_TYPE = USB; break;#endif  } }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区不卡在线观看 | 欧美一区二区精品在线| 成人午夜精品一区二区三区| 免费看日韩a级影片| 无码av免费一区二区三区试看| 亚洲欧美经典视频| 亚洲欧美日韩国产手机在线 | 日韩欧美国产精品| 精品日韩在线观看| 国产日韩三级在线| 中文字幕一区二区三区蜜月| 亚洲欧洲日韩在线| 亚洲高清在线精品| 蜜臀91精品一区二区三区| 免费人成在线不卡| 激情综合五月天| 成人一区二区三区视频| 色综合中文字幕国产| 欧美日韩在线综合| 日韩亚洲国产中文字幕欧美| 久久久91精品国产一区二区精品| 中文在线一区二区| 亚洲一区二区av电影| 另类的小说在线视频另类成人小视频在线 | 国产一区在线不卡| aaa欧美色吧激情视频| 在线免费观看日本一区| 日韩一区二区三区在线观看| 中文幕一区二区三区久久蜜桃| 国产精品久久久久影视| 亚洲综合免费观看高清在线观看| 五月婷婷欧美视频| 国产.精品.日韩.另类.中文.在线.播放| 成人精品免费视频| 欧美日韩高清一区| 日本一区二区三区在线观看| 尤物av一区二区| 国产一区三区三区| 91成人网在线| 久久久欧美精品sm网站| 五月天国产精品| 99视频超级精品| 久久久高清一区二区三区| 亚洲专区一二三| 成人精品国产一区二区4080 | 日韩电影免费在线观看网站| 成人免费看的视频| 日韩欧美国产综合| 亚洲综合清纯丝袜自拍| 国产成人综合网| 538prom精品视频线放| 一区在线观看免费| 国产高清成人在线| 欧美sm美女调教| 午夜精品视频在线观看| 色菇凉天天综合网| 国产精品久久久久久久久免费樱桃| 男女男精品网站| 5月丁香婷婷综合| 亚洲午夜激情网站| 91啪九色porn原创视频在线观看| 久久综合九色综合欧美就去吻 | 久久综合久久久久88| 免费不卡在线观看| 欧美日韩你懂得| 亚洲成年人影院| 欧美日韩一区二区三区免费看| 国产精品久久夜| 成人h精品动漫一区二区三区| 久久伊人蜜桃av一区二区| 日本在线不卡一区| 欧美一区日本一区韩国一区| 亚洲一区二区三区四区的| 在线视频中文字幕一区二区| 亚洲精品日韩一| 欧洲一区二区三区在线| 亚洲国产精品久久人人爱 | 精品国产一区二区三区av性色| 偷拍一区二区三区四区| 欧美日韩国产大片| 男女男精品视频| 精品国产伦一区二区三区免费 | 亚洲一区二区三区四区在线免费观看 | 精品婷婷伊人一区三区三| 一区二区三区在线观看国产| 一本色道久久加勒比精品| 亚洲青青青在线视频| av中文字幕不卡| 亚洲午夜久久久| 欧美一区二区成人| 激情五月婷婷综合网| 久久一区二区三区国产精品| 丁香另类激情小说| 一区二区三区高清在线| 欧美一区二区私人影院日本| 久久av老司机精品网站导航| 亚洲国产精品v| 色综合久久久久综合体桃花网| 亚洲第一福利视频在线| 精品国产伦一区二区三区免费| 成人av动漫网站| 亚洲va欧美va人人爽午夜| 91精选在线观看| 国产 欧美在线| 午夜精品久久久久影视| 久久久久国产精品免费免费搜索| 成人午夜精品在线| 图片区小说区国产精品视频| 国产网红主播福利一区二区| 在线亚洲一区二区| 极品少妇xxxx精品少妇| 一区二区三区精品| 久久综合久久综合亚洲| 欧美亚洲国产一卡| 国产高清不卡一区二区| 亚洲va天堂va国产va久| 国产精品久久久久三级| 日韩一区国产二区欧美三区| av在线免费不卡| 麻豆91精品91久久久的内涵| 亚洲蜜臀av乱码久久精品蜜桃| 欧美va亚洲va在线观看蝴蝶网| 日本高清不卡在线观看| 精品伊人久久久久7777人| 亚洲妇女屁股眼交7| 欧美激情一区二区三区四区 | 国产一区二区免费看| 亚洲国产精品一区二区www在线 | 99麻豆久久久国产精品免费| 蜜桃精品视频在线观看| 一区二区三区在线播放| 国产精品久久久久久久久快鸭 | 国产乱子轮精品视频| 一区二区高清在线| 国产精品女人毛片| 久久综合狠狠综合| 日韩午夜激情免费电影| 在线亚洲免费视频| 97aⅴ精品视频一二三区| 国产一区二区不卡在线| 免费看日韩精品| 蜜乳av一区二区| 亚洲成av人综合在线观看| 亚洲日本在线观看| 夜夜操天天操亚洲| 亚洲人成网站影音先锋播放| 日韩理论片一区二区| 中文字幕一区二区视频| 成人免费在线观看入口| 国产精品麻豆网站| 综合久久国产九一剧情麻豆| 国产精品视频麻豆| 国产精品美女久久久久久| 国产精品狼人久久影院观看方式| 欧美激情一区三区| 国产精品久久久久天堂| 亚洲美女电影在线| 亚洲一卡二卡三卡四卡| 亚洲午夜在线电影| 亚洲第一精品在线| 日产欧产美韩系列久久99| 蜜桃一区二区三区在线观看| 久久99国产精品久久99| 国内成人精品2018免费看| 国产99久久久国产精品潘金| 99re8在线精品视频免费播放| 一本在线高清不卡dvd| 欧美日韩精品福利| 日韩女优制服丝袜电影| 国产欧美精品一区| 亚洲欧美视频在线观看视频| 亚洲图片有声小说| 免费成人美女在线观看.| 国产精品一区三区| 99国产精品99久久久久久| 在线视频国内自拍亚洲视频| 欧美一区二区三区视频免费| 久久久久久久久久久久久女国产乱 | 欧美精品乱码久久久久久按摩 | 精品污污网站免费看| 精品sm捆绑视频| 国产精品久久午夜| 亚洲第一电影网| 国产99久久久久| 欧美日韩高清不卡| 久久九九全国免费| 亚洲一区二区三区四区不卡| 狠狠色丁香婷综合久久| 91官网在线免费观看| 精品国产91洋老外米糕| 一区二区三区蜜桃| 国产在线不卡视频| 欧美群妇大交群的观看方式| 国产区在线观看成人精品| 亚洲一区二区四区蜜桃| 成人午夜在线免费| 欧美一区二区三区免费视频 | 久久99最新地址| 欧美日韩成人高清| 国产精品久久久久久福利一牛影视|