• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Microcontrollers » MSP430™ Microcontrollers » MSP430 Ultra-Low Power 16-bit Microcontroller Forum » Simple Bootloader over UART
Share
MSP430™ Microcontrollers
  • Forum
  • Announcements
  • E2E Wiki
Options
  • Subscribe via RSS
MSP430 Resources
  • MSP430 Product Folder
  • MSP-EXP430G2 - MSP430 LaunchPad Value Line Development kit
  • MSP430 Getting Started Guide
  • MSP430 Microcontroller Projects
  • More Resources >
  • Forums

    Simple Bootloader over UART

    This question is not answered
    Jamie Wojcik
    Posted by Jamie Wojcik
    on Sep 07 2012 12:39 PM
    Prodigy55 points

    Good morning,

    I'm hoping someone can explain the format of the TI Text output from CCS.  I see that you can create a relocatable and non-relocatable object.  The relocatable object doubles the size of the binary output file.  Why?

    I want to create a simple UART program in the MSP430 that grabs each byte of a TI TXT binary file from the UART and programs it to the MSP430 program flash.  The start address needs to be different than the current program that is loaded so that I don't corrupt the current program.  Once the TI TXT binary file is in flash, I want to program the new start address of the new binary program into the reset vector.  Then reboot and see if the new program will work.  

    Has anyone ever done this?  There's much more to my program than this but I wanted to start with something simple to see if this would work.

    http://processors.wiki.ti.com/index.php/Generating_and_Loading_MSP430_Binary_Files#Using_CCS

    I have read through the http://www.ti.com/lit/an/slaa450b/slaa450b.pdf 

    Would it be easier to just use two linker files that put the program at different start addresses, then program a part with each and read the binary?  Then use that binary and pass it through the UART?  Then change the reset vector and reset the part?

    bootloader "binary file"
    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • old_cow_yellow
      Posted by old_cow_yellow
      on Sep 08 2012 01:33 AM
      Guru25815 points

      The TI.TXT format is very simple. Lines start with an @ sign specifies an address in hex. Last line must have the single character q. Other lines contain consecutive bytes in hex separated with single spaces.

      It is not relocatable and is meant to be loaded to the addresses specified after the @ sign.

      Which MSP430 are you using? Which hardware interface to PC do you have?

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jens-Michael Gross
      Posted by Jens-Michael Gross
      on Sep 10 2012 13:01 PM
      Guru140650 points

      Isn't there some more information on the line such as number of bytes in this line, checksum, relative address? Or was this the Intel format?

      However, on devices with more than 64k flash, the address behind the @ rolls over. This number is 16 bit only. Most software is smart enough to accept a decrease of the address as a sign for a 64k rollover and add 0x10000 to the new address. (and 0x20000 next time etc.)

      So the data blocks must be in ascending order in the file.

      _____________________________________
      Before posting bug reports or ask for help, do at least quick scan over this article. It applies to any kind of problem reporting. On any forum. And/or look here.
      If you cannot discuss your problem in the public, feel free to start a private conversation: click on my name and then 'start conversation'. But please do so only if you really cannot do it in a public thread, as I usually read all threads. And I prefer to answer where others can profit from it (or contribute to it) too.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jamie Wojcik
      Posted by Jamie Wojcik
      on Sep 10 2012 13:24 PM
      Prodigy55 points

      Thanks for the responses everyone.  I'm going to use this for several MSP430s.  Firstly the F5172 and then the G2553.

      I successfully can program the entire binary TI TXT file into flash at the right location and now just need to program the reset vector so that it points to the new program that was written to flash.  I will post example code and directions when I have it working.   I will be using this technique via the UART and even SPI through the air with the CC1101/CC1120 transceivers. 

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • old_cow_yellow
      Posted by old_cow_yellow
      on Sep 10 2012 13:56 PM
      Guru25815 points

      Jens-Michael Gross

      Isn't there some more information on the line such as number of bytes in this line, checksum, relative address? Or was this the Intel format? ...

      For TI.TXT format, no # of bytes, no chechsum, no relative address. Intel format has those.

      Jens-Michael Gross
      ...

      However, on devices with more than 64k flash, the address behind the @ rolls over. This number is 16 bit only. Most software is smart enough to accept a decrease of the address as a sign for a 64k rollover and add 0x10000 to the new address. (and 0x20000 next time etc.)

      So the data blocks must be in ascending order in the file.

      Example of TI.TXT formatted object code:

      @FFFE
      00 E0
      @E000
      FF 3F 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
      0E 0F 10 11 12
      @12345
      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
      10 11 12
      q


      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Travis Fagerness
      Posted by Travis Fagerness
      on Sep 10 2012 17:08 PM
      Prodigy70 points

      I am interested in this code if you get it completed.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Jens-Michael Gross
      Posted by Jens-Michael Gross
      on Sep 11 2012 10:52 AM
      Guru140650 points

      old_cow_yellow

      @FFFE
      00 E0
      @E000
      FF 3F 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
      0E 0F 10 11 12
      @12345
      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
      10 11 12
      q

      Well, this will make some older software choking. The oldest will not accept the 20 bit address in the third block, or take the first 4 letters as 16 bit, while newer one will put the second block to 0x1e000 and still choke on the third block address. And the newest one needs to scan the whole file once to determine which interpretation for the address should be taken.

      _____________________________________
      Before posting bug reports or ask for help, do at least quick scan over this article. It applies to any kind of problem reporting. On any forum. And/or look here.
      If you cannot discuss your problem in the public, feel free to start a private conversation: click on my name and then 'start conversation'. But please do so only if you really cannot do it in a public thread, as I usually read all threads. And I prefer to answer where others can profit from it (or contribute to it) too.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • old_cow_yellow
      Posted by old_cow_yellow
      on Sep 11 2012 11:27 AM
      Guru25815 points

      Jens-Michael Gross

      old_cow_yellow

      @FFFE
      00 E0
      @E000
      FF 3F 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
      0E 0F 10 11 12
      @12345
      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
      10 11 12
      q

      Well, this will make some older software choking. The oldest will not accept the 20 bit address in the third block, or take the first 4 letters as 16 bit, while newer one will put the second block to 0x1e000 and still choke on the third block address. And the newest one needs to scan the whole file once to determine which interpretation for the address should be taken.

      Yes, many TI software cannot even accept odd number of bytes or @xxxx with odd address. But IAR, Elprotronic, Tessolve (Flasher) do not have such problems

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Travis Fagerness
      Posted by Travis Fagerness
      on Sep 15 2012 11:48 AM
      Prodigy70 points

      You should be able to write the reset vector the same way you right any memory location. Simpy change FFFE to the address of your app.

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use