"기본"마이크로 컨트롤러에서 ARM Cortex로 전환하는 방법?


22

8051, PIC 및 AVR과 같은 다양한 제조업체의 8 비트 코어에 대한 수년간의 경험이 있으며 이제 Cortex M0을 알아 냈습니다. 특히 이것 하나 이지만, 우리가 그보다 더 일반적 일 수 있기를 바랍니다.

시스템의 다른 부분을 다양한 세부 수준으로 설명하고 실제로는 모두 함께 연결하는 것을 보지 못한 여러 문서가있어서 내가 생각했던 것보다 조금 더 많은 것으로 나타났습니다. 이것은 모든 것을 설명하는 하나의 데이터 시트를 갖는 것과 비교됩니다. 처음에는 더 많은 문서를 작성해야한다는 것을 이해하지만 형식 변경으로 인해 루프가 생겼습니다.

위의 웹 사이트에는 각 하위 시스템과 주변 장치에 대한 개요가 잘 정리 된 문서와 각 레지스터에 대해 자세히 설명하는 문서가 있으며 헤더 파일과 복잡한 예제를 포함하여 SDK의 모든 소스 코드가 있습니다. 모든 것이 어떻게 연결되는지 설명하는 것은 없습니다.

CPU에서 주변 장치에 이르는 여러 계층의 버스 (각각 자체 감시 타이머가있는)와 같이 작은 컨트롤러에는없는 기능을 설명하는 Cortex 아키텍처의 간결한 설명이 있습니까?


제조업체의 프로세서에 대한 실제 데이터 시트 / 사용 설명서가 있는지 설명한 내용을 알 수 없습니다. 그것은 당신에게 좋은 전반적인 그림과 세부 사항을 제공해야합니다. 연결 한 사이트의 그림 중 하나에서 NXP 프로세서처럼 보입니다. 제조업체의 부품 번호를보고 해당 사이트에서 프로세서 설명서를 검색하십시오. ARM 사이트 arm.com/products/processors/cortex-m/cortex-m0.php도 있습니다.
DigitalNinja 2016 년

다시 연락이 늦어 져 죄송합니다. 다른 프로젝트로 바빴습니다. 경험의 목소리에 @Adam에게 감사합니다.
AaronD

또한 생각하는 방법에 대한 개요와 핀 구성 인쇄에 대한 참고 사항에 대해 @Richard에게 감사드립니다. 둘 다 공감 했어
AaronD

극단적 인 가격 요구 사항 을 찾는 경우를 제외하고는 다시 돌아 가지 않을 것 입니다. 그리고 먼지가 싼 Cortex-M이 상당히 많기 때문에 유혹을받을 것입니다.
Ronan Paixão

답변:


40

ARM Cortex-M3 / M4 / R4 기반 MCU뿐만 아니라 AVR에서도 작업했습니다. 나는 몇 가지 일반적인 조언을 제공 할 수 있다고 생각합니다. 이것은 어셈블리가 아닌 C로 프로그래밍한다고 가정합니다.

CPU는 실제로 쉬운 부분입니다. 기본 C 데이터 유형은 크기가 다르지만 어쨌든 uint8 / 16 / 32_t를 사용하고 있습니까? :-) 이제 모든 정수 유형이 합리적으로 빨라야하며 32 비트 (int)가 가장 빠릅니다. FPU가 없을 수도 있으므로 플로트와 복식을 피하십시오.

먼저 시스템 수준 아키텍처에 대한 이해를 돕기 위해 노력하십시오. 이는 IO, 클럭킹, 메모리, 재설정 및 인터럽트를 의미합니다. 또한 메모리 매핑 주변 장치에 익숙해 져야합니다. AVR에서는 레지스터에 고유 한 전역 변수가 정의 된 고유 한 이름이 있으므로 그에 대한 생각을 피할 수 있습니다. 보다 복잡한 시스템에서는 기본 주소와 오프셋으로 레지스터를 참조하는 것이 일반적입니다. 모두 포인터 산술로 귀결됩니다. 포인터가 마음에 들지 않으면 지금 학습을 시작하십시오.

IO의 경우 주변 장치 멀티플렉싱을 처리하는 방법을 알아 봅니다. 어떤 핀이 주변 장치 신호이고 어떤 핀이 GPIO인지 선택하는 중앙 멀티플렉서 컨트롤이 있습니까? 아니면 주변 장치 레지스터를 사용하여 핀을 주변 장치 모드로 설정합니까? 물론 GPIO를 입력 및 출력으로 구성하고 오픈 드레인 모드 및 풀업 / 다운을 활성화하는 방법을 알아야합니다. 외부 인터럽트도 일반적으로이 범주에 속합니다. GPIO는 매우 일반적이므로 귀하의 경험이 귀하에게 잘 도움이됩니다.

클로킹은 몇 가지로 요약됩니다. 클럭 소스, 일반적으로 크리스털 또는 내부 RC 발진기로 시작합니다. 이것은 하나 이상의 시스템 레벨 클럭 도메인을 생성하는 데 사용됩니다. 고속 칩은 PLL을 사용하므로 주파수 승수로 생각할 수 있습니다. 다양한 지점에 클럭 분배기도 있습니다. 고려해야 할 주요 사항은 CPU 클럭 주파수와 통신 주변 장치에 필요한 비트 전송률입니다. 일반적으로 이것은 매우 유연합니다. 더 발전하면 일반적으로 클럭 게이팅을 기반으로하는 저전력 모드에 대해 배울 수 있습니다.

메모리는 플래시와 RAM을 의미합니다. 충분한 RAM이 있다면 초기 개발 과정에서 프로그램을 유지하는 것이 더 빠르므로 플래시를 반복해서 프로그래밍 할 필요가 없습니다. 여기서 큰 문제는 메모리 관리입니다. 공급 업체는 샘플 링커 스크립트를 제공해야하지만 프로그램 특성에 따라 코드, 상수, 전역 변수 또는 스택에 더 많은 메모리를 할당해야 할 수도 있습니다. 고급 주제에는 코드 보안 및 런타임 플래시 프로그래밍이 포함됩니다.

리셋은 매우 간단합니다. 일반적으로 워치 독 타이머 만 찾아야하며, 기본적으로 활성화되어있을 수 있습니다. 동일한 코드를 반복해서 실행할 때 디버깅 중에 재설정이 더 중요합니다. 그런 식으로 시퀀싱 문제로 인해 버그를 놓치기 쉽습니다.

인터럽트에 대해 알아야 할 두 가지, 인터럽트를 활성화 및 비활성화하는 방법 및 인터럽트 벡터를 구성하는 방법이 있습니다. AVR-GCC는 ISR () 매크로를 사용하여 후자를 수행하지만 다른 아키텍처에서는 수동으로 레지스터에 함수 주소를 작성해야 할 수도 있습니다.

마이크로 컨트롤러 주변 장치는 일반적으로 서로 독립적이므로 한 번에 하나씩 배울 수 있습니다. 주변 장치를 하나 선택하여 시스템 수준의 내용을 배우는 데 도움이 될 수 있습니다. 통신 주변 장치 및 PWM은 클럭킹 및 IO에 적합하고 타이머는 인터럽트에 적합합니다.

복잡성 수준에 겁 먹지 마십시오. 이 "기본"마이크로 컨트롤러는 이미 알아야 할 많은 것을 가르쳐주었습니다. 설명이 필요하면 알려주세요.


4
좋은 대답입니다. 주의해야 할 또 다른 사항은 DMA 주변 장치이며, 경험상 복잡하고 문서화되지 않은 인터페이스가 있습니다.
Doug McClean

3
"이제 모든 정수 유형이 똑같이 빨라야합니다." 실제로 C의 정수 승격 규칙으로 인해 8/16 비트 유형을 사용하면 부호 / 제로 확장이 많을 수 있으며 플래시 메모리가 부족할 때 문제가 될 수 있습니다. 따라서 여분의 RAM이있는 경우 더 많은 32 비트 유형을 사용하거나 스택 변수에 대해 적어도 선호 int/ int_leastN_T유형을 사용 하는 것이 좋습니다.
user694733

내 의견에 실수를했다. 내가하려는 말은; 사용 int_fastN_t유형이 아닌 int_leastN_t유형.
user694733

@ user694733 : C 표준이 메모리에서 주어진 크기를 차지하고 특정 범위 내의 값에서 작동 할 수 있지만 해당 범위를 넘어갈 때 느슨하게 지정된 의미를 가진 정수를 요구하는 코드를 허용하기를 바랍니다. ARM과 같은 경우 메모리에 저장된 값 int16_t만큼 빠를 수 int32_t있지만 표준에 따르면 int17 비트 이상의 플랫폼에서는 -32767로 int16_t x=32767; x+=2;설정해야하며 x코드가 확장 되더라도 부호 확장 명령이 자주 필요합니다 랩핑 동작을 사용하지 마십시오.
supercat

@supercat C 표준은 서명되지 않은 유형에 대해서만 줄 바꿈 동작이 필요합니다. 부호있는 유형의 경우 가능한 다른 표현으로 인해 모든 줄 바꿈은 UB입니다. 따라서 x+=2컴파일러에서는 16 비트 유형에 명령어를 사용하는 것이 합법적입니다. 컴파일러는 값이 줄 바꿈되지 않는다고 가정 할 수 있으므로이를 사용하여 관찰 가능한 동작을 변경하지 않습니다. 그러나 ARM에는 이것을 가능하게하는 16 비트 ADD 명령이 없다고 생각 합니다. (잘못 될 수도 있습니다. ARM 명령어 세트에 대한 지식이 그다지 좋지 않습니다.)
user694733 2016 년

8

ARM은 마이크로 프로세서에 대한 지적 재산을 소유하지만 실제로 부품을 만들지는 않는다는 것을 기억하는 것이 유용합니다. 대신 제조업체는 다양한 ARM 프로세서 버전에 라이센스를 부여하고 개별 기능 및 주변 장치 조합을 사용하여 고유 한 부품을 생산합니다.

그러나 아키텍처에 익숙하지 않다면 ARM의 문서 (기본적으로 모든 마이크로 프로세서의 기본 문서)로 시작하는 것이 좋습니다.

예를 들어 Cortex-M0은 ARM 웹 사이트에 설명 되어 있습니다 .

다양한 요구와 관심을 충족시키는 ARM 관련 서적 목록 도 있습니다 .

마지막으로, 특정 제조업체의 데이터 시트가 있습니다. M0의 경우 Cypress, NXP 및 STMicroelectronics는 Cortex-M0을 기반으로 한 많은 실제 부품 제조업체 중 3 개에 불과합니다.

(아니, 나는 ARM에서 일하지 않으며 결코 가지고 있지 않습니다.)


1
이것은 Cortex-M0 문서에 대한 링크보다 훨씬 더 많은 것을하지 않는 매우 일반적인 대답입니다 .OP가 독자적으로 찾을 수 있다고 확신합니다.
Jay Carlson

1
전체 문서를 찾는 데 도움이되는 질문을 직접 해결합니다. 이 답변은 그 요구에 직접 응답하고 사물이 왜 그런지 설명합니다 .
Edward

8

한 가지 큰 차이점은 공급 업체 제공 라이브러리를 사용한다는 것입니다. PIC, Atmel 등의 경우 대부분의 개발자는 기본 라이브러리 (gpio, 타이머, adc 등)를 많이 사용하지 않았습니다. 내 경험상 사람들은 자신의 코드를 작성할 때 (가장) 가이드로 사용합니다.

그러나 ARM에서는 거의 항상 라이브러리가 사용됩니다. 제조업체가 권장하는 표준 "CMSIS"가 있습니다. 대부분 그렇습니다. 코드 이식성 (다른 ARM 간 및 제조업체 간)을 지원하고 코드를 구성하기위한 "표준화 된"방법을 제공합니다. 사람들은 도서관 기능을보고 이해하는 데 익숙해집니다.

물론 레지스터에 직접 액세스하는 개발자가 있지만 이상치입니다. :)

귀하의 질문에 대답하기 위해 도서관 문서를 읽는 것이 매우 도움이되었습니다. ST는 큰 Doxygen 작성 도움말 파일과 함께 잘 개발 된 코드를 가지고 있습니다. 각 하드웨어 모듈에 대한 모든 옵션이 무엇인지 확인할 수 있습니다.

GPIO를 예로 사용하기 위해 초기화 함수는 다음을 처리합니다.

  • 방향 (In 또는 Out)
  • 풀업 / 풀다운
  • 오픈 컬렉터 / 푸시 풀
  • 슬 루율
  • 기타

옵션을 살펴보면 무엇이 가능한지 알 수 있습니다. 물론 이러한 옵션을 Init 함수에 전달하는 방법을 배우게됩니다!

자, 이제 말 했으니, 특정 ARM에는 CMSIS 호환 라이브러리가 없습니다. 대신 독점 SDK를 다운로드 할 수 있습니다. SDK 문서를 살펴보기 시작했습니다.

이 특정 제품과 결혼하지 않은 경우보다 적합한 라이브러리를 가진 다른 공급 업체를 찾는 것이 좋습니다. 당신은 어쨌든 학습 곡선을 올라갈 것이므로 투자를보다 이식 가능하게 만들 수 있습니다 ...

ARM은 재미있다! 나는 뒤돌아 보지 않았다.


"PIC, Atmel 등의 경우 대부분의 개발자가 라이브러리를 많이 사용하지 않았습니다." 어디에서 왔는지 확실하지 않습니다. AVR이 아닌 PIC 만 사용했지만 USB 호스트 인터페이스, TCP 스택 또는 SD 카드 파일 시스템과 같은 자체 라이브러리를 작성하고 싶지는 않습니다. 이들 모두를위한 Microchip의 라이브러리는 꽤 적합 해 보입니다.
tcrosley 2016 년

아, @tcrosley, 당신은 확실히 맞습니다. 나는
gpio

동의합니다. 일반적으로 GPIO, 타이머, 시계 및 UART R / W에 직접 액세스합니다. 나는 때때로 항상 I2C, SPI, ADC 및 UART 설정하지만 그들의 라이브러리 호출을 사용합니다. PIC (특히 PIC32) 또는 ARM과 상관없이 많은 레지스터.
tcrosley 2016 년

이 답변은 OP의 특정 컨트롤러에 적용되지 않더라도이 질문에 대해 가장 실용적인 답변이라고 생각합니다. AHB 또는 NVIC를 이해하지 않고도 훌륭한 임베디드 엔지니어링을 할 수 있다고 생각합니다.
Jay Carlson

@JayCarlson 감사합니다! 다른 사람의 게시물을 크게 변경하지 않기 때문에이 답변에 대한 수정이 거부되었습니다. 그러나 정말 좋은 정보였습니다! 나는 당신이 당신의 자신의 답변으로 게시하는 것이 좋습니다, 그래서 사람들을 도울 것입니다 또한 upvoted :)
bitsmack

5

움직일 수있는 좋은 시간; 8 비트는 빠르게 죽어 가고있다. 32 비트 ARM 마이크로 컨트롤러 인 STM32F103 (예 : USB 포함)을 사용하여 5 달러짜리 보드를 구입할 수 있다면 의심 할 여지가없는 시간입니다.

당신은 이미 훌륭한 답변을 얻었지만 주로 "조립을 잊어 버렸습니다"라고 말하고 거의 "CPU가 낮은 수준에서 어떻게 작동하는지 걱정하지 마십시오"-언젠가는 그것을 파헤쳐 야 할 코너 케이스가 있습니다. (특정 최적화 또는 디버깅 용)이지만 ARM 코어는 C 코드를 예외적으로 (설계 상) 잘 실행하므로 사용자는 내장 내부를 자세히 살펴볼 필요가 거의 없습니다.

이것은 컴파일러 (특히 링커 및 makefile)와 관련된 문제에 대해 눈에 띄지 않는 오류를 피하기 위해 일정 시간을 소비하지만 모두 극복 할 수 있음을 의미합니다.

ARM이 작동하는 방식 (즉, ARM CPU 책)의 장은 실제로 최적화해야 할 때까지 밀도가 높고 흥미롭지 않습니다 (32 비트 레지스터와 PLL이있는 경우가 얼마나 드문 지 놀라 울 것입니다) d CPU 클럭은 100mhz 영역에 있습니다.

"오래된 skool"ARM 명령어 세트는 최신 "Thumb2"보다 디스 어셈블리를 훨씬 쉽게 읽을 수 있습니다. 이는 대부분의 최신 마이크로 컨트롤러 수준 ARM (Cortex)에서 찾을 수 있지만 어셈블리 언어 명령어의 내부에 있습니다. 대부분 배경으로 사라집니다. 올바른 도구 세트 (특히 브레이크 포인트 / 단일 단계 등이있는 적절한 소스 레벨 디버거)가 있다면 ARM에 전혀 신경 쓰지 않아도됩니다.

32 비트 레지스터와 32 비트 데이터 버스 폭의 세계와 온칩에서 원하는 모든 것이 있으면 8 비트 CPU로 다시 돌아가고 싶지 않을 것입니다. 기본적으로 "쉽게 이해"하고 코드를 작성하는 것보다 효율적으로 읽을 수 있다는 페널티는 없습니다.

그러나 ... 주변 장치 ... 예 그리고 문지름이 있습니다.

현대 MCU에서 많은 것을 얻을 수 있으며 많은 것들이 꽤 멋진 것입니다. AVR, PIC 및 8051 온칩 주변 장치를 훨씬 능가하는 세련미의 세계를 종종 발견합니다.

프로그래밍 가능한 타이머 하나? 아냐, 여덟 개가있어! DMA? 프로그래밍 가능한 우선 순위 및 버스트 모드와 체인 모드 및 자동 재로드 및 자동 전환 기능을 갖춘 12 개의 채널

I2C? I2S? 수십 개의 핀 멀티플렉싱 옵션? 온칩 플래시를 다시 프로그래밍하는 15 가지 방법? 확실한!

종종 주변 장치로 기근에서 잔치로 향한 것처럼 느껴지며 거의 사용하지 않지만 거의 사용하지 않는 칩 덩어리가있는 것이 일반적입니다 (따라서 시계 게이팅).

오늘날 온칩 하드웨어의 양 (그리고 한 벤더의 칩 라인에서 변형 된 것)은 현재 상당히 마음에 들지 않습니다. 한 칩 공급 업체는 물론 IP 블록을 재사용하는 경향이 있으므로 특정 브랜드에 익숙해지면 더 쉬워 지지만 "요즘에는 끔찍한 일이 생겼습니다."

주변 장치와 해당 상호 작용 (및 DMA 및 인터럽트 및 버스 할당 및 / 및)이 너무 복잡하고 때로는 데이터 시트에 설명 된 것과 정확히 일치 하지 않는 경우 엔지니어가 자주 사용하는 ARM MCU 및 주변 장치 및 개발 도구에 익숙하기 때문에 단순히 고수하려는 경향이 있습니다.

훌륭한 라이브러리 및 개발 도구 (즉, 적절한 디버거를 사용하는 빠른 컴파일 + 디버그주기)와 대규모 작업 예제 코드 프로젝트는 현재 ARM MCU 선택에 절대적으로 중요합니다. 현재 대부분의 공급 업체는 매우 저렴한 평가 보드를 보유한 것으로 보입니다

알다시피, ARM이있는 마이크로 컨트롤러 수준을 넘어 SOC 수준 (예 : Raspberry Pi / etc 스타일 SOC)으로 넘어 가면 규칙이 완전히 바뀌고 모든 종류의 Linux에 관한 것입니다. 거의 예외를 제외하고는 다른 것을 시도하기 위해 짖는 소리를 낼 수 있기 때문입니다.

원래; 이 공연에서 사전 선택된 CPU에 관계없이 몇 가지 다른 벤더 (TI, STM, 프리 스케일 등)의 슈퍼 저렴한 Cortex 기반 평가 보드를 구입하십시오. 제공된 샘플 코드로 해킹하십시오.

마지막 조언; 데이터 시트에서 작업중인 정확한 부품 번호 칩에 대한 핀-먹싱 옵션을 설명하는 3 ~ 3 페이지를 찾으면 인쇄하여 벽에 붙일 수 있습니다. 핀 뮤싱으로 인해 주변 장치의 특정 조합이 불가능하다는 것을 프로젝트에서 늦게 발견하는 것은 재미가 없으며 때로는 정보가 너무 묻혀서 숨기려고한다고 맹세합니다. :-)


빠른 부록-프로젝트가 가장 단순한 컨트롤러보다 훨씬 많은 경우 RTOS 사용에 대해 생각하십시오. 선택한 것이 무엇이든 학습 곡선이 있지만 오늘날에는 작은 ARM조차도 멀티 스레드 OS를 실행하기에 많은 어려움이 있습니다. 개인적으로 ChibiOS는 아직까지 가능하지 않은 (특히 주변 장치 라이브러리가있는 STM32에서 실행되는) 훌륭한 조합이라는 것을 알았지 만 여러 가지 선택이 있습니다.
Richard Aplin 2016 년

4

또한 AVR에서 왔으며 이제는 보통 STM32 (Cortex-M)를 사용합니다. 초보자에게 권장하는 사항은 다음과 같습니다.

  1. 디버거 또는 JTAG 커넥터가있는 보드를 가져온 다음 JTAG 디버거를 구입하십시오. 저렴한 것들이 많이 있으며 그것을 사용하면 많은 시간을 절약 수 있습니다.

  2. 모든 것이 포함 된 좋은 IDE를 얻으십시오. 나는 오래 전에 CooCox CoIDE 를 추천 했었다 . 그 이후로 개발을 중단했다가 다시 시작했기 때문에 현재 상황이 확실하지 않습니다. "좋은 IDE"를 사용하면 기본 Hello World LED가 빠르게 깜박입니다.

  3. "좋은 IDE"는 제조업체의 CMSIS 헤더를 설정해야합니다. 기본적으로 레지스터 맵으로 일반 숫자와 포인터 대신 변수 이름을 사용하여 C / C ++ 프로그램을보다 쉽게 ​​작성할 수 있습니다.

  4. 절대 최고의 성능이 필요하지 않은 경우 제조업체의 주변 장치 라이브러리를 사용하십시오. 배우기 때문에 실제로는 그렇지 않습니다. 나중에 더 많이 짜야한다면 라이브러리 코드를보고 어떻게 작동하는지 확인하십시오. 라이브러리의 장점은 일반적으로 동일한 제조업체에서 동일한 코드로 여러 다른 칩을 사용할 수 있다는 것입니다.

  5. AVR과 달리 ARM 칩은 주변 장치를 비활성화 한 상태에서 시작합니다. 먼저 활성화해야합니다. 좋은 주변 장치 라이브러리에는 주변 장치를 올바르게 사용하는 방법에 대한 예가 있으며 장치의 데이터 시트에서 더 많은 정보를 얻을 수 있습니다. 따라서 시계와 주변 장치를 사용하기 전에 활성화해야합니다. 예, I / O 포트조차도 주변 장치로 간주됩니다.

  6. 배우면서 코드를 작성하십시오. 정말 복잡하기 때문에 한 번에 모든 것을 망치려고 시도하지 마십시오. 클럭 트리 (APB, AHB 등 버스)와 클럭과 클럭 디바이더의 상호 작용을 배우는 것으로 시작하겠습니다. 그런 다음 IDE가 링커 스크립트 와 장치의 시작 코드 를 저장하는 위치를 봅니다 . 링커 스크립트는 메모리를 구성하는 방법과 거의 비슷합니다 (RAM, 플래시, ISR 벡터 테이블 등). 시작 스크립트는 프로그램을 설정합니다 (글로벌 변수 이니셜 라이저를 플래시에서 RAM으로 복사하는 것과 같은 것). 일부 IDE에는 ASM에 시작 스크립트가 있고 일부에는 C에 있습니다. 때로는 선호하는 언어로 다른 스크립트를 위해 Google을 사용할 수 있습니다.

  7. 가능한 빨리 디버거를 얻으십시오. 처음에는 실수와 다른 순서로 어떤 것들 (보통 하드웨어 초기화)을함으로써 실수를 저지르는 것이 일반적입니다. 이것은 때때로 while(1);프로그램을 정지시키는 무한 루프 (해당 ISR에 대한 기본 구현)를 가져 오는 ISR 예외를 트리거 하며 디버거로도 추적하기가 어렵습니다. 디버거가 없다고 상상해보십시오.

  8. 디버거에 대해 이야기하고 UART도 시도한 다음 직렬 USB 어댑터를 사용하여 읽으십시오. printf()디버깅은 항상 유용합니다 :-)


3

8051, AVR 또는 PIC에서 많이 일하지 않았습니다. 그러나 최근에 ARM Cortex MX 프로세서 제품군을 살펴보기 시작했습니다. 따라서 나는 8051, AVR 또는 PIC에서의 전환에 대해 많이 말할 수 없지만 대부분 초보자의 입장에서 말합니다.

ARM®Cortex ™ -M4 프로세서는 하버드 아키텍처를 기반으로하므로 별도의 데이터 및 명령 버스가 있습니다. 아래는 높은 수준의 이미지입니다.

여기에 이미지 설명을 입력하십시오

이번 주 NXP 담당자는 우리 시설을 방문 할 것입니다. NXP ARM-Cortex Mx 리소스를 확인하고 여기에 게시하겠습니다. 프리 스케일에는 ARM® Cortex®-M 코어를 기반으로하는 Kinetis 저전력 32 비트 마이크로 컨트롤러 (MCU) 가 있으며 ARM 프로세서 학습에 대한 유사한 안내서도 있습니다. 불행히도 나는 그것들을 연구하지 않았습니다.


참고 문헌 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.