12
« on: December 30, 2010, 05:49:34 PM »
Hi Mark,
I finally got back to this issue and the problem was with the page size. I’m using the EVK1105 with the AT45DB642D FLASH device. The AT45DB642D has the option to operate with two different page sizes, 1024 vs. 1056 (standard). uTasker is configured to used the 1056 page size as it should since this is the way the board is shipped. Sometime is the past, I changed my page size to 1024. Once the chip has been configured for 1024, it can not be changed back. Since I was stuck with the 1024 page size, I stepped through the code and made the following changes:
In AVR32.c
Function: extern void fnGetParsFile(unsigned char *ParLocation, unsigned char *ptrValue, MAX_FILE_LENGTH Size)
FROM:
fnSPI_command(CONTINUOUS_ARRAY_READ, (unsigned long)((unsigned long)(usPageNumber << 11) | (usPageOffset)), _EXTENDED_CS ptrValue, Size);
TO:
fnSPI_command(CONTINUOUS_ARRAY_READ, (unsigned long)((unsigned long)(usPageNumber << 10) | (usPageOffset)), _EXTENDED_CS ptrValue, Size);
Also in spi_flash_avr32_atmel.h,
Function: static void fnSPI_command(unsigned char ucCommand, unsigned long ulPageNumberOffset, volatile unsigned char *ucData, MAX_FILE_LENGTH DataLength)
FROM:
ucCommandBuffer[0] = (unsigned char)(ulPageNumberOffset >> 5);
ucCommandBuffer[1] = (unsigned char)(ulPageNumberOffset << 3);
TO:
ucCommandBuffer[0] = (unsigned char)(ulPageNumberOffset >> 6);
ucCommandBuffer[1] = (unsigned char)(ulPageNumberOffset << 2);
Kenneth