ATSAM3S4A FRTScore 8.2.3 + freertos-spi interface layer(service) (AtmelStudio 6.2)

Hello, i’m newbie in FreeRTOS. There are ATMEL Studio 6.2 , core FRTOS 8.2.3, board based on ATSAM3S4A (not dev board) . I create new project , then added frm ASF Wizard freertos-spi(UART,TWI) interface layer(service) , replace a core 7.3.0 (wich added automatically ) with FRTOS 8.2.3, and for the first i make up only 1 task wich using uxTaskGetNumberOfTasks, vTaskList and output info to UART0, it’s work fine, then i add SPI func. – freertosspiwritepacket ,it became crashing in xQueueGiveFromISR func. configASSERT( !( ( pxQueue->uxQueueType == queueQUEUEIS_MUTEX ) && ( pxQueue->pxMutexHolder != NULL ) ) ); FreeRTOSconfig: http://textuploader.com/5u50n simpl. CODE : http://textuploader.com/5u5r6 STACK: http://postimg.org/image/o0znwes4v/

ATSAM3S4A FRTScore 8.2.3 + freertos-spi interface layer(service) (AtmelStudio 6.2)

This is due to a change in the way mutexes can be used. Try updating the ASF code so it creates a binary semaphore (xSemaphoreCreateBinary()) instead of a mutex (xSemaphoreCreateMutex()). http://www.freertos.org/FreeRTOSSupportForumArchive/April2015/freertos8.2.1queue.cvsASF3.21.0freertosspimaster.c_788182fdj.html

ATSAM3S4A FRTScore 8.2.3 + freertos-spi interface layer(service) (AtmelStudio 6.2)

Ok , i change in 2 places to xSemaphoreCreateBinary(), but now func freertosspiwritepacket return ERRTIMEOUT(-3) in ~~~~ freertosperipheralcontrol.c freertosobtainperipheralaccessmutex(freertosdmaeventcontrolt dma_event_control,portTickType *max_block_time_ticks) {status_code_t return_value = STATUS_OK; xTimeOutType time_out_definition; if (dma_event_control->peripheral_access_mutex != NULL) { / Remember the time on entry. / vTaskSetTimeOutState(&time_out_definition); / Wait to get exclusive access to the peripheral. / if(xSemaphoreTake(dma_event_control->peripheral_access_mutex,maxblocktimeticks) == pdFAIL) { returnvalue = ERRTIMEOUT; <– COMING HERE } else {/* Adjust the time out value in case the task had to block to wait for the semaphore. */ if (xTaskCheckForTimeOut(&timeoutdefinition,maxblocktimeticks) == pdTRUE) {*max_block_time_ticks = 0;} } }return return_value;} ~~~~ The same project with FREERTOS 7.3.0 Library Work fine – return Status_OK(0)

ATSAM3S4A FRTScore 8.2.3 + freertos-spi interface layer(service) (AtmelStudio 6.2)

If the 7.3.0 code works with the binary semaphore, but the 8.2.3 doesn’t then I will need to dig a little deeper…

ATSAM3S4A FRTScore 8.2.3 + freertos-spi interface layer(service) (AtmelStudio 6.2)

Tryed to use version 8.1.2 with default ASF -ALL OK , So I will use it, thanks for fast support!