Sida 1 av 3
DMA-problem med compact flash till IDE-adapter
Postat: 9 augusti 2007, 13:35:52
av dayzleaper
Var på Kjell & Co och köpte mig en compact flash till IDE-adapter samt ett Sandisk Ultra II-kort på 2 Gb som jag tänkte ha till en framtida HTPC.
Problemet är dock att jag inte får DMA att fungera, utan kortet körs endast i PIO-läge, vilket rätt drastiskt reducerar överföringshastigheten till runt 1,5 Mb/s.
Jag har hört att Sandisks kort bör stödja DMA-läge, så jag antar att det är adaptern som inte är korrekt kopplad.
Är det någon som kör en sån adapter som kan verifiera att Sandisks kort funkar med DMA? Vad är det som ska kopplas i adaptern för att DMA ska fungera som det ska?
Adaptern jag köpte är en
http://www.kjell.com/?item=38365.
Postat: 9 augusti 2007, 14:42:31
av Kraco
Många såna där kort adaptrar stöder inte DMA utan endast PIO, så det har förmodligen inte med CF kortet att göra.
Edit: Som jag trodde, här har du samma kort på komplett med tillhörande kommentarer ->
http://www.komplett.se/k/ki.aspx?sku=31 ... w=detailed
Postat: 9 augusti 2007, 14:52:28
av MiSTer
Nu känner jag mig lite dum men...
Hur/vart ser man vad den körs som?
Har allt ställt på "auto" i BIOS
Jag har nämligen köpt en likadan, enda skillnaden är att det är en hane-variant, plus 1GB SanDisk
Till mitt projekt har jag inte någon överhängande brådska i hårdvaran...
Men varje flaskhals man kan ta bort är ju välkommen...
Kör den med en Celeron 633MHz ock 256MHz minne...
INGA rörliga delar... förutom fläkt... den kanske försvinner dock...
Postat: 9 augusti 2007, 14:58:23
av Kraco
I windows ser du det om du högerklickar på enheten i enhetshanteraren och klickar på avancerat och söker reda på dma mode eller något sånt, i linux vilket jag antar att du kanske kör för prestandans skull kör du ett kommando som visar det, kommer inte ihåg vilket...
Edit: nu kom jag på det ... hdparm -i /dev/hdX där hdX är vilken enhet den ligger som, säkerligen hda i ditt fall... om du kollar efter PIO Modes: och DMA: modes så ser du vilka som stöds, den använder automatiskt högsta möjliga DMA, om inte dma finns används högsta PIO, borde vara 4 på det där kortet... Det läge som används är märkt med en asterisk.
Postat: 9 augusti 2007, 16:02:56
av dayzleaper
Efter en snabb koll på lite specifikationer och lite fipplande med multimetern så verkar det som att pinne 43 och 44 från compactflash-kontakten inte är anslutna för DMA.
För DMA ska pinne 43 vara ansluten till pinne 21 på IDE-kontakten, och pinne 44 till pinne 29 på IDE-kontakten.
Efter lite trial-and-error med lödkolven så visade det sig att pinne 44 är kopplad till Vcc, vilket ställer till det ganska bra. Vcc-banan på kretskortet till pinne 44 ligger under compactflash-kontakten.
Någon som har några bra idéer om hur man löser detta och "frigör" den? Det går inte att komma åt med en vanlig brytkniv.
Postat: 9 augusti 2007, 17:41:51
av Henry
Ser ingen bra bild på det kortet för att ev kunna komma med en lösning men annars så är det kanske inte så mycket annat att göra än att löda loss kontakten?
Postat: 13 augusti 2007, 10:04:53
av Kraco
Hur gick det med detta ?

Postat: 13 augusti 2007, 17:24:09
av dayzleaper
Det löste sig hyfsat till slut. Efter mycket mätande och pillande lyckades jag bända loss pinne 43 och 44 på CF-kontakten och löda på två kablar på dem istället.
Det verkar funka rätt bra, även fast jag självklart lyckades få tenn mellan ett par andra pinnar också, som var ett h-vete att få bort. Linux hittar kortet och adaptern och aktiverar MWDMA2.
Med hdparm -t får jag nu 15.12 Mb/s, vilket får anses vara rätt bra för ett kort som enligt Sandisk ska klara 10/9 Mb/s. Det är i vilket fall betydligt bättre än 1.5 Mb/s som jag fick innan.
Så, lösningen på detta, ifall det är fler som vill konvertera:
Löd loss pinne 43 och 44 på CF-kontakten och böj dem så att de är "i luften". Det är ganska trångt, så skippa de fyra kopparna kaffe innan. En stadig hand och en smal spets på lödpennan behövs garanterat. Pilarna på kontakterna markerar pinne 1, för de som inte vet.
Pinout för IDE-kontakten
Pinout för Compact Flash-kontakten
Tyvärr fanns det ingen bild på CF-kontakten, så ni får lita på mig när jag säger att pinne 1-25 sitter på den övre raden, och pinne 26-50 på den undre.
Kabla pinne 43 och 44 till IDE-kontakten.
Pinne 43 på CF-kontakten ska kopplas till pinne 21 på IDE-kontakten (DMARQ).
Pinne 44 på CF-kontakten ska kopplas till pinne 29 på IDE-kontakten (DMACK).
Lägg slutligen ett lager epoxylim eller smältlim över lödningarna, så att pinnarna inte kortsluter något annat.
Nu återstår bara att lösa problemet att Windows inte använder DMA. Möjligen kan det vara för att jag lyckades pilla loss en av kondensatorerna på kortet, men är osäker.
Postat: 13 augusti 2007, 20:06:39
av Kraco
Jasså var det så lätt ?? Då är det för mig ett mysterium varför de inte gjort korten så från början ?!

Postat: 13 augusti 2007, 21:41:08
av dayzleaper
Ja, det var precis vad jag funderade på också. Troligtvis så behövs det säkert nånting annat också. Vore intressant att kika på ett schema över en adapter som klarar DMA "från fabrik".
Postat: 13 augusti 2007, 22:34:01
av netrunner
Stort tack för detta klargörande.
Jag har länge försökt att få CF-kort RAID att funka utan framgång. Har testat ett flertal RAID-kort och CF-kort.
Alla RAID-kort (utom ett) buggar när det inte går att köra DMA.
Trisst att det är så s*tans pillig lödning bara.
PS. adaptern är mycket billigare på Ebay, 3st för ca 80kr.
Jag såg det efter att köpt från Conrad, 1st för 250kr.
Finns även för att låssas vara 2,5" laptop hårddisk.
Postat: 13 augusti 2007, 23:28:14
av Kraco
dayzleaper skrev:Troligtvis så behövs det säkert nånting annat också.
men du hade ju fått till det ?

Postat: 14 augusti 2007, 04:43:21
av dayzleaper
Jo, det funkar som sagt riktigt bra i Linux. Windows verkar dock ha lite problem. Visserligen spelar det ingen roll för mig, eftersom tanken med CF-adaptern var att bygga en HTPC eller en router, beroende på vad jag får lust/tid med härnäst.
Fast jag måste säga att jag irriterar mig en smula på att jag inte vet varför Windows jävlas...

Postat: 14 augusti 2007, 08:22:38
av Kraco
I windows har det garanterat med drivrutinerna att göra, de drivrutiner som windows tycker passar till kortet har säkerligen inte inbyggt stöd för dma. Prova med en drivrutin till ett/flera liknande kort som har DMA stöd så kan du nog få igång det!
Postat: 14 augusti 2007, 15:39:57
av dayzleaper
Det finns inga drivrutiner till adaptern, det emulerar ju en vanlig hårddisk.
I mitt fall skulle det nog kunna vara drivrutinerna för IDE-chipsettet (JMB36X) som strular. Jag ska prova adaptern i någon annan dator vid tillfälle, och se om det bara är min dator som inte vill köra DMA.