| Приставки > Картриджи / диски |
| мой флеш картридж для SNES |
| << < (2/2) |
| HardWareMan:
--- Цитата: masyanya от 20 Май 2009, 06:17:42 --- Ну вот я тока одного не понимаю, микроконтроллеры с встроенным USB стоят стока же скока и RS232 мосты, а скорости сов другие, зачем этот огород? Например AT90USB1287 48 свободных выводов под IO и стоит 7.8$ за шт. Или PIC18F4550 35 свободных ног под IO при цене в 8.2$ за шт... обидно господа, пролифа да силикон лабс... вот чё не сделают с усб, так обязательно мост юзается LPT или RS-232... <_< --- Конец цитаты --- Я с тобой полностью согласен, однако не все умеют писать свои дрова под девайс. А в остальном да. |
| masyanya:
Ааааааа, точна, я т уж забыл про сие мытарство.... :? |
| totin:
ээмм, подождите, какой огород? где скорости "совсем другие"? ну раз такое дело, давайте меряться сами знаете чем (: я точно не знаю, но насколько я помню масянин флеш карт перешивает себя около двух минут из которых 30сек на самостирание и того 90сек чисто на прошивку 4 метров. у меня на ненависном профлинке в последних версиях софта прошивка+стирание занимает 1:25 те 55 сек на прошивку. поправьте меня если я не прав, но 55 сек мне кажется меньше чем 90. и это не смотря на то что код для атмеги пока далек от совершенства. да, и насчет огородов... два контроллера на борту это не огород? а драйверы писать не огород?зачем делать то что уже сделано, чтобы потом городно сказать что я изобрел велосипед? может все делают на rs232 мостах потому то это не плохой выбор? по цене такой вариант тоже будет по крайней мере не дороже. такое вот |
| HardWareMan:
--- Цитата: totin от 20 Май 2009, 19:39:10 ---...у меня на ненависном профлинке в последних версиях софта прошивка+стирание занимает 1:25 те 55 сек на прошивку. поправьте меня если я не прав, но 55 сек мне кажется меньше чем 90. и это не смотря на то что код для атмеги пока далек от совершенства.... --- Конец цитаты --- Стоп, будем последовательны. 1. 55 секунд это на 4МБ (32Мбита)? 2. Какие микросхемы флэш ты заюзал? 3. ЕМНИП, по JEDEC'у есть определенные ограничения, ты хочешь сказать ты их обошел? 4. И на какой скорости ты пролифу юзаешь? |
| masyanya:
--- Цитата ---да, и насчет огородов... два контроллера на борту это не огород? --- Конец цитаты --- Я говорил о чипах у которых ног хватает чтобы драйвить шину адреса и данных минуя другие чипы по той же цене что и одна пролифа, ты чего читать не умеешь или в домике? >:( |
| HardWareMan:
Так, не ссортесь. Давайте вести конструктивную беседу. Masyan'и карт я юзаю, и вижу что он проверяет запись. Проверка всегда занимает время. И то время, что оно занимает меня пока устраивает. Я сам читал датащиты на используемые плешки и поэтому знаю как должно быть. Так что, давайте все же подведем итог: кто как реализовал алго JEDEC'а. Без читерства, как есть: если ты не делаешь проверку или заточил под конкретный чип - так и скажи. Начинайтесь. |
| masyanya:
... а говоря относительно моего 32MX+UF... на стирание уходит больше минуты. Есть конечно чипы которые труться за 25сек, как в даташите написано "TYPICALY", но эт старый JEDEC, в новых чипах стирание надо контролить, у меня 2 чипа трет за ~1мин 12 сек, плюс ко всему я юзаю AT90USB162 c расширением шины адреса на AT90USB162 посредством SCI, а SCI лимитирует скорость, на него тож процессорное время тратиться, так же у меня ведеться лог критических событий и пишеться прям в EEPROM AT90USB162, так же пулятся (Data Pull) записанные данные на лету (хотел бы я посмотреть как ты это делать будешь пролифой или ваще любым мостом), плюс ко всему поддержка разных типов записи в моем картридже тож накладывает свои ограничения, а так же софт отнимает время на обновление контролов и обработку треадов, без всего этого под линуксом из консоли треться 51 секунду, пишеться от15 до 54 что кстати согласуется с даташитом, а треться так ваще пулей, ибо тру я секторами, а их на 2 чипа 70, - 0.7s*70=49s (и то учитывая что время в 0.7s на сектор минимальное, а тут вся фишка в том что эти чипы держат тему Erase While Write) у меня стоит 2 чипа соотв на 2 множим (стр. 53 December 17, 2004 S29AL016D_00_A2: Sector Erase Time min: 0.7 max: 15s Chip Programming Time (Note 3) Word Mode min: 7.2s, мах: 21.6s)... Мериться тут нечем, ж..пу с пальцем сравниваем. Добавлено позже: --- Цитата: HardWareMan от 21 Май 2009, 08:32:25 ---Так, не ссортесь. Давайте вести конструктивную беседу. Masyan'и карт я юзаю, и вижу что он проверяет запись. Проверка всегда занимает время. И то время, что оно занимает меня пока устраивает. Я сам читал датащиты на используемые плешки и поэтому знаю как должно быть. Так что, давайте все же подведем итог: кто как реализовал алго JEDEC'а. Без читерства, как есть: если ты не делаешь проверку или заточил под конкретный чип - так и скажи. Начинайтесь. --- Конец цитаты --- Вот выдержка из кода микропрограммы: Bool WriteChank(U8 *mcommands) { U8 i,Pointer,bCCR; U16 ptr=0; DDRB=0x00; Disable_interrupt(); //Write error detection config register onto ATMEGA8515/AT90USB WriteRegister(CCR,_BV(fROMEN)); //Setup DATA port to out PresetAddress(0x00,0x0A,0xAA); WriteByte(0xAA); PresetAddress(0x00,0x05,0x55); WriteByte(0x55); PresetAddress(0x00,0x0A,0xAA); WriteByte(0x20); PresetAddress(mcommands[1],mcommands[2],mcommands[3]); for(i=0;i<mcommands[4];i++) { Usb_select_endpoint(EP_MS_OUT); while(!Is_usb_read_enabled()); for(Pointer=0;Pointer<64;Pointer++,ptr++) { WriteByte(0xA0); WriteLoByte(Usb_read_byte()); WriteHiByte(Usb_read_byte()); while(!(PINB&_BV(RDY))) if(bCCR=ReadRegister(CCR)) StoreLastError(bCCR); OEClock(); } Enable_interrupt(); Usb_ack_receive_out(); } //Exit from Bypass WriteByte(0x90); WriteByte(0x00); //Hardware check writed data for(Pointer=0;Pointer<64;Pointer++,ptr++) { //Check data if(IsLoopBack(Pointer)) { //Error detected Usb_select_endpoint(EP_MS_IN); while(!Is_usb_write_enabled()); Usb_write_byte(GetLastError()); return FALSE; } OEClock(); } return TRUE; } Из кода видим я юзаю Unlock Bypass под запись, а так жа видим что ерроры трансфиряться обратно по шине... Добавлено позже: А вообще-то непонимаю о чем спор, тут лимитирует уже скорость флешки то есть время на запись в неё... как не крути Word Programming Time мин: 7µs макс: 210 µs Добавлено позже: и Byte Programming Time мин: 5 макс: 150 µs |
| totin:
да, я ждал бурю негодования :) masyanya: если у тебя трется так долго то тогда дейчтвительно я прошиваюсь в лудшем случае не бычтрее. к томуже я не проверяю ничего на ошибки и получаю тут немного времени. в ранних версиях проверял но когда прошли месяцы а ошибок так ниразу и небыло я решил что можно обойтись и без проверки, темболее на космических шатлах картридж не будет применяться в жизнено важных системах. ну а спор фактически неочем, заладил ты просто со своим огородом и я хочу сказать что другие решения может и не лучше но и не хуже, тут скорее дело вкуса. кому что больше нравится. HardWareMan: 1. да, 4МБ (32Мбита) за 55 сек 2. я использую ST M29W320 70ns 3. даже не знаю что сказать 4. профила у меня на скорости 921600 килобит у меня самостирается чип за 29сек, хотя по датащиту 40сек типичное и 200 максимальное. вот так я прошиваю: inline void wd(unsigned int data, unsigned long int addr){ DDRA = 0xff; DDRB = 0xff; SET_ADDR(addr); PORTA = data; PORTB = data >> 8; WE0; WE1; DDRA = 0; DDRB = 0; } inline void progBlock(){ unsigned char data_a = 0; unsigned char data_b = 0; unsigned int len = (uartRX() << 8 | uartRX()) >> 1; while(len){ data_a = uartRX(); data_b = uartRX(); busy(); wd1(0xaa,0x555); wd1(0x55,0x2aa); wd1(0xa0,0x555); wd2(data_a, data_b, addr); addr++; len--; } } PS: масяня, ты злой |
| masyanya:
Да чёт, палку то перегнул я... :blush: --- Цитата: totin от 21 Май 2009, 13:35:17 ---PS: масяня, ты злой --- Конец цитаты --- Эт точна :), эт потому что у меня велосипед без сиденья был, а ща когда и его украли, ваще убивать буду!!! :lol: Нууууууу, шатлы не шатлы, а проверка мне нужна шоб когда собираешь тестировать проще было, сразу видно где проблема. --- Цитата ---ну а спор фактически неочем, заладил ты просто со своим огородом и я хочу сказать что другие решения может и не лучше но и не хуже, тут скорее дело вкуса. кому что больше нравится. --- Конец цитаты --- Ну вот мы как раз и спорим на тему того что решения с мостами хуже или лучше, на мой взгляд хуже, потому что, хотя бы, не дает должной свободы разработчику, а в смысле достижения результата так помоему одинаково, намана чел. эт хорошо, тока заюзай ещё: Unlock Bypass 0x555 0xAA 0x2AA 0x55 0x555 0x20 Unlock Bypass Program XXX 0xA0 PA PD Unlock Bypass Reset XXX 0x90 XXX 0x00 ещё быстрее писать будет. |
| totin:
спасибо, попробую выжать ещё немного скорости |
| masyanya:
P.S. Ну и кстати вот: 64SX+UPF |
| totin:
--- Цитата: masyanya от 22 Май 2009, 09:42:21 ---заюзай ещё: Unlock Bypass 0x555 0xAA 0x2AA 0x55 0x555 0x20 Unlock Bypass Program XXX 0xA0 PA PD Unlock Bypass Reset XXX 0x90 XXX 0x00 ещё быстрее писать будет. --- Конец цитаты --- сделал Unlock Bypass и получил ещё немного скорости в 16 битном режиме и значительный прирост около 30% в 8 битном(снес карт у меня в 8битном) сега теперь стерание + прошивка = 1мин 20сек. спасибо ещё раз за подсказку масяня. я признаться никогда датащит не читаю полностью, обычно вычитаею чего мне нужно и всё, а потом вот такие подробности неожиданно всплывают (: паразительно, помню в начале разработки в самых ранних версиях устройства на прошивку уходило порядка 15мин и даже не мечтал о такой скорости |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |