Advertisement
uaa

OpenGD77 with picolibc

uaa
Mar 11th, 2022
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.97 KB | None | 0 0
  1. diff -uNpr OpenGD77.orig/firmware/Makefile OpenGD77.pico/firmware/Makefile
  2. --- OpenGD77.orig/firmware/Makefile 2022-03-07 22:23:04.098349249 +0900
  3. +++ OpenGD77.pico/firmware/Makefile 2022-03-11 22:18:25.188364563 +0900
  4. @@ -173,14 +173,18 @@ CONFIGS := $(TARGET) -Wall -fno-common
  5. -fdata-sections -ffreestanding -fno-builtin \
  6. -fmerge-constants -fstack-usage
  7.  
  8. -REDLIB := 0
  9. -ifeq ($(REDLIB), 1)
  10. +LIBC := picolibc
  11. +ifeq ("$(LIBC)","redlib")
  12. DEFINES += -D__REDLIB__
  13. LINKERSCRIPT = ../linkerscripts/firmware.ld
  14. CONFIGS += -specs=redlib.specs
  15. -else
  16. +else ifeq ("$(LIBC)","newlib")
  17. DEFINES += -D__NEWLIB_H__
  18. LINKERSCRIPT = ../linkerscripts/firmware_newlib.ld
  19. +else ifeq ("$(LIBC)","picolibc")
  20. + DEFINES += -D__PICOLIBC_H__
  21. + LINKERSCRIPT = ../linkerscripts/firmware_picolibc.ld
  22. + CONFIGS += -specs=picolibc.specs
  23. endif
  24.  
  25.  
  26. @@ -205,7 +209,7 @@ CFLAGS := $(ALL_INC) -mcpu=cortex-m4 -
  27. AFLAGS := -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb
  28. LFLAGS := -nostdlib -Xlinker -Map="firmware.map" -Xlinker --gc-sections -Xlinker \
  29. -print-memory-usage -Xlinker --sort-section=alignment -mcpu=cortex-m4 \
  30. - -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -T $(LINKERSCRIPT)
  31. + -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -T $(LINKERSCRIPT) $(CONFIGS)
  32.  
  33. DFLAGS := -MMD -MP
  34.  
  35. diff -uNpr OpenGD77.orig/firmware/linkerscripts/firmware_library_picolibc.ld OpenGD77.pico/firmware/linkerscripts/firmware_library_picolibc.ld
  36. --- OpenGD77.orig/firmware/linkerscripts/firmware_library_picolibc.ld 1970-01-01 09:00:00.000000000 +0900
  37. +++ OpenGD77.pico/firmware/linkerscripts/firmware_library_picolibc.ld 2022-03-11 22:18:21.629367208 +0900
  38. @@ -0,0 +1,10 @@
  39. +/*
  40. + * Generated Linker script file for MK22FN512xxx12
  41. + */
  42. +
  43. +GROUP (
  44. + "libgcc.a"
  45. + "libsemihost.a"
  46. + "libc.a"
  47. + "libm.a"
  48. +)
  49. diff -uNpr OpenGD77.orig/firmware/linkerscripts/firmware_picolibc.ld OpenGD77.pico/firmware/linkerscripts/firmware_picolibc.ld
  50. --- OpenGD77.orig/firmware/linkerscripts/firmware_picolibc.ld 1970-01-01 09:00:00.000000000 +0900
  51. +++ OpenGD77.pico/firmware/linkerscripts/firmware_picolibc.ld 2022-03-11 07:21:14.789809084 +0900
  52. @@ -0,0 +1,188 @@
  53. +/*
  54. + * Generated Linker script file for MK22FN512xxx12
  55. + */
  56. +
  57. +INCLUDE "../linkerscripts/firmware_library_picolibc.ld"
  58. +INCLUDE "../linkerscripts/firmware_memory.ld"
  59. +
  60. +ENTRY(ResetISR)
  61. +
  62. +SECTIONS
  63. +{
  64. + /* MAIN TEXT SECTION */
  65. + .text_start : ALIGN(4)
  66. + {
  67. + FILL(0xff)
  68. + __vectors_start__ = ABSOLUTE(.) ;
  69. + KEEP(*(.isr_vector))
  70. + /* Global Section Table */
  71. + . = ALIGN(4) ;
  72. + __section_table_start = .;
  73. + __data_section_table = .;
  74. + LONG(LOADADDR(.data));
  75. + LONG( ADDR(.data));
  76. + LONG( SIZEOF(.data));
  77. + LONG(LOADADDR(.data_RAM2));
  78. + LONG( ADDR(.data_RAM2));
  79. + LONG( SIZEOF(.data_RAM2));
  80. + __data_section_table_end = .;
  81. + __bss_section_table = .;
  82. + LONG( ADDR(.bss));
  83. + LONG( SIZEOF(.bss));
  84. + LONG( ADDR(.bss_RAM2));
  85. + LONG( SIZEOF(.bss_RAM2));
  86. + __bss_section_table_end = .;
  87. + __section_table_end = . ;
  88. + /* End of Global Section Table */
  89. +
  90. + *(.after_vectors*)
  91. + } > PROGRAM_FLASH
  92. +
  93. + .codec_bin_section_1 : ALIGN(4)
  94. + {
  95. + . = ABSOLUTE(0x4400) ;
  96. + *(.codec_bin_section_1)
  97. + KEEP(*(.codec_bin_section_1))
  98. + } > PROGRAM_FLASH
  99. +
  100. + .text_main : ALIGN(4)
  101. + {
  102. + *(.text*)
  103. + *(.rodata .rodata.* .constdata .constdata.*)
  104. + . = ALIGN(4);
  105. + _etext = . ;
  106. + } > PROGRAM_FLASH
  107. +
  108. +
  109. +
  110. +
  111. + /* Main DATA section (SRAM_LOWER) */
  112. + .data : ALIGN(4)
  113. + {
  114. + FILL(0xff)
  115. + _data = . ;
  116. + *(vtable)
  117. + *(.ramfunc*)
  118. + *(.data*)
  119. + . = ALIGN(4) ;
  120. + _edata = . ;
  121. + } > SRAM_LOWER AT>PROGRAM_FLASH
  122. +
  123. + /* DATA section for SRAM_LOWER */
  124. +
  125. + .data_RAM2 : ALIGN(4)
  126. + {
  127. + FILL(0xff)
  128. + PROVIDE(__start_data_RAM2 = .) ;
  129. + PROVIDE(__start_data_SRAM_LOWER = .) ;
  130. + *(.ramfunc.$RAM2)
  131. + *(.ramfunc.$SRAM_LOWER)
  132. + *(.data.$RAM2)
  133. + *(.data.$SRAM_LOWER)
  134. + *(.data.$RAM2.*)
  135. + *(.data.$SRAM_LOWER.*)
  136. + . = ALIGN(4) ;
  137. + PROVIDE(__end_data_RAM2 = .) ;
  138. + PROVIDE(__end_data_SRAM_LOWER = .) ;
  139. + } > SRAM_LOWER AT>PROGRAM_FLASH
  140. +
  141. +
  142. +
  143. + /* MAIN DATA SECTION */
  144. + .uninit_RESERVED : ALIGN(4)
  145. + {
  146. + KEEP(*(.bss.$RESERVED*))
  147. + . = ALIGN(4) ;
  148. + _end_uninit_RESERVED = .;
  149. + } > SRAM_UPPER
  150. +
  151. + /* MAIN DATA SECTION */
  152. + .uninit_RESERVED_RAM2 : ALIGN(4)
  153. + {
  154. + KEEP(*(.bss.$RESERVED*))
  155. + . = ALIGN(4) ;
  156. + _end_uninit_RESERVED = .;
  157. + } > SRAM_LOWER
  158. +
  159. + .codec_bin_section_2 : ALIGN(4)
  160. + {
  161. + . = ABSOLUTE(0x54000) ;
  162. + *(.codec_bin_section_2)
  163. + KEEP(*(.codec_bin_section_2))
  164. + } > PROGRAM_FLASH
  165. +
  166. + /* BSS section for SRAM_LOWER */
  167. + .bss_RAM2 : ALIGN(4)
  168. + {
  169. + PROVIDE(__start_bss_RAM2 = .) ;
  170. + *(.bss.$RAM2*)
  171. + *(.bss.$SRAM_LOWER*)
  172. + *(COMMON)
  173. + . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */
  174. + PROVIDE(__end_bss_RAM2 = .) ;
  175. + } > SRAM_LOWER
  176. +
  177. +
  178. + /* MAIN BSS SECTION */
  179. + .bss : ALIGN(4)
  180. + {
  181. + _bss = .;
  182. + *(.bss*)
  183. + *(COMMON)
  184. + . = ALIGN(4) ;
  185. + _ebss = .;
  186. + PROVIDE(end = .);
  187. + } > SRAM_UPPER
  188. +
  189. + /* NOINIT section for SRAM_LOWER */
  190. + .noinit_RAM2 (NOLOAD) : ALIGN(4)
  191. + {
  192. + *(.noinit.$RAM2*)
  193. + *(.noinit.$SRAM_LOWER*)
  194. + . = ALIGN(4) ;
  195. + } > SRAM_LOWER
  196. +
  197. +
  198. + /* DEFAULT NOINIT SECTION */
  199. + .noinit (NOLOAD): ALIGN(4)
  200. + {
  201. + _noinit = .;
  202. + *(.noinit*)
  203. + . = ALIGN(4) ;
  204. + _end_noinit = .;
  205. + } > SRAM_UPPER
  206. +
  207. + /* Reserve and place Heap within memory map */
  208. + _HeapSize = 0x1000;
  209. + .heap : ALIGN(4)
  210. + {
  211. + _pvHeapStart = .;
  212. + . += _HeapSize;
  213. + . = ALIGN(4);
  214. + _pvHeapLimit = .;
  215. + } > SRAM_LOWER
  216. +
  217. + _StackSize = 0x1000;
  218. + /* Reserve space in memory for Stack */
  219. + .heap2stackfill :
  220. + {
  221. + . += _StackSize;
  222. + } > SRAM_LOWER
  223. +
  224. + /* Locate actual Stack in memory map */
  225. + .stack ORIGIN(SRAM_LOWER) + LENGTH(SRAM_LOWER) - _StackSize - 0: ALIGN(4)
  226. + {
  227. + _vStackBase = .;
  228. + . = ALIGN(4);
  229. + _vStackTop = . + _StackSize;
  230. + } > SRAM_LOWER
  231. +
  232. + /* Provide basic symbols giving location and size of main text
  233. + * block, including initial values of RW data sections. Note that
  234. + * these will need extending to give a complete picture with
  235. + * complex images (e.g multiple Flash banks).
  236. + */
  237. + _image_start = LOADADDR(.text_start);
  238. + _image_end = LOADADDR(.codec_bin_section_2) + SIZEOF(.codec_bin_section_2);
  239. + _image_size = _image_end - _image_start;
  240. +}
  241.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement