element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
Embedded Forum Dual booting hex files
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 9 replies
  • Answers 2 answers
  • Subscribers 461 subscribers
  • Views 739 views
  • Users 0 members are here
Related

Dual booting hex files

dr.akshay_1980@yahoo.com
dr.akshay_1980@yahoo.com over 10 years ago

Can I load two different hex files on same microcontroller so that whenever it boots up, It should ask me the option to select. This is samly analogous to booting up my PC with two different operating systems. I want to write new bootloader for it.

  • Sign in to reply
  • Cancel
  • clem57
    0 clem57 over 10 years ago

    Actually this can be done and is used on various embedded boards. Look at the FRDM-K64F, when you plug a micro cable into board, holding the reset button for 30 seconds tells the bootloader to enter different code and act differently. Alas, there is no interface to talk to for the bootloader like a PC has.. image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • dr.akshay_1980@yahoo.com
    0 dr.akshay_1980@yahoo.com over 10 years ago in reply to clem57

    Hi Clem,

                  Thanks for the reply , indeed happy to learn that this concept is possible in microcontrollers. Now my next task is that modification of lower end microcontroller bootloader in order to work the same way. Is there any possible solution or indirect way to do that. Is there any difference between binary file and the image file which can be burn on the microcontroller. Do  chinese mp5 players uses any kind of operating system on which multiple applications are running such as audio,video,record,ebook etc. Kindly provide as much as details you can.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • shabaz
    0 shabaz over 10 years ago in reply to dr.akshay_1980@yahoo.com

    Hi Akshay,

     

    I think you're suggesting to have two or more programs stored in flash and a program to select which one you want. It is partially microprocessor/microcontroller-specific. What you're suggesting is no different than what an OS offers. There are plenty of books that explain this, executable file formats, etc. Look for documentation on (say) CP/M and you'll get a good idea how it could work on limited resource devices like microcontrollers. Expect to do some of it in assembly.

    I don't have any more detail - ordinarily one would use an OS if one wanted to do this, such as Linux. I''m not sure deciphering mp3 players is possible,

    at least not unless you have detailed knowledge working for the manufacturer of them.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to dr.akshay_1980@yahoo.com

    Realizing space is limited in MCU bootloader because you need to leave as much as possible for application use, I would use a simple switch to test code path and proceed down new path only if depressed. default action, would be the normal bootloader, But instead of this, consider using application code instead since it would be easier to replace if something goes wrong. I would not want to brick MCU because the bootloader can't be changed! Let me know if this answers that question. I know nothing about Chinese MP player image

     

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • dr.akshay_1980@yahoo.com
    0 dr.akshay_1980@yahoo.com over 10 years ago in reply to clem57

    Hi Clem,

                  I do agree with you but still lots of confusion persists in my mind that how I will be able to burn two different hex application files in the same Flash area of the microcontoller Eg.Atmega 16. 16KB total is available out of that 1KB BLS section(Boot loader section) and 15KB is application section. I may modify the bootloader code so that it can ask me for the application choice if it detects two hex files but how two different hex files will reside in same application section, don't you think when programmed through burner it will overwrite the previous one. Will bootloader be able to adapt two different hex files in same application area and provide the choice for me after pressing a simple switch which seems to be feasible.

    Please refer to this video, I just want two applications within same application area no external eeprom (Atmega 16 bootloader video)

    http://www.youtube.com/watch?v=j1wmHfd_m04

     

    How To Write a Simple Bootloader For AVR In C language

     

     

    Secondly Clem kindly tell me any compiler which can directly output .bin file instead of .hex file for burning the MCU. for ARM 32 bit controller if possible

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to dr.akshay_1980@yahoo.com

    Akshay,

         I cannot tell you what actually happens, but in most cases when the IDE compiles (translate human source to binary code) and links (resolve pointers to already written library binary code), a load point/entry point must be determined. That entry point is fixed at a location that comes soon after the end of the bootloader in 99% of the cases. I have done software for 30 years on many platforms and see little else!

          So here is the dilemma: How can you load two applications at the same time and know where each is loaded and what entry point to use? A very sticky problem unless you can modify the bootloader and know how much space is used by first application versus the second. But you can use an RTOS that will help you have pieces of code running concurrently with some kind of scheduler (code to allow many tasks or pieces of application code run). Would that help you get your code in?

     

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to clem57

    P.S.

      I will research the .bin vs .hex types and let you know...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • dr.akshay_1980@yahoo.com
    0 dr.akshay_1980@yahoo.com over 10 years ago in reply to clem57

    Thanks clem,   Your answer seems to be pretty satisfactory but still even my research is going on too with the same thing. Do update me with any other solution in future.

     

     

     

    Bye.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • clem57
    0 clem57 over 10 years ago in reply to clem57

    @Akshay Sharma,

     

         After scouring my mind/net I understand why the Hex vs bin, See Hex definition from Keil:

    The Intel HEX file is an ASCII text file with lines of text that follow the Intel HEX file format. Each line in an Intel HEX file contains one HEX record. These records are made up of hexadecimal numbers that represent machine language code and/or constant data. Intel HEX files are often used to transfer the program and data that would be stored in a ROM or EPROM. Most EPROM programmers or emulators can use Intel HEX files.

    This means if you load a EPROM or ROM, use .HEX, otherwise only use the .BIN for applications into SRAM.

     

    Clem

     

    PS.

         Please mark this question as appropriate as to answered or helpful and start a new one for any other questions. This helps others that may have searched for the same question. Thank you.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube