tingox / msp430-test-g2231

Apache License 2.0
0 stars 0 forks source link

fails to link #1

Open tingox opened 1 year ago

tingox commented 1 year ago

build completes, but linking fails

[C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231] $ cargo build
   Compiling compiler_builtins v0.1.85
   Compiling core v0.0.0 (C:\Users\torfinn.ingolfsen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core)
   Compiling proc-macro2 v1.0.50
   Compiling unicode-ident v1.0.6
   Compiling quote v1.0.23
   Compiling rand_core v0.6.4
   Compiling syn v1.0.107
   Compiling msp430-rt v0.4.0
   Compiling msp430g2231 v0.2.0 (https://github.com/tingox/msp430g2231#89bbcd07)
   Compiling rand v0.8.5
   Compiling rand_xoshiro v0.6.0
   Compiling msp430-rt-macros v0.4.0
   Compiling rustc-std-workspace-core v1.99.0 (C:\Users\torfinn.ingolfsen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-core)
   Compiling critical-section v1.1.1
   Compiling vcell v0.1.3
   Compiling msp430 v0.4.1
   Compiling panic-msp430 v0.4.0
   Compiling msp430-test-g2231 v0.1.0 (C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231)
error: linking with `msp430-elf-gcc` failed: exit code: 1
  |
  = note: "msp430-elf-gcc" "C:\\Users\\TORFIN~1.ING\\AppData\\Local\\Temp\\rustc15mDp3\\symbols.o" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\msp430_test_g2231-61631bf75d8085f8.2k4jpbeaelp158da.rcgu.o" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\debug\\deps" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\build\\msp430-rt-234a64ec35878595\\out" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\build\\msp430g2231-1482fcf1a53cd1f2\\out" "-L" "C:\\Users\\torfinn.ingolfsen\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\msp430-none-elf\\lib" "-Wl,-Bstatic" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430g2231-4e5510fabfa9328a.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libvcell-75d629977897d950.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430_rt-557135b41f274101.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libpanic_msp430-05e6413d1ec79a2e.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430-4b1e066d2184c51c.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcritical_section-96c96ff7585a30f8.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\librustc_std_workspace_core-d189d6ef5597a167.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcore-0d5e79c439c97b38.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcompiler_builtins-4b7734987d075df6.rlib" "-Wl,-Bdynamic" "-L" "C:\\Users\\torfinn.ingolfsen\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\msp430-none-elf\\lib" "-o" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\msp430_test_g2231-61631bf75d8085f8" "-nodefaultlibs" "-Tlink.x" "-nostartfiles" "-mcpu=msp430" "-lmul_none" "-lgcc"
  = note: c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe:
          ERROR(msp430-rt): The VECTORS memory region must end at address 0x10000. Check memory.x
          c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe:
          ERROR(msp430-rt): .vector_table is shorter than expected.
          Possible solutions, from most likely to less likely:
          - Link to a svd2rust generated pac crate, if you are not
          - Fix _sinterrupts in memory.x; it doesn't match the number of interrupts provided by the
            pac crate
          - Disable the 'device' feature of msp430-rt to build a generic application; a dependency
          may be enabling it

          collect2.exe: error: ld returned 1 exit status

error: could not compile `msp430-test-g2231` due to previous error
tingox commented 1 year ago

If I change memory.x to have just 15 interrupt vectors, like so

[C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231] $ type memory.x
MEMORY
{
  /* msp430g2231: 128 bytes RAM, 2 kByte flash */
  /* These values are correct for the msp430g2553 device. You will need to
     modify these values if using a different device. Room must be reserved
     for interrupt vectors plus reset vector and the end of the first 64kB
     of address space. */
  RAM : ORIGIN = 0x0200, LENGTH = 0x0080
  ROM : ORIGIN = 0xF800, LENGTH = 0x07C0
  VECTORS : ORIGIN = 0xFFE0, LENGTH = 0x1F
}

/* Stack begins at the end of RAM:
   _stack_start = ORIGIN(RAM) + LENGTH(RAM); */

/* TODO: Code (and data?) above 64kB mark, which is supported even without
   using MSP430X mode. */

build fails too

[C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231] $ cargo clean
   Compiling compiler_builtins v0.1.85
   Compiling core v0.0.0 (C:\Users\torfinn.ingolfsen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core)
   Compiling proc-macro2 v1.0.50
   Compiling unicode-ident v1.0.6
   Compiling quote v1.0.23
   Compiling syn v1.0.107
   Compiling rand_core v0.6.4
   Compiling msp430-rt v0.4.0
   Compiling msp430g2231 v0.2.0 (https://github.com/tingox/msp430g2231#89bbcd07)
   Compiling rand_xoshiro v0.6.0
   Compiling rand v0.8.5
   Compiling msp430-rt-macros v0.4.0
   Compiling rustc-std-workspace-core v1.99.0 (C:\Users\torfinn.ingolfsen\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\rustc-std-workspace-core)
   Compiling critical-section v1.1.1
   Compiling vcell v0.1.3
   Compiling msp430 v0.4.1
   Compiling panic-msp430 v0.4.0
   Compiling msp430-test-g2231 v0.1.0 (C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231)
error: linking with `msp430-elf-gcc` failed: exit code: 1
  |
  = note: "msp430-elf-gcc" "C:\\Users\\TORFIN~1.ING\\AppData\\Local\\Temp\\rustcrKGxwR\\symbols.o" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\msp430_test_g2231-61631bf75d8085f8.2k4jpbeaelp158da.rcgu.o" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\debug\\deps" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\build\\msp430-rt-234a64ec35878595\\out" "-L" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\build\\msp430g2231-1482fcf1a53cd1f2\\out" "-L" "C:\\Users\\torfinn.ingolfsen\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\msp430-none-elf\\lib" "-Wl,-Bstatic" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430g2231-4e5510fabfa9328a.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libvcell-75d629977897d950.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430_rt-557135b41f274101.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libpanic_msp430-05e6413d1ec79a2e.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libmsp430-4b1e066d2184c51c.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcritical_section-96c96ff7585a30f8.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\librustc_std_workspace_core-d189d6ef5597a167.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcore-0d5e79c439c97b38.rlib" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\libcompiler_builtins-4b7734987d075df6.rlib" "-Wl,-Bdynamic" "-L" "C:\\Users\\torfinn.ingolfsen\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\msp430-none-elf\\lib" "-o" "C:\\Users\\torfinn.ingolfsen\\OneDrive - Inventas AS\\Documents\\Inventas\\0_faglig\\utvikling\\rust\\embedded\\msp430-test-g2231\\target\\msp430-none-elf\\debug\\deps\\msp430_test_g2231-61631bf75d8085f8" "-nodefaultlibs" "-Tlink.x" "-nostartfiles" "-mcpu=msp430" "-lmul_none" "-lgcc"
  = note: c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe: address 0x10000 of C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231\target\msp430-none-elf\debug\deps\msp430_test_g2231-61631bf75d8085f8 section `.vector_table' is not within region `VECTORS'
          c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe: address 0x10000 of C:\Users\torfinn.ingolfsen\OneDrive - Inventas AS\Documents\Inventas\0_faglig\utvikling\rust\embedded\msp430-test-g2231\target\msp430-none-elf\debug\deps\msp430_test_g2231-61631bf75d8085f8 section `.vector_table' is not within region `VECTORS'
          c:/ti/msp430-gcc/bin/../lib/gcc/msp430-elf/9.3.1/../../../../msp430-elf/bin/ld.exe:
          ERROR(msp430-rt): The VECTORS memory region must end at address 0x10000. Check memory.x
          collect2.exe: error: ld returned 1 exit status

error: could not compile `msp430-test-g2231` due to previous error
tingox commented 1 year ago

I fixed memory.x like so

tingo@kg-core1:~/personal/projects/2023/rust/embedded/msp430/msp430-test-g2231 $ cat memory.x 
MEMORY
{
  /* msp430g2231: 128 bytes RAM, 2 kByte flash */
  /* vectors run from 0xFFE0 to 0xFFFF inclusive */
  /* These values are correct for the msp430g2553 device. You will need to
     modify these values if using a different device. Room must be reserved
     for interrupt vectors plus reset vector and the end of the first 64kB
     of address space. */
  RAM : ORIGIN = 0x0200, LENGTH = 0x0080
  ROM : ORIGIN = 0xF800, LENGTH = 0x07C0
  VECTORS : ORIGIN = 0xFFE0, LENGTH = 0x20
}

/* Stack begins at the end of RAM:
   _stack_start = ORIGIN(RAM) + LENGTH(RAM); */

/* TODO: Code (and data?) above 64kB mark, which is supported even without
   using MSP430X mode. */

and now it builds (on FreeBSD)

tingo@kg-core1:~/personal/projects/2023/rust/embedded/msp430/msp430-test-g2231 $ cargo build
   Compiling compiler_builtins v0.1.91
   Compiling core v0.0.0 (/usr/home/tingo/.rustup/toolchains/nightly-x86_64-unknown-freebsd/lib/rustlib/src/rust/library/core)
   Compiling proc-macro2 v1.0.58
   Compiling quote v1.0.27
   Compiling unicode-ident v1.0.8
   Compiling syn v1.0.109
   Compiling rand_core v0.6.4
   Compiling rand v0.8.5
   Compiling rand_xoshiro v0.6.0
   Compiling msp430-rt v0.4.0
   Compiling msp430g2231 v0.2.0 (https://github.com/tingox/msp430g2231#568c39bc)
   Compiling msp430-rt-macros v0.4.0
   Compiling rustc-std-workspace-core v1.99.0 (/usr/home/tingo/.rustup/toolchains/nightly-x86_64-unknown-freebsd/lib/rustlib/src/rust/library/rustc-std-workspace-core)
   Compiling critical-section v1.1.1
   Compiling vcell v0.1.3
   Compiling msp430 v0.4.1
   Compiling panic-msp430 v0.4.0
   Compiling msp430-test-g2231 v0.1.0 (/zs/tingo/personal/projects/2023/rust/embedded/msp430/msp430-test-g2231)
    Finished dev [unoptimized + debuginfo] target(s) in 19.56s