Hello, All I am using rl-arm , have problem when using mmc in RTX-OS in a task . when i debuge with j-link i see MMC task was be in hard loop in SPI_SAM7X.c in below line
-------------------------------SPI_SAM7X.c------------------------------------- static BOOL SendBuf (U8 *buf, U32 sz) { /* Send buffer to SPI interface. */ U32 i;
for (i = 0; i < sz; i++) { AT91C_BASE_SPI0->SPI_TDR = buf[i]; /* Wait if Tx FIFO is full. */ while (!(AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_TDRE)); AT91C_BASE_SPI0->SPI_RDR; } hard loop-----> while (!(AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_RDRF));//os_tsk_pass(); AT91C_BASE_SPI0->SPI_RDR; return (__TRUE); } -------------------------------------------------------------------------------
and task program is in below:
__task void phaseB (void) { char count,errorflag; os_dly_wait(200); count = 3; while (finit(NULL) != 0) { os_dly_wait(2); if (!(count--)) { errorflag = 1; break;
} } if (errorflag==1)debug_send("MMC Error\n"); while(1){ os_dly_wait(100); debug_send("MMC Task\n");
}
Please help meeeeeeeeeeeeeeeeeeeeeeeeeeeeeee King regard Amir
my dear i think you have a heavy loop in your daily task, better is use the command os_tsk_delete_self (); in end of your task. seem you are the same as scratched CD in traditional cd player.haha hey creazy please help me,really i have problem with RTX-OS