RTOS에서 MP3를 소프트웨어로 디코딩 하는데 nucleus에서는 잘되는데 FreeRTOS에서는 소리가 끊어지는 현상이 발생하였다.

실제 타이머를 사용하여 측정결과 nucleus는 한 프레임 디코딩 하는데 10 ms 전후로 되는데 FreeRTOS에서는 100 ms 이상 걸렸다.

nucleus는 ADS 컴파일러를 사용하였고, FreeRTOS는 GCC를 사용하여 컴파일러 옵션에 문제가 있는 줄 알았는데 알고 보니 cache 설정 문제 였다.

FreeRTOS에서는 MMU를 지원 하지 않는다고 하여 따로 캐시 설정를 안하였는데 nucleus의 boot 코드를 보고 mmu 와 cache를 활성화 해 주었더니 정상 동작 하였다.

FreeRTOS에서도 MMU와 I/D cache를 사용하면 10배 가까운 속도 향상을 볼 수 있다.

'OldStory > WORKS' 카테고리의 다른 글

Embedded Qt at TW2880  (0) 2010.09.28
strtok()  (0) 2010.09.13
FreeROTS MMU and Cache  (0) 2010.09.07
stack overflow  (0) 2010.08.18
Task Run Time Stats  (0) 2010.07.22
Task List  (0) 2010.07.21
by Alnilam 2010.09.07 18:44
| 1 |

티스토리 툴바