ARMv8M Documentation

Hi francois

This series has been extremely helpful at understanding exactly what the ide / code generators have been setting up for me, thank you!

After reading through them I’ve decided to also follow along the examples, but I’m hitting some snags.

I have a Nuvoton M2351 that I’d like to experiment this with. It’s an M23 (arm8vm - baseline?).

There’s two places you mention documentation that I can’t find arm8vm versions of:

t turns out that the lowest bit of the PC is used to indicate thumb2 instructions, which is one of the two instruction sets supported by ARM processors, so Reset_Handler is what we’re looking for (for more details check out section A4.1.1 in the ARMv6-M manual).

There’s no mention of thumb2, an existence of an A4.1.1 section, or really even interworking in the ARMv8-M technical reference manual

Separately, I haven’t found any startup instructions in the M23 technical reference manual, similar to what you had in the m3 documentation:

Here again, ARM’s Technical Reference Manuals are useful. Section 5.9.2 of the Cortex-M3 TRM contains the following table:

Reset boot-up behavior

I know the M23 is “relatively new” (last 3 years?). Is that why the documentation is sparse? Is it just not fully up-to-date yet? Or are embedded engineers to assume that if documentation doesn’t exist in the Armv8m section they should assume the information in Armv6m is still correct?

It’s probably pretty safe to assume the Reset boot-up behavior chart is probably the same between architecture versions, but I’d like to learn how others would learn/deal with/investigate this situation :).

Thanks for your time,

  • Travis

[edit] I should mention, I was very excited that I did find the pseudocode for TakeReset() in the v8 manual :). It’s a bit different but mostly due to trustzone.

Hi @travisby, welcome to interrupt! I split this into its own thread as it is a topic of its own.

There’s no mention of thumb2, an existence of an A4.1.1 section, or really even interworking in the ARMv8-M technical reference manual

Like ARMv6m and ARMv7m before it, ARMv8m is thumb/thumb2 only. The Cortex-M23 specifically implements a subset of thumb2 (c.f. Cortex-M23).

The lower bit being used to indicate thumb2 is actually part of the ISA rather than the chip design itself, so they’ve removed it from the architecture manuals. Rest assured that the behavior is the same on ARMv8m.

Separately, I haven’t found any startup instructions in the M23 technical reference manual, similar to what you had in the m3 documentation:

Here again I think this data is not architecture specific which is why it’s not in the M23 docs. It’s the same behavior across.

Thank you for the answer @francois !

I’m glad to hear it’s all the same / and that’s why it no longer appears in the Armv8m documentation. I might want to keep a v6 copy handy just to find some of the more interesting information they used to include (like startup sequence) that might be taken for granted in the M23 documentation!

Thanks again!

  • Travis