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