Atmel website | ARM Community | AVR freaks | Technical Support
Banner
 FAQ •  Search •  Register •  Login 

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: How to convert IAR4.x XCL to IAR5.x ICF file?
PostPosted: Wed Aug 05, 2009 1:34 am 
Offline

Joined: Wed Nov 14, 2007 9:05 am
Posts: 3
Hello, experts

I'm going to use "Safe and Secure Bootloader Implementation 1.0.zip" Atmel example in my project.

Now I'm using IAR5.11 but this example was compiled by IAR4.x.

so, I want to convert some files to IAR5.x.
and, I've already converted but It's not working.

Startup code debuging is very confusing and hard to me.


Shown below is original XCL file.
Could you tell me how to convert this XCL file to ICF.

Welcome to any comments.
Thanks...

Code:
//-----------------------------------
// File:          bootloader_linkscript_SAM7XC256.xcl
// Function:      Linker directives for bootloader
// Supported chip(s):
//    - AT91SAM7XC256
// Supported toolchain(s):
//    - IAR Embedded Workbench
// Date created:  04 May 2006
// Created by:    JJo
//-----------------------------------

//*************************************************************************
// XLINK command file template for EWARM/ICCARM
//
// Usage:  xlink  -f lnkarm  <your_object_file(s)>
//                -s <program start label>  <C/C++ runtime library>
//*************************************************************************
//
// -------------
// Code segments - may be placed anywhere in memory.
// -------------
//
//   INTVEC     -- Exception vector table.
//   SWITAB     -- Software interrupt vector table.
//   ICODE      -- Startup (cstartup) and exception code.
//   DIFUNCT    -- Dynamic initialization vectors used by C++.
//   CODE       -- Compiler generated code.
//   CODE_I     -- Compiler generated code declared __ramfunc (executes in RAM)
//   CODE_ID    -- Initializer for CODE_I (ROM).
//
// -------------
// Data segments - may be placed anywhere in memory.
// -------------
//
//   CSTACK     -- The stack used by C/C++ programs (system and user mode).
//   IRQ_STACK  -- The stack used by IRQ service routines.
//   SVC_STACK  -- The stack used in supervisor mode
//                 (Define other exception stacks as needed for
//                 FIQ, ABT, UND).
//   HEAP       -- The heap used by malloc and free in C and new and
//                 delete in C++.
//   INITTAB    -- Table containing addresses and sizes of segments that
//                 need to be initialized at startup (by cstartup).
//   CHECKSUM   -- The linker places checksum byte(s) in this segment,
//                 when the -J linker command line option is used.
//   DATA_y     -- Data objects.
//
// Where _y can be one of:
//
//   _AN        -- Holds uninitialized located objects, i.e. objects with
//                 an absolute location given by the @ operator or the
//                 #pragma location directive. Since these segments
//                 contain objects which already have a fixed address,
//                 they should not be mentioned in this linker command
//                 file.
//   _C         -- Constants (ROM).
//   _I         -- Initialized data (RAM).
//   _ID        -- The original content of _I (copied to _I by cstartup) (ROM).
//   _N         -- Uninitialized data (RAM).
//   _Z         -- Zero initialized data (RAM).
//
// Note:  Be sure to use end values for the defined address ranges.
//        Otherwise, the linker may allocate space outside the
//        intended memory range.
//*************************************************************************

//*************************************************************************
// Inform the linker about the CPU family used.
// AT91SAM7X256 Memory mapping
// No remap
//  ROMSTART
//  Start address 0x0000 0000
//  Size 256 Kbo  0x0004 0000
//  RAMSTART
//  Start address 0x0020 0000
//  Size  64 Kbo  0x0001 0000
// Remap done
//  RAMSTART
//  Start address 0x0000 0000
//  Size  64 Kbo  0x0001 0000
//  ROMSTART
//  Start address 0x0010 0000
//  Size 256 Kbo  0x0004 0000

//*************************************************************************
-carm

//*************************************************************************
// Size of bootloader region
//*************************************************************************
-DBOOTSIZE=8000

//*************************************************************************
// Internal Ram segments mapped BEFORE REMAP 64 K.
//*************************************************************************
-Z(CONST)INTRAMSTART_NOREMAP=00200000
-Z(CONST)INTRAMEND_NOREMAP=0020FFFF

//*************************************************************************
// Internal Ram segments mapped AFTER REMAP 64 K.
//*************************************************************************
-Z(CONST)INTRAMSTART_REMAP=00200000
-Z(CONST)INTRAMEND_REMAP=0020FFFF

//*************************************************************************
// Read-only segments mapped to Flash 256 K.
//*************************************************************************
-DROMSTART=00000000
-DROMEND=(ROMSTART+BOOTSIZE)

-Z(CONST)BOOTLOADEREND=ROMEND

//*************************************************************************
// Read/write segments mapped to 64 K RAM.
//*************************************************************************
-DRAMSTART=00200000
-DRAMEND=0020FFFF

//*************************************************************************
// Address range for reset and exception
// vectors (INTVEC).
// The vector area is 32 bytes,
// an additional 32 bytes is allocated for the
// constant table used by ldr PC in cstartup.s79.
//*************************************************************************
-Z(CODE)INTVEC=00-3F

//*************************************************************************
// Startup code and exception routines (ICODE).
//*************************************************************************
-Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND
-Z(CODE)SWITAB=ROMSTART-ROMEND

//*************************************************************************
// Code segments may be placed anywhere.
//*************************************************************************
-Z(CODE)CODE=ROMSTART-ROMEND

//*************************************************************************
// Various constants and initializers.
//*************************************************************************
-Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND
-Z(CONST)CHECKSUM=ROMSTART-ROMEND

//*************************************************************************
// Data segments.
//*************************************************************************
-Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND

//*************************************************************************
// __ramfunc code copied to and executed from RAM.
//*************************************************************************
-Z(DATA)CODE_I=RAMSTART-RAMEND
-Z(CONST)CODE_ID=ROMSTART-ROMEND // Initializer for
-QCODE_I=CODE_ID

//*************************************************************************
// ICCARM produces code for __ramfunc functions in
// CODE_I segments. The -Q XLINK command line
// option redirects XLINK to emit the code in the
// debug information associated with the CODE_I
// segment, where the code will execute.
//*************************************************************************

//*************************************************************************
// Stack and heap segments.
//*************************************************************************
-D_CSTACK_SIZE=(100*4)
-D_IRQ_STACK_SIZE=(3*8*4)
-D_HEAP_SIZE=0

-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND

//*************************************************************************
// ELF/DWARF support.
//
// Uncomment the line "-Felf" below to generate ELF/DWARF output.
// Available format specifiers are:
//
//   "-yn": Suppress DWARF debug output
//   "-yp": Multiple ELF program sections
//   "-yas": Format suitable for debuggers from ARM Ltd (also sets -p flag)
//
// "-Felf" and the format specifiers can also be supplied directly as
// command line options, or selected from the Xlink Output tab in the
// IAR Embedded Workbench.
//*************************************************************************

// -Felf


Top
 Profile  
 
 Post subject: Re: How to convert IAR4.x XCL to IAR5.x ICF file?
PostPosted: Wed Aug 05, 2009 9:07 am 
Offline

Joined: Thu Dec 02, 2004 2:28 pm
Posts: 454
hello,
i would recommend to use one of the examples of ewarm 5.40 as a starting point.
remove all of the .c files and include your .c files in the project.

regards
gerhard


Top
 Profile  
 
 Post subject: Re: How to convert IAR4.x XCL to IAR5.x ICF file?
PostPosted: Wed Jan 18, 2012 6:18 pm 
Offline

Joined: Mon Mar 10, 2008 12:48 pm
Posts: 5
Well.
How did you do it?


Top
 Profile  
 
 Post subject: Re: How to convert IAR4.x XCL to IAR5.x ICF file?
PostPosted: Thu Jan 19, 2012 2:16 am 
Offline

Joined: Sat Oct 30, 2010 6:04 pm
Posts: 574
It's a 2+ year old thread, isn't EWARM at 6.x now

Have you reviewed this document?

http://delivery.iar.com/DB_Files/Public ... de.ENU.pdf

Have you reviewed some example .ICF files?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: