내장 플래시 메모리 크기가 충분하지 않습니다


11

내 프로젝트 중 하나에서 Texas instrument의 TM4C1230C3PMI 컨트롤러를 사용하고 있습니다. 32KB의 내부 플래시가있어 응용 프로그램에 충분하지 않습니다. 더 높은 플래시 크기의 마이크로 컨트롤러는 시장에서 사용할 수 있지만이 마이크로 컨트롤러 만 사용하고 싶습니다. 내 지식에 따라 외부 EEPROM을 사용하여 총 플래시 크기 (프로그램 메모리)를 늘릴 수 있습니다.

내 생각이 맞습니까?

그렇지 않은 경우 컨트롤러의 총 플래시 메모리 크기를 늘리려면 어떻게해야합니까?


1
외부 EEPROM은 일반적으로 내부 플래시가 대부분의 EEPROM보다 지우기 / 쓰기주기를 줄이고 바이트 단위로 덮어 쓸 수 있기 때문에 데이터 저장에 사용됩니다. 외부 버스 인터페이스가있는 CPU (귀하가 가지고 있지 않은)의 경우 외부 프로그램 메모리를 추가 할 수 있습니다 (그러나 조금 복잡합니다 ...). 이론적으로 외부 EEPROM에 코드 조각을 저장하고이 코드를 RAM에로드하여 실행할 수 있지만 대부분의 경우이 시나리오는 현실적이지 않습니다.
Martin Rosenau 2016 년

3
몇 년 전, 관련 최대 값은 "1K로 할 수 없다면 할 수 없습니다."였습니다. 나는 그것이 영리하고 생각할 가치가 있다고 생각했지만 실제로 받아들이지 않았습니다. 그런 다음 MicroChess는 1K로 도착했습니다.
user2338816 2016 년

1
왜 외부 메모리에서 코드를 부팅하지 않습니까? uC에 인터페이스 할 수있는 많은 외부 메모리가 있습니다. 외부에서 코드를 부팅 할 때 내부 플래시에 제약이 없습니다.
AlphaGoku


답변:


22

프로그램 메모리를 확장 할 수 없습니다 (플래시). TI는 플래시와 RAM이 두 배인 동일한 칩을 생산하지만 TM4C1230D5PMI는 변경되지 않았다 .

더 큰 플래시 칩을 사용할 수없는 경우 코드 크기를 줄여야합니다.

  • 고가의 printf기능 과 같은 디버깅을 비활성화 합니다. printf부동 소수점 출력을 지원 하는 A 는 일반적으로 약 5KB-10KB를 설정합니다.
  • 최적화가 활성화 된 상태에서 컴파일해야합니다 -Os. 일반적으로 컴파일러 플래그는 다음과 같습니다 .
  • 최신 컴파일러는 LTO (Link Time Optimization)를 수행 할 수 있습니다 . gcc를 사용하면이 정보를 얻을 수 있습니다 -flto. -flto모든 파일에 대해 컴파일 단계와 링크 단계를 모두 통과 해야합니다. 이것은 일반적으로 생성 된 코드 크기를 30 % -50 % 줄입니다.

2

용도에 맞게 설계된 어셈블러 및 Forth와 유사한 언어를 사용하여 소프트웨어 설치 공간을 최소화 할 수 있습니다. 거의 동일한 코드가 많으면 다른 하나는 압축 된 기계 코드입니다.

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