TMS320/F283352017. 2. 22. 04:32

DSP 28335 관련


TMS320F28x CPU이해.ppt

tms320f28335.pdf




//-----------------------------------------------

DSP 28377 관련


Datasheet_F28377D-176_M_V100.pdf

Running an Application from Internal Flash Memory.pdf

Copying Compiler Sections From Flash to RAM.pdf



'TMS320 > F28335' 카테고리의 다른 글

DSP28377x D와 S의 SRAM 차이  (0) 2017.05.12
DSP 28377 Flash programming on ram sections  (8) 2017.02.22
DSP28335 Flash programming  (0) 2017.02.19
ePWM 설정  (0) 2017.02.09
DSP 프로젝트 생성(28377, 28335 공통)  (0) 2016.11.21
Posted by 십자성군
기타/문제해결기2017. 2. 22. 03:59

DSP 28377을 사용하면서 겪은 문제입니다. DSP에 한정되지 않고 다른 MCU를 사용하는 와중에도 발생할 수 있는 문제입니다.


DSP와 CC3200이라는 MCU사이에서 시리얼 통신을 하도록 하였습니다. 아래의 사진은 CC3200으로 로그를 확인한 것입니다.


CC3200으로 WiFi에 접속하여 인터넷을 사용할 수 있는데, Received Contents에 HEX값으로 데이터가 마구 들어와 있습니다.

이는 DSP에 코드를 다운로드 하는 와중에 발생한 문제입니다.

본래는 정상적으로 데이터를 수신해야 하지만 DSP에 프로젝트를 다운로드 할 때, 연결된 SCI 주변 센서에 쓰레기값을 마구마구 전송합니다.


첫번째 for문은 DSP에서 특정한 정보를 보내기 위해서 SCI버퍼에 송신 데이터를 넣는 방법과, 따로 함수를 사용하는 방법을 시험해 봤습니다. 당연한 것이지만 어떻게 하느냐에 따라서 센서가 데이터를 수신하기도 하고 못하기도 합니다. 시리얼 통신을 할 때는 데이터와 데이터 사이에 약간의 딜레이가 있어야 하는듯 합니다.


프로그램을 플래시모드로 돌린다면 문제 없겠지만 개발도중에는 디버깅 모드를 사용할 수 밖에 없기 때문에 CC3200에서 쓰레기값을 확인할 수 있게 하여야 합니다. 가끔씩 쓰레기 값인데도 형식에 맞는 데이터가 와서 곤란할 때가 있습니다.

특히 MCU가 메모리를 다루는 작업을 할 필요가 있을 때 조심해야 합니다. 위 사진은 프로토콜을 읽어서 데이터를 복사하는 부분인데, 쓰레기 데이터에 대한 처리를 잘못해서, 메모리를 마이너스 길이로 복사하게 해버렸습니다. 게다가 MCU에서 try, catch를 사용할 수 없게 해놨었기 때문에, 애초에 문제가 발생하지 않도록 해야 했습니다.


위 코드는 모터를 돌리기 위한 코드입니다. DSP28335에서 C++기반으로 코드를 짰다가 28377에 옮길 때, C++에서 너무 오작동을 많이 하기에 C코드로 변경했습니다. 그래도 함수는 그대로 사용했기 때문에 정상동작을 해야 했습니다만...


mTempMl = vPWM.pLeft 와 같이 그저 값을 복사 후 조건문을 사용해서 값이 음수면 양수로 바꿔주면서 방향에 대해 1, 0을 넣어주는 코드일 뿐인데, 28377에서는 제대로 동작 안하더군요. vPWM이라는 인자의 값 까지는 정상적으로 들어오지만 조건문을 거쳤을 때, mTempMr과 mTempMl의 값이 달라야 하는데 항상 서로의 값이 같아지는 현상이 발생했습니다. 코드 오류는 없었구요.


컴파일러가 어떻게 되어있길래 저런 문제가 발생하는지는 모르겠더라구요. 결국 인자로 받았던 vPWM의 값을 조건문에 넣었더니 해결되었습니다. 컴파일러의 문제이거나 DSP의 Code optimization 과정에서 발생한 문제일 수도 있겠습니다.



Posted by 십자성군
TMS320/F283352017. 2. 19. 00:40


플래시 관련 자료를 압축해서 올립니다.

관련 문서.zip


아래는 결과적으로 RAM, FLASH 변경할 때 바뀌는 파일들입니다.(개인적으로 수정이 되어있습니다.)

flash.zip

ram.zip


참고로 이번 자료에서 사용하는 방법은 flash에 들어가야 하는 프로그램을 RAM에 모조리 load해서 프로세스를 빠르게 운행하는 것입니다. 이는 사용하는 DSP의 내부 RAM의 용량이 충분하거나 프로젝트가 소규모일 때 사용하는 방법입니다.


내부 RAM의 용량이 작거나 프로젝트의 규모가 클 때는 전체 프로그램이 아니라 일부 함수만 RAM에 올리는 방법을 사용한다고 합니다.

'TMS320 > F28335' 카테고리의 다른 글

DSP 28377 Flash programming on ram sections  (8) 2017.02.22
DSP 28335, 28377 flash 작업을 위한 기본자료  (0) 2017.02.22
ePWM 설정  (0) 2017.02.09
DSP 프로젝트 생성(28377, 28335 공통)  (0) 2016.11.21
Baudrate 설정  (0) 2016.10.09
Posted by 십자성군