Jorge Aparicio

@japaric_io

Making awesome stuff at . Core member of the WG. He/they

Berlin
Vrijeme pridruživanja: srpanj 2014.

Medijski sadržaj

  1. 14. lip 2019.

    Heterogeneous multi-core support is coming to Real Time For the Masses (RTFM), the embedded concurrency framework! Pics are examples of message passing between the ARM Cortex-M4F and ARM Cortex-M0+ cores on an LPC541xx micro But first ... (1/2)

    Prikaži ovu nit
  2. 20. svi 2019.

    Real Time for The Masses (RTFM) running on ... (x86_64) Linux (?!) Deadlock-free memory sharing and message passing both work and apps run on a single CPU I have no idea what you would use this for, though. Maybe some soft real time embedded Linux app?

    Prikaži ovu nit
  3. 8. svi 2019.

    Morning Rustaceans. Today I'm thrilled to announce the beta release of my latest crate: μfmt: a (6-40x) smaller, (2-9x) faster and panic-free alternative to core::fmt! Features: uwrite!, #[derive(uDebug)], debug_struct, no trait objects, no recursion.

  4. 24. ožu 2019.

    Bonus image: Did you know that `core::fmt` can panic? If your panic handler uses formatting then you'll end up with a call cycle in your program.

    Prikaži ovu nit
  5. 24. ožu 2019.

    Last new feature: the cycles in the call graph are now highlighted using "clusters". Now the cycles that prevent computing the worst case stack usage are easier to spot so you can go straight to the offending function and (hopefully) rewrite it to not use recursion. 4/5

    Prikaži ovu nit
  6. 24. ožu 2019.

    Extracting stack usage info from Thumb machine code has been improved and the tool can now compute the stack usage of functions that do *not* contain ifs or loops. Useful for "trampolines" written as `global_asm!` or `#[naked]` functions + `asm!` which LLVM won't analyze! 2/5

    Prikaži ovu nit
  7. 24. ožu 2019.

    📣 v0.1.3 of cargo-call-stack, a stack usage analysis tool, is out! The biggest change is that the user no longer needs linker script magic to preserve the `.stack_sizes` section. Run the tool on "Hello, world" and the graph will contain stack info! 1/5

    Prikaži ovu nit
  8. 12. ožu 2019.

    Also, the tool now extracts even more call graph information from (ARM Cortex-M) machine code (i.e. it searches for jump instructions in it) This is particularly useful when dealing with programs that call into external C code or into the compiler-builtins crate 2/3

    Prikaži ovu nit
  9. 12. ožu 2019.

    📣 The third release (v0.1.2) of `cargo-call-stack`, the whole program stack usage analyzer, is now on crates-io Biggest feature is that the tool now properly handles programs that use `core::fmt`, which does some clever function pointer transmutes 1/3

    Prikaži ovu nit
  10. 3. ožu 2019.

    Fun with pointers The tool will also try to deal with calls via function pointers. Again, it works OK in some cases and in some cases it will be plain wrong. Best to stick to direct function calls! Here's an OK example. `i1 ()*` means `fn() -> bool`. 6/8

    Prikaži ovu nit
  11. 3. ožu 2019.

    `dyn`amic dispatch The tool will attempt to reason about dynamic dispatch (trait objects). It works! ... kinda ... in some cases, but you don't need a custom compiler (just nightly) Here's an OK example. `i1 ({}*)` means some `fn(&self) -> bool` trait method. 5/8

    Prikaži ovu nit
  12. 3. ožu 2019.

    Cycles? No problem The tool will analyze call graphs that contain cycles (i.e. recursion) instead of giving up. It may not always be possible to upper bound the stack usage though! Here's an example where an upper bound can be computed 4/8

    Prikaži ovu nit
  13. 3. ožu 2019.

    Filters! Interested in the stack usage of only a certain function? Specify it as the _start point_ and the tool will display only the call graph that starts from that node Example: same program as before but this time `main` was chosen as the start point 3/8

    Prikaži ovu nit
  14. 3. ožu 2019.

    Less cluttered graphs! The hash suffixes (e.g. ::h1337dead10cc4242) are not shown on symbols that are unambiguous. Plus only a single edge is drawn between two nodes regardless of the number times one calls the other. Here's an example. 2/8

    Prikaži ovu nit
  15. 20. sij 2019.

    Did you know that Cortex-M microcontrollers have hardware support for profiling and tracing in the form of the ITM peripheral? I wrote some tools to analyze those ITM traces! Left: Tracing interrupt handling Right: Profiling firmware

  16. 7. pro 2018.

    Trickiest bit: ensuring that all binaries have the same layout for shared memory. e.g. `SHARED` must have the same address on all binaries regardless of optimizations. Solution: `cargo-amp`! It does a custom build process and then checks that all binaries look correct. 3/3

    Prikaži ovu nit
  17. 7. pro 2018.

    In the application the two cores increase the value of a shared variable in turns. Access is synchronized using a semaphore which also resides in shared memory. Here the target cores are R5s but the approach can be applied to heterogeneous devices e.g. M4F + M0+. 2/

    Prikaži ovu nit
  18. 7. pro 2018.

    A sneak peek at my Rust experiments in single source, no-std asymmetric multiprocessing! The clip shows the source of a dual core application from which I build two binaries using a Cargo subcommand Then I load each binary on a different Cortex-R5 core and run them 1/

    Prikaži ovu nit
  19. 3. pro 2018.

    With a bit of help from the compiler the tool can also reason about indirect function calls, namely trait objects! Here's a program that does dynamic dispatch. The tool is able to figure out that there only *2* (not 3) trait implementations in the final binary. 2/3

    Prikaži ovu nit
  20. 3. pro 2018.

    📣 Pleased to announce the first release of cargo-call-stack A Cargo subcommand for whole program, static stack analysis of programs Pic shows the call graph and stack usage of a program that only does direct function calls 1/3

    Prikaži ovu nit

Čini se da učitavanje traje već neko vrijeme.

Twitter je možda preopterećen ili ima kratkotrajnih poteškoća u radu. Pokušajte ponovno ili potražite dodatne informacije u odjeljku Status Twittera.

    Možda bi vam se svidjelo i ovo:

    ·