AT91RM9200HDD.h
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:3k
源码类别:

uCOS

开发平台:

C/C++

  1. //*----------------------------------------------------------------------------
  2. //*         ATMEL Microcontroller Software Support  -  ROUSSET  -
  3. //*----------------------------------------------------------------------------
  4. //* The software is delivered "AS IS" without warranty or condition of any
  5. //* kind, either express, implied or statutory. This includes without
  6. //* limitation any warranty or condition with respect to merchantability or
  7. //* fitness for any particular purpose, or against the infringements of
  8. //* intellectual property rights of others.
  9. //*----------------------------------------------------------------------------
  10. //* File Name           : hdd.h
  11. //* Object              : main application written in C
  12. //* Creation            : GGi   12/11/2002
  13. //*
  14. //*----------------------------------------------------------------------------
  15. #ifndef HDD_H
  16. #define HDD_H
  17. #include "AT91RM9200.h"
  18. #include "lib_AT91RM9200.h"
  19. /*---------------------------  Constants definition -------------------------*/
  20. #define ATA_STATUS_OFFSET 7
  21. #define ATA_ST_ERR (1)
  22. #define ATA_ST_CORR (1 << 2)
  23. #define ATA_ST_DRQ (1 << 3)
  24. #define ATA_ST_DSC (1 << 4)
  25. #define ATA_ST_DWF (1 << 5)
  26. #define ATA_ST_RDY (1 << 6)
  27. #define ATA_ST_BUSY (1 << 7)
  28. #define BUF_SIZE 512
  29. #define ATA_SIGNATURE 0x0040
  30. /*-------------------  ATA command set  -------------------------*/
  31. #define CHK_POWMOD 0xe5 //or 0x98
  32. #define DRIVE_DIAG 0x90
  33. #define ERASE_SECTOR 0xc0
  34. #define FORMAT_TRACK 0x50
  35. #define DRIVE_ID 0xec
  36. #define IDLE 0xe3 //or 0x97
  37. #define IDLE_IMM 0xe1 //or 0x95
  38. #define INIT_DRIVE_PARAM 0x91
  39. #define READ_BUF 0xe4
  40. #define READ_LONG_SECTOR 0x22 //or 0x23
  41. #define READ_MULT 0xc4
  42. #define READ_SECTOR 0x20 //or 0x21
  43. #define READ_VERIF_SECTOR 0x40 //or 0x41
  44. #define RECALIBRATE 0x10 //in fact 1xh
  45. #define REQ_SENSE 0x03
  46. #define SECU_DIS_PASS 0xf6
  47. #define SECU_ERASE_PREP 0xf3
  48. #define SECU_ERASE_UNIT 0xf4
  49. #define SECU_FREEZE_LOCK 0xf5
  50. #define SECU_SET_PASS 0xf1
  51. #define SECU_UNLOCK 0xf2
  52. #define SEEK 0x70 //in fact 7xh
  53. #define SET_FEATURES 0xef
  54. #define SET_MULT_MODE 0xc6
  55. #define SET_SLEEP_MODE 0xe6 //or 0x99
  56. #define STAND_BY 0xe2 //or 0x96
  57. #define STAND_BY_IMM 0xe0 //or 0x94
  58. #define TRANS_SECTOR 0x87
  59. #define WEAR_LEVEL 0xf5
  60. #define WRITE_BUF 0xe8
  61. #define WRITE_LONG_SECTOR 0x32 //or 0x33
  62. #define WRITE_MULT 0xc5
  63. #define WRITE_MULT_WO_ER 0xcd
  64. #define WRITE_SECTOR 0x30 //or 0x31
  65. #define WRITE_SECTOR_WO_ER 0x38
  66. #define WRITE_VERIFY 0x3c
  67. /*-------------------  SMC values  -------------------------*/
  68. #define HDD_IO_RWH (3 << 28)
  69. #define HDD_IO_RWS (5 << 24)
  70. #define HDD_IO_TDF (0 << 8) 
  71. #define HDD_IO_NWS (10)
  72. /*---------------------------  Function Prototyping -------------------------*/
  73. int AT91F_HDDRead(unsigned short *,int);
  74. int AT91F_HDDWrite(unsigned short *,int);
  75. int AT91F_HDDErase(int);
  76. void AT91F_HDDOpen(void);
  77. int AT91F_HDDSleep(void);
  78. int AT91F_HDDRead_ID (unsigned short *);
  79. #endif // HDD_H