AvalonStudio.Toolchains.Clang.ArmGCCLinkTemplate.TransformText C# (CSharp) Method

TransformText() public method

Create the template output
public TransformText ( ) : string
return string
		public virtual string TransformText()
		{
			Write("/**\r\n *\t\tVital Element Studios - LinkerScript\r\n *\r\n **/\r\n \r\nOUTPUT_FORMAT (\"elf32" +
			      "-littlearm\", \"elf32-bigarm\", \"elf32-littlearm\")\r\n\r\nMEMORY\r\n{\r\n\tFLASH (rx)  : ORI" +
			      "GIN = ");

#line 15 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRom1Start)));

#line default
#line hidden
			Write(", LENGTH = ");

#line 15 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRom1Size)));

#line default
#line hidden
			Write("\r\n\tRAM (rwx) : ORIGIN = ");

#line 16 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRam1Start)));

#line default
#line hidden
			Write(", LENGTH = ");

#line 16 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRam1Size)));

#line default
#line hidden
			Write("\r\n\tRAM1 (rwx) : ORIGIN = 0xD0000000, LENGTH = 0x00800000\r\n}\r\n\r\n_eram = ");

#line 20 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRam1Start)));

#line default
#line hidden
			Write(" + ");

#line 20 "G:\development\repos\AvalonStudio\AvalonStudio\AvalonStudio.Toolchains.Clang\ArmGCCLinkTemplate.tt"
			Write(ToStringHelper.ToStringWithCulture(string.Format("0x{0:X8}", linkSettings.InRam1Size)));

#line default
#line hidden
			Write(
				";\r\n\r\nSECTIONS\r\n{\r\n\t.text :\r\n\t{\r\n\t\tKEEP(*(.interrupt_vector))\r\n\t\t*(.text*)\r\n\t\t\r\n\t\t" +
				"KEEP(*(.init))\r\n\t\tKEEP(*(.fini))\r\n\t\t\r\n\t\t/* .ctors */\r\n\t\t*crtbegin.o(.ctors)\r\n\t\t*" +
				"crtbegin?.o(.ctors)\r\n\t\t*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)\r\n\t\t*(SORT(.c" +
				"tors.*))\r\n\t\t*(.ctors)\r\n\t\t\r\n\t\t/* .dtors */\r\n\t\t*crtbegin.o(.dtors)\r\n\t\t*crtbegin?.o" +
				"(.dtors)\r\n\t\t*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)\r\n\t\t*(SORT(.dtors.*))\r\n\t" +
				"\t*(.dtors)\r\n\t\t\r\n\t\t*(.rodata*)\r\n\t\t\r\n\t\tKEEP(*(.eh_fram e*))\r\n\t} > FLASH\r\n    \r\n   " +
				" \t.ARM.extab : \r\n\t{\r\n\t\t*(.ARM.extab* .gnu.linkonce.armextab.*)\r\n\t} > FLASH \r\n\t\r\n" +
				"\t__exidx_start = .;\r\n\t.ARM.exidx :\r\n\t{\r\n\t\t*(.ARM.exidx* .gnu.linkonce.armexidx.*" +
				")\r\n\t} > FLASH \r\n\t__exidx_end = .;\r\n\t__etext = .;\r\n\t\r\n    _data_flash = .;\r\n    \r" +
				"\n    .data : AT ( _data_flash )\r\n\t{\r\n\t\t. = ALIGN(4);\r\n\t\t_data_begin = .;\r\n\t\t*(vt" +
				"able)\r\n\t\t*(.data)\r\n\t\t*(.data*)\r\n\r\n\t\t        . = ALIGN(4);\r\n        /* preinit da" +
				"ta */\r\n        PROVIDE_HIDDEN (__preinit_array_start = .);\r\n        KEEP(*(.prei" +
				"nit_array))\r\n        PROVIDE_HIDDEN (__preinit_array_end = .);\r\n \r\n        . = A" +
				"LIGN(4);\r\n        /* init data */\r\n        PROVIDE_HIDDEN (__init_array_start = " +
				".);\r\n        KEEP(*(SORT(.init_array.*)))\r\n        KEEP(*(.init_array))\r\n       " +
				" PROVIDE_HIDDEN (__init_array_end = .);\r\n \r\n \r\n        . = ALIGN(4);\r\n        /*" +
				" finit data */\r\n        PROVIDE_HIDDEN (__fini_array_start = .);\r\n        KEEP(*" +
				"(SORT(.fini_array.*)))\r\n        KEEP(*(.fini_array))\r\n        PROVIDE_HIDDEN (__" +
				"fini_array_end = .);\r\n \r\n        KEEP(*(.jcr*))\r\n\r\n\t\t. = ALIGN(4);\r\n\t\t_data_end " +
				"= .;\r\n\t} > RAM\r\n    \r\n    .bss :\r\n\t{\r\n\t\t_bss_begin = .;\r\n\t\t__bss_start__ = _bss_" +
				"begin;\r\n\t\t*(.bss)\r\n\t\t*(.bss*)\r\n\t\t*(COMMON)\r\n\t\t. = ALIGN(4);\r\n\t\t_bss_end = .;\r\n\t\t" +
				"__bss_end__ = _bss_end;\r\n\t} > RAM\r\n}\r\n\r\n/* end of allocated ram _end */\r\nPROVIDE" +
				"( _HEAP_START = _bss_end );\r\n\r\n/* end of the heap -> align 8 byte */ \r\nPROVIDE (" +
				" _HEAP_END = ALIGN(ORIGIN(RAM) + LENGTH(RAM) ,8) );\r\n\r\n\r\nENTRY(Default_Reset_Han" +
				"dler);\r\n");
			return GenerationEnvironment.ToString();
		}
	}

Usage Example

Example #1
0
        private void GenerateLinkerScript(IStandardProject project)
        {
            var settings = GetSettings(project).LinkSettings;
            var template = new ArmGCCLinkTemplate(settings);

            var linkerScript = GetLinkerScriptLocation(project);

            if (System.IO.File.Exists(linkerScript))
            {
                System.IO.File.Delete(linkerScript);
            }

            var sw = System.IO.File.CreateText(linkerScript);

            sw.Write(template.TransformText());

            sw.Close();
        }
All Usage Examples Of AvalonStudio.Toolchains.Clang.ArmGCCLinkTemplate::TransformText
ArmGCCLinkTemplate