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

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

?? ide_x_hw.c

?? 文件系統轅馬,想要的258031823大幅度反對反對法
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
**********************************************************************
*                          Micrium, Inc.
*                      949 Crestview Circle
*                     Weston,  FL 33327-1848
*
*                            uC/FS
*
*             (c) Copyright 2001 - 2003, Micrium, Inc.
*                      All rights reserved.
*
***********************************************************************

----------------------------------------------------------------------
File   : ide_X_hw.c
Purpose: IDE hardware layer for LH79520 with 16bit memory mapped layout
         for Compact Flash
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
-------- END-OF-HEADER -----------------------------------------------
*/

/*********************************************************************
*
*       #include Section
*
**********************************************************************
*/

#include "fs_conf.h"
#include "fs_ConfDefaults.h"

#if FS_USE_IDE_DRIVER

#include "ide_x_hw.h"

/*********************************************************************
*
*       defines, configurable
*
**********************************************************************
*/

/* Due to 16bit memory mapped layout, device/head configuration register can not be       */
/* written independently from command register. When writing to Device register, a NOP    */
/* command is automatically executed. Therefore, a busy check has to be performed after   */
/* writing to device/head register to ensure that card can accept following data or       */
/* command requests.                                                                      */ 
/* Decide whether Device/head register settings are directly written into card register   */
/* _FS_IDE_HW_WRITE_DEVICE might be set to 0 to increase speed. It has to be carefully    */
/* examined whether card is working with _FS_IDE_HW_WRITE_DEVICE set to 0                 */

#define _FS_IDE_HW_WRITE_DEVICE 1


/* Address layout for 16 bit memory mapped access. Byte access not supported by hardware  */

#define IDE_BASEADDRESS  0x50201000

/*********************************************************************
*
*       defines, fixed
*
**********************************************************************
*/

#define __IDE_DATA       *(volatile FS_U16*) (IDE_BASEADDRESS + 0x00008)  /* data register 16 bit, non overlapping address */       
#define __IDE_FC         *(volatile FS_U16*) (IDE_BASEADDRESS + 0x0000C)  /* Feature / error register address. 16 bit memory mapped access used */
#define __IDE_SECTOR     *(volatile FS_U16*) (IDE_BASEADDRESS + 0x00002)  /* Lower byte = sector count,  Upper byte = sector number */ 
#define __IDE_CYLINDER   *(volatile FS_U16*) (IDE_BASEADDRESS + 0x00004)  /* Lower byte = Cylinder low,  Upper byte = cylinder high */ 
#define __IDE_DH_CMD     *(volatile FS_U16*) (IDE_BASEADDRESS + 0x00006)  /* Lower byte = head register, Upper byte = command */
#define __IDE_DC         *(volatile FS_U16*) (IDE_BASEADDRESS + 0x0000e)  /* Lower byte = Device control during write, Alt status during read */

/*********************************************************************
*
*       Check configuration
*
**********************************************************************
*/

#ifndef _FS_IDE_HW_WRITE_DEVICE
  #define _FS_IDE_HW_WRITE_DEVICE 1
#endif  

/*********************************************************************
*
*       Local Variables        
*
**********************************************************************
*/

static FS_U8 _HW_DevicePresent[2];
static FS_U8 _HeadRegister;

/*********************************************************************
*
*       Local functions        
*
**********************************************************************
*/

#define _HW_DELAY400NS()  FS_IDE_HW_X_GetAltStatus(Unit); FS_IDE_HW_X_GetAltStatus(Unit);

/*********************************************************************
*
*       _WaitNotBusy()
*
  Description:
  Internal function. Used in 16 bit memory mapped layout, when Device/Head
  register value is written directly to CF card register.
  This must only be done when card is not busy, because writing to device/head
  register will also write a NOP command, which can only be performed, 
  when card is not busy
  
  Parameters:
  None.
 
  Return value:
  None.
*/

#if _FS_IDE_HW_WRITE_DEVICE  

static void _WaitNotBusy(FS_U8 Unit) {
  unsigned char status;
  FS_U16 timeout;
  timeout = 1000;
  do {
    _HW_DELAY400NS();      /* Ensure a short delay to enable BUSY flag set    */
    status = FS_IDE_HW_X_GetAltStatus(Unit);
    timeout--;
    if (timeout == 0) {    /* Timeout occured, leave function                 */
      return;
    }  
  } while ((status  & 0x80) != 0);
}

#endif  /* _FS_IDE_HW_WRITE_DEVICE */

/*********************************************************************
*
*       Global functions section
*
**********************************************************************
*/

/*********************************************************************
*
*       FS_IDE_HW_X_BusyLedOn()
*
  Description:
  FS driver hardware layer function. Turn on busy led.

  Parameters:
  Unit        - Unit number.
 
  Return value:
  None.
*/

void FS_IDE_HW_X_BusyLedOn(FS_U8 Unit) {
  FS_USE_PARA(Unit);   /* Only one Unit supported, avoid compiler warning  */
}

/*********************************************************************
*
*       FS_IDE_HW_X_BusyLedOff()
*
  Description:
  FS driver hardware layer function. Turn off busy led.

  Parameters:
  Unit        - Unit number.
 
  Return value:
  None.
*/

void FS_IDE_HW_X_BusyLedOff(FS_U8 Unit) {
  FS_USE_PARA(Unit);   /* Only one Unit supported, avoid compiler warning  */
}

/*********************************************************************
*
*       FS_IDE_HW_X_SetData()
*
  Description:
  FS driver hardware layer function. Set the WR DATA register.

  Parameters:
  Unit        - Unit number.
  Data        - Data to be set.
 
  Return value:
  None.
*/

void FS_IDE_HW_X_SetData(FS_U8 Unit, const FS_U16 Data) {
  FS_USE_PARA(Unit);    /* Only one Unit supported, avoid compiler warning  */
  __IDE_DATA  = Data;
}

/*********************************************************************
*
*       FS_IDE_HW_X_GetData()
*
  Description:
  FS driver hardware layer function. Read the RD DATA register.

  Parameters:
  Unit        - Unit number.
 
  Return value:
  Value of the RD DATA register.
*/

FS_U16 FS_IDE_HW_X_GetData(FS_U8 Unit) {
  FS_U16 data;
  FS_USE_PARA(Unit);  /* Only one Unit supported, avoid compiler warning  */
  data = __IDE_DATA;
  return data;
}

/*********************************************************************
*
*       FS_IDE_HW_X_SetFeatures()
*
  Description:
  FS driver hardware layer function. Set the FEATURES register.

  Parameters:
  Unit        - Unit number.
  Data        - Value to write to the FEATURES register.
 
  Return value:
  None.
*/

void FS_IDE_HW_X_SetFeatures(FS_U8 Unit, unsigned char Data) {
  FS_USE_PARA(Unit);   /* Only one Unit supported, avoid compiler warning  */
  __IDE_FC    = Data;
}

/*********************************************************************
*
*       FS_IDE_HW_X_GetError()
*
  Description:
  FS driver hardware layer function. Read the ERROR register.

  Parameters:
  Unit        - Unit number.
 
  Return value:
  Value of the ERROR register.
*/

unsigned char FS_IDE_HW_X_GetError(FS_U8 Unit) {
  unsigned char data;
  FS_USE_PARA(Unit);   /* Only one Unit supported, avoid compiler warning  */
  data = __IDE_FC;
  return data;
}

/*********************************************************************
*
*       FS_IDE_HW_X_SetSectorCount()
*
  Description:
  FS driver hardware layer function. Set the SECTOR COUNT register.

  Parameters:
  Unit        - Unit number.
  Data        - Value to write to the SECTOR COUNT register.
 
  Return value:
  None.
*/

void FS_IDE_HW_X_SetSectorCount(FS_U8 Unit, unsigned char Data) {
  FS_U16 Sector;
  FS_USE_PARA(Unit);                  /* Only one Unit supported, avoid compiler warning  */
  Sector  = __IDE_SECTOR & 0xFF00;    /* Delete current sector information */
  Sector |= Data;
  __IDE_SECTOR = Sector;
}

/*********************************************************************
*
*       FS_IDE_HW_X_GetSectorCount()
*
  Description:
  FS driver hardware layer function. Read the SECTOR COUNT register.

  Parameters:
  Unit        - Unit number.
 
  Return value:
  Value of the SECTOR COUNT register.
*/

unsigned char FS_IDE_HW_X_GetSectorCount(FS_U8 Unit) {
  unsigned char data;
  FS_USE_PARA(Unit);     /* Only one Unit supported, avoid compiler warning  */
  data = __IDE_SECTOR;   /* Sector count is lower byte of sector data        */        
  return data;
}

/*********************************************************************
*
*       FS_IDE_HW_X_SetSectorNo()
*
  Description:
  FS driver hardware layer function. Set the SECTOR NUMBER register.

  Parameters:
  Unit        - Unit number.
  Data        - Value to write to the SECTOR NUMBER register.
 
  Return value:
  None.
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满少妇xxxxx高潮对白| 国产盗摄一区二区三区| 欧美中文字幕一区二区三区亚洲| 国产精品国产三级国产普通话蜜臀| 国产成人欧美日韩在线电影| 久久夜色精品一区| 国产丶欧美丶日本不卡视频| 欧美激情在线看| 成人av动漫网站| 亚洲欧美综合色| 色综合天天综合网天天看片| 成人av资源下载| 日本一区二区三区视频视频| 高清不卡一二三区| 亚洲日本va在线观看| 欧美性大战久久久| 蜜臀va亚洲va欧美va天堂| 精品国产免费视频| 国产成人在线观看免费网站| 中文字幕一区三区| 欧美福利电影网| 国产又黄又大久久| 亚洲品质自拍视频| 91精品国产综合久久蜜臀| 国产在线播放一区| 亚洲黄色录像片| 制服丝袜av成人在线看| 韩国v欧美v日本v亚洲v| 中文字幕一区在线观看| 欧美一区二区三区公司| 风间由美中文字幕在线看视频国产欧美| 中文字幕中文字幕在线一区| 欧美日韩久久不卡| 成人午夜视频福利| 日日夜夜精品免费视频| 国产欧美一区二区精品性色超碰| 欧美性受xxxx| 国产精品资源站在线| 一区二区成人在线视频| www国产成人免费观看视频 深夜成人网| 99精品国产视频| 久草中文综合在线| 亚洲综合免费观看高清完整版| 欧美www视频| 欧美日韩亚洲综合在线| 国产精品一区二区男女羞羞无遮挡| 亚洲精品国产品国语在线app| 精品99久久久久久| 欧美精品三级日韩久久| 99精品国产一区二区三区不卡| 久久 天天综合| 天天av天天翘天天综合网| 中文字幕日韩一区| 久久综合狠狠综合| 欧美一区二区三区性视频| 色婷婷综合视频在线观看| 成人午夜激情视频| 黄页视频在线91| 蜜臀av一区二区在线观看| 亚洲一区二区三区中文字幕在线| 中文字幕成人av| 精品99999| 在线播放中文一区| 欧美日韩一区成人| 色婷婷综合视频在线观看| 成人性生交大片免费看视频在线| 一本色道久久综合亚洲91| 国产精品中文字幕日韩精品| 日韩和的一区二区| 亚洲超丰满肉感bbw| 亚洲少妇30p| 国产精品二三区| 国产精品久久久一本精品| 久久久精品国产免大香伊| 2020国产精品自拍| 精品国产一区二区三区av性色| 制服丝袜亚洲播放| 日韩欧美成人午夜| 日韩欧美一级在线播放| 欧美日韩日日骚| 欧美一卡2卡三卡4卡5免费| 欧美狂野另类xxxxoooo| 欧美三级电影精品| 777亚洲妇女| 91精品国产综合久久久久久久| 91精品国产乱码| 日韩欧美国产综合在线一区二区三区| 日韩欧美中文一区二区| 精品国产1区二区| 中文字幕欧美三区| 亚洲天堂2016| 午夜久久久久久久久久一区二区| 日韩电影一区二区三区| 久久福利资源站| 国产成人夜色高潮福利影视| 成人污视频在线观看| 91视频免费播放| 欧美日韩一区国产| 日韩一区二区免费高清| 久久久影视传媒| 中文字幕一区二区不卡| 一区二区三区蜜桃| 免费av成人在线| 国产精品一二三| 色久综合一二码| 欧美一区三区四区| 久久久久久久综合日本| 亚洲欧美成人一区二区三区| 亚洲午夜精品网| 国产精品综合视频| 欧美伊人久久大香线蕉综合69| 91精品国产aⅴ一区二区| 久久久久久久久久看片| 中文字幕亚洲电影| 免费人成精品欧美精品 | 婷婷中文字幕综合| 狠狠色综合日日| 色天天综合久久久久综合片| 欧美视频一区在线| 欧美激情一区在线观看| 香蕉久久夜色精品国产使用方法 | 欧美日产国产精品| 国产欧美日韩视频在线观看| 亚洲精品日韩专区silk| 免费观看一级特黄欧美大片| 不卡一二三区首页| 日韩女优毛片在线| 亚洲人123区| 久久精品国产网站| 欧美在线一区二区三区| 久久久国际精品| 视频一区二区三区中文字幕| 成人精品视频一区二区三区尤物| 欧美精品欧美精品系列| 国产欧美日韩一区二区三区在线观看| 亚洲国产日韩一区二区| 福利一区二区在线| 日韩一二在线观看| 国产乱码精品一区二区三区忘忧草 | 成人高清免费在线播放| 欧美午夜理伦三级在线观看| 久久久欧美精品sm网站| 午夜精品福利一区二区三区蜜桃| 成人免费电影视频| 亚洲精品在线观看网站| 亚洲二区视频在线| 一本色道久久综合亚洲91| 久久精品无码一区二区三区| 午夜精品一区二区三区免费视频 | 久久国产综合精品| 欧美日韩一区二区三区在线| 自拍偷拍国产精品| 国产精品66部| 精品国精品国产| 麻豆一区二区三| 7777精品久久久大香线蕉| 亚洲蜜臀av乱码久久精品| 国产·精品毛片| 久久久久国产精品免费免费搜索| 日本欧美加勒比视频| 欧美精品一二三区| 视频一区二区欧美| 91精品啪在线观看国产60岁| 亚洲在线免费播放| 欧美日韩一二区| 天堂一区二区在线免费观看| 欧美三级韩国三级日本一级| 亚洲一区二区三区在线播放| 91麻豆精东视频| 亚洲狼人国产精品| 色哟哟国产精品| 日韩欧美国产综合| 欧美精品一区二区三区久久久| 亚洲乱码国产乱码精品精小说| 国产99一区视频免费| 日本一区二区三区国色天香| 国产盗摄视频一区二区三区| 精品99一区二区三区| 国产黄色精品网站| 国产欧美日韩三级| 婷婷久久综合九色国产成人| 2023国产精品自拍| 日本道精品一区二区三区| 日韩国产一区二| 欧美激情在线观看视频免费| 欧美精品久久99久久在免费线| 国产一区二区三区av电影 | 精品欧美一区二区在线观看| 99国产欧美另类久久久精品| 免费黄网站欧美| 亚洲日本乱码在线观看| 欧美一区二区三区免费视频| 成人福利视频网站| 久久国产婷婷国产香蕉| 免费日本视频一区| 亚洲乱码国产乱码精品精的特点| 91精品国产色综合久久不卡电影 | 精品在线你懂的| 亚洲综合在线第一页| 久久久久久久免费视频了|