1 /* 2 * File: EncoreBootImageGenerator.h 3 * 4 * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. 5 * See included license file for license details. 6 */ 7 #if !defined(_EncoreBootImageGenerator_h_) 8 #define _EncoreBootImageGenerator_h_ 9 10 #include "BootImageGenerator.h" 11 #include "EncoreBootImage.h" 12 13 namespace elftosb 14 { 15 16 /*! 17 * \brief Generator for Encore boot images. 18 * 19 * Takes the abstract model of the output file and processes it into a 20 * concrete boot image for the STMP37xx. 21 * 22 * In order to enable full i.mx28 support, you must call the setSupportHAB() method and 23 * pass true. 24 */ 25 class EncoreBootImageGenerator : public BootImageGenerator 26 { 27 public: 28 //! \brief Default constructor. EncoreBootImageGenerator()29 EncoreBootImageGenerator() : BootImageGenerator() {} 30 31 //! \brief Builds the resulting boot image from previously added output sections. 32 virtual BootImage * generate(); 33 34 //! \brief Enable or disable HAB support. setSupportHAB(bool supportHAB)35 void setSupportHAB(bool supportHAB) { m_supportHAB = supportHAB; } 36 37 protected: 38 39 bool m_supportHAB; //!< True if HAB features are enabled. 40 41 void processOptions(EncoreBootImage * image); 42 void processSectionOptions(EncoreBootImage::Section * imageSection, OutputSection * modelSection); 43 44 void processOperationSection(OperationSequenceSection * section, EncoreBootImage * image); 45 void processDataSection(BinaryDataSection * section, EncoreBootImage * image); 46 47 void processLoadOperation(LoadOperation * op, EncoreBootImage::BootSection * section); 48 void processExecuteOperation(ExecuteOperation * op, EncoreBootImage::BootSection * section); 49 void processBootModeOperation(BootModeOperation * op, EncoreBootImage::BootSection * section); 50 51 void setFillPatternFromValue(EncoreBootImage::FillCommand & command, SizedIntegerValue & pattern); 52 }; 53 54 }; // namespace elftosb 55 56 #endif // _EncoreBootImageGenerator_h_ 57 58