This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Intel HEX - Start Linear Address Record

Hi there,

I'm working on a bootloader that uses a hex file.

What does this row do?

:0400000508000131BD

It breaks up to these:

: Start code
04 Byte count: 4
0000 Address
05 Record type: Start Linear Address Record
08000131 <--- is this a start address?
BD Checksum

Does it say the execution start (IP) address is 0x08000131? My main program range is from 0x08000000 to 0x0800261.
Or should I discard the line altogether?

Thanks.
-Mad D

Parents
  • Hello Mike,

    Thank you for the very informative replies.
    I found what you were talking about earlier, I'm just going to post it in case someone else reads this.

    Quoted from the manual:

    After this startup delay has elapsed, the CPU fetches the top-of-stack value from address 0x0000 0000, then
    starts code execution from the boot memory starting from 0x0000 0004.


    ...the Flash memory contents can be accessed starting from address
    0x0000 0000 or 0x800 0000.

    0x00000000 05D0      LSLS     r0,r2,#23
    0x00000002 2000      MOVS     r0,#0x00
    0x00000004 0145      LSLS     r5,r0,#5
    0x00000006 0800      LSRS     r0,r0,#0
    
    0x08000000 05D0      LSLS     r0,r2,#23
    0x08000002 2000      MOVS     r0,#0x00
    0x08000004 0145      LSLS     r5,r0,#5
    0x08000006 0800      LSRS     r0,r0,#0
    



    Vector table for other STM32F10xxx devices

    Description - Reserved
    Position -
    Priority -
    Type of priority -
    Acronym -
    Address - 0x0000_0000


    Description - Reset
    Position -
    Priority - -3
    Type of priority - Fixed
    Acronym - Reset
    Address - 0x0000_0004

Reply
  • Hello Mike,

    Thank you for the very informative replies.
    I found what you were talking about earlier, I'm just going to post it in case someone else reads this.

    Quoted from the manual:

    After this startup delay has elapsed, the CPU fetches the top-of-stack value from address 0x0000 0000, then
    starts code execution from the boot memory starting from 0x0000 0004.


    ...the Flash memory contents can be accessed starting from address
    0x0000 0000 or 0x800 0000.

    0x00000000 05D0      LSLS     r0,r2,#23
    0x00000002 2000      MOVS     r0,#0x00
    0x00000004 0145      LSLS     r5,r0,#5
    0x00000006 0800      LSRS     r0,r0,#0
    
    0x08000000 05D0      LSLS     r0,r2,#23
    0x08000002 2000      MOVS     r0,#0x00
    0x08000004 0145      LSLS     r5,r0,#5
    0x08000006 0800      LSRS     r0,r0,#0
    



    Vector table for other STM32F10xxx devices

    Description - Reserved
    Position -
    Priority -
    Type of priority -
    Acronym -
    Address - 0x0000_0000


    Description - Reset
    Position -
    Priority - -3
    Type of priority - Fixed
    Acronym - Reset
    Address - 0x0000_0004

Children