1
////////////////////////////////////////////////////////////////////////////////
3
// Code::Blocks new project wizard script
5
// Project: Atmel AVR project
6
// Author: Brian Sidebotham
8
////////////////////////////////////////////////////////////////////////////////
11
Processor <- _T(""); // The chosen processor
12
AvrHex <- false; // produce Hex file from ELF output ?
13
AvrSrec <- false; // produce Motorola S-Record files?
14
AvrBin <- false; // produce Binary image files?
15
AvrLss <- false; // produce extended list file from ELF output?
16
AvrMap <- false; // produce Symbol Map file from ELF output?
17
AvrExtMem <- false; // Locate .data in on-board SRAM, or external SRAM
18
AvrExtMemAddr <- "" // The external memory address
19
AvrSize <- false; // Run avr-size after the build
20
AvrF_CPU <- false; // Define F_CPU?
21
AvrF_CPUValue <- _T(""); // F_CPU textual value
23
function BeginWizard()
25
local wiz_type = Wizard.GetWizardType();
27
if (wiz_type == wizProject)
29
local intro_msg = _T("Welcome to the new Atmel AVR project wizard!\n" +
30
"This wizard will guide you to create a new Atmel AVR project.\n\n" +
31
"When you 're ready to proceed, please click \"Next\"...");
33
Wizard.AddInfoPage(_T("AtmelAVRIntro"), intro_msg);
34
Wizard.AddProjectPathPage();
35
Wizard.AddCompilerPage(_T("GNU AVR GCC Compiler"), _T("avr*"), false, true);
36
Wizard.AddPage(_T("processorChoice"));
42
function GetFilesDir()
44
local result = _T("avr/files");
48
////////////////////////////////////////////////////////////////////////////////
49
// Processor choice page
50
////////////////////////////////////////////////////////////////////////////////
53
function OnLeave_processorChoice(fwd)
57
Processor = Wizard.GetComboboxStringSelection(_T("comboboxProc"));
58
AvrHex = Wizard.IsCheckboxChecked(_T("checkboxHex"));
59
AvrSrec = Wizard.IsCheckboxChecked(_T("checkboxSrec"));
60
AvrBin = Wizard.IsCheckboxChecked(_T("checkboxBin"));
61
AvrMap = Wizard.IsCheckboxChecked(_T("checkboxMap"));
62
AvrLss = Wizard.IsCheckboxChecked(_T("checkboxLss"));
63
AvrExtMem = Wizard.IsCheckboxChecked(_T("checkboxExtMem"));
64
AvrExtMemAddr = Wizard.GetTextControlValue(_T("textctrlExtMem"));
65
AvrSize = Wizard.IsCheckboxChecked(_T("checkboxAvrSize"));
66
AvrF_CPU = Wizard.IsCheckboxChecked(_T("checkboxF_CPU"));
67
AvrF_CPUValue = Wizard.GetTextControlValue(_T("textctrlF_CPU"));
72
function SetupProject(project)
75
local lo_map = ::wxString();
76
local lo_extmem = ::wxString();
79
local pb_avrsize = ::wxString();
80
local pb_eephex = ::wxString();
81
local pb_hex = ::wxString();
82
local pb_eepbin = ::wxString();
83
local pb_bin = ::wxString();
84
local pb_eepsrec = ::wxString();
85
local pb_srec = ::wxString();
87
// Post build commands
88
pb_eephex = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex");
89
pb_hex = _T("avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex");
90
pb_eepbin = _T("avr-objcopy --no-change-warnings --j .eeprom --change-section-lma .eeprom=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.bin");
91
pb_bin = _T("avr-objcopy -O binary -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).bin");
92
pb_eepsrec = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.srec");
93
pb_srec = _T("avr-objcopy -O srec -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).srec");
95
// avr-size is compiled with patches under winavr to produce a fancy output
96
// which displays the percentage of memory used by the application for the
97
// target mcu. However, this option is not available under standard binutils
99
if (PLATFORM_MSW == PLATFORM)
100
pb_avrsize = _T("avr-size --mcu=") + Processor + _T(" --format=avr $(TARGET_OUTPUT_FILE)");
102
pb_avrsize = _T("avr-size $(TARGET_OUTPUT_FILE)");
104
// Setup the linker options
105
lo_map = _T("-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref");
107
// Get external memory start address
108
lo_extmem = _T("-Wl,--section-start=.data=") + AvrExtMemAddr;
110
// Project compiler options
111
WarningsOn(project, Wizard.GetCompilerID());
112
project.AddCompilerOption(_T("-mmcu=") + Processor);
115
project.AddCompilerOption(_T("-DF_CPU=") + AvrF_CPUValue);
117
// Project linker options
118
project.AddLinkerOption(_T("-mmcu=") + Processor);
121
project.AddLinkerOption(lo_map);
124
project.AddLinkerOption(lo_extmem);
126
// Project post-build steps
128
project.AddCommandsAfterBuild(pb_avrsize);
132
project.AddCommandsAfterBuild(pb_hex);
133
project.AddCommandsAfterBuild(pb_eephex);
138
project.AddCommandsAfterBuild(pb_srec);
139
project.AddCommandsAfterBuild(pb_eepsrec);
144
project.AddCommandsAfterBuild(pb_bin);
145
project.AddCommandsAfterBuild(pb_eepbin);
149
// Debug build target
150
local target = project.GetBuildTarget(Wizard.GetDebugName());
153
target.SetTargetType(ttConsoleOnly);
154
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
155
target.SetOutputFilename(Wizard.GetDebugOutputDir() + Wizard.GetProjectName() + _T(".elf"));
156
DebugSymbolsOn(target, Wizard.GetCompilerID());
159
// Release build target
160
target = project.GetBuildTarget(Wizard.GetReleaseName());
163
target.SetTargetType(ttConsoleOnly);
164
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
165
target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + _T(".elf"));
166
OptimizationsOn(target, Wizard.GetCompilerID());
1
////////////////////////////////////////////////////////////////////////////////
3
// Code::Blocks new project wizard script
5
// Project: Atmel AVR project
6
// Author: Brian Sidebotham
8
////////////////////////////////////////////////////////////////////////////////
11
Processor <- _T(""); // The chosen processor
12
AvrHex <- false; // produce Hex file from ELF output ?
13
AvrSrec <- false; // produce Motorola S-Record files?
14
AvrBin <- false; // produce Binary image files?
15
AvrLss <- false; // produce extended list file from ELF output?
16
AvrMap <- false; // produce Symbol Map file from ELF output?
17
AvrExtMem <- false; // Locate .data in on-board SRAM, or external SRAM
18
AvrExtMemAddr <- "" // The external memory address
19
AvrSize <- false; // Run avr-size after the build
20
AvrF_CPU <- false; // Define F_CPU?
21
AvrF_CPUValue <- _T(""); // F_CPU textual value
23
function BeginWizard()
25
local wiz_type = Wizard.GetWizardType();
27
if (wiz_type == wizProject)
29
local intro_msg = _T("Welcome to the new Atmel AVR project wizard!\n" +
30
"This wizard will guide you to create a new Atmel AVR project.\n\n" +
31
"When you 're ready to proceed, please click \"Next\"...");
33
Wizard.AddInfoPage(_T("AtmelAVRIntro"), intro_msg);
34
Wizard.AddProjectPathPage();
35
Wizard.AddCompilerPage(_T("GNU AVR GCC Compiler"), _T("avr*"), false, true);
36
Wizard.AddPage(_T("processorChoice"));
42
function GetFilesDir()
44
local result = _T("avr/files");
48
////////////////////////////////////////////////////////////////////////////////
49
// Processor choice page
50
////////////////////////////////////////////////////////////////////////////////
53
function OnLeave_processorChoice(fwd)
57
Processor = Wizard.GetComboboxStringSelection(_T("comboboxProc"));
58
AvrHex = Wizard.IsCheckboxChecked(_T("checkboxHex"));
59
AvrSrec = Wizard.IsCheckboxChecked(_T("checkboxSrec"));
60
AvrBin = Wizard.IsCheckboxChecked(_T("checkboxBin"));
61
AvrMap = Wizard.IsCheckboxChecked(_T("checkboxMap"));
62
AvrLss = Wizard.IsCheckboxChecked(_T("checkboxLss"));
63
AvrExtMem = Wizard.IsCheckboxChecked(_T("checkboxExtMem"));
64
AvrExtMemAddr = Wizard.GetTextControlValue(_T("textctrlExtMem"));
65
AvrSize = Wizard.IsCheckboxChecked(_T("checkboxAvrSize"));
66
AvrF_CPU = Wizard.IsCheckboxChecked(_T("checkboxF_CPU"));
67
AvrF_CPUValue = Wizard.GetTextControlValue(_T("textctrlF_CPU"));
72
function SetupProject(project)
75
local lo_map = ::wxString();
76
local lo_extmem = ::wxString();
79
local pb_avrsize = ::wxString();
80
local pb_eephex = ::wxString();
81
local pb_hex = ::wxString();
82
local pb_eepbin = ::wxString();
83
local pb_bin = ::wxString();
84
local pb_eepsrec = ::wxString();
85
local pb_srec = ::wxString();
86
local pb_lss = ::wxString();
88
// Post build commands
89
pb_eephex = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.hex");
90
pb_hex = _T("avr-objcopy -O ihex -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).hex");
91
pb_eepbin = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.bin");
92
pb_bin = _T("avr-objcopy -O binary -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).bin");
93
pb_eepsrec = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).eep.srec");
94
pb_srec = _T("avr-objcopy -O srec -R .eeprom -R .eesafe $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_FILE).srec");
96
if ( PLATFORM == PLATFORM_MSW )
97
pb_lss = _T("cmd /c \"avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss\"");
99
pb_lss = _T("avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_FILE).lss");
101
// avr-size is compiled with patches under winavr to produce a fancy output
102
// which displays the percentage of memory used by the application for the
103
// target mcu. However, this option is not available under standard binutils
105
if (PLATFORM_MSW == PLATFORM)
106
pb_avrsize = _T("avr-size --mcu=") + Processor + _T(" --format=avr $(TARGET_OUTPUT_FILE)");
108
pb_avrsize = _T("avr-size $(TARGET_OUTPUT_FILE)");
110
// Setup the linker options
111
lo_map = _T("-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref");
113
// Get external memory start address
114
lo_extmem = _T("-Wl,--section-start=.data=") + AvrExtMemAddr;
116
// Project compiler options
117
WarningsOn(project, Wizard.GetCompilerID());
118
project.AddCompilerOption(_T("-mmcu=") + Processor);
121
project.AddCompilerOption(_T("-DF_CPU=") + AvrF_CPUValue);
123
// Project linker options
124
project.AddLinkerOption(_T("-mmcu=") + Processor);
127
project.AddLinkerOption(lo_map);
130
project.AddLinkerOption(lo_extmem);
132
// Project post-build steps
134
project.AddCommandsAfterBuild(pb_avrsize);
138
project.AddCommandsAfterBuild(pb_hex);
139
project.AddCommandsAfterBuild(pb_eephex);
144
project.AddCommandsAfterBuild(pb_srec);
145
project.AddCommandsAfterBuild(pb_eepsrec);
150
project.AddCommandsAfterBuild(pb_bin);
151
project.AddCommandsAfterBuild(pb_eepbin);
155
project.AddCommandsAfterBuild(pb_lss);
158
// Debug build target
159
local target = project.GetBuildTarget(Wizard.GetDebugName());
162
target.SetTargetType(ttConsoleOnly);
163
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
164
target.SetOutputFilename(Wizard.GetDebugOutputDir() + Wizard.GetProjectName() + _T(".elf"));
165
DebugSymbolsOn(target, Wizard.GetCompilerID());
168
// Release build target
169
target = project.GetBuildTarget(Wizard.GetReleaseName());
172
target.SetTargetType(ttConsoleOnly);
173
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
174
target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + _T(".elf"));
175
OptimizationsOn(target, Wizard.GetCompilerID());