Description
I found out that i32 and u32 behaves like i16 and u16
And i64 and u64 like i32 and u32
I wrote the following code to represent the problem:
let mut counter_u32 = 0u32;
let mut counter_u64 = 0u64;
let mut counter_u64_2 = 0u64;
loop {
delay_ms(1000);
counter_u16 = counter_u16.wrapping_add(10000);
counter_u32 = counter_u32.wrapping_add(10000);
counter_u64 = counter_u64.wrapping_add(10000);
counter_u64_2 = counter_u64_2.wrapping_add(1_000_000_000);
ufmt::uwriteln!(&mut serial, "u16: {}", counter_u16).void_unwrap();
ufmt::uwriteln!(&mut serial, "u32: {}", counter_u32).void_unwrap(); //overflow after 65535
ufmt::uwriteln!(&mut serial, "u64>2^16?: {}", counter_u64 > 65535).void_unwrap();
ufmt::uwriteln!(&mut serial, "u64>2^32?: {}", counter_u64 > 4294967295).void_unwrap(); //overflow after 4294967295
//FLASH ERROR
ufmt::uwriteln!(&mut serial, "u64: {}", counter_u64).void_unwrap();
}
Also if i'll write the code for displaying u64, avr-gcc can't flash the .elf file:
error: linking with `avr-gcc` failed: exit code: 1
|
= note: "avr-gcc" "-mmcu=atmega328p" "-Wl,--as-needed" "-L" "C:\\Users\\Admin\\.rustup\\toolchains\\nightly-2021-01-07-x86_64-pc-windows-msvc\\lib\\rustlib\\avr-atmega328p\\lib" "O:\\R\\Coding\\Rust\\test-proj\\target\\avr-atmega328p\\debug\\deps\\test-proj-6349af4f4221cee8.panic_halt-db131e4b002c16b4.panic_halt.7laydq1v-cgu.0.rcgu.o.rcgu.o" "-o" "O:\\R\\Coding\\Rust\\test-proj\\target\\avr-atmega328p\\debug\\deps\\test-proj-6349af4f4221cee8.elf" "-Wl,--gc-sections" "-L" "O:\\R\\Coding\\Rust\\test-proj\\target\\avr-atmega328p\\debug\\deps" "-L" "O:\\R\\Coding\\Rust\\test-proj\\target\\debug\\deps" "-L" "C:\\Users\\Admin\\.rustup\\toolchains\\nightly-2021-01-07-x86_64-pc-windows-msvc\\lib\\rustlib\\avr-atmega328p\\lib" "-Wl,--start-group" "-Wl,--end-group" "-Wl,-Bstatic" "O:\\R\\Coding\\Rust\\test-proj\\target\\avr-atmega328p\\debug\\deps\\libcompiler_builtins-e902a06b00d14d7b.rlib" "-Wl,-Bdynamic" "-lgcc"
= note: O:\R\Coding\Rust\test-proj\target\avr-atmega328p\debug\deps\libcompiler_builtins-e902a06b00d14d7b.rlib(compiler_builtins-e902a06b00d14d7b.compiler_builtins.6kkuomye-cgu.7.rcgu.o): In function `compiler_builtins::int::shift::Ashl::ashl::h9dce3f4bd92dda5f':
C:\Users\Admin\.cargo\registry\src\github.com-1ecc6299db9ec823\compiler_builtins-0.1.36\src\int\shift.rs:(.text._ZN17compiler_builtins3int5shift4Ashl4ashl17h9dce3f4bd92dda5fE+0x150): undefined reference to `core::panicking::panic::hf53d0fffb6d21a9a'
O:\R\Coding\Rust\test-proj\target\avr-atmega328p\debug\deps\libcompiler_builtins-e902a06b00d14d7b.rlib(compiler_builtins-e902a06b00d14d7b.compiler_builtins.6kkuomye-cgu.7.rcgu.o): In function `compiler_builtins::int::shift::Ashl::ashl::hceca1513a0a8cd5c':
C:\Users\Admin\.cargo\registry\src\github.com-1ecc6299db9ec823\compiler_builtins-0.1.36\src\int\shift.rs:(.text._ZN17compiler_builtins3int5shift4Ashl4ashl17hceca1513a0a8cd5cE+0x198): undefined reference to `core::panicking::panic::hf53d0fffb6d21a9a'
O:\R\Coding\Rust\test-proj\target\avr-atmega328p\debug\deps\libcompiler_builtins-e902a06b00d14d7b.rlib(compiler_builtins-e902a06b00d14d7b.compiler_builtins.6kkuomye-cgu.7.rcgu.o): In function `compiler_builtins::int::shift::Lshr::lshr::h6706166a532fb8de':
C:\Users\Admin\.cargo\registry\src\github.com-1ecc6299db9ec823\compiler_builtins-0.1.36\src\int\shift.rs:(.text._ZN17compiler_builtins3int5shift4Lshr4lshr17h6706166a532fb8deE+0x1f8): undefined reference to `core::panicking::panic::hf53d0fffb6d21a9a'
O:\R\Coding\Rust\test-proj\target\avr-atmega328p\debug\deps\libcompiler_builtins-e902a06b00d14d7b.rlib(compiler_builtins-e902a06b00d14d7b.compiler_builtins.6kkuomye-cgu.1.rcgu.o): In function `compiler_builtins::int::specialized_div_rem::u64_div_rem::h60f8b0912293273a':
C:\Users\Admin\.cargo\registry\src\github.com-1ecc6299db9ec823\compiler_builtins-0.1.36\src\int\specialized_div_rem\delegate.rs:(.text._ZN17compiler_builtins3int19specialized_div_rem11u64_div_rem17h60f8b0912293273aE+0x125c): undefined reference to `core::panicking::panic::hf53d0fffb6d21a9a'
O:\R\Coding\Rust\test-proj\target\avr-atmega328p\debug\deps\libcompiler_builtins-e902a06b00d14d7b.rlib(compiler_builtins-e902a06b00d14d7b.compiler_builtins.6kkuomye-cgu.1.rcgu.o): In function `compiler_builtins::int::specialized_div_rem::u32_div_rem::h9023690cd40b9b7f':
C:\Users\Admin\.cargo\registry\src\github.com-1ecc6299db9ec823\compiler_builtins-0.1.36\src\int\specialized_div_rem\norm_shift.rs:(.text._ZN17compiler_builtins3int19specialized_div_rem11u32_div_rem17h9023690cd40b9b7fE+0x718): undefined reference to `core::panicking::panic::hf53d0fffb6d21a9a'
collect2.exe: error: ld returned 1 exit status
error: aborting due to previous error; 38 warnings emitted
error: could not compile `test-proj`
I use nightly-2021-01-07
version because a newer one fails with Not supported instr
error