For raw pointers: - Does not require extra dependencies (see peripheral::common) - Non const as long as we don’t bump MSRV to 1.61 - Non zero-size - Cannot use associated functions, as the address is not a const generic - Easy to create new peripherals when needed without stealing (??) - From my experience, it is easier to work with, specially in multi-HART operations - Not a single struct with several functions, but a set of registers with a reduced number of functions :)