nf_drv.h

来自「硬盘播放器制作DIY」· C头文件 代码 · 共 306 行 · 第 1/2 页

H
306
字号
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        if (NF_4_CYCLE_ADDRESS_BIT)                                           \
          Nf_send_address ( ((Byte*)&address_sector)[1] )
  
  #define Nf_read_open_A_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_A_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        if (NF_4_CYCLE_ADDRESS_BIT)                                           \
          Nf_send_address ( ((Byte*)&address_sector)[1] );                    \
        Nf_wait_busy()
  
  #define Nf_read_open_B_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_B_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        if (NF_4_CYCLE_ADDRESS_BIT)                                           \
          Nf_send_address ( ((Byte*)&address_sector)[1] );                    \
        Nf_wait_busy()
  
  #define Nf_read_open_C_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_C_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        if (NF_4_CYCLE_ADDRESS_BIT)                                           \
          Nf_send_address ( ((Byte*)&address_sector)[1] );                    \
        Nf_wait_busy()
#else
  #if (NF_4_CYCLE_ADDRESS == 1)
  
  #define Nf_write_open_B_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_B_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] )
  
  
  #define Nf_write_open_A_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_A_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] )
  
  #define Nf_write_open_C_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_C_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] )
  
  #define Nf_read_open_A_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_A_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] );                      \
        Nf_wait_busy()
  
  #define Nf_read_open_B_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_B_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] );                      \
        Nf_wait_busy()
  
  #define Nf_read_open_C_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_C_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[1] );                      \
        Nf_wait_busy()
  
  #endif
  
  #if (NF_4_CYCLE_ADDRESS == 0)
  
  #define Nf_write_open_B_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_B_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] )
  
  
  #define Nf_write_open_A_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_A_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] )
  
  #define Nf_write_open_C_area(address_sector, nb_byte)                       \
        Nf_send_command (NF_READ_C_AREA_CMD);                                 \
        Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);                       \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] )
  
  #define Nf_read_open_B_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_B_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_wait_busy()
  
  #define Nf_read_open_C_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_C_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_wait_busy()
  
  #define Nf_read_open_A_area(address_sector, nb_byte)                        \
        Nf_send_command (NF_READ_A_AREA_CMD);                                 \
        Nf_send_address ( nb_byte );                                          \        
        Nf_send_address ( ((Byte*)&address_sector)[3] );                      \
        Nf_send_address ( ((Byte*)&address_sector)[2] );                      \
        Nf_wait_busy()
  
  #endif
#endif


/*_____ D E C L A R A T I O N ______________________________________________*/

extern  xdata Uint32 nf_disk_size;

extern  void  nf_download_buffer(void);     /* copy the content of gl_buffer on the card */
extern  void  nf_upload_buffer(void);       /* load the content of the card on gl_buffer */
extern  void  nf_init_buffer(void);         /* initialize the buffer gl_buffer with 0xFF */

void  nf_copy_block_head(void);             /* copy the first sectors of a block */
void  nf_copy_block_tail(void);             /* copy the last sectors of a block */
void  nf_reassign_block(void);              /* reassign the physical block on the look up table */
bit   nf_block_erase (Uint32);              /* Erase one block */
bit   nf_erase_all_block(void);             /* Erase all block */
void  nf_init_spare(void);                  /* Init the first redundant data of a block */
void  nf_calc_logical_block();              /* Calulate the value of logical block in spare area */
void  nf_update_spare_data(void);           /* Write only the redundant information */
bit   nf_read_spare_byte(void);             /* LUT generation */
#endif /* _NF_DRV_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?