Bit-Banding. Only 1 bit at a time?

Hi,
    I am developing a fixed-point MP3 & ACELP decoder on an Arduino Due. I realize that bit-banding makes a RMW sequence atomic but I notice fields in the Due hardware are multi-bit fields. Is there an atomic way to alter multiple bits? I realize that the atomic RMW can probably allow the applications/IRQ/NMI to resolve which gets access to the bus but if that is the only real use, wouldn't it have been simpler to use atomic test-and-set as the SuperH does?

Examples like the PERIPH_PTSR (bits 0 & 8 used) are classic. Do you write to separate bytes, perform 2 bit-band operations or write to 16 or 32 bits at once?

I do appreciate that this is very low level. I also note that TCM (tightly coupled memory) is mentioned just once and I'm not quite sure if this refers to part of the cache or a PSX-like scratch-pad. The PSX was another machine that needed hand-written assembly language to get the full performance out of it.

Many thanks,
Sean


Parents Reply
  • that I couldn't get a 32-bit x 32-bit --->64-bit multiply in under 17 cycles. I looked at many compiler outputs and started with a clean-sheet several times but it always ended up 17 cycles.

    Sean, I am trying all the week (ok, whenever I get some spare time), but don't get it with 17cycles. Only 18.

    Are you sure, your version works for _all_ inputs, for example: 0x120000*0xffffffff ?

    ------------------------

    Ok, got the 17cy version. :-)  Thought also a 12cy version, but not for all inputs :(

Children
More questions in this forum