임베디드 시스템과 펌웨어

작은 마이크로컨트롤러의 펌웨어에서 malloc 등의 동적 메모리 할당을 피하는 경우가 많은 이유로 올바른 것은 무엇입니까?

  1. A마이크로컨트롤러에서는 C 언어 함수를 전혀 사용할 수 없기 때문에
  2. BRAM이 작아 단편화로 할당에 실패하거나, 할당에 걸리는 시간을 예측하기 어렵기 때문에
  3. C동적으로 할당한 메모리는 전원을 꺼도 지워지지 않기 때문에
정답과 해설 보기

정답: B. RAM이 작아 단편화로 할당에 실패하거나, 할당에 걸리는 시간을 예측하기 어렵기 때문에

수 KB~수백 KB의 RAM밖에 없는 마이크로컨트롤러에서 할당과 해제를 반복하면 빈 공간이 잘게 나뉘어, 합계는 충분해도 큰 할당에 실패하는 경우가 있습니다. 몇 달씩 계속 동작하는 기기에서는 언젠가 실패할 위험이 있습니다. 또한 할당에 걸리는 시간이 일정하지 않아 실시간 처리에는 맞지 않습니다. 그래서 필요한 메모리를 처음에 정적으로 확보해 두는 설계가 많이 사용됩니다.

이 분야 연습하기 분야로 돌아가기

임베디드 시스템과 펌웨어의 다른 문제

  1. MMU가 없는 작은 마이크로컨트롤러에서 스택 과다 사용에 대해 주의해야 할 점으로 올바른 것은 무엇입니까?
  2. 기준 전압 3.3 V인 12비트 AD 컨버터에서 읽은 값이 2048이었습니다. 입력 전압에 가장 가까운 것은 무엇입니까?
  3. 마이크로컨트롤러에서 AD 컨버터의 변환 결과를 일정한 간격으로 대량으로 가져올 때 DMA를 사용하는 이점으로 올바른 것은 무엇입니까?
  4. C 언어의 비트 필드를 사용한 구조체로 주변 회로의 레지스터를 나타낼 때 주의가 필요한 점으로 올바른 것은 무엇입니까?
  5. 많은 마이크로컨트롤러에서 변경하지 않는 큰 테이블(폰트 데이터 등)을 const를 붙여 선언하는 이점으로 올바른 것은 무엇입니까?

이 분야의 비교