Hello All,
I am having a strange problem with booting f28335. I have seen alot discussion about it but as i am starter so reading them isn't helping much.
I am programming through Matlab Simulink with CCS toolchain. So actually I only have blocks and I dont write any C++ code in CCS. Matlab creates it itself.
I had been using the f28335 for smaller and less complex application and it was working fine.
As the new application involves Fourier Transforms so my .ebss object became big to fit in old memory map.I increased the RAM0L3 for data (origin=0x8000, length=0x6000 which was previously origin=0x8000, length=0x4000). It reduced the portion for RAM4L7 where it is specified code(origin=0xe000, length=0x2000 which was previously origin=0xc000, length=0x4000)
Now when i program through emulator, it works fine. But when i power off/on again, it is stuck somewhere. But while it is stuck, I connect through emulator to CCS and RUN code again, it starts working again. Also if I press the reset button on the board with emulator disconnected , it starts working which ensures that atleast the RESET button knows where is the start of code. But on Power on/off, it doesn't work.
Here is my .cmd file made in CCS.
MEMORY
{
PAGE 0:
BEGINRAM: origin=0x0, length=0x2
RAMM0: origin=0x2, length=0x3fe
OTP: origin=0x380400, length=0x400
FLASH: origin=0x300000, length=0x3fff6
BEGINFLASH: origin=0x33fff6, length=0x2
CSM_PWL: origin=0x3f7ff8, length=0x8
IQTABLES: origin=0x3fe000, length=0xb50
IQTABLES2: origin=0x3feb50, length=0x8c
FPUTABLES: origin=0x3febdc, length=0x6a0
ROM: origin=0x3ff27c, length=0xd44
RESET: origin=0x3fffc0, length=0x2
VECTORS: origin=0x3fffc2, length=0x3e
RAML4L7: origin=0xe000, length=0x2000
ADC_CAL: origin=0x380080, length=0x9
ZONE7P: origin=0x200000, length=0x10000
PAGE 1:
RAML0L3: origin=0x8000, length=0x6000
RAMM1: origin=0x400, length=0x400
ZONE7D: origin=0x210000, length=0x10000
}
SECTIONS
{
.vectors: load = 0x000000000
.text: > FLASH, PAGE = 0
.switch: > FLASH, PAGE = 0
.bss: > RAML0L3, PAGE = 1
.ebss: > RAML0L3, PAGE = 1
.far: > RAML0L3, PAGE = 1
.cinit: > FLASH, PAGE = 0
.pinit: > FLASH, PAGE = 0
.const: > FLASH, PAGE = 0
.econst: > FLASH, PAGE = 0
.reset: > RESET, PAGE = 0, TYPE = DSECT
.data: > RAML0L3, PAGE = 1
.cio: > RAML0L3, PAGE = 1
.sysmem: > RAML0L3, PAGE = 1
.esysmem: > RAML0L3, PAGE = 1
.stack: > RAMM1, PAGE = 1
.rtdx_text: > FLASH, PAGE = 0
.rtdx_data: > RAML0L3, PAGE = 1
IQmath: > FLASH, PAGE = 0
codestart: > BEGINFLASH, PAGE = 0
csmpasswds: > CSM_PWL, PAGE = 0
csm_rsvd: > RAMM0, PAGE = 0
ramfuncs: LOAD = FLASH,
RUN = RAMM0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
.adc_cal: > ADC_CAL, PAGE = 0 , TYPE = NOLOAD
IQmathTables: > IQTABLES, PAGE = 0 , TYPE = NOLOAD
IQmathTables2: > IQTABLES2, PAGE = 0 , TYPE = NOLOAD
FPUmathTables: > FPUTABLES, PAGE = 0 , TYPE = NOLOAD
}
-l "C:\MATLAB\R2012b\toolbox\idelink\extensions\ticcs\c2000\c2833xPeripherals.cmd"
and my CodeStartBranch.asm code is:
***********************************************************************
WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0
.ref _c_int00
.global code_start
***********************************************************************
* Function: codestart section
*
* Description: Branch to code starting point
***********************************************************************
.sect "codestart"
code_start:
.if WD_DISABLE == 1
LB wd_disable ;Branch to watchdog disable code
.else
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end codestart section
***********************************************************************
* Function: wd_disable
*
* Description: Disables the watchdog timer
***********************************************************************
.if WD_DISABLE == 1
.text
wd_disable:
SETC OBJMODE ;Set OBJMODE for 28x object code
EALLOW ;Enable EALLOW protected register access
MOVZ DP, #7029h>>6 ;Set data page for WDCR register
MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD
EDIS ;Disable EALLOW protected register access
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end wd_disable
.end
;//===========================================================================
;// End of file.
;//===========================================================================
Hope its not a big problem for a lot of you out there :)
Regards,
Adil