speccy2010.bin 64 версия original а speccy2010.rbf брал 66 отсюда http://zx-pk.ru/attachment.php?attac...5&d=1361972198 при такой конфигурации всё работает без артефактов.
Вид для печати
speccy2010.bin 64 версия original а speccy2010.rbf брал 66 отсюда http://zx-pk.ru/attachment.php?attac...5&d=1361972198 при такой конфигурации всё работает без артефактов.
хорошо, я сделаю
- - - Добавлено - - -
https://www.dropbox.com/s/b8txq2xa1b...y2010.bin?dl=0
https://www.dropbox.com/s/edqyy86ail...y2010.rbf?dl=0
только я не проверял их, только собрал. Напиши, получилось ли. Это 67 экспериментальная.
Ещё сейчас накрою стол и попробую прогу для проверки самопрограммирования
- - - Добавлено - - -
Ricia, вот сел написать тест этот и задумался. str75x это arm7. он 32-х битный. записывает флеш он 4 байтами сразу. я подумал, что если эта ошибка внутри проца, то не только бит должен быть постоянный, но и байт в этой четвёрке. и вот я взял все адреса, которые ты давал, и... остаток от деления на 4 каждого из них даёт 3. это, конечно, не очень хорошая новость...
- - - Добавлено - - -
Короче написал я этот тест. Ricia, просто заливаешь как обычный бутлодер, снимаешь перемычку, сбрасываешь и читаешь консоль. И так много раз.
Тест пока простой, завтра чуть сложнее сделаю. https://www.dropbox.com/s/hosvn596yf...mtest.bin?dl=0
Всех с НГ!
Посмотрите на код загрузки прошивки в ПЛИС:
В строке f_read читает по 1 байту, что очень медленно.Код:if( nSTATUS() == Bit_RESET )
{
__TRACE( "FPGA configuration status OK...\n" );
for( dword pos = 0; pos < fpgaConfig.fsize; pos++ )
{
byte data8;
UINT res;
if( f_read( &fpgaConfig, &data8, 1, &res ) != FR_OK ) break;
if( res == 0 ) break;
for( byte j = 0; j < 8; j++ )
{
DCLK( Bit_RESET );
DATA( ( data8 & 0x01 ) == 0 ? Bit_RESET : Bit_SET );
data8 >>= 1;
DCLK( Bit_SET );
}
if( ( pos & 0xfff ) == 0 )
{
WDT_Kick();
__TRACE( "." );
}
}
}
Вот моя процедура из другого проекта (основанная на коде syd), на АРМе из той же серии:
Как видно из кода, читается сразу BufLen=4К (что, конечно, излишне). Так вот, если в АРМе есть еще свободное встроенное ОЗУ, то можно увеличить буфер до 32, скажем, байт. У меня скорость заливки удвоилась по сравнению с неоптимизированным вариантом. Так что желающие могут попробовать проверить.Код:if( nSTATUS() )
{
printf( "FPGA configuration status OK.\n\r" );
printf( "Loading" );
// Loading configuration in PS mode
BYTE CurData, j, i;
UINT Read2Buf;
DWORD Cnt = 0;
while ( f_read ( &fpgaConfig, &Buffer, BufLen, &Read2Buf ) == FR_OK )
{
if ( Read2Buf == 0 ) break;
for ( i = 0; i < Read2Buf; i++ )
{
CurData = Buffer[i];
for ( j = 8; j > 0; j-- )
{
// DCLK_LOW;
if ( CurData & 1 )
{
*PtrD1 = ( *PtrD1 & ~GPIO_Pin_6 ) | GPIO_Pin_7;
// DATA_HIGH;
}
else
{
*PtrD1 &= ~GPIO_Pin_6 & ~GPIO_Pin_7;
// DATA_LOW;
}
CurData >>= 1;
DCLK_HIGH;
}
}
if ( ( (Cnt++) & 0x3FF ) == 0 ) printf(".");
}
}
только я не проверял их, только собрал. Напиши, получилось ли. Это 67 экспериментальная.>>>>>> Я вижу cовсем не ту версию 1.01 rev 65ext работает не очень стабильно правда атрибутов не вижу.
Speccy2010 boot ver 1.3(internal flash test)!
Writing 0x55
Reading
Writing 0xAA
Reading
The End
Speccy2010 boot ver 1.3(internal flash test)!
Writing 0x55
Reading
Writing 0xAA
Reading
The End
Speccy2010 boot ver 1.3(internal flash test)!
Writing 0x55
Reading
Writing 0xAA
Reading
The End
Speccy2010 boot ver 1.3(internal flash test)!
Writing 0x55
Reading
Writing 0xAA
Reading
The End
Нет ли замыканий ножек арма на кварц ? Он очень близко расположен. Хорошо бы его приподнять на миллиметр над платой.
походу ошибок самозаписи нет.... ну я ещё чуть сложнее тест сделаю, но тем не менее.... странно...
- - - Добавлено - - -
Ricia, ну я уже по-инерции дописал простейший скремблер, чтобы не совсем статикой флеш проверить.
https://www.dropbox.com/s/4p0jlykc97...amble.bin?dl=0
попробуй плз, но у меня почти полнаа уверенность, что тест пройдёт чисто. сейчас подумаю как написать проверочное считывание из карточки.
- - - Добавлено - - -
Короче написал ещё простенький тест карточки. https://www.dropbox.com/s/ranv27ydku...mcard.bin?dl=0 он читает каждое слово по 200 раз и сравнивает. И ещё я сделал чтобы проц шился всегда. Ну тест довольно долго идёт.
Ricia, всё, теперь жду твоих результатов. Надеюсь теперь докопаемся.
народ, а почему в перечне элементов платы р2 отсутствуют r20 и r28? забыли их?
Вот что я увидел:
--------------------------------------------------------------------------------------------------------------------------------------------
Internal flash test with simple scramble
Erasing
Writing 0x55
.................................................. ............
Reading
Erasing
Writing 0xAA
.................................................. ............
Reading
Erasing
Writing scramble
.................................................. ............
Reading scramble
The End
Internal flash test with simple scramble
Erasing
Writing 0x55
.................................................. ............
Reading
Erasing
Writing 0xAA
.................................................. ............
Reading
Erasing
Writing scramble
.................................................. ............
Reading scramble
Found error - at pos =20016aa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200173a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20017724, value in flash = 24242404, should be = 24242424
Found error - at pos =20017ba4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001aba4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001bea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001e6a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001eba4, value in flash = +%+%+%)$, should be = +%+%+%+$
The End
Internal flash test with simple scramble
Erasing
Writing 0x55
.................................................. ............
Reading
Erasing
Writing 0xAA
.................................................. ............
Reading
Erasing
Writing scramble
.................................................. ............
Reading scramble
Found error - at pos =200136a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20013fa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200156a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200156b4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20015ea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20015eb4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20016ba0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =20016da4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200177a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20017ab4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20017bb4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20017ea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20017fa0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =20017fa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20017fb0, value in flash = ,!,!,!)0, should be = ,!,!,!+0
Found error - at pos =20019fb4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001b3a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001baa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001c7a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001d7a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001dbb4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001e2a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001e724, value in flash = 24242404, should be = 24242424
Found error - at pos =2001e9a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001eba4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001eea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001efa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001f2b4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001f3a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001f3b4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001f6a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001f7a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001f9a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001faa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001ffa0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =2001ffa4, value in flash = +%+%+%)$, should be = +%+%+%+$
The End
Internal flash test with simple scramble
Erasing
Writing 0x55
.................................................. ............
Reading
Erasing
Writing 0xAA
.................................................. ............
Reading
Erasing
Writing scramble
.................................................. ............
Reading scramble
Found error - at pos =2000fea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200136b4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20015ba4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =20016aa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200177a0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =200177a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =200177b4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =20017ea0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =20017fa0, value in flash = +!+!+!(0, should be = +!+!+!*0
Found error - at pos =20017fb4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001aea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001b7a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001bfa4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001cea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001d3a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001e7a4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001eea4, value in flash = +%+%+%)$, should be = +%+%+%+$
Found error - at pos =2001fab4, value in flash = ,%,%,%*$, should be = ,%,%,%,$
Found error - at pos =2001ffa4, value in flash = +%+%+%)$, should be = +%+%+%+$
The End