Developer forums (C::B DEVELOPMENT STRICTLY!) > Plugins development

Starting compiler plugin for gcc m6811 (Freescale hc12 family)

(1/1)

LouisBertrand:
Hello,

I am starting a  gcc compiler plugin for the Freescale m6811/m68hc11/hc12/hcs12 (CPU12 arch). It was ported a while ago by Stephane Carrez based on Gcc 3.3.6, Gdb 6.4, Binutils 2.15, Newlib 1.12.0.
http://www.gnu-m68hc11.org/wiki/index.php/Main_Page

So far, I have used the examples of GNUAVR and GNUARM to create my own compilerGNUm6811.cpp and .h files, and added them into src/plugins/compilergcc. I also added my compiler to compilergcc.cpp.

I am using a slightly older nightly 7932 to build. I am up to date on the SVN repository, currently at 8201.

I am running into trouble building from source since I made my changes. I will post separately with details.

Any help is appreciated. Thanks
 --Louis

ollydbg:
Nice, just go ahead!!!

LouisBertrand:
[Edited to make my question clearer - HTH  :) ]

Hi,

I started on the m6811 gcc compiler and created new files in plugins\compilergcc and edited compilergcc.h accordingly, created a little wizard script. Amazingly enough, it builds and runs! I can start a project but I run into problems with the options.

What I am trying to do is make sure that the option -mshort (16 bit int) is selected by default when I select a particular architecture in the project wizard (new file: <C::B>\src\plugins\scriptedwizard\resources\m6811\wizard.script). Initially, I had it in the script as well as in compiler options and the "-mshort" appeared twice in the gcc command line.

In void CompilerGNUm6811::Reset() , for the defaults, I have option -mshort (16 bit int by default):

--- Code: ---    m_Options.AddOption(_("Type int is 16 bits wide, like short int"), _T("-mshort"), category);
--- End code ---

How do I get the option to come up checked by default in my project, in the Project > Build Options > Compiler settings?

Thanks
 --Louis


LouisBertrand:
[Edit to add bug ID]

Hi again,

I just checked the behaviour of the GNU AVR compiler plugin and project script. It seems it's the same as what I have observed in my m6811 plugin so far.

* Start a project and pick a CPU in the project wizard. I chose ATmega16 [-mmcu=atmega16].
* In the project, go to Project > Build Options... > Compiler and, in the Compiler settings / Compiler flags, select the AVR CPU specific options. You will see that ATmega16 [-mmcu=atmega16] is NOT checked.Furthermore, if you check a different MCU, for example ATmega32 [-mmcu=atmega32], the ATmega16 option stays even though it is not shown.

The resulting .CBP file looks like this:
Build options:

--- Code: --- <Target title="Debug">
<Option output="bin\Debug\blahblahavr.elf" prefix_auto="1" extension_auto="0" />
<Option working_dir="" />
<Option object_output="obj\Debug\" />
<Option type="5" />
<Option compiler="avrgcc" />
<Compiler>
<Add option="-mmcu=atmega16" />
<Add option="-g" />
</Compiler>
</Target>

--- End code ---
Compiler options:

--- Code: --- <Compiler>
<Add option="-mmcu=atmega32" />
<Add option="-Wall" />
<Add option="-DF_CPU=16000000UL" />
</Compiler>

--- End code ---
Linker options:

--- Code: --- <Linker>
<Add option="-mmcu=atmega16" />
<Add option="-Wl,-Map=$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).map,--cref" />
</Linker>

--- End code ---

And the gcc command line uses both CPU settings:

--- Code: ---avr-gcc.exe -mmcu=atmega32 -mmcu=atmega16 -Wall -DF_CPU=16000000UL  -Os     -c main.c -o obj\Release\main.o
--- End code ---

What's even more confusing is that if you close and re-open the project, the build options seem to be ignored (atmega16) and only the compiler options are used (atmega32 comes up checked, and the command line uses atmega32 only).

Being able to unknowingly set conflicting CPU types seems a bit dangerous to me. I created bug report 018659 (Conflicting compiler options for CPU type) against application::interface for this.

Thanks
 --Louis

scarphin:
Afaik only the options designated to compilers in the 'common_functions.script' under the folder 'src\plugins\scriptedwizard\resources' get checked when added to the project by the wizard. Others are not. At least that's what I observed when modifying the mcs51 wizard. Although they are not checked, they are added as command line options. Hope this helps...

Navigation

[0] Message Index

Go to full version