2 시간 동안 이유를 찾고있었습니다. 이제 IAR Embedded Workbench Evaluation 5.30을 사용하여 CC430F6137 dev 키트 보드에서 디버깅합니다. 일부 전역 정적 변수를 선언 했으므로 올바르게 볼 수 없다는 것을 알고 있습니다. FF 또는 3F로 표시됩니다.IAR Embedded Workbench 430을 사용하여 CC430F6137을 디버깅 할 때 정적 변수를 볼 수 없습니다. 5.3
나는 그들을 메모리 테이블에서 보려고했는데, 패턴은 ff 3f ff 3f처럼 보였다.이 패턴은 마지막으로 0x1C00-0x1CFF에서 나온 것이다; 데이터는 0x1D00 - 0x2BFF로 표시됩니다. CC430F6137의 데이터 시트에 따르면 RAM의 섹션 0은 총 2KB 인 0x1C00 - 0x23FF의 범위를가집니다. 섹션 1의 범위는 0x2400에서 0x2BFF입니다.
예를 들어 정적 변수는 감시 창에 따라 0x1CED에 있습니다. 그러나 값은 0x3F입니다. 정적 변수에서 값을 복사 할 때 로컬 변수를 사용할 때 0x3F가 아닙니다. 내 정적 변수는 섹션 0에있는 작은 경계 영역 (이상한 패턴이 있음)에 속합니다. 내 하드웨어 : TI의 USB-MSP430 디버그 인터페이스. 평가 보드는 EM430F6137F900입니다.
시뮬레이터를 사용해 보았는데 문제가 없습니다. MSP430F449 (TI LPT MSP430 디버거)의 정적 변수를 사용하여 간단한 코드를 만들었으며 정적 변수도 볼 수 있습니다. 왜 이런 일이 발생하고 가능한 해결책이 있는지 아는 사람이 있습니까? 사전에 감사드립니다!
는 모든 (RAMCTL)에서 RAM 비활성화 기능을 사용하고 있습니까 :
이 버그는 여기에
"정적 감시 창"을 사용하고 있습니까? EWB에는 정적 데이터를 보는 별도의 창이 있습니다. – Clifford
일반 시계 창뿐만 아니라 정적 시계 창을 모두 시도했습니다. 그들은 모두 FF 또는 3F를 보여줍니다. 기호 메모리의 해당 주소도 FF 3F 패턴입니다. –
무엇이 잘못되었지만 문제를 추적하는 방법에 대한 몇 가지 힌트를 줄 수 있습니다. 먼저 링커 맵 파일을 검사하여 변수가 실제로 RAM이있는 위치에 있는지 확인하고 링커와 디버거가 동일한 뷰를 유지하는지 확인합니다. 둘째, "main to run"박스의 체크를 해제하고 cstartup 코드를 한 스텝 씩 실행하여 메모리가 올바르게 초기화되었는지 확인하십시오. (DATA16_Z 세그먼트가 지워지고 DATA16_ID가 DATA16_ID로 복사되어야합니다). – Lindydancer