Other Parts Discussed in Thread: UNIFLASH, HALCOGEN
Hi…,
We are developing a boot loader for TMS470MF06607 controller. We are using the example boot loader program from TI developed by Mr.QJWang.
The boot loader is able to flash the application code to the designated Flash memory. We have confirmed this by reading the memory form controller using UniFlash software at boot loader address at 0x000 and application address at 0x8000. But after flashing when we try to run the application code it’s not running.
We need support to confirm whether we have done the memory mapping properly in the application program. I have attached the images of the memory map that we have done. We followed the application note SPNA200–September 2013 - CAN Bus Bootloader for TMS470M MCU for memory mapping of application program.
The application has to reside in the Sector 2 of Flash Bank0 @ 0x8000 address
Below is the Application Program Memory mapping:
/* Linker Settings */
-l rtsv7M3_T_be_eabi.lib
--retain="*(.intvecs)"
/* USER CODE BEGIN (1) */
/* USER CODE END */
/*----------------------------------------------------------------------------*/
/* Memory Map */
MEMORY
{
VECTORS (X) : origin=0x00008000 length=0x00000100
STACKS (RW) : origin=0x08000000 length=0x00000800
FLASH0 (RX) : origin=0x00008100 length=0x00077EFF+1
FLASH1 (RX) : origin=0x00080000 length=0x0001FFFF+1
RAM (RW) : origin=0x08000800 length=0x0000F800
/* USER CODE BEGIN (2) */
/* USER CODE END */
}
/* USER CODE BEGIN (3) */
/* USER CODE END */
/*----------------------------------------------------------------------------*/
/* Section Configuration */
SECTIONS
{
.intvecs : {} > VECTORS
.text : {} > FLASH0 | FLASH1
.const : {} > FLASH0 | FLASH1
.cinit : {} > FLASH0 | FLASH1
.pinit : {} > FLASH0 | FLASH1
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM
.stack : /* SOFTWARE SYSTEM STACK */
{ /* initial stack pointer values */
. += 0x00000400; _Stack_Table_Pointer = .;
. += 0x00000400; _Stack_Handler_Pointer = .;
} > STACKS
/* USER CODE BEGIN (4) */
/* USER CODE END */
}
Below is the Boot Loader Program Memory mapping:
//*****************************************************************************
//
// bl_link.cmd : Define the memory, section, and section for flash API
// Author : QJ Wang. qjwang@ti.com
// Date : 5-9-2013
//
// Copyright (c) 2008-2011 Texas Instruments Incorporated. All rights reserved.
// Software License Agreement
//
// Texas Instruments (TI) is supplying this software for use solely and
// exclusively on TI's microcontroller products. The software is owned by
// TI and/or its suppliers, and is protected under applicable copyright
// laws. You may not combine this software with "viral" open-source
// software in order to form a larger program.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
//
//*****************************************************************************
--retain="*(.intvecs)"
MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000100
FLASH_API (RX) : origin=0x00000100 length=0x00001500
FLASH0 (RX) : origin=0x00001600 length=0x0009EEFF
STACKS (RW) : origin=0x08000000 length=0x00000B00
SRAM (RWX) : origin=0x08000B00 length=0x0000F000
}
SECTIONS
{
.intvecs : {} > VECTORS
flashAPI :
{
// ..\Release\source\bl_flash.obj (.text)
..\Debug\source\bl_flash.obj (.text)
--library= pf035a_api_eabi.lib < setup_fsm.obj
prog_data.obj
verify_data.obj
erase.obj
issue_cmnd.obj
get_timing.obj
Fapi_PollFlashStatus.obj
feed_dog.obj
sector_select.obj
blank.obj
compact.obj
> (.text)
} load = FLASH_API, run = SRAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)
.text : {} > FLASH0
.const : {} > FLASH0
.cinit : {} > FLASH0
.pinit : {} > FLASH0
.data : {} > SRAM
.bss : {} > SRAM
.sysmem : {} > SRAM
.stack :
{
. += 0x00000A00; __STACK_TOP = .;
. += 0x00000100; _Stack_Handler_Pointer = .;
} > STACKS
}
Thanks and Regards,
Anand Kumar D