자일링스 SDK 2016.1 freeRTOS823_xlinx OS 플랫폼을 업데이트하지 않습니다. 내 코드의 일반적인 기능은 다음과 같이변수는 제대로 내 코드가 좀 freeRTOS 요소를 도입 할 때까지 잘 작동하는 것 같았다</p> <p>
// separate file
u32 focusPosition=0;
static void ISR(void *CallbackRef)
{
focusPosition = XRb_focus_Get_position_o(CallbackRef);
}
, 나는 Zynq의 SOC의 IP 레지스터에서 읽어 변수 focusPosition에 값을 할당
// separate file extern u32 focusPosition; main{ ... while(1){ sleep(1); xil_printf("%d\n",focusPosition); } }
는 다음 나는 주요 기능의 콘솔에 값을 printf와
xTaskCreate() xEventGroupCreate()와 같은 코드에 몇 가지 추가 선을 구현하려고하면 모든 메모리가 엉망으로 인쇄 된 값이 올바르지 않게 유지됩니다.
변수와 아무 관련이없는 코드를 간단히 추가하면 해당 변수에 어떤 영향이 있습니까? 늘어나는만큼 이해, xTaskCreate() 및 xEventGroupCreate() 힙에 만들어집니다. 나는 Xil_DCacheDisable()이 도움이 될지 알아보기 위해 피곤했다. 어떤 아이디어? 내 focusPosition 변수가 올바르게 정의/선언 되었습니까?
변수를 volatile로 선언해도 도움이되지 않았습니다. ( – Nazar
외부 선언에서도 변수가 volatile로 선언 되었습니까? 그렇다고해도 어쨌든해야합니다. –
ISR이 여전히 진행 중입니다. 변수에 올바른 값을 입력 했습니까? –