This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Change for F28027F ROM

Other Parts Discussed in Thread: TMS320F28027

Hi Folks

We've accidentally purchased the 'F' version of the LaunchPadXL TMS320F28027 :o

I checked the page for the device and found the difference to reside in the InstaSPIN ROM replacing the regular ROM.

At a quick test our current program seems to load and run OK on the device. This uses the DSP2802x_Headers_nonBIOS.cmd CMD file plus our own that is based off of the BlinkingLED example project.

Is this sufficient to mitigate any differences can you say? I tried to check the InstaSPIN pdf document spruhj1 but none of my browsers seem to be able to resolve the link to it before timing out....

As far as I know ATM the only thing we use from the ROM is the Device_cal() function which *seems* to be operating correctly.

Thanks

  • Toby,

    To be clear you want to use the F28027F launchpad as a normal F28027 launchpad, correct?

    I believe ALL of the ROM contents are different between the two devices. I am confirming if anything remains (perhaps the Flash API...not sure on the Device_cal() function).  I know for sure that IQMath is removed from F28027, so if a software example uses it you must add to your project in user memory.

     

  • Hi Chris

    Yes exactly, I would like to use the F28027F as a normal F28027.

    From TI code I think we use Device_cal(), MemCopy() [ramfuncs section, e.g. LOAD_START, LOAD_END, etc], IQ Math Tables, digital power lib [CNTL, PWM, ADC], Sine tables (+ we will be adding Sine Analyzer from the solar power lib as well). I'm not 100% sure which of these use data from the normal ROM.

    Our CMD file has the following:

     MEMORY
    {
    PAGE 0:
    	/* Program Memory */
    	/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
    	BOOT_RSVD : origin = 0x000000, length = 0x000050		/* Part of M0, BOOT rom will use this for stack */
    	progRAM 	: origin = 0x008000, length = 0x000800
    
    	OTP 		: origin = 0x3D7800, length = 0x000400		/* on-chip OTP */
    	FLASHD 	: origin = 0x3F0000, length = 0x002000		/* on-chip FLASH */
    	FLASHC 	: origin = 0x3F2000, length = 0x002000		/* on-chip FLASH */
    	FLASHA 	: origin = 0x3F6000, length = 0x001F80		/* on-chip FLASH */
    	CSM_RSVD 	: origin = 0x3F7F80, length = 0x000076		/* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
    	BEGIN 		: origin = 0x3F7FF6, length = 0x000002		/* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
    	CSM_PWL 	: origin = 0x3F7FF8, length = 0x000008		/* Part of FLASHA.  CSM password locations in FLASHA */
    	
    	IQTABLES 	: origin = 0x3FE000, length = 0x000B50		/* IQ Math Table in Boot */
    	IQTABLES2 	: origin = 0x3FEB50, length = 0x00008C		/* IQ Math Table in Boot */
    	IQTABLES3 	: origin = 0x3FEBDC, length = 0x0000AA	/* IQ Math Table in Boot */
    
    	BOOTROM 	: origin = 0x3FF27C, length = 0x000D44		/* Boot ROM */
    	RESET 		: origin = 0x3FFFC0, length = 0x000002		/* part of boot ROM  */
    	VECTORS 	: origin = 0x3FFFC2, length = 0x00003E		/* part of boot ROM  */
    
    PAGE 1:
    	/* Data Memory */
    	/* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
    	/* Registers remain on PAGE1 */
    	RAMM0 		: origin = 0x000050, length = 0x0003B0
    	RAMM1 		: origin = 0x000400, length = 0x000400
    	dataRAM 	: origin = 0x008800, length = 0x000800
    	FLASHB 	: origin = 0x3F4000, length = 0x002000
    }
     
    SECTIONS
    {
    	/* Allocate program areas: */
    	.cinit 						: > FLASHA, 					PAGE = 0
    	.pinit 						: > FLASHA, 					PAGE = 0
    	.text 						: >> FLASHC | FLASHD | FLASHA,	PAGE = 0
    
    	codestart 					: > BEGIN 						PAGE = 0
    	ramfuncs 					: LOAD = FLASHD,
    								  RUN = progRAM,
    								  LOAD_START(_RamfuncsLoadStart),
    								  LOAD_END(_RamfuncsLoadEnd),
    								  RUN_START(_RamfuncsRunStart),
    								  PAGE = 0
    
    	csmpasswds 				: > CSM_PWL 					PAGE = 0
    	csm_rsvd 					: > CSM_RSVD 					PAGE = 0
    
    	/* Allocate uninitalized data sections: */
    	.stack 						: > RAMM0, 						PAGE = 1
    	.ebss 						: >> dataRAM | RAMM1, 			PAGE = 1
    	.esysmem 					: > dataRAM, 					PAGE = 1
    
    	/* Initalized sections go in Flash */
    	/* For SDFlash to program these, they must be allocated to page 0 */
    	.econst 					: > FLASHA 						PAGE = 0
    	.switch 					: > FLASHA 						PAGE = 0
    	/* Allocate IQ math areas: */
    	IQmath 					: > FLASHA 						PAGE = 0	/* Math Code */
    	IQmathTables 			: > IQTABLES 					PAGE = 0, TYPE = NOLOAD /* Math Tables In ROM */
    
    	.reset 					: > RESET, 						PAGE = 0, TYPE = DSECT
    	vectors 					: > VECTORS 					PAGE = 0, TYPE = DSECT
    }
        
    
    SECTIONS
    {
    	/**************       SGen Sections C28x      **************/
    	SINTBL						: > dataRAM				PAGE = 1
    	SGENTI_1ch_Struct			: > dataRAM				PAGE = 1
    
    	/*************      RampGen Sections C28x     **************/
    	RAMP_GEN_Section 			: > dataRAM 			PAGE = 1
    
    	/*************      SigDlt Sections C28x      **************/
    	SIG_DLT_Section			: > dataRAM				PAGE = 1
    
    	/*************      VTimer Sections C28x      **************/
    	VTIMER_Section				: > dataRAM				PAGE = 1
    	VTIMER_Struct				: > dataRAM				PAGE = 1
    
    	/*************       DPLIB Sections C28x      **************/
    	ADCDRV_1ch_Section		: > dataRAM				PAGE = 1
    
    	CNTL_2P2Z_Section			: > dataRAM				PAGE = 1
    	CNTL_2P2Z_InternalData		: > dataRAM				PAGE = 1
    	CNTL_2P2Z_Coef			: > dataRAM				PAGE = 1
    
    	ZeroNet_Section				: > dataRAM				PAGE = 1
    
    	PWMDRV_2ch_UpCnt_Section : > dataRAM				PAGE = 1
    
    	DLOG_1ch_Section			: > dataRAM				PAGE = 1
    	DLOG_BUFF				: > dataRAM				PAGE = 1
    
    	ISR_Section					: > dataRAM 			PAGE = 1
    }
    

    As I mentioned, although this seems to mention all the things we need, I'm not sure if this is sufficient to have all that we need added... ?

    Thanks

  • Attached is a consolidated Symbols file...this will work for doing "non InstaSPIN" software on an F28027F or F28026F.

    You should link in the IQMath.lib to your project.

    You must FORCE the linker to link this symbol file before IQmath.lib:
    (here we are including the Fast symbols / .lib as well...proving we could still run our InstaSPIN projects)

    All functions are in boot rom, even though IQmath.lib is added to your project. For any additional IQmath functions added to the project - if they are not in boot rom -  it will get it from IQmath.lib (ONLY the ones that aren’t in boot rom already).

     

    2802xRevB_Fast_IQ_ROMSymbols.lib
  • Also, there are some of the IQ floating point functions from the RTS library already in ROM on the F28027F/26F devices, so you should also include the attached symbol file to make sure that any of those function calls point to the ROM location to save yourself a bit of memory.

    Again, you need to make sure the linker reads in these symbol files - so it will resolve the ROM addresses - before it reads in the IQmath library.

    So, the recommended linker set-up for ANY project run on F28027F / F28026F would be:

    This will give most efficient ROM vs. user memory for all F28027F / F28026F projects, wether using InstaSPIN or not.

     

    2802xRevB_Fast_RTS_ROMSymbols.lib