Here's how we enable Strong Ordering for Memory Mapped I/O ... On #Ox64 BL808 and T-Head C906
Article: https://lupyuen.codeberg.page/articles/plic3.html#enable-strong-order
Rules for Writing a Technical Book
"#HomeAssistant is now available on Apple CarPlay"
https://www.home-assistant.io/blog/2024/01/29/companion-app-for-ios-20241-carplay/
KDE Plasma 6 Test Week: "anyone can help ensure changes in Fedora #Linux work well in an upcoming release"
https://fedoramagazine.org/contribute-at-the-kde-plasma-6-test-week/
"#Purism announced they are facilitating a first public offering of shares ... They are aiming to raise money at a $75 million USD valuation"
Testing the #RISCV Lichee Console 4A (T-Head TH1520 / C910)
"#Amazon and iRobot mutually agreed to call off their planned Acquisition"
Why is TCC #RISCV Compiler hitting "Unknown Relocation Type 60"? 🤔
Source: https://github.com/lupyuen/tcc-riscv32-wasm#fix-missing-printf-in-nuttx-app
"The Rigor of Angels: Borges, Heisenberg, Kant, and the Ultimate Nature of Reality" by William Egginton
Inside the Memory Management Unit of #Ox64 BL808 SBC ... And how it controls Strong Ordering
Article: https://lupyuen.codeberg.page/articles/plic3.html#memory-management-unit
@popolon That's very helpful, thanks for the tip! :-)
@lupyuen I don't know if this can help, but "li" assembly mnemonic is a pseudocode that can be converted to several real RISC-V mnemonics, including addi rd,x0,imm. on the other side, gnu objdump and gdb (that use objdump to disassemble) disassemble addi rd,x0,imm as li rd,imm by default:
objdump -d <binary>
To display real instruction, the option -M no-aliases is needed:
objdump -d -M no-aliases <binary>
on a x86_64/armv8 etc...:
riscv64-elf-objdump -d -M no-aliases <binary>
or
riscv32-elf-objdump -d -M no-aliases <binary>
Depending on target binary. Sadly, didn't found this option in gdb disassemble command.
TCC Compiler Output (from #WebAssembly) prints "Hello World" in Apache #NuttX RTOS! 🎉 ... But needs painful #RISCV Assembly 🤔
Source: https://github.com/lupyuen/tcc-riscv32-wasm#ecall-for-nuttx-system-call
Here's how Apache #NuttX RTOS links a NuttX App
Source: https://github.com/lupyuen/tcc-riscv32-wasm#how-nuttx-build-links-a-nuttx-app
TCC Compiler in WebAssembly has generated a #RISCV ELF ... Let's run it on Apache #NuttX RTOS!
Source: https://github.com/lupyuen/tcc-riscv32-wasm#test-tcc-output-with-nuttx
"Netflix does not plan to develop a Vision Pro app at this time because the device is 'so subscale' that it is 'not really particularly relevant' to most Netflix members"
https://www.macrumors.com/2024/01/26/netflix-vision-pro-not-relevant/
Implementing printf() in #ZigLang with Pattern Matching ... So TCC Compiler will run in #WebAssembly 🤔
Source: https://github.com/lupyuen/tcc-riscv32-wasm#fix-the-varargs-functions
#RISCV T-Head C906 Errata in Linux Kernel ... Says that we need Strong Ordering for I/O Memory in #Ox64 BL808 SBC
Article: https://lupyuen.codeberg.page/articles/plic3.html#t-head-errata
@pancake That's very cool! We can follow these steps to build and run NuttX on QEMU RISC-V 64-bit:
https://lupyuen.github.io/articles/riscv
Then add our code to the `hello` app:
apps/examples/hello/hello_main.c
Note that the Hello App needs to be enabled (change "M" to "*"):
https://github.com/lupyuen/lupyuen.github.io/issues/21#issuecomment-1809337352
Generally, any code that targets Linux Command-Line, will probably compile on NuttX without changes.
If NuttX fails to build something because of missing headers (e.g. GTK), then it's probably not supported by NuttX :-)
IoT Techie and Educator / Apache NuttX PMC