2017-12-03 1 views
0

FreeRTOS API를 사용하여 두 가지 작업을 실행하려고합니다. 나는 핸슨 Tutorial pdf of FreeRTOS을 따라 갔지만, 내 작업은 한 번만 실행되고 멈 춥니 다. 저는 x86 Intel에서 FreeRTOS 커널을 사용하고 있습니다. 나는 코드를 compie하고 실행할 수있다.FreeRTOS에서 두 가지 작업을 예기치 않은 결과로 구현했습니다.

내 OS는 우분투, 나는 이클립스 툴체인을 GCC와 함께 사용하고있다. 누구나이 경험이 있다면, 나에게 올바른 방법에 대한 조언을 해 줄 수 있습니다. ,

한 작업을 만든

  • , 무한 루프 그것은 예상 실행되는 :

    static unsigned long uxQueueSendPassedCount = 0; 
    
    void vTask1(void *pvParameters) 
    { 
        const char *str_to_display="This is task1\n\r"; 
        while(1) 
        { 
        printf("%s",str_to_display); 
        vTaskDelay(1000); 
    
        } 
    
    } 
    
    void vTask2(void *pvParameters) 
    { 
        const char *str_to_display="This is task2\n\r"; 
    
        while(1) 
        { 
         printf("%s",str_to_display); 
         vTaskDelay(1000); 
        } 
    
    } 
    
    int main() 
    { 
    
        xTaskCreate(vTask1, (signed char *)"Task1",1000,NULL,3,NULL); 
        xTaskCreate(vTask2,(signed char *)"Task2",100,NULL,1,NULL); 
    
        vTaskStartScheduler(); 
        while(1) 
        { 
    
        } 
        return 0; 
    
    } 
    

    업데이트 : 다른 일을 내가하려고 여기

    내 코드입니다
  • vTaskDelay을 추가 한 작업이 하나만 생성되었으며 "Segmentation fault (오류) 코어 덤프) "

+0

게시 코드가 지연 기능을 호출하는 이유는 작업 실행 속도 간격보다 지연 시간을 묻는 이유는 무엇입니까? 이러한 연장 지연으로 인해 문제가 발생할 수 있습니다. – user3629249

+0

작업 예약 속도는 이미 작업 예약간에 많은 지연이 있음을 의미합니다. 이렇게 큰 지연으로 지연 루틴을 호출하면 문제가 발생합니다. – user3629249

+0

게시 된 코드가 제대로 컴파일되지 않습니다! 1) 필요한 헤더 파일에 필요한 include 문이 없습니다. 2) 사용되지 않은 'task'매개 변수가 있습니다. 각각의 사용되지 않는 태스크 매개 변수에 대해 태스크 본문의 첫 번째 줄에 다음을 삽입하십시오.'(void) pvParameters; ' – user3629249

답변

0

어떤 포트를 사용하고 있습니까? 아니면 우분투에서 코드를 실행하려고합니까? 이 책의 프로젝트는 Windows에서 실행되도록 구성됩니다.

+0

예 우분투에서 실행 중입니다. [https://freertos.org/FreeRTOS-simulator-for-Linux.html]을 참조로 사용했습니다. 이 예제는 리눅스에서도 잘 돌아 간다. 그러나 내가 쓴 데모는 아니며, 리눅스 머신에서 실행할 수있는 방법이 있는가? –

관련 문제