[CC78K4] General
Contents
FAQ-ID = CC_General- nnnn
CC_General -0532
|
What should be done to place a variable with default value for only reference in ROM?
|
| Q1 |
What should be done to place a variable with default value for only reference in ROM?
|
| A1 |
Specify a count qualifier.
(Example)
const int a=0x12; /* Placed in ROM */
int b=0x12; /* Placed in ROM/RAM */
Variable a is placed in ROM.
For variable b, the default value is placed in ROM and the variable itself is placed in RAM.
(Both ROM and RAM areas are required.)
Copy the default value in ROM to the variable in RAM by using the ROMization processing of the startup routine.
As a result of ROMization, an area is necessary in both ROM and RAM
-78K0-
-78K0S-
-78K4-
|
 |
|
(2006/07)
|
 |
|
CC_General -0533
|
What should be done to learn the address of a global variable described in C?
|
| Q1 |
What should be done to learn the address of a global variable described in C?
Can anything like a list be output?
|
| A1 |
Specify the -KP option of the linker.
A list of global symbols will be output as link map information.
This list shows the value of symbols (address of variables).
-78K0-
-78K0S-
-78K4-
|
 |
|
(2006/07)
|
 |
|
CC_General -0539
|
Building with PM+ fails if #pragma section command is executed.
|
| Q1 |
The following source is described to change the section of a variable but the C compiler does not generate an object.
Therefore, building with PM+ fails. What should be done?
#pragma section @@DATA DATA1
int b;
#pragma section @@DATA @@DATA
|
| A1 |
If the #pragma section command is executed after describing the body text in C, an object module file is not created but an assembler source file is created.
Consequently, building fails.
Specify the -SA or -A option that outputs an assembler source file when setting a compiler option.
PM+ starts up the assembler following the compiler, and an object is generated.
-78K0-
-78K0S-
-78K4-
|
 |
|
(2006/07)
|
 |
|
CC_General -0542
|
There are startup routines “Normal”, “For boot area”, and “For flash area”. Which should be used?
|
| Q1 |
There are startup routines "Normal", "For boot area", and "For flash area".
Which should be used?
|
| A1 |
Use "Normal" for a device that does not have a flash area self-rewriting function.
Use a startup routine "For boot area" in the boot area, and "For flash area" in the flash area.
"For boot area" and "For flash area" should be used as follows.
- For boot area
Use this startup routine in the boot area that is not rewritten when the flash area self-rewriting function is used.
After RESET, call startup routine _@cstart in the boot area.
The other interrupt vector defines an address in the flash area.
After calling the _boot_main function in startup routine _@cstart, the program branches to ITBLTOP, first address of the flash area.
- For flash area
Use this startup routine in the flash area that is rewritten when the flash area self-rewriting function is used.
Call startup routine for flash area, _@cstarte, to ITBLTOP that is the part corresponding to RESET of a vector for the flash area.
After that, call the main function.
The operation is as follows at reset.
RESET interrupt vector (boot area)
-> _@cstart (boot area)
-> _boot_main function (boot area)
-> ITBLTOP address (flash area)
-> _@cstarte (flash area)
-> _main function (flash area)
-78K0-
-78K0S-
-78K4-
|
 |
|
(2006/07)
|
 |
|
CC_General -0596
|
Can a bit field of 32 bits be created?
|
| Q1 |
Can a bit field of 32 bits be created?
|
| A1 |
No.
A bit field is of int type with ANSI.
With CC78Kx, a bit field can be extended to be char type.
-78K0-
-78K0S-
-78K4-
|
 |
|
(2006/07)
|
 |
|
|