link_descriptor_fpga.ld 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. OUTPUT_ARCH(arm)
  2. ENTRY(_start)
  3. romBase = 0x00201000;
  4. ramBase = 0x00102180;
  5. pll_init_baseaddr = 0x0010DC00;
  6. MEMORY {
  7. ram : ORIGIN = ramBase, LENGTH = 0xBA80
  8. rom : ORIGIN = romBase, LENGTH = 0x1F000
  9. }
  10. SECTIONS {
  11. /* rom region */
  12. . = romBase;
  13. .start ALIGN(4) : {
  14. *(.text.start)
  15. }
  16. . = romBase + 0x01FC;
  17. .rom_info ALIGN(4) : {
  18. *(.data.rom_info)
  19. }
  20. .text ALIGN(4) : {
  21. *(.text)
  22. /* *(.text.*) for get .text.mt_pll_init */
  23. }
  24. .rodata ALIGN(4) : {
  25. *(.rodata)
  26. *(.rodata.*)
  27. }
  28. .data ALIGN(4) : {
  29. *(.data)
  30. *(.data.*)
  31. }
  32. .got ALIGN(4) : {
  33. *(.got)
  34. *(.got.*)
  35. }
  36. .pll_text pll_init_baseaddr : AT (ADDR(.got) + SIZEOF(.got))
  37. {
  38. Image$$PLL_INIT$$Base = . ;
  39. *(.text.mt_pll_init)
  40. Image$$PLL_INIT$$Limit = . ;
  41. }
  42. __load_start_pll_text = LOADADDR (.pll_text);
  43. __load_stop_pll_text = LOADADDR (.pll_text) + SIZEOF (.pll_text);
  44. __boot_end = .;
  45. /* ram region */
  46. . = ramBase;
  47. .bss ALIGN(16) : {
  48. _bss_start = .;
  49. *(.bss)
  50. *(.bss.*)
  51. *(COMMON)
  52. _bss_end = .;
  53. }
  54. .secbuf ALIGN(4) : {
  55. _secbuf_start = .;
  56. *(.secbuf)
  57. _secbuf_end = .;
  58. }
  59. }