This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/share/CodeBlocks/templates/wizard/avr/wizard.script

573 lines
29 KiB
Plaintext

////////////////////////////////////////////////////////////////////////////////
//
// Code::Blocks new project wizard script
//
// Project: Atmel AVR project
// Author: Brian Sidebotham
// Modified: H. Metin OZER
//
////////////////////////////////////////////////////////////////////////////////
// Global Vars
Processor <- _T(""); // The chosen processor
AvrHex <- false; // produce Hex file from ELF output ?
AvrSrec <- false; // produce Motorola S-Record files?
AvrBin <- false; // produce Binary image files?
AvrExt <- false; // produce extra files .fuse .lock .sig etc...
AvrLss <- false; // produce extended list file from ELF output?
AvrMap <- false; // produce Symbol Map file from ELF output?
AvrExtMem <- false; // Locate .data in on-board SRAM, or external SRAM
AvrExtMemAddr <- "" // The external memory address
AvrSize <- false; // Run avr-size after the build
AvrF_CPU <- false; // Define F_CPU?
AvrF_CPUValue <- _T(""); // F_CPU textual value
Programmer <- _T(""); // Avrdude 'programmer-id'
Debugger <- _T(""); // Avarice debugger choice
DebuggerCon <- _T(""); // Avarice debugger connection type
function BeginWizard()
{
local wiz_type = Wizard.GetWizardType();
if (wiz_type == wizProject)
{
local intro_msg = _T("Welcome to the new Atmel AVR project wizard!\n" +
"This wizard will guide you to create a new Atmel AVR project.\n\n" +
"When you 're ready to proceed, please click \"Next\"...");
Wizard.AddInfoPage(_T("AtmelAVRIntro"), intro_msg);
Wizard.AddProjectPathPage();
Wizard.AddCompilerPage(_T("GNU AVR GCC Compiler"), _T("avr*"), false, true);
Wizard.AddPage(_T("processorChoice"));
//Wizard.AddPage(_T("programmerChoice"));
}
else
print(wiz_type);
}
////////////////////////////////////////////////////////////////////////////////
// Processor choice page
////////////////////////////////////////////////////////////////////////////////
function OnEnter_processorChoice(fwd)
{
if (fwd)
{
Wizard.SetComboboxSelection(_T("comboboxProc"), ConfigManager.Read(_T("/avr_project_wizard/processor"), 0));
}
return true;
}
function OnLeave_processorChoice(fwd)
{
if (fwd)
{
Processor = Wizard.GetComboboxStringSelection(_T("comboboxProc"));
AvrHex = Wizard.IsCheckboxChecked(_T("checkboxHex"));
AvrSrec = Wizard.IsCheckboxChecked(_T("checkboxSrec"));
AvrBin = Wizard.IsCheckboxChecked(_T("checkboxBin"));
AvrExt = Wizard.IsCheckboxChecked(_T("checkboxExt"));
AvrMap = Wizard.IsCheckboxChecked(_T("checkboxMap"));
AvrLss = Wizard.IsCheckboxChecked(_T("checkboxLss"));
AvrExtMem = Wizard.IsCheckboxChecked(_T("checkboxExtMem"));
AvrExtMemAddr = Wizard.GetTextControlValue(_T("textctrlExtMem"));
AvrSize = Wizard.IsCheckboxChecked(_T("checkboxAvrSize"));
AvrF_CPU = Wizard.IsCheckboxChecked(_T("checkboxF_CPU"));
AvrF_CPUValue = Wizard.GetTextControlValue(_T("textctrlF_CPU"));
ConfigManager.Write(_T("/avr_project_wizard/processor"), Wizard.GetComboboxSelection(_T("comboboxProc")));
}
return true;
}
////////////////////////////////////////////////////////////////////////////////
// Processor choice page
////////////////////////////////////////////////////////////////////////////////
function OnLeave_programmerChoice(fwd)
{
if (fwd)
{
Programmer = Wizard.GetComboboxStringSelection(_T("comboboxProg"));
Debugger = Wizard.GetComboboxStringSelection(_T("comboboxDbgr"));
DebuggerCon = Wizard.GetComboboxStringSelection(_T("comboboxDbgrCon"));
}
return true;
}
// table with information about fuse bytes
function GetFuseBytes()
{
local part = Processor;
local parts = ::wxArrayString();
local fuses = ::wxArrayString();
parts.Add(_T("at43usb320"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at43usb355"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at76c711"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at86rf401"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at90c8534"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at90can128"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90can32"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90can64"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm161"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm2"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm216"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm2b"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm3"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm316"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm3b"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90pwm81"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90s1200"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s2313"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s2323"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s2333"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("at90s2343"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s4414"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s4433"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s4434"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s8515"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90s8535"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("at90scr100"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb1286"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb1287"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb162"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb646"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb647"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at90usb82"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("at94k"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("ata6289"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega103"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega128"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega1280"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega1281"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega1284p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega128rfa1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega16"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega161"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega162"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega163"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega164a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega164p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega165"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega165a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega165p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega168"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega168a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega168p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega169"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega169a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega169p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega169pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega16a"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega16hva"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("atmega16hva2"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega16hvb"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega16hvbrevb"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega16m1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega16u2"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega16u4"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega2560"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega2561"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega323"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega324a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega324p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega324pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega325"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3250"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3250a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3250p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3250pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega325a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega325p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega325pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega328"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega328p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega329"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3290"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3290a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3290p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega3290pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega329a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega329p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega329pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32c1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32hvb"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega32hvbrevb"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega32m1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32u2"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32u4"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega32u6"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega406"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega48"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega48a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega48p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega48pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega64"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega640"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega644"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega644a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega644p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega644pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega645"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6450"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6450a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6450p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega645a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega645p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega649"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6490"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6490a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega6490p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega649a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega649p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega64c1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega64hve"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega64m1"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega8"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega8515"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega8535"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("atmega88"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega88a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega88p"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega88pa"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("atmega8hva"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("atmega8u2"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny10"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("attiny11"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("attiny12"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("attiny13"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("attiny13a"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("attiny15"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("attiny1634"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("attiny167"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny20"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("attiny22"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("attiny2313"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny2313a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny24"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny24a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny25"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny26"),1); fuses.Add(_T("[LOW:HIGH]"),1);
parts.Add(_T("attiny261"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny261a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny28"),1); fuses.Add(_T("[LOW]"),1);
parts.Add(_T("attiny4"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("attiny40"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("attiny4313"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny43u"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny44"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny44a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny45"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny461"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny461a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny48"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny5"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("attiny84"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny84a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny85"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny861"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny861a"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny87"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny88"),1); fuses.Add(_T("[LOW:HIGH:EXTENDED]"),1);
parts.Add(_T("attiny9"),1); fuses.Add(_T("[BYTE0]"),1);
parts.Add(_T("atxmega128a1"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega128a1u"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega128a3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega128b1"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("atxmega128d3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega16a4"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega16d4"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega16x1"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("atxmega192a3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega192d3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega256a3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega256a3b"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega256a3bu"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("atxmega256d3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega32a4"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega32d4"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega32x1"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("atxmega64a1"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega64a1u"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("atxmega64a3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("atxmega64d3"),1); fuses.Add(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]"),1);
parts.Add(_T("avr1"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr2"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr25"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr3"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr31"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr35"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr4"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr5"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr51"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avr6"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrtiny10"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega1"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega2"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega3"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega4"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega5"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega6"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("avrxmega7"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("m3000"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("m3000f"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("m3000s"),1); fuses.Add(_T("[]"),1);
parts.Add(_T("m3001b"),1); fuses.Add(_T("[]"),1);
part = part.Lower();
for ( local i = 0 ; i < parts.GetCount() ; i+=1)
{
if ( part.Matches( parts.Item(i) ) )
return fuses.Item(i);
}
return _T("[]");
}
// -----------------------------------------------------------------------------
// each time, return a string of the form "filename.ext;contents"
// you can change the return string based on <file_index>
// return an empty string to denote that no more files are to be generated
function GetGeneratedFile(file_index)
{
if (file_index == 0)
{
local path = Wizard.FindTemplateFile(_T("avr/files/main.c"));
return _T("main.c") + _T(";") + IO.ReadFileContents(path);
}
else if ( file_index == 1)
{
if (AvrExt)
{
local fuses = GetFuseBytes();
local path = ::wxString();
if (fuses.Matches(_T("[LOW]")) )
path = Wizard.FindTemplateFile(_T("avr/files/FuseLow.c"));
else if (fuses.Matches(_T("[LOW:HIGH]")) )
path = Wizard.FindTemplateFile(_T("avr/files/FuseHigh.c"));
else if (fuses.Matches(_T("[LOW:HIGH:EXTENDED]")) )
path = Wizard.FindTemplateFile(_T("avr/files/FuseExt.c"));
else if (fuses.Matches(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]")) )
path = Wizard.FindTemplateFile(_T("avr/files/FuseFuse0to4.c"));
else if (fuses.Matches(_T("[BYTE0]")))
Message(_("This processor has no fuses."), _("Warning"), wxICON_WARNING);
else if (fuses.Matches(_T("[]")) )
Message(_("Don't know how to generate fuses section for this processor."), _("Warning"),
wxICON_WARNING);
if (!path.IsEmpty())
return _T("fuse.c") + _T(";") + IO.ReadFileContents(path);
}
}
return _T(""); // no more generated files
}
function GetFilesDir()
{
local result = _T("");
return result;
}
// setup the already created project
function SetupProject(project)
{
// Linker options
local lo_map = ::wxString();
local lo_extmem = ::wxString();
// Post Build steps
local pb_avrsize = ::wxString();
local pb_eephex = ::wxString();
local pb_fusehex = ::wxString();
local pb_lockhex = ::wxString();
local pb_sighex = ::wxString();
local pb_hex = ::wxString();
local pb_lfshex = ::wxString();
local pb_hfshex = ::wxString();
local pb_efshex = ::wxString();
local pb_eepbin = ::wxString();
local pb_fusebin = ::wxString();
local pb_lockbin = ::wxString();
local pb_sigbin = ::wxString();
local pb_bin = ::wxString();
local pb_eepsrec = ::wxString();
local pb_fusesrec = ::wxString();
local pb_locksrec = ::wxString();
local pb_sigsrec = ::wxString();
local pb_srec = ::wxString();
local pb_lss = ::wxString();
local AvrExtFuse = AvrExt;
local fuses = GetFuseBytes();
if (fuses.Matches(_T("[BYTE0]")))
AvrExtFuse = false;
if (fuses.Matches(_T("[]")) )
AvrExtFuse = false;
// Post build commands
pb_eephex = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).eep");
pb_fusehex = _T("avr-objcopy --no-change-warnings -j .fuse --change-section-lma .fuse=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse");
pb_lockhex = _T("avr-objcopy --no-change-warnings -j .lock --change-section-lma .lock=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lock");
pb_sighex = _T("avr-objcopy --no-change-warnings -j .signature --change-section-lma .signature=0 -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).sig");
pb_hex = _T("avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).hex");
pb_lfshex = _T("srec_cat $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse -Intel -crop 0x00 0x01 -offset 0x00 -O $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lfs -Intel ");
pb_hfshex = _T("srec_cat $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse -Intel -crop 0x01 0x02 -offset -0x01 -O $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).hfs -Intel ");
pb_efshex = _T("srec_cat $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse -Intel -crop 0x02 0x03 -offset -0x02 -O $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).efs -Intel ");
pb_eepbin = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).eep");
pb_fusebin = _T("avr-objcopy --no-change-warnings -j .fuse --change-section-lma .fuse=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse");
pb_lockbin = _T("avr-objcopy --no-change-warnings -j .lock --change-section-lma .lock=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lock");
pb_sigbin = _T("avr-objcopy --no-change-warnings -j .signature --change-section-lma .signature=0 -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).sig");
pb_bin = _T("avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O binary $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).bin");
pb_eepsrec = _T("avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).eep");
pb_fusesrec = _T("avr-objcopy --no-change-warnings -j .fuse --change-section-lma .fuse=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).fuse");
pb_locksrec = _T("avr-objcopy --no-change-warnings -j .lock --change-section-lma .lock=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lock");
pb_sigsrec = _T("avr-objcopy --no-change-warnings -j .signature --change-section-lma .signature=0 -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).sig");
pb_srec = _T("avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O srec $(TARGET_OUTPUT_FILE) $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).srec");
if ( PLATFORM == PLATFORM_MSW )
pb_lss = _T("cmd /c \"avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lss\"");
else
pb_lss = _T("avr-objdump -h -S $(TARGET_OUTPUT_FILE) > $(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).lss");
// avr-size is compiled with patches under winavr to produce a fancy output
// which displays the percentage of memory used by the application for the
// target mcu. However, this option is not available under standard binutils
// avr-size.
if (PLATFORM_MSW == PLATFORM)
pb_avrsize = _T("avr-size --mcu=") + Processor + _T(" --format=avr $(TARGET_OUTPUT_FILE)");
else
pb_avrsize = _T("avr-size $(TARGET_OUTPUT_FILE)");
// Setup the linker options
lo_map = _T("-Wl,-Map=$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).map,--cref");
// Get external memory start address
lo_extmem = _T("-Wl,--section-start=.data=") + AvrExtMemAddr;
// Project compiler options
WarningsOn(project, Wizard.GetCompilerID());
project.AddCompilerOption(_T("-mmcu=") + Processor);
if (AvrF_CPU)
project.AddCompilerOption(_T("-DF_CPU=") + AvrF_CPUValue);
// Project linker options
project.AddLinkerOption(_T("-mmcu=") + Processor);
if (AvrMap)
project.AddLinkerOption(lo_map);
if (AvrExtMem)
project.AddLinkerOption(lo_extmem);
// Project post-build steps
if (AvrSize)
project.AddCommandsAfterBuild(pb_avrsize);
if (AvrLss)
project.AddCommandsAfterBuild(pb_lss);
if (AvrHex)
{
project.AddCommandsAfterBuild(pb_hex);
project.AddCommandsAfterBuild(pb_eephex);
if (AvrExt)
{
project.AddCommandsAfterBuild(pb_lockhex);
project.AddCommandsAfterBuild(pb_sighex);
if (AvrExtFuse)
{
project.AddCommandsAfterBuild(pb_fusehex);
if (fuses.Matches(_T("[LOW]")) )
{
project.AddCommandsAfterBuild(pb_lfshex);
}
else if (fuses.Matches(_T("[LOW:HIGH]")) )
{
project.AddCommandsAfterBuild(pb_lfshex);
project.AddCommandsAfterBuild(pb_hfshex);
}
else if (fuses.Matches(_T("[LOW:HIGH:EXTENDED]")) )
{
project.AddCommandsAfterBuild(pb_lfshex);
project.AddCommandsAfterBuild(pb_hfshex);
project.AddCommandsAfterBuild(pb_efshex);
}
//else if (fuses.Matches(_T("[FUSE0:FUSE1:FUSE2:FUSE3:FUSE4]")) )
}
}
}
if (AvrSrec)
{
project.AddCommandsAfterBuild(pb_srec);
project.AddCommandsAfterBuild(pb_eepsrec);
if (AvrExt)
{
project.AddCommandsAfterBuild(pb_locksrec);
project.AddCommandsAfterBuild(pb_sigsrec);
if (AvrExtFuse)
project.AddCommandsAfterBuild(pb_fusesrec);
}
}
if (AvrBin)
{
project.AddCommandsAfterBuild(pb_bin);
project.AddCommandsAfterBuild(pb_eepbin);
if (AvrExt)
{
project.AddCommandsAfterBuild(pb_lockbin);
project.AddCommandsAfterBuild(pb_sigbin);
if (AvrExtFuse)
project.AddCommandsAfterBuild(pb_fusebin);
}
}
// Debug build target
local target = project.GetBuildTarget(Wizard.GetDebugName());
if (!IsNull(target))
{
target.SetTargetType(ttNative);
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
target.SetOutputFilename(Wizard.GetDebugOutputDir() + Wizard.GetProjectName() + _T(".elf"));
DebugSymbolsOn(target, Wizard.GetCompilerID());
}
// Release build target
target = project.GetBuildTarget(Wizard.GetReleaseName());
if (!IsNull(target))
{
target.SetTargetType(ttNative);
target.SetTargetFilenameGenerationPolicy(tgfpPlatformDefault, tgfpNone);
target.SetOutputFilename(Wizard.GetReleaseOutputDir() + Wizard.GetProjectName() + _T(".elf"));
OptimizationsOn(target, Wizard.GetCompilerID());
}
project.SetVar(_T("MCU"), Processor, false);
//project.SetVar(_T("PROGRAMMER"), Programmer, false);
//project.SetVar(_T("DEBUGGER"), Debugger, false);
//project.SetVar(_T("DEBUGGER_CONNECTION"), DebuggerCon, false);
return true;
}