Skip to main content
Visitor II
September 8, 2006
Question

Help for traslation SW in ST7Lite

  • September 8, 2006
  • 11 replies
  • 1941 views
Posted on September 08, 2006 at 07:15

Help for traslation SW in ST7Lite

    This topic has been closed for replies.

    11 replies

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 05:50

    I use ST7Lite19F. The flash is end. I traslate my sw on ST7Lite29F:it has 8K flash memory.

    In ST7Lite19 my .prn file is:

    MY_ZRAM = NO_INIT 0x0080 TO 0x00FE;

    In ST7Lite29...what's is it? I have write:

    MY_ZRAM = NO_INIT 0x0080 TO 0x01F7;

    but when I use my first variable ''volatile unsigned int'' the software freeze and it's locked! :o

    What's new RAM size? What's the problem?Thanks

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 06:37

    Hi,

    MY_ZRAM refers to the zero page variables (below 0xFF). This variables are accessed one one byte, generating quick and small size code.

    You have to create another segment in your prn file like MY_RAM from 0x100 to 0x17F.

    For more information, please refer to the Metrowerks linker documentation.

    Best regards

    Laurent

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 09:27

    Thanks a lot!!

    I have insert:

    MY_ZRAM = NO_INIT 0x0080 TO 0x00FE;

    this->MY_RAM from 0x100 to 0x17F.

    and correct:

    DEFAULT_RAM, _ZEROPAGE, _OVERLAP INTO MY_ZRAM,MY_RAM;

    but it's same error: the sw is locked!

    :-[

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 09:38

    Hi,

    This line is wrong :

    DEFAULT_RAM, _ZEROPAGE, _OVERLAP INTO MY_ZRAM,MY_RAM;

    you have to split it.

    For example :

    _ZEROPAGE, _OVERLAP INTO MY_ZRAM;

    DEFAULT_RAM INTO MY_RAM;

    You will have to manage the variable to put in zero page :

    #pragma DATA_SEG SHORT _ZEROPAGE

    char NumberOfAccess; //data_often_accessed

    #pragma DATA_SEG DEFAULT_RAM

    char StateOfHandler; //data accessed few times

    Hope this will help you.

    Don't hesitate to open the Metrowerks documentation !

    Best regards

    Laurent

    ;)

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 12:35

    Again thanks a lot! ;)

    I have change my sw with your advice code. Now compile but...the sw is locked! :-[

    The gap:

    MY_RAM from 0x100 to 0x17F

    are at 16-bit adressing: I must ALIGN?

    I dont undestand why it dont run!!! :(

    Visitor II
    September 6, 2006
    Posted on September 06, 2006 at 13:48

    Hi,

    You don't need to align, you can access even and odd address. The CPU

    handles 8-bit data even if the address is 16-bit long.

    What do you mean by the software is locked ?

    What kind of tools do you use to debug ?

    Best regards

    Laurent

    Visitor II
    September 7, 2006
    Posted on September 07, 2006 at 06:05

    Laurent fans club! ;)

    I have change prn file with:

    MY_ZRAM = NO_INIT 0x0080 TO 0x01FE;

    MY_RAM = NO_INIT 0x0100 TO 0x017F;

    and

    PLACEMENT

    _ZEROPAGE,_OVERLAP INTO MY_ZRAM;

    DEFAULT_RAM INTO MY_RAM;

    ....

    In my define.h I have defined:

    #pragma DATA_SEG _ZEROPAGE

    some var....and

    #pragma DATA_SEG DEFAULT_RAM

    volatile unsigned int CntPositionMotor[2];

    In my application I run 2 motor, after 3 second I memorize my default of motor with:

    CntPositionMotor[MOTOR_1] = 0xFF00;

    After memorization I run the 2 motor in reverse direction.

    I have programmed my demo-board, the SW run, the 2 motor run for 3 second, but when there is the istruction:

    CntPositionMotor[MOTOR_1] = 0xFF00;

    It's lock!

    :o

    Thanks again for my insistence :-[

    Visitor II
    September 7, 2006
    Posted on September 07, 2006 at 06:28

    Thanks,

    What do you suspect ?

    Is it the first time this line is executed ? (put a breakpoint on it to check)

    If yes, you can verify the assembly code generated either with the debugger or in the listing file (.lst)

    Best regards

    Laurent

    Visitor II
    September 7, 2006
    Posted on September 07, 2006 at 13:38

    OK, I have understand: I have end ZERO_PAGE. The link alert me:''ERROR L2009:Out of allocation DEFAULT_RAM...FF'' beacause:

    MY_ZRAM = NO_INIT 0x0080 TO 0x00FE;

    and

    DEFAULT_RAM, _ZEROPAGE, _OVERLAP INTO MY_ZRAM;

    Now if I use the new space:

    MY_RAM = NO_INIT 0x0100 TO 0x01FE;

    and

    NEW_RAM INTO MY_RAM

    this is adressable with 16 bit.

    I must defined ''far'' my new variable insert in NEW_RAM?

    I have define:

    #pragma DATA_SEG NEW_RAM;

    volatile unsigned int far NewVar1;

    volatile unsigned int far NewVar2;

    volatile unsigned int far NewVar3;

    but...It dont run :-[

    Thanks again

    Visitor II
    September 7, 2006
    Posted on September 07, 2006 at 14:07

    Hi marcomarco,

    use:

    #pragma DATA_SEG SHORT MY_ZRAM

    for short addressing (8bits)

    and:

    #pragma DATA_SEG NEAR MY_RAM

    for long addressing areas.

    More details you'll find in the Metrowerks' documentation.

    It's quite good!!

    Regards

    WoRo