亚洲欧美第一页_禁久久精品乱码_粉嫩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();  ether_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一区二区三区免费野_久草精品视频
欧美午夜精品电影| 亚洲国产成人精品视频| 亚洲一卡二卡三卡四卡五卡| 久久草av在线| 91精品免费观看| 亚洲国产成人一区二区三区| 久久99精品久久久| 91精品欧美一区二区三区综合在| 亚洲综合色网站| 99久久精品免费| 亚洲欧美日韩一区二区 | 91精品国产欧美一区二区成人| 亚洲日本一区二区| 99在线精品观看| 精品国产91洋老外米糕| 成人欧美一区二区三区小说 | 中文av一区二区| 99久久精品国产毛片| 国产精品三级视频| 国产宾馆实践打屁股91| 日韩欧美在线123| 六月丁香婷婷久久| 国产欧美一区二区三区网站| 懂色av中文字幕一区二区三区| 国产日产欧产精品推荐色| 国产大陆亚洲精品国产| 中日韩免费视频中文字幕| 色综合久久中文综合久久97| 五月天一区二区| 精品动漫一区二区三区在线观看| 麻豆国产欧美日韩综合精品二区| 久久噜噜亚洲综合| 日本精品一区二区三区四区的功能| 亚洲h动漫在线| 国产精品视频在线看| 欧美性生活影院| 久久精品国产第一区二区三区| 中文无字幕一区二区三区| 欧美日韩一区二区三区在线看 | 成人午夜激情影院| 极品美女销魂一区二区三区 | 99久久99久久久精品齐齐| 国产一区二区三区免费播放| 亚洲成人免费av| 亚洲一本大道在线| 亚洲精品一二三| 一区二区成人在线| 亚洲免费观看高清完整版在线观看熊| 国产精品视频麻豆| 欧美国产一区在线| 中文字幕欧美一| 国产亚洲精品精华液| 国产丝袜美腿一区二区三区| 国产欧美一区二区精品性| www日韩大片| 亚洲国产成人自拍| 中文字幕日韩一区| 亚洲综合一区二区精品导航| 亚洲欧美日韩成人高清在线一区| 国产精品传媒视频| 一区二区三区久久| 毛片av中文字幕一区二区| 麻豆精品久久精品色综合| 国产成人免费视频网站| 99精品视频免费在线观看| 69堂成人精品免费视频| 日韩美女一区二区三区四区| 久久尤物电影视频在线观看| 中文字幕在线观看一区二区| 亚洲猫色日本管| 激情综合网av| 在线中文字幕一区| 国产欧美日韩卡一| 天天综合色天天综合色h| 国产在线乱码一区二区三区| 不卡高清视频专区| 日韩免费一区二区| 亚洲在线观看免费| 成人综合婷婷国产精品久久免费| 色94色欧美sute亚洲线路一ni| 欧美一区二区三区啪啪| 最近中文字幕一区二区三区| 蜜臀va亚洲va欧美va天堂 | 麻豆精品视频在线观看视频| 成人动漫一区二区三区| 91精品国产一区二区三区| 亚洲靠逼com| 成人avav影音| 91麻豆免费在线观看| 欧美日韩色一区| 自拍偷拍亚洲欧美日韩| 国产99久久精品| 精品国产免费一区二区三区四区 | 欧美电影一区二区三区| 一区二区视频在线看| av中文字幕在线不卡| 国产欧美日本一区视频| 裸体歌舞表演一区二区| 欧美一级在线视频| 奇米777欧美一区二区| 4438x成人网最大色成网站| 天天综合日日夜夜精品| 678五月天丁香亚洲综合网| 亚洲高清视频中文字幕| 欧美在线不卡视频| 亚洲成人自拍网| 欧美成人a∨高清免费观看| 精久久久久久久久久久| 久久久电影一区二区三区| 成人精品高清在线| 一区二区视频免费在线观看| 欧美三区免费完整视频在线观看| 午夜一区二区三区视频| 日韩一区二区三区在线观看| 国产一二三精品| 一区二区三区中文在线| 日韩欧美亚洲一区二区| 国精品**一区二区三区在线蜜桃| 国产欧美日韩精品一区| 欧美在线免费视屏| 国产一区二区久久| 亚洲蜜臀av乱码久久精品| 日韩免费性生活视频播放| 成人晚上爱看视频| 琪琪久久久久日韩精品| 欧美极品另类videosde| 欧美日韩精品是欧美日韩精品| 六月丁香婷婷久久| 亚洲在线成人精品| 久久伊人中文字幕| 欧美三级韩国三级日本三斤| 国产精品综合二区| 亚洲一区影音先锋| 日韩毛片在线免费观看| 久久色中文字幕| 欧美一区永久视频免费观看| 99视频精品全部免费在线| 精品在线观看视频| 欧美bbbbb| 日韩精品乱码免费| 亚洲成人自拍网| 亚洲午夜激情av| 亚洲夂夂婷婷色拍ww47| 中文字幕在线观看一区二区| 国产人久久人人人人爽| 欧美电影精品一区二区| 欧美一区二区三区视频在线观看| 欧美午夜电影网| 欧美夫妻性生活| 777a∨成人精品桃花网| 欧美福利视频导航| 日韩欧美资源站| 国产三级精品视频| 日韩理论片在线| 亚洲精品videosex极品| 午夜久久久久久| 精品一区二区三区久久| 国产999精品久久| 日本大香伊一区二区三区| 91久久人澡人人添人人爽欧美| 在线视频国产一区| 欧美一级电影网站| 中国色在线观看另类| 亚洲精品欧美在线| 美女看a上一区| 91蝌蚪porny九色| 欧美一区二区三区免费| 久久久久久亚洲综合| 一区二区三区免费| 琪琪久久久久日韩精品| 成人动漫一区二区在线| 欧美日韩在线一区二区| 国产日韩欧美综合在线| 亚洲色图一区二区| 老汉av免费一区二区三区| 99久久国产综合精品麻豆| 51午夜精品国产| 亚洲免费观看高清完整版在线观看| 老司机免费视频一区二区| 91免费视频网| 国产精品久久久久aaaa| 免费看日韩精品| 欧美丰满高潮xxxx喷水动漫| 中文字幕av不卡| av福利精品导航| 日韩一区二区精品在线观看| 亚洲日本韩国一区| 国产精品白丝jk白祙喷水网站| 欧美欧美欧美欧美| 亚洲sss视频在线视频| 在线观看日韩高清av| 亚洲色大成网站www久久九九| 国产在线国偷精品免费看| 欧美一二三区精品| 视频一区二区不卡| 欧美日韩二区三区| 视频一区视频二区中文| 欧美日韩国产一二三| 亚洲国产欧美日韩另类综合 | 欧美日韩国产综合草草|