마이크로 컨트롤러에서 플래시 크기를 선택하는 데 도움이 필요합니다


9

프로젝트의 플래시 크기와 RAM을 선택할지 결정해야합니다. 내가 선호하는 마이크로 컨트롤러는 TI MSP430 시리즈입니다. 낮은 전력 소비 및 가치 라인 시리즈 비용으로 인해. 그러나 요구 사항 수집을 결정하는 데는 초보자입니다. 내 프로그래밍 경험의 대부분은 일반적으로 프로그램 크기, RAM 및 프로세서 속도가 일반적인 알고리즘 작업에 큰 관심을 갖지 않는 데스크톱 기반 시스템에 관한 것입니다.

다음과 같은 질문이 있습니다.

  1. 마이크로 컨트롤러의 RAM 및 플래시 크기 결정에 관한 지침 또는 표준 사례가 있습니까?
  2. MCU의 플래시 크기를 몇 줄의 코드 (C)로 변환합니까?
  3. 플래시 크기를 최소로 유지해야하는 경우 어셈블리 언어가 유일한 방법입니까?

프로젝트를위한 마이크로 컨트롤러의 일반적인 선택과 관련하여이 분야의 전문가들은 작업에 가장 적합한 마이크로 컨트롤러를 어떻게 결정합니까? 그들은 어떤 리소스를 검색합니까? 그들이 따르는 지침은 무엇입니까?

답변:


7

모든 질문에 대한 답변은 무엇을하고 싶은지에 달려 있습니다.

당신이 말했듯이, 당신은 초보자이기 때문에 가장 큰 마이크로 컨트롤러를 사용하고 프로젝트를 시도해보십시오. 그런 다음 사용하는 코드의 양을 시각화 한 다음 사용 된 내용에 따라 크기를 조정할 수 있습니다.


동의했다. 큰 것으로 시작한 다음 필요한 경우 최종 요구 사항을 충족하는 가장 작은 부분으로 줄이십시오.
W5VO

"가장 큰"은 "타겟팅하려는 시리즈에서"자격이 있어야합니다. 필요한 주변 장치와 필요한 속도 등급을 찾고 아키텍처 / 패밀리를 선택한 다음 해당 제품군에서 가장 큰 프로세서로 개발하십시오. 512kB의 플래시와 64kB의 RAM으로 시작하지 마십시오. 가장 큰 마이크로 컨트롤러이기 때문입니다. 크기를 걱정하기 전에 Cortex-M3 vs. AVR vs. PIC18 vs. MSP430으로 좁 힙니다. 나는 다니엘이 이것을 예상 한 것 같지만 어딘가에 언급해야한다고 생각했습니다.
케빈 베르메르

7

msp430까지는 훌륭한 아키텍처, mspgcc 및 mspgcc4 및 llvm에 대한 훌륭한 도구입니다. 패치없이 binutils. 그 가격으로 5 달러 미만의 가격으로 런치 패드를 구입할 수 있습니다 (결국 무언가를 벽돌로 만들거나 단락시키고 녹아 내고 여분을 가짐).

도구를 다운로드하면 모두 무료이며 몇 줄의 코드를 작성하고 링크하는 방법을 배우고 바이너리가 얼마나 큰지 확인하고 임베디드에 대한 느낌을 얻습니다.

전문가들은 어떻게합니까? 상상할 수있는 거의 모든 방법 :

일부 회사는 의무가 무너져 내려 와서 그만두기 외에는 할 수있는 일이 없습니다. 그리고 왜 그 플랫폼이 선택되었는지 알 수 없을 것입니다.

때로는 계약자 / 좋아하는 고객이 플랫폼을 지시하고 때로는 교육 / 협상을 할 수도 있습니다.

어떤 사람들은 미지의 것을 좋아하는 것을 좋아합니다. 일부 사람들이 한 브랜드의 자동차 만 구입하는 것과 같은 이유로, 아빠가 그랬던 것처럼 아빠가 그 일을했기 때문에 그 이유가 전부일 수 있습니다.

어떤 사람들은 도구에 중점을 둡니다. 여기에도 브랜드 충성도가 높은 사람들이 있습니다. 좋아하는 컴파일러 회사와 그들이 지원하는 대상 또는 좋아하는 오픈 소스 도구 및 지원 대상으로 제한합니다. 좋아하는 임베디드 운영 체제 및 지원 대상으로 제한합니다.

어떤 경우에는 도구에 관한 것이지만 다른 방식으로, 시간이 지남에 따라 공급 업체 (예 : 팔 또는 자일링스 또는 모토로라)와의 연간 지원 계약에 많은 돈을 투자했을 수도 있으며 지원을 좋아했을 수도 있습니다 그리고 변경하고 싶지 않거나 당신이 알고있는 악마가 당신이하지 않는 악마보다 낫습니다. 또는 회사의 다른 5 개의 활성 프로젝트가이 작업을 사용하기 때문에 이미 지원 계약을 체결했으며 매년 그 해에 대해 계속 지불 할 것이므로 해당 공급 업체 솔루션 중 하나를 선택해야합니다.

때때로 그것은 밀리 페니를 저장하는 것입니다. 이 부분은 그 부분보다 1.5 % 저렴하고,이 부분과 함께 작동하게하고, NRE에 신경 쓰지 말고, 제조량 절감에 대해 생각하십시오.

때때로 그것은 부정적인 것에 관한 것입니다. 한 공급 업체가 귀사를 어떤 식 으로든 망 쳤을 수 있습니다. 광고 된 부품 공급을 충족하지 못하면 제품이 지연되거나 취소됩니다. 미끼 및 스위치 사기 (소프트웨어에 대한 50,000 달러의 수수료에는 라이센스 잠금을 해제하는 데 필요한 동글에 대한 1200 달러의 수수료가 포함되어 있지 않습니다. 이는 추가 비용 품목입니다. 프로그래머 참조 매뉴얼 또는 참조 디자인 가이드를보기 위해 NDA에 서명하면 그들의 엔지니어링이 얼마나 두려운 지 알게되며 평생 동안 모든 제품을 블랙리스트에 올릴 수 있습니다. 끔찍한 기술 지원으로 과거의 역사. 여러 가지 이유 때문에 정문에서 영업 사원을 허용하지 않거나 웹 사이트를 다시 보지 못하게 할 수 있습니다.

때로는 성능, 인터페이스 등과 관련이 있습니다. 예를 들어 부품이 $ 3 인 풀업, 마이크로 컨트롤러 브랜드 XYZ가 필요한 인터페이스는 사용 가능한 I / O 핀 세트가 있습니다. 다른 외부 하드웨어가 필요하지 않은 브랜드 ABC는 최소 3 달러의 부품을 사용하므로 최소 작동하려면 외부 트랜지스터와 저항이 필요합니다. msp430의 예는 전력 소비에 관한 것이므로 A 부분은 사용자에게 단 하나의 AAA 배터리를 사용하고 몇 달 동안 작동해야하며 B 부분은 2 개의 AAA 배터리가 필요하고 몇 주 동안 작동 할 수 있습니다.

가장 드문 경우는 실제로 엔지니어링, 모든 공급 업체 조사, 전력 소비 계산, 제품 계산 단위당 가격, 필요한 ROM의 크기 및 칩을 실행하는 빈도, 접착제 로직. 일반적으로 누군가 (보스 / 고객 / 고급 엔지니어)는 수년간의 경험을 쌓고 힙에서 촬영 (종종 위의 하나 이상을 사용함)하여 경로를 선택합니다 (종종 일정과 달러로 많은 시간을 절약하는 좋은 경로). 선택한 플랫폼을 미세 조정하기 위해 엔지니어링이 한 번 수행됩니다.

나의 개인적인 추천은 융통성있는 것입니다. 어떤 형태 나 방식의 대부분의 마이크로 컨트롤러 브랜드 / 가족은 평가 보드에 $ 50 미만으로 판매 할 수 있습니다. Sparkfun, olimex 또는 공급 업체로부터 직접 제공 (msp430 또는 stellaris 등의 경우). 각각 하나 이상을 시도하고 공통점과 다른 점, 도구, 로더, 언 브레이크하는 방법 등에 대한 느낌을 얻으십시오. 적어도 두 가지를 얻습니다. 하나는 경로를 강요 당할 때입니다. 플랫폼을 선택하는 차례가되면 플랫폼에 대해 더 잘 교육 받았으며 문제에 따라 올바른 (로드 된 단어) 플랫폼을 선택할 수 있다는 것입니다. 해결되다.

나가거나 하드웨어에 돈을 쓰지 않더라도 대부분 무료로 다운로드 할 수있는 도구가 있습니다. 마이크로 칩과 같은 경우 C 컴파일러 (하이테크 사용)를 얻을 수는 있지만 구독해야합니다 (이메일 주소를 알려주세요). gcc는 그것을 좋아하거나 싫어합니다. 미래, 데스크탑 또는 임베디드에있을 것입니다. 손이 더러워지고 크로스 컴파일러로 사용하는 법을 배우십시오. llvm도 시도해보십시오. 잠시 동안 gcc에 심각한 경쟁을하십시오. 어쨌든 일부 에뮬레이터를 쓰거나 찾거나, mame에는 많은 것이 있고, gdb에는 일부가 있습니다. github에서 thumbulator라는 것을 작성했습니다. 하드웨어로만 전환하기 전에 프로그램을 모두 실행하십시오. 나는 msp430 에뮬레이터를 채 웠지만 다소 실속되었습니다. 지침 세트가 너무 작아서 대부분의 작업이 저녁 또는 토요일 프로젝트 일 수 있습니다. 긴 오후의 PIC도 마찬가지입니다. 임베디드 연습을위한 명령어 세트 시뮬레이터가 있습니다. 다른 방법이 없다면 프로그램을 작성하고 링크하여 링크를 작성하는 방법과 프로그램이 얼마나 큰지, 더 엄격한 코드를 생성하도록 프로그램을 조정하는 방법 등에 대한 느낌을 얻으십시오.

C 대 어셈블러까지는 일부 명령어 세트가 C 친화적이고 일부 명령어 세트는 그렇지 않습니다. 일부 컴파일러는 중간 크기이고 일부는 실제로 나쁘고 일부만 실제로는 우수합니다 (일반적으로 한 번 또는 한 해에 수천 달러의 비용이 듭니다). 어디에서나 성능을 향상시키려는 경우 고급 언어 (C 라고만 함)와 어셈블러가 혼합되어 필요할 수 있습니다. 따라서이 기술은 전체 응용 프로그램을 어셈블러로 작성하는 것이 아니라 어떤 코드가 타이밍 / 성능을 충족시키지 못하게 하는지를 결정한 다음 C, 컴파일러 옵션, 올바른 컴파일러 선택 또는 어셈블러 작성을 통해이를 해결하는 방법을 알고 있습니다.

임베디드와 마찬가지로 읽을 수있는 지식이 없다면 자주 분해하는 것이 좋습니다 (성능 문제가있는 곳을 파악하는 동안). 어쨌든 부팅 코드에는 어셈블러가 필요하거나 많은 플랫폼이 필요합니다.

단위당 10-20 %의 가격을 절약하고 64KB 플래시 부품 대신에 더 저렴하고 느린 마이크로 컨트롤러 또는 발진기 또는 32Kb 플래시 부품을 구매하고 판매 비용으로 개발 비용을 충당 할 수있는 경우 어쩌면 모든 것을 어셈블러, 빠르고 저전력, 저비용, 행복한 고객으로 작성하기 위해 선택할 수있는 다른 것들의 긴 목록 일 것입니다.

지금까지의 배경에 따라 모든 어셈블러 작성 및 마이크로 컨트롤러에 내장 된 전기 공학 측면, 회로도 읽기, 오픈 컬렉터, 3 상태, 푸시 풀, pwm, adc, dac 및 a에 대해 걱정할 필요가 없습니다. 다른 용어의 긴 목록 및 사용 방법. 비트 뱅킹 i2c, spi, mdio, dallas one wire 등. 소프트웨어 디버거로 스코프 사용. 비록 스코프가 오늘날 당신을 위해 물건을 강조 할 수 있지만 (추가 비용 항목), 하이라이트없이 i2c와 spi 및 다른 프로토콜을 볼 수 있어야합니다.

또한 사용하는 각 플랫폼마다 다른 샌드 박스 (예 : Arduino IDE / 프로그래밍 환경)에서 벗어나는 것이 좋습니다. 프로세서를 main () 프로그램으로 재설정하는 데 필요한 부트 코드를 작성하십시오. 선반을 사용하더라도 자신의 로더를 작성하는 것과 관련하여 플래시를로드 / 프로그래밍하는 방법을 이해하려면 최대한 노력하십시오. 그곳에. 그것은 개인 교육에 관한 것입니다. 더 많은 지식을 알고 백 포켓에서 꺼내고 경력에 대한 통제력을 높이고 월급이 끝날 때 더 많은 제로를 사용할 수 있습니다.

당신이 무엇을하든, x86을 데스크탑에서 첫 번째 어셈블러로 배우고 다른 것을 선택하고 크로스 컴파일 및 시뮬레이션하십시오. ARM, THUMB, MSP430, PIC, AVR, 심지어 6502, 8051. x86은 끔찍한 명령입니다 마이크로 코딩, 마이크로 코딩되지 않은 멀티 코어, 온 / 오프 등 다양한 방식으로 설정되고 결과적으로 변형되었습니다. x86을 고급 언어 및 대용량 운영 체제로 유지하십시오. 텍스트 편집기 및 컴파일러에 사용하고 다른 대상을 지정하십시오.

긴 답변에 대해 죄송합니다 ... 도움이되었습니다.


흠, 문제는 전문가가 플래시의 크기를 어떻게 선택하는지에 관한 것입니다. 때로는 솔루션과 유사한 코드를 작성하고 컴파일하고 크기가 얼마나 큰지 확인하십시오. rtos를 사용하려는 경우 샘플을 가져 와서 크기를 조정하고 추가 할 코드에 퍼지 계수를 추가하십시오. 많은 부분이 추정에 대한 개인적인 경험과 관련이 있습니다. 경우에 따라서는 추정하기 위해 두 배로 계산할 수도 있고, 상사는 문제를 일으키지 않도록 추정치를 두 배로 늘릴 수도 있습니다. 한 번 구현하면 더 작은 부분으로 전환하여 비용을 절감 할 수있는 영웅이되기 때문에 도움이 될 수 있습니다.
old_timer

1
길이에도 불구하고 나는이 답변이 매우 훌륭하다고 생각합니다
Sarrk

3

프로젝트의 플래시 / RAM 요구 사항을 결정하는 가장 좋은 방법은 프로토 타입을 만들고 측정하는 것입니다.

PC에서 핵심 알고리즘을 구현하고 객체 코드 및 RAM 사용량을 계산하십시오. 이렇게하면 작업 할 야구장을 얻을 수 있습니다.

stdio 또는 메모리 관리와 같은 운영 체제 기능에 의존하는 경우 예산을 늘리는 것을 잊지 마십시오.

코드 줄과 컴파일 된 코드 크기를 비교하는 직접적인 방법은 없습니다. 그러나 코드 밀도 측면에서 프로세서 아키텍처를 비교할 수 있습니다.


3

필자는 메모리 측면에서 요구 사항에 대한 "느낌"을 얻는 가장 좋은 방법은 MCU 샘플을 가져 와서 프로그래밍하고 사용중인 메모리 수를 확인하는 것입니다. 실제로 사용 된 컴파일러에 따라 다릅니다. MCU를 처음 프로그래밍하는 경우 사양에 너무 신경 쓰지 마십시오. 많은 메모리, 많은 주변 장치 등이있는 것을 선택하기 만하면됩니다. 이렇게하면 하나의 MCU에서 많은 것을 배울 수 있습니다. 해당 MCU로 첫 번째 프로젝트를 만들면 추가 프로젝트에 필요한 메모리 개념이 향상됩니다.

작업에 가장 적합한 MCU? 몇 개의 ADC 채널이 필요합니까? DAC는 어떻습니까? 어플리케이션에서 더 중요한 것은 성능 또는 저전력입니까? 특정 MCU를 선택할 때 이런 종류의 질문에 대답해야합니까?


3

필요한 주변 장치 세트가있는 마이크로 컨트롤러를 선택하십시오. 주변기기는 같지만 비슷한 양의 RAM과 플래시를 가진 마이크로 제품군이있을 것입니다. RAM / 플래시가 가장 큰 칩부터 시작하십시오. 프로토 타입이 완성되면 프로그램이 적합하다면 더 저렴한 마이크로로 드롭 다운 할 수 있습니다.


0

실제 전문가들은 마이크로 컨트롤러를 단독으로 선택하지 않고 최대의 이익을 위해 프로젝트를 운영합니다. 마이크로 컨트롤러가 선택 될 수있는 프로젝트 기준에 따라 너무 비싸 보이지만 사용 가능한 전문 지식, 도구, 라이브러리 등에 적합합니다. 격리 된 결정을하지 말고 큰 그림을 명심하십시오. 특히 합계 (개발 비용 + 생산 비용)!

대부분의 마이크로 컨트롤러 제조업체는 다양한 칩을 제공하며 플래시 크기는 다양한 칩마다 다른 매개 변수 중 하나입니다. '안전한'선택은 처음에 가장 큰 플래시 크기의 칩을 선택하는 것이므로 응용 프로그램이 더 작은 칩에 맞으면 축소 할 수 있습니다. 그러나 응용 프로그램은 사용 가능한 모든 크기 이상으로 커지는 경향이 있습니다.

IME 플래시 크기는 더 이상 큰 비용 요소가 아니며 핀의 수는 그다지 중요하지 않으며 RAM 크기가 가장 큰 비용 동인으로 보입니다.

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