www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Dlang for embedded: need real project

reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
Hi!

Looks like druntime fork dedicated "to support almost any system" 
(https://github.com/denizzzka/druntime) works well with ARM 
Cortex-M3 backend! Almost all unittests is passed on QEMU 
emulated hardware (except threads and fiberes, see more: 
https://github.com/denizzzka/d_c_arm_test/issues/5)

So, it will be cool if some real project will have its firmware 
implemented on D!
ARM Cortex or MCU based on RISC-V is preferred, but another 
architectures is also appropriate.

Any ideas?
Oct 22 2020
next sibling parent reply WebFreak001 <d.forum webfreak.org> writes:
On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
wrote:
 Hi!

 Looks like druntime fork dedicated "to support almost any 
 system" (https://github.com/denizzzka/druntime) works well with 
 ARM Cortex-M3 backend! Almost all unittests is passed on QEMU 
 emulated hardware (except threads and fiberes, see more: 
 https://github.com/denizzzka/d_c_arm_test/issues/5)

 So, it will be cool if some real project will have its firmware 
 implemented on D!
 ARM Cortex or MCU based on RISC-V is preferred, but another 
 architectures is also appropriate.

 Any ideas?
The PineTime[1] is one which is really inexpensive and has really fun proper use-cases. (Time & date, Bluetooth communication/integration with phone, heart rate measuring, etc.) I wanted to start on that a while ago but haven't gotten around to it yet. Now there is even OTA flashing shipped with the watch in the included (community) OS which makes it even easier as you don't need to get a flashing device + cable anymore. (It's very cheap, 15€ for one with integrated debugger by a big trusted company for open source/personal use, but putting the cable in the watch and flashing with it is kind of a pain) [1]: https://www.pine64.org/pinetime/
Oct 22 2020
parent Denis Feklushkin <feklushkin.denis gmail.com> writes:
On Thursday, 22 October 2020 at 08:15:41 UTC, WebFreak001 wrote:
 On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
 wrote:
 Hi!

 Looks like druntime fork dedicated "to support almost any 
 system" (https://github.com/denizzzka/druntime) works well 
 with ARM Cortex-M3 backend! Almost all unittests is passed on 
 QEMU emulated hardware (except threads and fiberes,
Only threads, fibers work like a charm!
 The PineTime[1] is one which is really inexpensive and has 
 really fun proper use-cases. (Time & date, Bluetooth 
 communication/integration with phone, heart rate measuring, 
 etc.)
Looks like what I am need, thanks!
Oct 22 2020
prev sibling next sibling parent aberba <karabutaworld gmail.com> writes:
On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
wrote:
 Hi!

 Looks like druntime fork dedicated "to support almost any 
 system" (https://github.com/denizzzka/druntime) works well with 
 ARM Cortex-M3 backend! Almost all unittests is passed on QEMU 
 emulated hardware (except threads and fiberes, see more: 
 https://github.com/denizzzka/d_c_arm_test/issues/5)

 So, it will be cool if some real project will have its firmware 
 implemented on D!
 ARM Cortex or MCU based on RISC-V is preferred, but another 
 architectures is also appropriate.

 Any ideas?
Nice!
Oct 22 2020
prev sibling parent reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
wrote:
 Hi!

 Looks like druntime fork dedicated "to support almost any 
 system" (https://github.com/denizzzka/druntime) works well with 
 ARM Cortex-M3 backend! Almost all unittests is passed on QEMU 
 emulated hardware (except threads and fiberes, see more: 
 https://github.com/denizzzka/d_c_arm_test/issues/5)
I'm just in a hurry to share news: threads module just have started working and now druntime passes threads unittests on ARM Cortex-M3! It looks like this: $ qemu-system-arm -machine mps2-an511 -nographic -rtc clock=vm -icount shift=2 -semihosting -kernel firmware.elf unexpected pointers 0x2184e008 and 0x21865008 Not safe to migrate Fibers between Threads on your system. Consider setting version CheckFiberMigration for this system in thread.d 28 modules passed unittests $ There are a few more unfinished parts but they are not fundamental: - disabled demangle tests (demangle consumes huge memory amounts sometimes, https://github.com/dlang/druntime/pull/3262) - disabled some TickDuration tests - don't know how to fix it, but remember what TickDuration is deprecated - core.sync.condition is not implemented - more what is not used in current unittests but depends from OS (just errors is not triggered in this case) More info at: https://github.com/denizzzka/d_c_arm_test (look into "issues" section)
Nov 14 2020
parent reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
On Sunday, 15 November 2020 at 04:00:31 UTC, Denis Feklushkin 
wrote:
 On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
 wrote:
 Hi!

 Looks like druntime fork dedicated "to support almost any 
 system" (https://github.com/denizzzka/druntime) works well 
 with ARM Cortex-M3 backend! Almost all unittests is passed on 
 QEMU emulated hardware (except threads and fiberes, see more: 
 https://github.com/denizzzka/d_c_arm_test/issues/5)
Good news! This fork of druntime at this moment started to run on real hardware with appropriate ARM Cortex backend! https://youtu.be/PE6pMUA0vNQ STM32F411CEU6 MCU is used (512kB of flash) $ size firmware.elf text data bss dec hex filename 256884 21012 2292 280188 4467c firmware.elf app.d is here: https://github.com/denizzzka/d_c_arm_test/blob/master/d/source/app.d Happy New Year!
Jan 03
parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Sunday, 3 January 2021 at 14:20:26 UTC, Denis Feklushkin wrote:
 On Sunday, 15 November 2020 at 04:00:31 UTC, Denis Feklushkin 
 wrote:
 On Thursday, 22 October 2020 at 08:04:48 UTC, Denis Feklushkin 
 wrote:
 [...]
Good news! This fork of druntime at this moment started to run on real hardware with appropriate ARM Cortex backend! https://youtu.be/PE6pMUA0vNQ STM32F411CEU6 MCU is used (512kB of flash) $ size firmware.elf text data bss dec hex filename 256884 21012 2292 280188 4467c firmware.elf app.d is here: https://github.com/denizzzka/d_c_arm_test/blob/master/d/source/app.d Happy New Year!
Wait, what does this mean.. It's not betterC, so what can be used? Nice anyhow 👍
Jan 03
parent reply Denis Feklushkin <feklushkin.denis gmail.com> writes:
On Sunday, 3 January 2021 at 15:45:52 UTC, Imperatorn wrote:
 On Sunday, 3 January 2021 at 14:20:26 UTC, Denis Feklushkin 
 wrote:
 On Sunday, 15 November 2020 at 04:00:31 UTC, Denis Feklushkin 
 wrote:
 On Thursday, 22 October 2020 at 08:04:48 UTC, Denis 
 Feklushkin wrote:
 [...]
Good news! This fork of druntime at this moment started to run on real hardware with appropriate ARM Cortex backend! https://youtu.be/PE6pMUA0vNQ STM32F411CEU6 MCU is used (512kB of flash) $ size firmware.elf text data bss dec hex filename 256884 21012 2292 280188 4467c firmware.elf app.d is here: https://github.com/denizzzka/d_c_arm_test/blob/master/d/source/app.d Happy New Year!
Wait, what does this mean.. It's not betterC, so what can be used?
It is just "regular" druntime! Ok, this is druntime fork, with some additions to support ANY hardware/OS backend: https://github.com/denizzzka/druntime Looks like it is only remains to get rid of unnecessary RTTI.
Jan 03
parent aberba <karabutaworld gmail.com> writes:
On Sunday, 3 January 2021 at 16:24:49 UTC, Denis Feklushkin wrote:
 On Sunday, 3 January 2021 at 15:45:52 UTC, Imperatorn wrote:
 On Sunday, 3 January 2021 at 14:20:26 UTC, Denis Feklushkin 
 wrote:
 [...]
Wait, what does this mean.. It's not betterC, so what can be used?
It is just "regular" druntime! Ok, this is druntime fork, with some additions to support ANY hardware/OS backend: https://github.com/denizzzka/druntime Looks like it is only remains to get rid of unnecessary RTTI.
Awesome!!!
Jan 03