ARM Cortex-M Seriesλ μ μ λ ₯, κ³ μ±λ₯μ λ§μ΄ν¬λ‘컨νΈλ‘€λ¬ μν€ν μ²λ‘, μ£Όλ‘ μλ² λλ μμ€ν λ° IoT(Internet of Things) μ ν리μΌμ΄μ μ μ¬μ©λ©λλ€. μ΄ μ리μ¦λ ARM Holdingsμ μν΄ μ€κ³λμμΌλ©°, νΉν μν λμ§νΈ νλ‘ μ€κ³μμ μ€μν μν μ ν©λλ€. ARM Cortex-M νλ‘μΈμλ λ€μν μ ν리μΌμ΄μ μ μ ν©νλλ‘ μ€κ³λμ΄ μμΌλ©°, νΉν μ λ ₯ μλΉκ° μ€μν λͺ¨λ°μΌ λ° ν΄λμ© μ₯μΉμμ λ리 μ¬μ©λ©λλ€.
ARM Cortex-M μ리μ¦λ λ€μν κΈ°μ μ νΉμ§μ κ°μ§κ³ μμ΅λλ€. κ·Έ μ€ νλλ Thumb-2 λͺ λ Ήμ΄ μ§ν©μΌλ‘, μ΄λ μ½λ λ°λλ₯Ό λμ΄κ³ μ±λ₯μ ν₯μμν€λ λ° κΈ°μ¬ν©λλ€. λν, Cortex-M νλ‘μΈμλ λ€μν μΈν°λ½νΈ μ²λ¦¬ κΈ°λ₯μ μ 곡νμ¬ μ€μκ° μμ€ν μμμ λ°μμ±μ κ·Ήλνν©λλ€. μ΄ μΈμλ, ARM Cortex-M μ리μ¦λ λ€μν μ λ ₯ κ΄λ¦¬ λͺ¨λλ₯Ό μ§μνμ¬ λ°°ν°λ¦¬ μλͺ μ μ°μ₯ν μ μλλ‘ ν©λλ€.
μ΄ μ리μ¦μ μ£Όμ νΉμ§ μ€ νλλ ARMv7-M μν€ν μ²λ₯Ό κΈ°λ°μΌλ‘ νκ³ μμΌλ©°, μ΄λ νλμ¨μ΄ λ° μννΈμ¨μ΄μ ν¨μ¨μ±μ κ·Ήλνν©λλ€. λν, Cortex-M νλ‘μΈμλ λ©λͺ¨λ¦¬ λ³΄νΈ μ λ(MPU)μ κ°μΆκ³ μμ΄ μμ ν μ ν리μΌμ΄μ κ°λ°μ κ°λ₯νκ² ν©λλ€. μ΄λ¬ν λͺ¨λ μμλ€μ ARM Cortex-M μ리μ¦κ° μλ² λλ μμ€ν μ νμ€μΌλ‘ μ리 μ‘μ μ μλλ‘ λμμ€λλ€.
ARM Cortex-M μ리μ¦λ λ€μν μμ© λΆμΌμμ νμ©λλ©°, μλ₯Ό λ€μ΄ μ€λ§νΈ κ°μ , μ¨μ΄λ¬λΈ κΈ°κΈ°, μλμ°¨ μ μκΈ°κΈ° λ±μμ κ·Έ μ€μμ±μ΄ λμ± λΆκ°λκ³ μμ΅λλ€. μ΄λ¬ν μ μμ ARM Cortex-M μ리μ¦λ νλμ λμ§νΈ νλ‘ μ€κ³μμ νμμ μΈ κΈ°μ λ‘ μ리 μ‘κ³ μμ΅λλ€.
ARM Cortex-M μ리μ¦λ μ¬λ¬ μ£Όμ κ΅¬μ± μμλ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, μ΄λ€μ μλ‘ μνΈμμ©νμ¬ ν¨μ¨μ μΈ μλμ 보μ₯ν©λλ€. μ£Όμ κ΅¬μ± μμλ λ€μκ³Ό κ°μ΅λλ€: CPU, λ©λͺ¨λ¦¬ μΈν°νμ΄μ€, μΈν°λ½νΈ 컨νΈλ‘€λ¬, κ·Έλ¦¬κ³ λλ²κΉ μΈν°νμ΄μ€μ λλ€.
CPUλ ARM Cortex-M μ리μ¦μ ν΅μ¬μ΄λ©°, ARMv7-M μν€ν μ²λ₯Ό κΈ°λ°μΌλ‘ ν©λλ€. μ΄ CPUλ 32λΉνΈ νλ‘μΈμλ‘, λ€μν λͺ λ Ήμ΄ μ§ν©μ μ§μν©λλ€. νΉν, Thumb-2 λͺ λ Ήμ΄ μ§ν©μ μ½λ λ°λλ₯Ό λμ΄λ λ° κΈ°μ¬νμ¬ λ©λͺ¨λ¦¬ μ¬μ©μ μ΅μ νν©λλ€. CPUλ λν νλμ¨μ΄ μ§μμ ν΅ν΄ μ€μκ° μ²λ¦¬ λ₯λ ₯μ κ·Ήλννλ©°, λ€μν μ λ ₯ κ΄λ¦¬ κΈ°λ₯μ ν΅ν΄ μ λ ₯ μλΉλ₯Ό μ΅μνν©λλ€.
λ©λͺ¨λ¦¬ μΈν°νμ΄μ€λ ARM Cortex-M νλ‘μΈμμ μΈλΆ λ©λͺ¨λ¦¬ κ°μ λ°μ΄ν° μ μ‘μ κ΄λ¦¬ν©λλ€. μ΄ μΈν°νμ΄μ€λ SRAM, Flash λ©λͺ¨λ¦¬ λ° κΈ°ν μ£Όλ³ μ₯μΉμμ μ°κ²°μ μ§μν©λλ€. λ©λͺ¨λ¦¬ μν€ν μ²λ νλ²λ ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘ νμ¬ λͺ λ Ήμ΄μ λ°μ΄ν°λ₯Ό λΆλ¦¬νμ¬ μ²λ¦¬ μλλ₯Ό ν₯μμν΅λλ€. λν, λ©λͺ¨λ¦¬ λ³΄νΈ μ λ(MPU)μ ν΅ν΄ μ ν리μΌμ΄μ μ μμ μ±μ 보μ₯ν©λλ€.
μΈν°λ½νΈ 컨νΈλ‘€λ¬λ ARM Cortex-M μ리μ¦μ μ€μν κ΅¬μ± μμλ‘, λ€μν μΈλΆ λ° λ΄λΆ μΈν°λ½νΈλ₯Ό κ΄λ¦¬ν©λλ€. μ΄ μ»¨νΈλ‘€λ¬λ Nested Vectored Interrupt Controller(NVIC)λ‘ μλ €μ Έ μμΌλ©°, μ€μκ° μ ν리μΌμ΄μ μμμ λΉ λ₯Έ λ°μμ±μ μ 곡ν©λλ€. NVICλ μΈν°λ½νΈμ μ°μ μμλ₯Ό μ€μ νκ³ , μ¬λ¬ μΈν°λ½νΈλ₯Ό λμμ μ²λ¦¬ν μ μλ λ₯λ ₯μ κ°μΆκ³ μμ΅λλ€.
λλ²κΉ μΈν°νμ΄μ€λ κ°λ°μκ° ARM Cortex-M νλ‘μΈμλ₯Ό ν¨μ¨μ μΌλ‘ λλ²κΉ ν μ μλλ‘ λλ λꡬμ λλ€. μ΄ μΈν°νμ΄μ€λ JTAG λ° SWD(Serial Wire Debug)μ κ°μ νλ‘ν μ½μ μ§μνμ¬, κ°λ°μκ° μ½λμ μ€ν μνλ₯Ό μ€μκ°μΌλ‘ λͺ¨λν°λ§νκ³ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλλ‘ ν©λλ€.
μ΄ λͺ¨λ κ΅¬μ± μμλ μλ‘ κΈ΄λ°νκ² μνΈμμ©νλ©°, ARM Cortex-M μ리μ¦κ° μ 곡νλ μ λ°μ μΈ μ±λ₯κ³Ό ν¨μ¨μ±μ κ·Ήλνν©λλ€. μ΄λ¬ν μνΈμμ©μ μλ² λλ μμ€ν μ€κ³μμ λ§€μ° μ€μν μμλ‘ μμ©ν©λλ€.
ARM Cortex-M μ리μ¦λ μ¬λ¬ λ€λ₯Έ λ§μ΄ν¬λ‘컨νΈλ‘€λ¬ μν€ν μ²μ λΉκ΅ν μ μμ΅λλ€. λνμ μΌλ‘ AVR λ° PICκ³Ό κ°μ λ§μ΄ν¬λ‘컨νΈλ‘€λ¬κ° μμ΅λλ€. μ΄λ€ κΈ°μ μ λͺ¨λ μλ² λλ μμ€ν μ€κ³μ μ¬μ©λμ§λ§, λͺ κ°μ§ μ€μν μ°¨μ΄μ μ΄ μ‘΄μ¬ν©λλ€.
AVR λ§μ΄ν¬λ‘컨νΈλ‘€λ¬λ μ£Όλ‘ κ΅μ‘μ© λ° μν νλ‘μ νΈμμ μ¬μ©λλ©°, μλμ μΌλ‘ κ°λ¨ν μν€ν μ²λ₯Ό κ°μ§κ³ μμ΅λλ€. κ·Έλ¬λ ARM Cortex-M μ리μ¦λ λ λμ μ±λ₯κ³Ό λ λ§μ κΈ°λ₯μ μ 곡νμ¬ λ³΅μ‘ν μ ν리μΌμ΄μ μ μ ν©ν©λλ€. ARM Cortex-Mμ λ λ§μ λ©λͺ¨λ¦¬ μ΅μ κ³Ό κ³ κΈ μΈν°λ½νΈ μ²λ¦¬ κΈ°λ₯μ μ 곡νμ¬, μ€μκ° μμ€ν μμμ μ±λ₯μ κ·Ήλνν©λλ€.
PIC λ§μ΄ν¬λ‘컨νΈλ‘€λ¬λ λ€μν μμ© λΆμΌμμ μ¬μ©λλ©°, νΉν μ°μ μλνμμ μΈκΈ°κ° λμ΅λλ€. κ·Έλ¬λ ARM Cortex-M μ리μ¦λ λ λμ μ²λ¦¬ λ₯λ ₯κ³Ό μ λ ₯ ν¨μ¨μ±μ μ 곡νμ¬, IoT λ° λͺ¨λ°μΌ κΈ°κΈ°μ κ°μ μ΅μ μ ν리μΌμ΄μ μ λ μ ν©ν©λλ€. λν, ARM Cortex-Mμ λ λμ μνκ³λ₯Ό κ°μΆκ³ μμ΄, λ€μν κ°λ° λꡬμ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μν©λλ€.
μ€μ μ¬λ‘λ‘λ, ARM Cortex-M μ리μ¦κ° μ¬μ©λ μ€λ§νΈ ν μ₯μΉ, μλ£ κΈ°κΈ°, κ·Έλ¦¬κ³ μ°μ μλν μμ€ν λ±μ΄ μμ΅λλ€. μ΄λ¬ν μ₯μΉλ€μ μ λ ₯ ν¨μ¨μ±κ³Ό μ±λ₯μ μ΅μ ννμ¬, μ¬μ©μμκ² λ λμ κ²½νμ μ 곡ν©λλ€. λ°λ©΄, AVRμ΄λ PIC κΈ°λ°μ μμ€ν μ λΉκ΅μ κ°λ¨ν κΈ°λ₯μ κ°μ§ μ₯μΉμμ μ£Όλ‘ μ¬μ©λ©λλ€.
μ΄μ κ°μ λΉκ΅λ₯Ό ν΅ν΄ ARM Cortex-M μ리μ¦μ μ₯μ κ³Ό κ·Έ νμ© κ°λ₯μ±μ λͺ νν ν μ μμ΅λλ€. νλμ λμ§νΈ νλ‘ μ€κ³μμ ARM Cortex-M μ리μ¦λ νμμ μΈ κΈ°μ λ‘ μ리 μ‘κ³ μμΌλ©°, λ€μν μμ© λΆμΌμμ κ·Έ μ€μμ±μ΄ λμ± μ»€μ§κ³ μμ΅λλ€.
ARM Cortex-M Seriesλ μ μ λ ₯, κ³ μ±λ₯μ μλ² λλ μμ€ν μ μν λ§μ΄ν¬λ‘컨νΈλ‘€λ¬ μν€ν μ²λ‘, λ€μν μμ© λΆμΌμμ νμμ μΌλ‘ μ¬μ©λλ κΈ°μ μ λλ€.