This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Why do you use Cortex-M?

Hello everyone,

I would like to know why you are using Cortex-M microcontroller.

Why don't you adopt other microcontrollers such as 8-bit, 16-bit or MIPS or x86?

The background is that I plan to write a special article regarding Cortex-M on the Interface which is the monthly magazine of Japan published by CQ publishing. However, I cannot say why Cortex-M should be featured because Cortex-M is already famous and almost common sense of microcontrollers. I would like to get exclusive (or special) meanings to introduce Cortex-M nowadays. Please let me know the significance of Cortex-M.

Thank you and best regards,

Yasuhiko Koumoto.

Parents
  • I have several reasons.

    I migrated from 8-bit microcontrollers to ARM7TDMI, mainly because I needed to run code directly from the on-chip SRAM.

    This was all due to that I needed very high speeds, especially on GPIO ports, but the CPU speed also needed to be high.

    I found that the ARM7TDMI was more difficult than I expected, so after a while, I decided to try Cortex-M.

    It turned out that it was very easy to get the Cortex-M to do what I wanted, so I've used it ever since.

    The main reasons I use Cortex-M over 8-bit microcontrollers are:

    • You can run code from S-RAM (eg. you can create the code on-the-fly or load it from SD-card)
    • The GPIO-pin speed is higher.
    • You can write more than 8 bits in one go; eg. you can set up to 32 bits on a GPIO port in a single write cycle.
    • The CPU-speed is higher.
    • You can change the CPU-speed in your firmware while your program is running.
    • You can turn off peripherals when you're not using them, thus saving power.
    • The lowest operating voltage is around 1.65V, which makes the Cortex-M ideal for running directly on solar panels
    • I fancy the instruction set (especially the second operand features): Simple but powerful.
    • There's generally more on-chip memory available.
    • It's possible to connect external SRAM or SDRAM and access it in the same way the internal memory is accessed.
    • Much more peripherals are available and often extra configuration options are available for a peripheral.
    • If a peripheral is not available, it's usually possible (due to the high CPU-speed) to roll your own driver; for instance a firmware-based SPI.
    • Many Cortex-M device families allow you to connect Fast Ethernet (100 Mbit) some even allow MII (125 Mbit)
    • It's very easy to find out how to do what you want (many examples exists on the net)
    • If you suddenly find out that you need a larger chip or a different CPU core, you can switch it in the middle of your design and you do not have to rewrite your sources from scratch; in some cases you don't even have to change a single line of code.
    • Cortex-M is using less power than the 8-bit controllers I used (and also most other 8-bit microcontrollers in general).

    (Yes, all the above mentioned reasons are important to me, though there are more benefits when using Cortex-M than the above)

    Note: On some Cortex-M microcontrollers, it's possible to use the DMA to write the GPIO pins and thus output more than 32 bits on the exact same clock cycle.

    I'm very much interested in developing with Cortex-A, but to do so, I'm still required to learn a lot more.

    Cortex-M, on the other hand, is an easy way to get fast speeds and connect extra memory.

Reply
  • I have several reasons.

    I migrated from 8-bit microcontrollers to ARM7TDMI, mainly because I needed to run code directly from the on-chip SRAM.

    This was all due to that I needed very high speeds, especially on GPIO ports, but the CPU speed also needed to be high.

    I found that the ARM7TDMI was more difficult than I expected, so after a while, I decided to try Cortex-M.

    It turned out that it was very easy to get the Cortex-M to do what I wanted, so I've used it ever since.

    The main reasons I use Cortex-M over 8-bit microcontrollers are:

    • You can run code from S-RAM (eg. you can create the code on-the-fly or load it from SD-card)
    • The GPIO-pin speed is higher.
    • You can write more than 8 bits in one go; eg. you can set up to 32 bits on a GPIO port in a single write cycle.
    • The CPU-speed is higher.
    • You can change the CPU-speed in your firmware while your program is running.
    • You can turn off peripherals when you're not using them, thus saving power.
    • The lowest operating voltage is around 1.65V, which makes the Cortex-M ideal for running directly on solar panels
    • I fancy the instruction set (especially the second operand features): Simple but powerful.
    • There's generally more on-chip memory available.
    • It's possible to connect external SRAM or SDRAM and access it in the same way the internal memory is accessed.
    • Much more peripherals are available and often extra configuration options are available for a peripheral.
    • If a peripheral is not available, it's usually possible (due to the high CPU-speed) to roll your own driver; for instance a firmware-based SPI.
    • Many Cortex-M device families allow you to connect Fast Ethernet (100 Mbit) some even allow MII (125 Mbit)
    • It's very easy to find out how to do what you want (many examples exists on the net)
    • If you suddenly find out that you need a larger chip or a different CPU core, you can switch it in the middle of your design and you do not have to rewrite your sources from scratch; in some cases you don't even have to change a single line of code.
    • Cortex-M is using less power than the 8-bit controllers I used (and also most other 8-bit microcontrollers in general).

    (Yes, all the above mentioned reasons are important to me, though there are more benefits when using Cortex-M than the above)

    Note: On some Cortex-M microcontrollers, it's possible to use the DMA to write the GPIO pins and thus output more than 32 bits on the exact same clock cycle.

    I'm very much interested in developing with Cortex-A, but to do so, I'm still required to learn a lot more.

    Cortex-M, on the other hand, is an easy way to get fast speeds and connect extra memory.

Children
No data