1 2 3 4
5
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
37 import xdc.bld.ITarget2;
38
39 /*!
40 * ======== M4F.xdc ========
41 * Embedded Cortex M4F, little endian, bare metal target
42 *
43 * This module defines an embedded bare metal target on Cortex M4F. The target
44 * generates code compatible with the "v7M" architecture.
45 *
46 */
47 metaonly module M4F inherits IM {
48 override readonly config string name = "M4F";
49 override readonly config string suffix = "m4fg";
50 override readonly config string isa = "v7M4";
51
52 override readonly config ITarget2.Command cc = {
53 cmd: "$(rootDir)/bin/$(GCCTARG)-gcc -c -MD -MF $@.dep",
54 opts: "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mabi=aapcs -g"
55 };
56
57 readonly config ITarget2.Command ccBin = {
58 cmd: "bin/arm-none-eabi-gcc -c -MD -MF $@.dep",
59 opts: "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mabi=aapcs -g"
60 };
61
62 override readonly config ITarget2.Command asm = {
63 cmd: "$(rootDir)/bin/$(GCCTARG)-gcc -c -x assembler-with-cpp",
64 opts: "-Wa,-mcpu=cortex-m4 -Wa,-mthumb -Wa,-mfloat-abi=hard -Wa,-mfpu=fpv4-sp-d16 "
65 };
66
67 readonly config ITarget2.Command asmBin = {
68 cmd: "bin/arm-none-eabi-gcc -c -x assembler-with-cpp",
69 opts: "-Wa,-mcpu=cortex-m4 -Wa,-mthumb -Wa,-mfloat-abi=hard -Wa,-mfpu=fpv4-sp-d16 "
70 };
71
72 override config ITarget2.Options lnkOpts = {
73 prefix: "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles -Wl,-static -Wl,--gc-sections ",
74 suffix: "-L$(packageBase)/libs/install-native/$(GCCTARG)/lib/thumb/v7e-m/hard -Wl,--start-group -lgcc -lc -lm -Wl,--end-group --specs=nano.specs -Wl,-Map=$(XDCCFGDIR)/$@.map"
75 };
76
77 /*!
78 * ======== includeOpts ========
79 * Additional user configurable target-specific include path options
80 *
81 * This target uses newlib-nano run-time.
82 */
83 override config string includeOpts = "-I$(packageBase)/libs/install-native/$(GCCTARG)/include/newlib-nano -I$(packageBase)/libs/install-native/$(GCCTARG)/include";
84 }
85 86 87 88
89