TMS320/Error 해결2017. 1. 25. 21:19

DSP에 이것저것 코드를 넣다보면 헤더나 소스파일이 늘어나고 새로 만드는 함수도 많아진다. 그냥 쌩코딩을 할 경우는 그닥 마주칠 일이 없지만 기능별로 함수를 분류하다보면 빌드할 때는 아무런 에러도 없던것이 유독 실행만 하면 문제가 발생하는 경우가 있다.


예를 들어 평소에 문제 없이 돌아가던 코드에 함수 몇개 추가했더니


아래와 같은 ILLEGAL_ISR 인터럽트에 걸렸다. 


이녀석이 발생하는 경우는 하드웨어/소프트웨어 적으로 다양하다만 아래와 같이 추가했던 함수 몇개를 주석처리하면 평범하게 돌아갔다.


그럼 예상할 수 있는건 함수가 잘못되었던지 함수를 추가한게 문제인지 둘 중 하나일 것이다. 함수에 문제는 없었으므로 함수를 추가한게 문제겠고 그렇다면 메모리 문제일거라고 예상하였다.


메모리 문제라면 cmd파일 관련일 것이고 이에 대한 정보를 찾아보면



.stack이 함수 호출을 위한 메모리라는 것을 알 수 있다.


DSP 28377D를 사용했었는데 cmd파일의 메모리를 살펴보면 아래와 같다.



.stack에 'RAMM1 | 확장할 메모리 영역' 을 적용하고

프로젝트의 Properties->Build->C2000 Linker->Basic Options->Set C system stack size에 메모리 크기를 조정하면 해결된다.


단, 확장할 메모리가 PAGE1의 아무거나 선택하면 되는게 아니라 RAMD1과 같은 on-chip RAM이어야 효과가 있다.

'TMS320 > Error 해결' 카테고리의 다른 글

중요! Stack과 Heap size 설정  (0) 2016.09.09
Illegal isr problem  (0) 2016.09.08
[CCS V5]#10010 error, #10265  (0) 2014.07.17
[CCS V5]trouble setting breakpoint with the action  (1) 2014.07.17
[CCS V5]no source available  (0) 2014.07.17
Posted by 십자성군