fdhwlib
2.0.25
|
00001 //+------------------------------------------------------------------- 00002 // 00003 // 00004 // Copyright (C) Silicon Software GmbH, 1997-98. 00005 // 00006 // File: menable.h 00007 // 00008 // Contents: 00009 // 00010 // 00011 // 00012 //-------------------------------------------------------------------- 00013 00014 #ifndef __MENABLEH 00015 #define __MENABLEH 00016 00017 #include <stdio.h> 00018 #include "os_type.h" 00019 #include "mem_siso.h" 00020 #include "hap.h" 00021 00022 typedef unsigned long microenable; 00023 typedef unsigned long fpga_design; 00024 typedef unsigned long eeprom; 00025 typedef unsigned long readback_array; 00026 typedef unsigned long xc_array; 00027 //typedef unsigned long HAP; 00028 typedef unsigned long short_info; 00029 typedef unsigned long Idcode_struct; 00030 //typedef unsigned long rbt_info; 00031 00032 typedef struct service_s { 00033 unsigned long version; 00034 unsigned long driver_version; 00035 int build; 00036 unsigned long interrupt_count; 00037 long timer0; 00038 long timer1; 00039 long timer2; 00040 long timer3; 00041 unsigned long TimeCount; 00042 long timeout0; 00043 long timeout1; 00044 int EventWaitSingleLoopTimeout0; 00045 int EventWaitSingleLoopTimeout1; 00046 int EventStopSingleLoopTimeout0; 00047 int EventStopSingleLoopTimeout1; 00048 int EventWCntStart0,EventWCntStop0; 00049 int EventWCntStart1,EventWCntStop1; 00050 int act_pic_cnt[2]; 00051 int err_cnt; 00052 char err_msg[1024]; 00053 } service; 00054 //#include "fgrab.h" 00055 00056 #ifdef __cplusplus 00057 extern "C" { 00058 #endif 00059 00060 00061 //#define COMPILE 00062 00063 #ifdef COMPILE 00064 #define dlldir __declspec( dllexport) 00065 #else 00066 #define dlldir __declspec( dllimport) 00067 #endif 00068 00069 // 00070 // Prototypes 00071 // 00072 00073 // 00074 // init and free 00075 // 00076 00077 microenable *initialize_microenable(); 00078 microenable *initialize_multienable(int nr); 00079 microenable *reinitialize_microenable(); 00080 microenable *reinitialize_multienable(int nr); 00081 int free_microenable(microenable *board); 00082 int init_microlib(char*); 00083 00084 // 00085 // Mapping 00086 // 00087 00088 extern int map_runtime_base(microenable *board); 00089 extern int map_rombase(microenable *board); 00090 extern int unmap_runtime_base(microenable *board); 00091 extern int unmap_rombase(microenable *board); 00092 00093 extern int map_plx_base(microenable *board); 00094 extern int map_fpga_base(microenable *board); 00095 extern int map_slave_base(microenable *board); 00096 extern int eeprom_readout(microenable *board); 00097 extern int load_my_eeprom(microenable *board, eeprom *eeprom_values); 00098 00099 //extern int (*reset)(microenable *board); 00100 extern int init_abort(microenable *board); 00101 extern int init_expansion_rom(microenable *board); 00102 extern int init_slave_0(microenable *board); 00103 extern int init_clk_system(microenable *board); 00104 00105 // 00106 // Design prototypes 00107 // 00108 00109 extern fpga_design *load_design(microenable*, char *bin_file_name); 00110 extern int unload_design(fpga_design *design); 00111 //extern int (*buf_expand)(fpga_design *design); 00112 extern int prepare_design(fpga_design *design); 00113 extern int configure_fpga(microenable *board, fpga_design *design); 00114 extern int readback_fpga(microenable *board, fpga_design *design); 00115 00116 // 00117 // Clock Functions 00118 // 00119 00120 // ------------------------------------------------------------------------------ // 00121 // begin clock system 00122 // ------------------------------------------------------------------------------ // 00123 enum ClkSource {DESIGN_CLK2, DESIGN_CLK, LOCAL_BUS_CLK, CLOCK_DISABLED}; 00124 enum ResetState {RESET_OFF, RESET_ON}; 00125 enum ClkState {UNLOCKED, LOCKED}; 00126 00127 extern int ClkSelectRam0(microenable *board,int nId); 00128 extern int ClkSelectRam1(microenable *board,int nId); 00129 00130 extern int load_my_eeprom(microenable *board, eeprom *eeprom_values); 00131 00132 //extern int (*reset)(microenable *board); 00133 extern int init_abort(microenable *board); 00134 extern int init_expansion_rom(microenable *board); 00135 extern int init_slave_0(microenable *board); 00136 extern int init_clk_system(microenable *board); 00137 00138 extern int set_cmc_clk(microenable *board, fpga_design *design,int sel); 00139 extern int set_fpga_clk(microenable *board, fpga_design *design,int freq); 00140 extern int set_fpga_clk_slow(microenable *board, fpga_design *design,int freq); 00141 extern int set_plx_clk(microenable *board, fpga_design *design,int freq); 00142 00143 extern int get_plx_clk(); 00144 extern int get_fpga_clk(microenable*, fpga_design*); 00145 00146 extern int set_slink_source(microenable *board); 00147 extern int set_slink_destination(microenable *board); 00148 00149 // 00150 // RBT and Hap Files 00151 // 00152 00153 extern HAP *read_hap(microenable*,char *file_name); 00154 extern unsigned long *GetAccessPointer(microenable *board); 00155 extern unsigned long *GetAccessPointerNC(microenable *board); 00156 extern int FreeAccessPointer(); 00157 extern unsigned long *GetRuntimeBase(microenable *board); 00158 extern unsigned long *GetServiceBase(microenable *pBoard); 00159 00160 extern int LoadRbt(char *name,rbt_info **ri); 00161 extern int LoadBit(char *name,rbt_info **ri); 00162 extern int FreeRbt(rbt_info *ri); 00163 extern int WriteHapFileByName(char *name,rbt_info *ri); 00164 00165 extern HapTagMaster* ReadDesignInfoFile (char *name); 00166 extern char* GetDesignName(); 00167 00168 extern int CreateMultiHap(char *name); 00169 extern int ScanHapfile(char *filename,hapfile_index *index); 00170 extern int AddHapData(char *cpHapName,int nTag, HapData *data); 00171 extern HAP ReadMultiHap(microenable *board,char *file_name); 00172 extern char *Tag2String(unsigned long tag); 00173 00174 // 00175 // Dma Functions 00176 // 00177 00178 extern int WriteDmaData(unsigned long* ptr,long len,microenable *board); 00179 extern int ReadDmaData(unsigned long* ptr,long len,microenable *board); 00180 extern int WriteDmaDataExt(unsigned long* ptr,long len,int chan,long offset,int inc,microenable *board); 00181 extern int ReadDmaDataExt(unsigned long* ptr,long len,int chan,long offset,int inc,microenable *board); 00182 extern int WriteDmaDataExtCut(unsigned long* ptr,long len,int chan,long offset,int inc,int maxline,int row_len,int eff_row_len,microenable *board); 00183 extern int DmaJpegExt( unsigned long* ptr_write,long write_len,unsigned long* ptr_read,long read_len,int maxline,int row_len,int eff_row_len,microenable *board); 00184 extern int WriteDmaDataExtCutline(unsigned long* ptr,long len,int chan,long offset,int inc,int maxline,int row_len,int eff_row_len,microenable *board); 00185 extern int WriteDmaDemandData(unsigned long* ptr,long len,int chan,long offset,int inc,microenable *board); 00186 extern int ReadDmaDemandData(unsigned long* ptr,long len,int chan,long offset,int inc,microenable *board); 00187 extern int DmaJpeg(unsigned long* ptr_write,long write_len, unsigned long* read_write,long read_len,microenable *board); 00188 00189 extern int DmaVirtReadExtAsync(microenable*,int,int,int,dma_mem*,int,int,int,int); 00190 extern int DmaVirtWriteExtAsync(microenable*,int,int,int,dma_mem*,int,int,int,int); 00191 extern int DmaVirtWaitForBuffer(microenable *board,int chan,int subbufnum,dma_mem *mem,int timeout); 00192 extern int DmaVirtTestSubbufRdy(microenable *board,int chan,int subbufnum,dma_mem *mem); 00193 extern int DmaVirtTestBufStatus(microenable *board,int chan,dma_mem* mem); 00194 extern int DmaVirtStopTransfer(microenable *board,int nChan,int nMode); 00195 extern int DmaVirtStartRingbuf(microenable *pBoard,int nChan,int nDmaLength,int nOffset,dma_mem *pMem); 00196 extern int DmaVirtStopRingbuf (microenable *pBoard,int nChan); 00197 00198 // 00199 // Erweiterte DMA Funktionen 00200 // 00201 00202 extern unsigned long GetDmaLength(microenable *board,dma_mem *pMem, int nSubbufNr); 00203 00204 // 00205 // Error Handling 00206 // 00207 00208 extern void Me_ClearErrMsg(microenable *board); 00209 extern void Me_SetErrMsg(microenable *board,char *); 00210 extern char *Me_GetErrMsg(microenable *board); 00211 extern int Me_GetErrCode(microenable *board); 00212 00213 // 00214 // Interrupt 00215 // 00216 00217 extern int SleepUntilInterrupt(microenable *board); 00218 extern int SetTimeout(microenable *board,int nr); 00219 00220 // Das Locken von Speicher , Testfuctions 00221 00222 extern int MMLock(unsigned long* ptr_write, long write_len, unsigned long* ptr_read, long read_len,microenable *board); 00223 extern int MMUnlock(microenable *board); 00224 00225 extern dma_mem* MMSetVirtualBuffer(microenable *board, int size,int nr); 00226 extern int MMFreeVirtualBuffer(microenable *board,dma_mem*); 00227 extern dma_mem* MMSetPhysicalLineBuffer( microenable *board, int size,int nr,unsigned long,int,int); 00228 00229 // ----------------------------------------------------------- 00230 // Ausl~sen eines lokalen Interrupts 00231 00232 extern int activate_linto(microenable *board); 00233 extern int deactivate_linto(microenable *board); 00234 00235 // ------------------------------------------------------------------------- 00236 // Readback Funktionen 00237 // 00238 00239 extern int InitReadback( const char* BaseName,unsigned int ChipType); 00240 extern unsigned int GetRegisterState( fpga_design* rdb_design,const char* Name, unsigned int from,unsigned int to ); 00241 extern unsigned int GetPinState( fpga_design* rdb_design,const char* Name ); 00242 00243 00244 // ------------------------------------------------------------------- 00245 // 00246 // Info Strukturen 00247 // 00248 00249 extern int fpga2id(char *fpga); 00250 extern int package2id(char *package); 00251 extern int pn2id(char *pn); 00252 extern int id2fpga(char *fpga, int id); 00253 extern int id2package(char *package, int id); 00254 extern int id2pn(char *pn, int id); 00255 extern int get_next_serial(FILE *fserial); 00256 extern void get_info(FILE *fserial, short_info *info); 00257 extern void write_info(short_info *info, eeprom *my_eeprom, int serial); 00258 extern void write_eeprom_defaults(eeprom *my_eeprom); 00259 extern unsigned long nr_fpga(unsigned long pn); 00260 extern unsigned long nr_ram_blocks(unsigned long pn); 00261 extern unsigned long ram_type(unsigned long pn); 00262 extern unsigned long get_actual_date(); 00263 extern int get_dd_info(microenable *board,unsigned long *ptr); 00264 extern void printf_dd_info(unsigned long *ptr); 00265 extern char* GetActVersion(); 00266 extern char* FPGAtype2String(int FpgaID); 00267 extern int String2FPGAtype(char *fpga); 00268 extern int id2fpga(char *fpga, int id); 00269 extern int fpga2id(char *fpga); 00270 extern int DetermineFPGAvendor(int FpgaID, char *VendorString); 00271 extern int DetermineFPGAfamily(int FpgaID, char *FPGAfamilyString); 00272 extern int DetermineFPGAinfo(int FpgaID, fpga_design *des); 00273 extern unsigned long DetermineFPGAidcode(int FpgaID); 00274 extern void EvaluateIdcode(unsigned long idcode, Idcode_struct *info); 00275 extern int TestFPGAbitstreamKompatibility(int FpgaID1, int FpgaID2); 00276 extern char* FPGAtype2RBTstring(int FpgaID); 00277 extern int RBTstring2FPGAtype(char *string); 00278 extern int GetRamSize(microenable *board); 00279 extern int GetFPGAtype(microenable *board); 00280 extern int GetSerialNumber(microenable *board); 00281 extern int GetBusNumber(microenable *board); 00282 extern int GetBoardVersion(microenable *board); 00283 extern int GetBoardRevision(microenable *board); 00284 00285 extern int MeGetFpgaType(microenable *board); 00286 extern int CancelAllIo(microenable *board); 00287 00288 extern int GetFPGAPackage(microenable *board); 00289 extern int GetFPGASpeedgrade(microenable *board); 00290 extern int GetNrOfFPGAs(microenable *board); 00291 extern int GetRamSpeed(microenable *board); 00292 extern int GetRamType(microenable *board); 00293 extern int GetInterruptNr(microenable *board); 00294 00295 extern int check_dd_version(microenable *board,int *build,int *version); 00296 00297 extern int GetTemperatureFPGA (microenable *board ); 00298 extern int IsPowerInterrupt (microenable *board ); 00299 00301 // Register Schnittstelle 00302 00303 extern int GetNrOfRegister (fpga_design* design); 00304 extern char* GetRegisterName (fpga_design* design,int nr); 00305 extern hap_register* GetRegisterByNumber (fpga_design* design,int nr); 00306 extern hap_register* GetRegisterByName (fpga_design* design,char *name); 00307 extern int RegisterWrite (microenable *pBoard,hap_register *hreg,unsigned long value); 00308 extern unsigned long RegisterRead (microenable *pBoard,hap_register *hreg); 00309 00310 extern void setInterruptEvent(microenable *pBoard,void *event); 00311 00312 #define DLL_TYP 0x100 00313 #define GET_FOR_MANUFACTOR_STRING 0x200 00314 #define GETCAMERASTRING 0x300 00315 #define SETDLLPARAM 0x400 00316 00317 #define GET_NR_OF_GENFUNCS 0x500 00318 #define GET_GENFUNCNAME 0x600 00319 #define GET_NR_OF_PORTS 0x700 00320 #define GET_NR_OF_CAMS 0x750 00321 #define GET_VERSION 0x800 00322 00323 typedef int infofunc(int,int,int,void*,void**); 00324 typedef infofunc* pinfofunc; 00325 00326 #ifdef __cplusplus 00327 } 00328 #endif 00329 00330 #endif