<ubernerd[m]>
How are people feeling about the Arduino Portenta H7 board for rust? STM32H747XI is the MCU, STM32H747XIHx listed on probe-rs, close enough? Any other gotchas? Or if someone has a recommended dev board that includes the NXP SE050 or variants I would be interested to hear about alternatives.
<ubernerd[m]>
I'm assuming the Arduino Portenta C33 with the Renesas R7FA6M5BH2CBG would not be recommended.
FrreJacques[m] has joined #rust-embedded
<FrreJacques[m]>
Is there something like the rust api guidelines for embedded rust? Those guidelines recommend to implement a set of traits from std, but that makes no sense for an embedded driver I guess.
<FrreJacques[m]>
Ah, yes there is a chapter in that book.
<FrreJacques[m]>
But it seems to be focussed on hals, not drivers. Maybe I will just try out something and ask for feedback if I have a working solution.
cr1901_ has joined #rust-embedded
cr1901 has quit [Ping timeout: 240 seconds]
SergioGasquez[m] has quit [Quit: Idle timeout reached: 172800s]
IlPalazzo-ojiisa has joined #rust-embedded
enaut[m] has quit [Quit: Idle timeout reached: 172800s]
jedugsem[m]1 has quit [Quit: Idle timeout reached: 172800s]
AtleoS has joined #rust-embedded
Makarov has joined #rust-embedded
Makarov has quit [Quit: Client closed]
Makarov has joined #rust-embedded
firefrommoonligh has quit [Quit: Idle timeout reached: 172800s]
mabez[m] has quit [Quit: Idle timeout reached: 172800s]
Makarov14 has joined #rust-embedded
Makarov has quit [Ping timeout: 250 seconds]
glaeqen[m] has joined #rust-embedded
<glaeqen[m]>
James Munns: Hey, I have a question regarding dispatcher machinery that you've built in `postcard-rpc`. Everything about it seems to be very USB specific and I wonder what's your plan for it down the line? I planned to upstream korken89 's shot at it which has a syntax similar to `tokio::select` and it leaves more details up to the user. I'll create a PR and we can have discussion if there's any room for it there :)
<JamesMunns[m]>
Open to the other approach, I'd prefer to have it be more encapsulated "like USB but generic over transports", just haven't had time to chew on it yet.
<JamesMunns[m]>
(a lot of people struggle with the "plumbing" aspect of receiving/sending, so encapsulating that makes it easier for me to help people/not have support questions)
<glaeqen[m]>
I can see that, especially that you seem to want to hide away the WireContext while deprecating the HostClient::new_manual.
<glaeqen[m]>
* I can see that, especially that you seem to want to hide away the WireContext by deprecating the HostClient::new_manual.
<JamesMunns[m]>
glaeqen[m]: yep, PC side has had the refactor, I want to do something similar for the MCU side.
<glaeqen[m]>
JamesMunns[m]: I tried to apply it but it does not yield any warning nor error when I duplicate the endpoint. Maybe I'm doing something wrong
<JamesMunns[m]>
glaeqen[m]: 👀
<JamesMunns[m]>
if you can repro that with the existing USB macro, please open an issue and I'll upstream the const check instead.
<glaeqen[m]>
I duplicated the line with the PingEndpoint in the firmware/comms-02 app to test it and it didn't seem to do anything with 1.78 toolchain. I'll create an issue
<glaeqen[m]>
* I duplicated the line with the PingEndpoint in the dispatcher definition in firmware/comms-02 app to test it and it didn't seem to do anything with 1.78 toolchain. I'll create an issue
<TomB[m]>
* some consortium for safety certified things and rust?
Makarov14 has quit [Ping timeout: 250 seconds]
<JamesMunns[m]>
Huh, I can repro that macros from other crates don't fire trigger lints
<JamesMunns[m]>
TIL, thank you glaeqen!
<JamesMunns[m]>
glaeqen if you can PR just the const check to the usb macro, I'd appreciate it, otherwise I'll do that this weekend and release ASAP.
<birdistheword99[>
What's the accepted practice in embedded rust for dealing with Static Arrays? I have to use a static array because The data has to be placed in aspeicific RAM region on the H7 for the BDMA controller to be able to see it, but I am always getting lint warning about it being 'discouraged' and that it will be a... (full message at <https://catircservices.org/_matrix/media/v3/download/catircservices.org/JiunYHpsZBcUxVNzlogkRCNB>)
<birdistheword99[>
I'm guessing its using some kind of interior mutability?
<birdistheword99[>
* I'm guessing its using some kind of interior mutability?
<birdistheword99[>
If possible I would like to avoid locks, since this will be accessed frequently and by a single function
<birdistheword99[>
Ah nice, it seemed like it would be a problem for embedded. I'll have a look at your repo :)
RobertJrdens[m] has joined #rust-embedded
<RobertJrdens[m]>
cortex_m::singleton() in master forwards attributes.
<JamesMunns[m]>
RobertJrdens[m]: the challenge is that the separate section will be uninit
<JamesMunns[m]>
you could use the singleton macro with `MaybeUninit<[u8; N]>` tho
<RobertJrdens[m]>
JamesMunns[m]: Exactly.
<JamesMunns[m]>
yep, that'd also work!
<birdistheword99[>
How would the singleton!() macro work with data that has to be linked to a specific memory region?
<birdistheword99[>
Can you still use [link_section = ".sram4"] fro example?
<RobertJrdens[m]>
birdistheword99[: Yes. With `cortex_m` master.
<glaeqen[m]>
<JamesMunns[m]> "(a lot of people struggle with..." <- I feel like that might be actually a double edged sword. At least these low-level details should be somehow accessible with "escape-hatches" so everyone can implement their own thing if there's a need without forking a project. I'm not sure how easy it is going to be to support all kinds of protocols long-term and then be bombarded with issue reports that this topology of
<glaeqen[m]>
traits is not working for someone's flavour of X :/
<JamesMunns[m]>
Quick note that `postcard-rpc` v0.5.1 is now released, and I've yanked v0.5.0. There was an issue with how I was checking for duplicate endpoint keys, thanks to glaeqen for reporting and fixing!
<JamesMunns[m]>
<glaeqen[m]> "I feel like that might be..." <- yep. +1 to "defaults should be easy, custom should be possible"
<JamesMunns[m]>
<JamesMunns[m]> "yep. +1 to "defaults should be..." <- My *goal* is to abstract the wire stuff behind a trait, like I did on the PC side. So anyone can impl the trait on their own wire format, and have the macro Just Work. We'll see how that goes :)
dimpolo[m] has quit [Quit: Idle timeout reached: 172800s]
<thejpster[m]>
<TomB[m]> "https://thenewstack.io/rust-the..." <- The nice thing about them joining this public consortium is that their membership is a matter of public record, unlike my list of clients and partners.
<TomB[m]>
I'd love to see that list though :-)
<TomB[m]>
but yeah, its kind of the usual hill to climb it seems like
<thejpster[m]>
easy! it's available to everyone who works at Ferrous Systems ;)
<TomB[m]>
once you get a few big players putting their name out there tied to it... others start piling in
<TomB[m]>
look at Zephyr... Intel, NXP and Nordic... now everyone has their name on it
<TomB[m]>
hopefully Rust for safety goes the same route, would be cool to see
AtleoS has quit [Read error: Connection reset by peer]
AtleoS has joined #rust-embedded
AtleoS has quit [Ping timeout: 264 seconds]
AtleoS has joined #rust-embedded
AlexandrosLiarok has quit [Quit: Idle timeout reached: 172800s]
therealprof[m] has quit [Quit: Idle timeout reached: 172800s]