How to Define a Custom INIT Section in Softune V3 for 16FX – KBA219887

Version: **

 

Question:

 Variables with initial value is expected to be located in a specific area of RAM. How do I define a custom INIT section for this in Softune for 16FX? 

 

Answer:

In Softune V3 for 16-bit MCU, do the following to define a custom INIT section to store initialized variables in a specific RAM area:

1. Define the RAM area and custom section in Softune project setup.

In Softune, click Project > Setup Project and select the Linker tab. Then select Category: Disposition/Connection to define the RAM area and section name. 

Figure 1. Steps to Define RAM Area and Section Name in Softune

Figure 1

Figure 1

Here, set the RAM area 0x7000~0x7FFF for _INRAM02 to store variables with an initial value. Define the TESTINIT section in the _INRAM02 area. The section name can also be defined by adding “-sc TESTINIT/Data/BYTE=_INRAM02” in the Option window directly as displayed in Figure 2. 

Figure 2. Add Command to Option Window to Define Section Name

Figure 2

2. Modify the start.asm file to initialize the variables defined in the TESTINIT section during startup. Follow the steps shown in Figure 3

Figure 3. Steps to Modify start.asm

Figure 3

3. Define initialized variables in the custom section with the #pragma segment. 

//Eg. Test.c

#pragma segment DCONST=TESTDCONST,attr=CONST 

#pragma segment INIT=TESTINIT,attr=DATA

unsigned char test1=0x1; 

unsigned char test2=0x2; 

4. Build the Softune project and check the address of the variables in the map file (.mp1). Variable test1 and test2 are located in the _INRAM02 area. 

Figure 4. Results in map file (.mp1)

Figure 4

For information about default section of Softune compiler, refer to F2MC-16 Family SOFTUNE™ C Compiler Manual.