My Project  v0.0.16
Firmware.hpp
Go to the documentation of this file.
1 
7 #ifndef Firmware_hpp
8 #define Firmware_hpp
9 
10 #include <vector>
11 #include <string>
12 #include <iostream>
13 
14 #include <boost/date_time/posix_time/posix_time.hpp>
15 
16 #include "uhal/log/exception.hpp"
17 
18 namespace mp7
19 {
20  // Forware declarations
21  class Firmware;
22  class XilinxBitFile;
23 }
24 
25 bool operator== ( const mp7::Firmware& aFirmware1, const mp7::Firmware& aFirmware2 );
26 bool operator!= ( const mp7::Firmware& aFirmware1, const mp7::Firmware& aFirmware2 );
27 std::ostream& operator<< ( std::ostream& aStream, const mp7::Firmware& aFirmware );
28 std::ostream& operator<< ( std::ostream& aStream, const mp7::XilinxBitFile& aBitFile );
29 
30 
31 namespace mp7
32 {
33 
34  // http://forums.xilinx.com/t5/Spartan-Family-FPGAs/conversion-from-HEX-file-to-bit-for-header-in-multiboot/td-p/161590
35  // http://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf
36  // http://www.xilinx.com/support/documentation/user_guides/ug191.pdf - Virtex 5
37 
38 
39  ExceptionClass ( WrongFileExtension, "File has the wrong file-extension for the class trying to open it" );
40  ExceptionClass ( FileNotFound, "File was not found" );
41  ExceptionClass ( CorruptedFile, "File was corrupted" );
42 
49  class Firmware
50  {
51  friend std::ostream& ( ::operator<< ) ( std::ostream& aStream, const Firmware& aFirmware );
52  friend bool ( ::operator== ) ( const Firmware& aFirmware1, const Firmware& aFirmware2 );
53  friend bool ( ::operator!= ) ( const Firmware& aFirmware1, const Firmware& aFirmware2 );
54  public:
55 
57  Firmware ( const std::string& aFileName );
58 
60  virtual ~Firmware( );
61 
62  const std::vector<uint8_t>& Bitstream( ) const;
63 
64  const std::string& FileName( ) const;
65 
66  const bool& isBitSwapped( ) const;
67 
68  void BitSwap( );
69 
70  protected:
71  std::string mFileName;
72  std::vector<uint8_t> mBitStream;
74 
75  private:
76  static const uint8_t mLUT[];
77 
78  };
79 
80  class XilinxBitStream : public Firmware
81  {
82  public:
83 
85  XilinxBitStream( );
86 
87 
88  // void BPIappend( std::vector<uint32_t>::const_iterator aStart, const std::vector<uint32_t>::const_iterator& aEnd );
89  void BigEndianAppend ( std::vector<uint32_t>::const_iterator aStart, const std::vector<uint32_t>::const_iterator& aEnd );
90 
91 
93  virtual ~XilinxBitStream( );
94 
95  private:
96 
97  };
98 
105  class XilinxBitFile : public Firmware
106  {
107  friend std::ostream& ( ::operator<< ) ( std::ostream& aStream, const XilinxBitFile& aBitFile );
108 
109  public:
110 
112  XilinxBitFile ( const std::string& aFileName );
113 
115  virtual ~XilinxBitFile( );
116 
117  const std::string& DesignName( ) const;
118  const std::string& DeviceName( ) const;
119  const boost::posix_time::ptime& TimeStamp( ) const;
120 
121  std::string StandardizedFileName() const;
122 
123  private:
124  void parse ( std::vector<uint8_t>::iterator& aIt, uint16_t& aByteCount, std::string& aString );
125  void parse ( std::vector<uint8_t>::iterator& aIt, const char& aExpectedDelimeter, uint16_t& aByteCount, std::string& aString );
126  void parse ( std::vector<uint8_t>::iterator& aIt, const char& aExpectedDelimeter, uint16_t& aByteCount, uint32_t& aUint );
127 
128  std::string mDesignName;
129  std::string mDeviceName;
130  boost::posix_time::ptime mTimeStamp;
131  };
132 
139  class XilinxBinFile : public Firmware
140  {
141  public:
142 
144  XilinxBinFile ( const std::string& aFileName );
145 
147  virtual ~XilinxBinFile( );
148 
149  };
150 
151 }
152 #endif
153 
154 
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
std::vector<uint8_t> mBitStream
Definition: Firmware.hpp:72
Definition: Firmware.hpp:105
std::string mDeviceName
Definition: Firmware.hpp:129
virtual ~Firmware( )
Default Destructor.
Definition: Firmware.cpp:69
bool mBitSwapped
Definition: Firmware.hpp:73
void BitSwap( )
Definition: Firmware.cpp:88
static const uint8_t mLUT[]
Definition: Firmware.hpp:76
boost::posix_time::ptime mTimeStamp
Definition: Firmware.hpp:130
Definition: Firmware.hpp:49
std::string mDesignName
Definition: Firmware.hpp:128
friend const Firmware& aFirmware2
Definition: Firmware.hpp:52
ExceptionClass( WrongFileExtension, "File has the wrong file-extension for the class trying to open it" )
friend bool( ::operator== ) ( const Firmware & aFirmware1
const std::string& FileName( ) const
Definition: Firmware.cpp:78
const std::vector<uint8_t>& Bitstream( ) const
Definition: Firmware.cpp:73
const bool& isBitSwapped( ) const
Definition: Firmware.cpp:83
Firmware( const std::string& aFileName )
Default Target-specified Constructor.
Definition: Firmware.cpp:62
std::string mFileName
Definition: Firmware.hpp:71