Title: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: efko on 15 Dec 2007, 02:43 привет. Собрал yampp+эмулятор в одном по проекту Сергея на atmega162.
После решения мелких обнаруженных проблем в печатке все вроде как заработало. Т.е на HU появился пункт MultiCD который успешно выбирается. Но дальше не все так хорошо. При подключенном винте сообщает об ошибке Error_01, что означает неправильный размер кластера. При включении без винта - ошибка Error_04 - что значит NO_HDD - здесь все ок. Проблема в том что размер кластера на винте 100% совпадает с размером, заданным в constant.h Самое интересное в том, что если залить оригинальную прошивку yampp_pioneer_v2.2.zip, то все успешно определяется и работает. Копания в коде Сергея привели к след результату: 1.Ошибка ERROR_01 неправильный размер кластера формируется в след участке кода файла Yampp3.c Code: ATA_Init(); // Init and wait for drive т.е init_fat() возвращает ВСЕГДА не нулевое значение. ATA_SW_Reset(); // Reset drive if (ATA_SetDownTime()) { if (init_fat()) // Read disk structure { SetPlayerError(1,1); //Error 01 CLUSTER SIZE INVALID } else { wMaxDirs = dirlist(); В теле этой функции, которая описана в файле FAT.C я обратил внимание на след расхождение: В проекте Сергея: Code: #ifdef CHS_ACCES_FIRST //++++++++++++++++++++++++++++++++++++++++ // fix from Uli (Ulrich.Behrenbeck@Informatik-Werkstatt.de) ATA_ReadCHS0(1, 1, 1, 1, FAT_CACHE); // LBA bit NOT set !!! a raw erroneous CHS access //++++++++++++++++++++++++++++++++++++++++ #else // read partition table ATA_ReadLBA0(0, 1, FAT_CACHE); #endif // get the partition record pr = (struct partrecord *) ((struct partsector*)FAT_CACHE)->psPart; // and find the first valid sector first_sec = pr->prStartLBA; // Read the Partition BootSector ATA_ReadLBA0(first_sec, 1, FAT_CACHE); // get BIOS parameter block #ifdef FAT16 bpb = (struct bpb50*)((struct bootsector50*)FAT_CACHE)->bsBPB; #else bpb = (struct bpb710*)((struct bootsector710*)FAT_CACHE)->bsBPB; #endif // and setup some constants if (bpb->bpbSecPerClust != SECT_PER_CLUST) // Recompile code for this disk // return false; { return bpb->bpbSecPerClust; } , в отличии от оригинальной прошивки эмулятора: Code: #ifdef CHS_ACCES_FIRST отсутствует пара строчек после #endif - //++++++++++++++++++++++++++++++++++++++++ // fix from Uli (Ulrich.Behrenbeck@Informatik-Werkstatt.de) ATA_ReadCHS0(1, 1, 1, 1, TMP_SECTOR); // LBA bit NOT set !!! a raw erroneous CHS access //++++++++++++++++++++++++++++++++++++++++ #else ATA_ReadLBA0(0, 1, TMP_SECTOR); #endif // read partition table ATA_ReadLBA0(0, 1, TMP_SECTOR); // get the partition record pr = (struct partrecord *) ((struct partsector*)TMP_SECTOR)->psPart; // and find the first valid sector first_sec = pr->prStartLBA; // Read the Partition BootSector ATA_ReadLBA0(first_sec, 1, TMP_SECTOR); // get BIOS parameter block #ifdef FAT16 bpb = (struct bpb50*)((struct bootsector50*)TMP_SECTOR)->bsBPB; #else bpb = (struct bpb710*)((struct bootsector710*)TMP_SECTOR)->bsBPB; #endif // and setup some constants if (bpb->bpbSecPerClust != SECT_PER_CLUST) // Recompile code for this disk // return false; return bpb->bpbSecPerClust; // read partition table ATA_ReadLBA0(0, 1, TMP_SECTOR); т.е насколько я понимаю ATA_readLBA0() по ошибке не вызывается в прошивке Сергея, если раскоментирован параметр #define CHS_ACCES_FIRST. Так и должно быть? Почему в оригинальной прошивке вызов этой функции происходит в любом случае, независимо от значения CHS_ACCES_FIRST? Может ли быть косяк в этом? Кстати у него он был закоментирован по умолчанию, у меня же в таком случае виснет на определении винта. Пришлось раскомментировать. Вопрос конечно больше к Сергею, но он не отвечает на письма. Vitat, может быть Вы подскажете. Почему еще может появляться ошибка размера кластера, кроме как ошибки размера кластера собственно?:) Заранее благодарен! Извиняюсь за некоторую "сумбурность" рассказа. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 15 Dec 2007, 12:36 У Вас скорее всего читается мусор с диска. Во первых: какой кварц меги, не меняли? Во вторых побрубуйте уменьшить/увеличить
колличесвто NOP в файле ata_if.c функция (u08 ExecuteCommand(u08 NumSectors, u08 *Buffer)). for(i=BPS / MINIBUFFERSIZE;i;i--) { // cycle sector by minibuffers cli(); //Need for block HU message SetAddress(CMD_A + CMD_DATA); // setup addressing and chip selects DDRA=0x00; // port A as input PORTA=0xFF; // activate Pullups DDRC=0x00; // port C as input PORTC=0xFF; // activate Pullups asm volatile ("movw r30,r28"); asm volatile ("adiw r30,1"); for(j=MINIBUFFERSIZE;j;) { // cycle minibuffer by words cbi(PORTB, 1); // set DIOR lo asm volatile ("nop"); // allow pin change !!! BE carefull! On other clocks change number of 'nop' asm volatile ("nop"); // allow pin change //asm volatile ("nop"); // allow pin change //asm volatile ("nop"); // allow pin change то что выделено Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 15 Dec 2007, 13:18 Вдогонку
CHS_ACCES_FIRST закоментируйте. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 15 Dec 2007, 14:25 Сергей здравствуйте! Рад Вашему появлению на форуме!) Долго пытался связаться с вами)
Кварц меги 12 Мгц, без изменений. Фьюзы как в yampp3/usb, только без совместимости с mega161.Тут все нормально. Мусор в каком плане? Некорректное чтение секторов? Пробовал несколько винтов, форматил разными прогами. Может быть попробовать с FAT16? Можно как то получить log обмена даннами с винтом в вашей прошивке? после раскоментирования DEBUG_ATA и ENABLE_SERIAL пропадает обмен с HU. Пока не понял почему, но HU просто перестает видеть MultiCD. В общем вопросов пока больше чем ответов) Некоторые может быть очень глупые. Во вторых побрубуйте уменьшить/увеличить колличесвто NOP в файле ata_if.c функция (u08 ExecuteCommand(u08 NumSectors, u08 *Buffer)) ок,попробую. Спасибо за совет. Если закоментировать CHS_ACCES_FIRST - плейер виснет на определении винта (постоянно горит светодиод) после чего теряется связь с HU. Не понимаю, откуда у меня столько проблем. У вас ведь вроде все работало. Кстати, работает до сих пор?) И попутные вопросы, что "включают" следющие переменные //#define TEST_MEM //#define USE_LOW_EXT //#define PLAY_WITHOUT_HU //#define LOG //#define PRINTUNKOWN //#define SENDTEST //for test //#define HEXDUMP //#define ENABLE_CRC Заранее благодарен! Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 15 Dec 2007, 15:17 Quote Мусор в каком плане? Некорректное чтение секторов? Да CHS_ACCES_FIRST - должен быть закоментирован. Еще две функции void WriteBYTE(u08 addr, u08 dat) u08 ReadBYTE(u08 addr) asm volatile ("nop"); // allow pin change cbi(PORTB, 1); // set DIOR lo asm volatile ("nop"); // allow pin change asm volatile ("nop"); // allow pin change там тоже NOP надо подправить //#define TEST_MEM //#define USE_LOW_EXT для отладки TEST_MEM проверка внешней памяти #define PRINTUNKOWN вывод неопознанных комманд IPBUS //#define PLAY_WITHOUT_HU работа без магнитофона /#define LOG лог обмена по IPBUS HEXDUMP не используется ENABLE_CRC осталась от прежних версия незнаю работает ли если включить ENABLE_SERIAL то в прошивке просто не остается места Компилятор должен ругаться. Поэтому надо на время чегото выключит, например TAG(файл mpeg.c закоментировать #define TAGON) Вообще я посетовал бы такой алгоритм: выключить TAGON включить ENABLE_SERIAL,TEST_MEM, PLAY_WITHOUT_HU (забыл) скомпилировать и загрузить прошивку подлючить к COM порту в терминале должно появиться 'TEST mem ok' или ошибки памяти это можно сделать без винта и HU убедились что память и UART работают выключаем TEST_MEM теперь плейр должен вывести 'Init ok\nGoing to main loop...' начать играть .Если нет играемя с NOP's Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 15 Dec 2007, 16:24 Еще можно включить PWR_BEEPS
если есть писк, VS1001 работает Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 15 Dec 2007, 17:30 Спасибо за подробное разъяснение. Ситуация становится более менее ясной.
Quote Еще можно включить PWR_BEEPS писк есть. Более того загонял тестовую прошивку yampp3/usb. Все тесты проходит на ура. Т.е аппаратно все работает. если есть писк, VS1001 работает Прошивка Виталия тоже. Музыка воспроизводится. UART-ом переключал песни, папки, прокрутку и т д. Quote там тоже NOP надо подправить насколько я понимаю их количество следует изменять пропорционально во всех указанных Вами функциях? Обычные временные задержки? Есть ограничение сверху по их количеству?Quote если включить ENABLE_SERIAL то в прошивке просто не остается места Компилятор должен ругаться. Поэтому надо на время чегото выключит, например TAG(файл mpeg.c закоментировать #define TAGON) Вообще я посетовал бы такой алгоритм: выключить TAGON включить ENABLE_SERIAL,TEST_MEM, PLAY_WITHOUT_HU (забыл) скомпилировать и загрузить прошивку подлючить к COM порту в терминале должно появиться 'TEST mem ok' или ошибки памяти это можно сделать без винта и HU убедились что память и UART работают выключаем TEST_MEM теперь плейр должен вывести 'Init ok\nGoing to main loop...' начать играть .Если нет играемя с NOP's Очень ценная информация! Именно это хотел узнать.Спасибо. Сегодня попробую. Еще вопрос - тип файловой системы FAT32 или FAT32LBA? Идентификаторы у них разные. 0B и 0С если не ошибаюсь. Или тупо форматнуть виндой и не заморачиваться? Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 15 Dec 2007, 17:34 Если кто будет повторять конструкцию - замечен небольшой баг в схеме (yampp162.sch) - сигнал сброса VRST с PD5, правильно будет - с PD2. На плате (yampp_162_v2_R1.pcb) ошибки нет!
Да и вообще pcb полностью без ошибок. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 15 Dec 2007, 17:54 Quote Или тупо форматнуть виндой и не заморачиваться? Лучше из под доса. У Винды на все свое мнение :)Quote насколько я понимаю их количество следует изменять пропорционально во всех указанных Вами функциях? Да. Обыкновенные временные задержки Количество от 1 и пока не заработает но не больше 10 Чтобы посмотреть что читатеся добавте это код Code: { u16 i; for(i=0;i<512;i++) { UART_Printfu08( FAT_CACHE[i]); PRINT(" "); } } после #else // read partition table ATA_ReadLBA0(0, 1, FAT_CACHE); #endif в функции u08 init_fat(void) файл fat.c Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 00:00 Продолжаю ..
CHS_ACCES_FIRST закоментировал. TAGON выключил. ENABLE_SERIAL,TEST_MEM, PLAY_WITHOUT_HU включил. >mem test ok. == добавил вывод FAT_CACHE на терминал. Убрал TEST_MEM. итог: плейер пропикивает три раза, висит и перезапускается и т по бесконечному циклу. терминал молчит. Хотя, пробел выводит. === CHS_ACCES_FIRST раскоментировал. виснуть перестал. Пищит три раза и выводит 512 нулей)) === добавил в Fat.c (то, что выделено): #else // read partition table ATA_ReadLBA0(0, 1, FAT_CACHE); #endif // read partition table ATA_ReadLBA0(0, 1, FAT_CACHE); #ifdef ENABLE_SERIAL { u16 i; for(i=0;i<512;i++) { UART_Printfu08( FAT_CACHE); PRINT(" "); } } #endif итог - пищит три раза, на терминале: Code: 33 C0 8E пошел играть. Тут у меня чуть не случился орг..м)) В общем по быстрому выключаю PLAY_WITHOUT_HU. включаю TAGON.D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B EE 83 C6 10 49 74 16 38 2 C 74 F6 BE 10 07 4E AC 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 0B 8A E0 88 56 24 C7 06 A 1 06 EB 1E 88 66 04 BF 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E 25 03 4E 02 CD 13 72 29 BE 52 07 81 3E FE 7D 55 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 29 07 EB 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB D5 4F 74 E4 33 C0 CD 13 E B B8 00 00 80 37 35 15 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 8D A5 A2 A5 E0 AD A0 EF 20 E2 A0 A1 AB A8 E6 A0 20 E0 A0 A7 A4 A5 AB AE A2 0 0 8E E8 A8 A1 AA A0 20 AF E0 A8 20 A7 A0 A3 E0 E3 A7 AA A5 20 AE AF A5 E0 A0 E6 A8 AE AD AD AE A9 20 E1 A8 E1 E2 A5 AC EB 00 8E AF A5 E0 A0 E6 A8 AE AD AD A0 EF 20 E1 A8 E1 E2 A5 AC A0 20 AD A5 20 AD A0 A9 A4 A5 AD A0 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 00 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 20 B7 90 00 00 80 01 01 00 0C FE FF FF 3F 00 0 0 00 D9 E5 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA Init ok Going to main loop... Итог - голова видит трек, похоже дает команду на плей, время стоит и перезагружается. === выключаю TAGON. Итог - голова увидела трек, время пошло, все запело, но при попытке переключить треки - перезагруз головы. === включил LOG и UART, хотел глянуть чего там голова передает - ошибка PRINT_MESSAGE в IP_bus.c при компиляции. == Далее CHS_ACCES_FIRST закоментировал. LOG, TAGON выключил. ENABLE_SERIAL,PLAY_WITHOUT_HU включил. и игрался nop-ами при помощи след конструкции: Code: { u08 i; for(i=0;i<NUMBER_OF_NOP;i++) { asm volatile ("nop"); } } в constant.h добавил #define NUMBER_OF_NOP 2 // задержка Ни в какую не выводит. Просто висит. Вот такие пироги. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 00:49 верните все назад и 'nop' тоже
закоментируйте CHS_ACCES_FIRST раскоментируйте //delay10us(); в функции u08 ATA_ReadLBA0(u32 LBA, u08 NumSectors, u08 *Buffer) файл ata_if.c если не поможет надо определить где виснет плеер ставте PRINT("START funname"); вызов функции PRINT("END funname"); в цепочке init_fat() например PRINT("START init_fan()") init_fat(); PRINT("END init_fan()") обязательно закоментируйте USE_LOW_EXT Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 01:13 понял.Сейчас попробую.
В принциеп все вроде как заработало. Через одно место правда) Частенько перезгружаясь, не выдавая теги и не всегда переключая треки) Но уже что то. Кстати, на кнопку Band реагирует нормально. Чего то там меняется на экране HU. И еще - у вас хватает места в прошивке под TAGON? У меня уже начинает ругаться когда включаешь. Хотя UART и пр выключены. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 01:16 Quote и игрался NOP-ами при помощи след конструкции: так играть NOP нельзя :!: :!: :!:только добавлять или убирать asm volatile ("nop"); !!!!!!!!!!!!!!!!!!!!!!!!!!! Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 01:22 Quote И еще - у вас хватает места в прошивке под TAGON все хватает У Вас какая версия avr нужна WinAVR 20040404 Когда грузите файл в yaap программа не должна вылезать за 0x4000 Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 01:29 WinAVR-20040720, с этим разберусь я думаю. Наверное стоит повесить вашу версию. Разницы нет конечно, но на всякий случай.
за 0x4000 в любом случае не вылазит. Странно, но при включении TAGON он даже не пищит. а тупо ресетится по циклу. Я уже думаю не бракованная ли у меня mega. Может 12 мгц ей слишком много?) Все таки нужно добить CHS_ACCES_FIRST. Кстати, это оч важно, раскоментирована она или нет, с точки зрения проигрывания файлов. Или с точки зрения HU? Спасибо за помощь! Без Вас я скорее всего уже выкинул бы все в окошко)) Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 01:40 потыкался сейчас в кнопки HU.
Code: "Функцию можно включить/выключить тоже из дополнительного меню. (Нажимается BAND 2 раза, на дисплее отображается A-0X, где X - 0 режим выключен,1-включен, клавишами поиска треков изменяется, клавишей следующего диска подтверждается) Работа функции: если режим включен и в текущей директории найден плейлист, то начинается проигрывание по плейлисту (причем функции RDM,SCAN,RPT работают только внутри плейлиста).При ручном выборе диска текущий плейлист аннулируется и ищется новый. Перекодировка из Cyrillic UNICODE и ANSI в латиницу. Работает для имен файлов и тегов ID3. Поддержка тэгов ID3 v1 и v2. В v2 фрейм 'TALB' - название альбома, 'TIT2' - название песни Функцию можно включить/выключить тоже из дополнительного меню.(Нажимается BAND 4 раза, на дисплее отображается E-0X, где X - 0 режим выключен,1- включен ID3 V2, 2- включен ID3 V1, 3- включен ID3 V2 и V1) клавишами поиска треков изменяется, клавишей следующего диска подтверждается) Отсчет времени в обратную сторону. Функцию можно включить/выключить тоже из дополнительного меню. (Нажимается BAND 3 раза, на дисплее отображается L-0X, где X - 0 режим выключен,1- включен клавишами поиска треков изменяется, клавишей следующего диска подтверждается)" эти фунции работают. Работает пауза. Но как дело доходит до переключения трека или папки - плейер перезагружается. Голова тоже. (следствие перезагрузки плейера?) Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 01:40 насчет версии это достаточно важно т.к. используетя asm оптимизация
CHS_ACCES_FIRST должен быть закоментирован Насчет кварца Вы уверены что он точно 12 мгц может бракованный . Как вы выставляете флаги mege при программировании. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 01:42 Quote потыкался сейчас в кнопки HU. при выключенном CHS_ACCES_FIRST или нетTitle: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 01:47 завтра качну вашу версию WinAVR.
Фьюзы: (yapp) галки стоят в: 1.CKSEL0 2.SUT0 3.SUT1 4.BOOTRST 5.BOOTSZ1 6.SPIEN во всех остальных галочки отсутствуют === при включенном CHS_ACCES_FIRST. Пока не могу добиться определения винта при выключенном. Ваш метод еще не пробовал. Складывается ощущение, что компилер не совсем верно обрабатывает исходники. Сижу чз GPRS, завтра качну с нормального инета вашу версию WinAVR.Там будет виднее. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 01:55 УРА!! Решил проблему перезагрузки!!
Убрал галочку с BOOTRST во фьюзах меги))) Теги тож влезли!!! Закоментировал функцию LIST:) На данном этапе все работает как надо, кроме перемотки по песне. Тупо виснет. Пока еще на раскоменитрованном CHS_ACCES_FIRST. nop вернул на место. Но то что есть уже - меня сильно радует!! Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 01:58 :D :D :D
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 02:02 Если работает при включеном CHS_ACCES_FIRST Это неправильно. Добавлением ATA_ReadLBA0(0, 1, FAT_CACHE);
Вы просто затираете FAT_CACHE считанный ATA_ReadCHS0(1, 1, 1, 1, FAT_CACHE); Надо чтобы работало без CHS_ACCES_FIRST Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 02:08 Понятно. Мозги уже в кучу просто) И Вас достал еще)
Сейчас займусь этим вопросом. А что за версия yapp? у меня другая, даже флаги по другом зовутся, CKOPT вообще отсутствует)) Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 02:09 про фьюзы смотрите http://www.vitat.spb.ru/files/ip-bus/lockbits&fuses.jpg
у меня версия 0.6 Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 02:13 да да, я увидел это окошко. Просто с моей версии yapp оно совсем другое) вот и пошутил. В общ выставил как надо, кроме BODLEVEL(0). Если его ставить - начинает постоянно ресетится. Глюк да и только.
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 02:15 если вас не затруднит - пришлите вашу версию yapp на efko(собака)bk.ru Буду очень благодарен! Скачанная с сайта Джаспера - кривая ужасно. Что т не то они там выложили видно.
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 02:19 CKOPT может и не быть т.к. это для 8 меги Скачайте даташит для 162 там подробно все расписано
Я уже забыл как надо точно выставлять а плеер в машине . Только с утра смогу посмотреть Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 02:23 yapp получил. Спасибо.
Флаги ставил по даташиту меги. Был бы рад увидеть ваши флаги. с CHS разберусь завтра, сейчас спать надо идти.. В общем, очень доволен, сейчас работает все, за исключением перемотки. Даже теги прокручивает и все переключает без глюков! Спасибо Вам за помощь! И за отличный проект. Готов поощрить это материально. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 18:48 Вот так у меня стоят fusebits
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 19:22 Продолжаю мучить ямп и Вас) Флаги выставил как у вас.
С помощью PRINT выяснил что затык (при закоментированном CHS FIRST) происходит в функции u08 ExecuteCommand(u08 NumSectors, u08 *Buffer) файла Ata_if.c Code: do // suppose that NumSectors at least 1 { // for each sector requested // loop reading ALT STATUS until BUSY is cleared CheckBusy(1); // then read STATUS register to reset interrupt -> здесь виснет -> u08 err = ReadBYTE(CMD_A + CMD_STATUS); if (err & SR_ERR) // fail on error { #ifdef TXT_ERROR PRINT_p(PSTR("CMD_ERR\n")); #endif SetPlayerError(2,0); //Error 02 CMD_ERR return err; } Если включить debug ATA, винт определяется и даже начинает играть, заикаясь. Вот что при этом пишет терминал: Code: 00004089 0004 Error : 00 при этом музыка играет.000040F9 0004 Error : 00 000040FD 0004 Error : 00 0003CCB9 0004 Error : 00 0003CCBD 0004 Error : 00 000040FD 0004 Error : 00 000892C9 0004 Error : 00 000892CD 0004 Error : 00 000040FD 0004 Error : 00 00004089 0004 Error : 00 000BD0F9 0004 Error : 00 000BD0FD 0004 Error : 00 000BD101 0004 Error : 00 000BD105 0004 Error : 00 000001D1 0001 Error : 00 00004099 0004 Error : 00 0000409D 0004 Error : 00 0017C629 0004 Error : 00 0017C639 0004 Error : 00 0017C649 0004 Error : 00 0017C64D 0004 Error : 00 0017C639 0004 Error : 00 0017C629 0004 Error : 00 001C3D89 0004 Error : 00 001C3D99 0004 Error : 00 001C3D9D 0004 Error : 00 001C3D89 0004 Error : 00 0017C629 0004 Error : 00 0000409D 0004 Error : 00 00004089 0004 Error : 00 00200129 0004 Error : 00 00004089 0004 Error : 00 00222DE9 0004 Error : 00 00222DED 0004 Error : 00 00222DF1 0004 Error : 00 00222DF5 0004 Error : 00 0000049C 0001 Error : 00 002EAF09 0004 Error : 00 002EAF0D 0004 Error : 00 002EAF11 0004 Error : 00 00004089 0004 Error : 00 0036B589 0004 Error : 00 0036B599 0004 Error : 00 0036B59D 0004 Error : 00 0036B589 0004 Error : 00 00004089 0004 Error : 00 003A18B9 0004 Error : 00 003A18BD 0004 Error : 00 00004089 0004 Error : 00 003CF989 0004 Error : 00 003CF98D 0004 Error : 00 003CF991 0004 Error : 00 003CF995 0004 Error : 00 000007F6 0001 Error : 00 00504089 0004 Error : 00 0050408D 0004 Error : 00 00004089 0004 Error : 00 00004089 0004 Error : 00 000040F9 0004 Error : 00 000040FD 0004 Error : 00 0003CCB9 0004 Error : 00 0003CCBD 0004 Error : 00 000892C9 0004 Error : 00 000892CD 0004 Error : 00 000BD0F9 0004 Error : 00 000BD0FD 0004 Error : 00 000BD101 0004 Error : 00 000BD105 0004 Error : 00 000001D1 0001 Error : 00 00004099 0004 Error : 00 0000409D 0004 Error : 00 0017C629 0004 Error : 00 0017C639 0004 Error : 00 0017C649 0004 Error : 00 0017C64D 0004 Error : 00 001C3D89 0004 Error : 00 001C3D99 0004 Error : 00 001C3D9D 0004 Error : 00 00200129 0004 Error : 00 00222DE9 0004 Error : 00 00222DED 0004 Error : 00 00222DF1 0004 Error : 00 00222DF5 0004 Error : 00 0000049C 0001 Error : 00 002EAF09 0004 Error : 00 002EAF0D 0004 Error : 00 002EAF11 0004 Error : 00 0036B589 0004 Error : 00 0036B599 0004 Error : 00 0036B59D 0004 Error : 00 003A18B9 0004 Error : 00 003A18BD 0004 Error : 00 003CF989 0004 Error : 00 003CF98D 0004 Error : 00 003CF991 0004 Error : 00 003CF995 0004 Error : 00 000007F6 0001 Error : 00 00504089 0004 Error : 00 0050408D 0004 Error : 00 Init ok Going to main loop... 000BD0F9 0004 Error : 00 000BD0FD 0004 Error : 00 000BD101 0004 Error : 00 000BD105 0004 Error : 00 000001D1 0001 Error : 00 00004099 0004 Error : 00 0000409D 0004 Error : 00 00004089 0004 Error : 00 000BD0F9 0004 Error : 00 000BD0FD 0004 Error : 00 000BD101 0004 Error : 00 000BD105 0004 Error : 00 00004099 0004 Error : 00 00154509 0004 Error : 00 0015450D 0004 Error : 00 00000000 0001 Error : 00 33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C BF 1B 06 50 57 B9 E5 01 F3 A4 CB BE BE 07 B1 04 38 2C 7C 09 75 15 83 C6 10 E2 F5 CD 18 8B 14 8B EE 83 C6 10 49 74 16 38 2C 74 F6 BE 10 07 4E AC 3C 00 74 FA BB 07 00 B4 0E CD 10 EB F2 89 46 25 96 8A 46 04 B4 06 3C 0E 74 11 B4 0B 3C 0C 74 05 3A C4 75 2B 40 C6 46 25 06 75 24 BB AA 55 50 B4 41 CD 13 58 72 16 81 FB 55 AA 75 10 F6 C1 01 74 0B 8A E0 88 56 24 C7 06 A1 06 EB 1E 88 66 04 BF 0A 00 B8 01 02 8B DC 33 C9 83 FF 05 7F 03 8B 4E 25 03 4E 02 CD 13 72 29 BE 52 07 81 3E FE 7D 55 AA 74 5A 83 EF 05 7F DA 85 F6 75 83 BE 29 07 EB 8A 98 91 52 99 03 46 08 13 56 0A E8 12 00 5A EB D5 4F 74 E4 33 C0 CD 13 EB B8 00 00 80 37 35 15 56 33 F6 56 56 52 50 06 53 51 BE 10 00 56 8B F4 50 52 B8 00 42 8A 56 24 CD 13 5A 58 8D 64 10 72 0A 40 75 01 42 80 C7 02 E2 F7 F8 5E C3 EB 74 8D A5 A2 A5 E0 AD A0 EF 20 E2 A0 A1 AB A8 E6 A0 20 E0 A0 A7 A4 A5 AB AE A2 00 8E E8 A8 A1 AA A0 20 AF E0 A8 20 A7 A0 A3 E0 E3 A7 AA A5 20 AE AF A5 E0 A0 E6 A8 AE AD AD AE A9 20 E1 A8 E1 E2 A5 AC EB 00 8E AF A5 E0 A0 E6 A8 AE AD AD A0 EF 20 E1 A8 E1 E2 A5 AC A0 20 AD A5 20 AD A0 A9 A4 A5 AD A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8B FC 1E 57 8B F5 CB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 20 B7 90 00 00 80 01 01 00 0C FE FF FF 3F 00 00 00 D9 E5 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA 0000003F 0001 Error : 00 00004089 0004 Error : 00 000040F9 0004 Error : 00 000040FD 0004 Error : 00 0003CCB9 0004 Error : 00 0003CCBD 0004 Error : 00 000040FD 0004 Error : 00 000892C9 0004 Error : 00 000892CD 0004 Error : 00 000040FD 0004 Error : 00 00004089 0004 Error : 00 000BD0F9 0004 Error : 00 000BD0FD 0004 Error : 00 000BD101 0004 Error : 00 000BD105 0004 Error : 00 000001D1 0001 Error : 00 00004099 0004 Error : 00 0000409D 0004 Error : 00 0017C629 0004 Error : 00 В принципе такой вариант устраивает. Грешу на винт. У вас какой кстати? У меня 3,5" 10 гигов. По сути не должно быть разницы. Пробовал много винтов, кроме ноутбучных.Еще пара вопросов - при прокрутке по треку жестко уходит в перезагруз. Что можно покрутить?) И еще, где должен показываться битрейт? Странно конечно, одинаковое с Вами железо, а работает по разному. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 19:31 У Вас какая версия прошивки
Загрузите вот это Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 20:18 ок, там какой размер кластера?у меня 8192. На сколько форматить?
Сейчас прошивка 3.04 Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 20:22 16384
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 21:22 Загрузил - винт сразу определился. Но треки булькают и скачут. Управление с HU нестабильно. У меня кварцы 12 на меге и 14 на VS.
Кто нибудь еще собирал плейер? Были ли такие проблемы у других? Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 21:29 Подайте на мегу питание через диод прямо на VCC чтобы было около 4
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 22:05 ок, попробую. Спасибо за совет. А в этой прошивке CHS закоментирована?
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 22:06 Да
Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 22:11 вот мля.
я сам себе винт спалил. Гребаные нотубушные винты на 5 вольт.Хорошо что там одна музыка была Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 22:23 Бывает.. На 12 В посадили?)
В принципе они щас дешевые. Кстати где разъем на ноутбучный винт брали? Никак найти не могу. Похоже у меня помехи по питалову. Напихаю кондеров на ноги. Интересно кстати получается. В 3 версии и в 3.04 наверняка одни функции инициализации ЖД? Если да, то проблема точно в компилере! Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: Sergey on 16 Dec 2007, 22:36 Quote Бывает.. На 12 В посадили?) УгадалиQuote Кстати где разъем на ноутбучный винт брали? На савеловском рынке рублей 100-150 правда года 1.5 назадCode: Похоже у меня помехи по питалову. Напихаю кондеров на ноги. Быстрей и проще поставить диод Сразу все станет ясно. Вот последняя версия с которой я компилировал у меня все работает на ураTitle: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 23:15 Пасиб за исходники. Картина не изменилась, буду копать в сторону железа. В принципе вопросов больше нет. Тема раскрыта)
Кстати, вот и фото моего чуда инженерной мысли) Плата еще не отмыта, выглядит на фото не очень. (http://i011.radikal.ru/0712/f1/0eac3b797127t.jpg) (http://radikal.ru/F/i011.radikal.ru/0712/f1/0eac3b797127.jpg.html) (http://i005.radikal.ru/0712/16/f62c26fe3424t.jpg) (http://radikal.ru/F/i005.radikal.ru/0712/16/f62c26fe3424.jpg.html) (http://i044.radikal.ru/0712/d6/d060163053e6t.jpg) (http://radikal.ru/F/i044.radikal.ru/0712/d6/d060163053e6.jpg.html) снял небольшой видеоролик, как он работает и как глючит) попытаюсь выложить. Title: Re: Вопрос по Fat.c или "постоянная ошибка размера кластера" Post by: efko on 16 Dec 2007, 23:18 ролик выложил тут http://rutube.ru/tracks/346580.html?v=2615d39f56324415d67ed52a6ff33b82 (1,48 Мб)
Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору. Post by: Sergey on 16 Dec 2007, 23:36 Efko вы из Москвы? Давайте я отдам свой плеер во обмен на vs1001 и megu162 и на провод IPBUS
Просто давно хочу сделать на другой плате. Но все руки не доходили. Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору. Post by: efko on 16 Dec 2007, 23:44 Кстати, забыл представиться. Константин:)
Я из Казани. Меня этот вариант оч даже устраивает) IP-BUS кабель у меня самодельный. Точнее его разъем. Из старых шнурков CD-ROM - audio. Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: efko on 17 Dec 2007, 02:35 Тестовая прошивка. Выводит в com лог работы.
Скорость UART - 38400. Размер кластера 16384. Работает с HU. Мне помогла при отладке глюков с перемоткой треков. Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: Sergey on 18 Dec 2007, 20:40 Хм. Интересно, после того как я сжег винт, я нашел старый нотебучный винт на 1.5Г. С ним у меня начались заикания. Будем разбираться
Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: efko on 19 Dec 2007, 10:23 Аналогично. Тупо заливаю 3.04 прошивку - заикания исчезают. Сравнивая прошивки - нашел различия в разных задержках вывода в vs1001. Но залить прошивку не было возможности.
Сейчас постараюсь найти - где конкретно. Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: efko on 19 Dec 2007, 16:19 Хочу добавить - проблема спонтанной перезагрузки плейера и головы полностью разрешилась подачей питания на мегу162 через диод напрямую с VCC.Видимо на этой печатке есть помехи по питанию, ввиду некорректной разводки земли. Также желательны блокировочные конденсаторы 0.1 мкф на дороги питания возле контроллера и памяти.
Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: Sergey on 19 Dec 2007, 17:05 Залейте вот эту прошивку Размер кластера 16
Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: efko on 20 Dec 2007, 10:41 Залил, все заработало без заиканий! В общем все отлично работает! Могу сказать, что автор действительно довел все до ума.
PS. Заметил что List работает только при количестве папок <12.) но это уже мелочи. Главное ничего не глючит и работает. Title: Re: Собрал "yampp+emulator в одном" Сергея. Вопросы к автору.(+photo) Post by: Sergey on 20 Dec 2007, 16:30 Работа LIST зависти от HU. У меня показывает только 16
Последние версии прошивки и платы в ветке 'собрал схему MP3 плейера и эмулятора' |