Diskgnissel

Oroande gnissel-ljud hörs från “datorhallen” (pannrummet/tvättstugan).

Så där lät det nästan hela dagen igår.

“Y”s oroade ord störde min koncentration rejält där jag satt mitt uppe i deklarationsbestyren. Djä**ar, måste jag köpa nya diskar redan? Jag proppade in ett back-up-band och satte igång back-upen innan jag surfade runt och hittade Seagate-diskar till bra pris.

Annat kom emellan, och gnisslet tystnade efter någon timme.

Vid lunchtid skulle jag hämta något i datorhallen, varvid jag knuffade till värmepannan lite lätt, och fick ett plötsligt gnissel “till svar”. Gnisslet visade sig komma från cirkulationspumpen till golvvärmen, och kunde kureras med en påfyllning i pannan.

Diskarna håller kanske ett tag till.

Compiz

Nej, jag har inte fått tag i någon Compis ännu, tyvärr. Däremot har jag uppgraderat mitt grafikkort till ett lite modernare.

Med ett MSI FX7800GS fick jag automatiskt stöd för Compiz.

“Wobbly windows” är så kul att barnen ber att få flytta mina fönster.

Huvudanledningen till att jag befann mig i en datorbutik var inte att skaffa grafikkort egentligen, utan att köpa back-up-band. DAT72-band var inte tillräckligt stora för allt, så jag måste nog tänka ut en bättre back-up-strategi.

Fetkrash

Labbade lite med Xen på Trixie (som servar bjelle.se) för att förbättra infrastrukturen med Hula, (googla på hula project) utan att behöva köra “live” eller sätta upp en fysisk labb-dator.

Efter att ha bootat om i senaste 2.6.20-kärnan med Xen-stöd satte jag igång. Att starta installationen gick ganska lätt. Starta virt-install, svara på några frågor och *pop* så kommer en vnc-viewer upp. Sen (Xen?) började problemen. Installern detekterade bara ett virtuellt nätverkskort, som var bryggat mot eth1 – dvs mot ADSL-modemet, och inte det interna nätet, vilket gjorde att den virtuella datorn inte fick någon kontakt med min DHCP mm.

Efter att ha meckat länge med olika nätverkslösningar gav jag upp, mnnan jag ägnade mig åt TV istället satte jag igång backupen.

Mitt under Rapport hör jag ett “piiiip” som indikerar att servern bootat om.

Jaha, det var ju trist tänkte jag.

Trist värre var det. Den ostadiga kärnan hade fått för sig att krasha utan att synka diskarna först. (Elakt va?) Detta gjorde att jag fick köra manuell fsck för första gången på den maskinen, och gav mig en tankeställare. Bara för att man har RAID-disk betyder det inte att man är skyddad från korrupt filsystem!

Optimerad klocka

Koden till drivningen av IV-18-displayen på min sovrumsklocka är numera optimerad. Den ursprungliga C-koden var snyggt skriven och använde structar och bitfält för att bli tydlig, lättläst och enkel att ändra. Det senare inte minst viktigt, eftersom displayen i labbuppkopplingen är ansluten annorlunda än den i målsystemet.

Problemet med bitfält (och pekare) på en 8-bitars PIC-processor är att det inte passar så bra på en minnesmodell som är tänkt för enkla assemblerprogram, och dessutom är av Harward-arkitektur, vilket innebär att program- och dataminne har helt olika adressrymd. Dettta gör att processorn kan hämta data och operation samtidigt, men passar inte så bra till språket C.

Resultatet av denna mis-match blev att mitt 200-raders C-program (kommentarer och tomma rader medräknade) översattes till över 2000 rader assembler, varav det mesta var kod för att hitta bittarna i minnet. Prestanda blev lite lidande. Displayen uppdaterades ca 500ggr/s, vilket nog är sisådär 5 gånger snabbare än nödvändigt.

Optimering var således av nöden. Jag ville dock inte göra avkall på ändringsbarheten, så kodgenerering var ett bra alternativ.

Mappning mellan bitar och segment och galler, samt hur segmenten ska kombineras till symboler sker i en XML-fil.

<vfd>
<segments>
  <segment nam="a" bit="15">
  <segment nam="b" bit="13">
  ...
  <segment nam="dp" bit="4">
</segment>

<grids>
  <grid nam="g1" bit="17">
  ...
</grid>
<symbols>
  <symbol nam="0">
    <segment nam="a">
    <segment nam="b">
    <segment nam="c">
    <segment nam="d">
    <segment nam="e">
    <segment nam="f">
  </symbol>

</symbols>
   ...
</vfd>

Denna tolkas av ett litet perl-program som genererar en .h-fil med macro-definitioner.

#define GRID_g1_a 0x00
#define GRID_g1_b 0x00
#define GRID_g1_c 0x01
...

#define SEGMENT_a_a 0x00
#define SEGMENT_a_b 0x40
#define SEGMENT_a_c 0x00
...

#define SYMBOL_0_a 0x07
#define SYMBOL_0_b 0x70
#define SYMBOL_0_c 0x00
...

Nu spelar det inte längre så stor roll och macro-definitionerna blir oläsbara, eftersom facit finns i form av XML-filen.

Resultatet då?

Fortfarande 200 rader C översätts till 200 rader assembler. Tiden för att ladda ner programmet i processorn har krympt från knappt 15 s till drygt 4. Alla segment lyser när de ska, liksom alla sifffror.

Uppdateringsfrekvensen har gått från 500Hz till drygt 2000Hz.

Resultatet blev en klar förbätttring på alla punkter. Kostnaden var en lite mer komplicerad byggprocess.

Den som gräver en grop…

Strax före jul kom en “gubbe” från kommunen med ett tråkigt besked. Det var en läcka på “servisen”, och vi var tvugna att åtgärda den före 31/3, annars skulle vattnet stängas av.

Vi kontaktade två firmor, en privat och kommunens entreprenör för att få offert. Den ena firman uppskattade kostnaden till ca 25000, medans kommunens “gubbar” trodde det skulle räcka med 10000, mest beroende på att de skulle byta en kran i gatan, så att vi skulle slippa betala för det hålet, utan bara för ett nära huset.

Båda erbjöd sig att rycka upp vår gamla tagghäck. Eftersom 15000 räcker till ganska mycket skoj är det kanske inte så svårt att gissa vem som fick uppdraget.

Dagen innan de skulle komma fick stora K vattkoppor. På eftermiddagen kom entreprenören med en stor kranbil och skopade bort taggbuskarna, och på morgonen efter kom de och började gräva. Drygt två meter ner i marken stötte de på första problemet. Läckan var inte i skarven mellan ett kopparrör och ett galvat järnrör, utan mitt på det galvade, och utan minsta tillstymmelse till skarv. Eftersom skärtorsdagen är en kort arbetsdag för de flesta gjordes en tillfällig skarv, och man satte upp staket omkring hålet.

Efter påsken kom arbetslaget tillbaka och grävde hålet större och delvis in under huset där man kunde dra en slang genom röret till hålet ute i gatan, sk. relining.

Dagen efter skulle avloppet relinas. Tidigt på morgonen knackades det gamla betongröret sönder för att ett plaströr skulle kunna föras in. Under dagen hördes dämpade svordomar ur gropen, och framåt lunch knackade det på dörren.

Jo, vi skulle behöva gräva upp lite mer i gräsmattan, går det bra?

Det visade sig att det gamla avloppet inte låg riktigt plant, utan lutade lite åt olika håll, vilket gjorde det svårt att få in ett långt stelt rör.

Efter alla dessa grävövningar består nu vår framsida av en 1.5 m hög matjord och fyra diken som skall fyllas i.

Jag får träningsvärk bara av att se högen.