Programspråket C behöver anpassas för DSP-programmering och andra hårdvarunära tillämpningar. Det tycker en ISO-arbetsgrupp. Idag har alla verktygsleverantörer sina egna lösningar på problemen.
DTR 18037 Det nya standardförslaget innehåller tre tillägg som gör C ännu mer hårdvarunära. o FASTTALSARITMETIK. DSP:er föredrar fasttal framför flyttal och heltal. C får en ny datatyp, kallad fract. En fract är ett tal mellan -1 och +1. Liksom den gamla datatypen float används fract för att representera kvantifierade analoga signaler. Men fasttal har ingen exponentdel och matematiken är nästan identisk med heltalsaritmetik, och därmed enkel att utföra effektivt i hårdvara. o GRÄNSSNITT TILL HÅRDVARURESURSER. Lågnivåkommunikationen med displayer och andra enheter ska vara enhetlig. Standarden anger ett antal funktionsnamn som ska användas för att läsa och skriva de register som styr externa enheter, som portar, displayer, sensorer, och så vidare. Varje plattform måste fortfarande implementera detaljerna i kommunikationen. Men det standardiserade gränssnittet kapslar in skillnaderna. o MULTIPLA ADRESSRUM. Programmeraren kan ange om ett datavärde ska lagras i till exempel RAM, ROM, Flash eller EEPROM. ISO-rapporten beskriver syntaxen för hur detta anges, men lägger sig inte i vad de namngivna adressrummen ska heta. |
Men sedan språket skapades har användningen av C förändrats. C-program skrivs idag för signalprocessorer, DSP:er, som flitigt använder så kallad fasttalsaritmetik, vilket C saknar stöd för. Fasttalsaritmetik stöds idag ofta även av "vanliga" processorer.
Det betyder att programmeraren måste växla till att skriva rena processorinstruktioner, assembler, när hon vill utnyttja fasttal.
Kompilatortillverkarna har svarat på behovet och levererar idag olika utökningar av C. Det betyder att programmeraren kan stanna i C, som är enklare och säkrare än assembler.
Det är dags att standardisera tilläggen, tycker bland annat Jan Kristoffersen, vd på danska programkomponentleverantören Ramtex. År 1997 kontaktade han standardiseringsorganisationen ISO i Danmark och drog igång en av de tre arbetsgrupper som nu presenterar sin gemensamma slutrapport, DTR 18037.
- Det här en standard som har skapats efter marknadens behov. Det är inget påfund från en kommitté, säger Jan Kristoffersen.
Att "DSP-landet" Danmark är inblandat i DTR 18037 är ingen slump. Både Nokia, Motorola och Eriksson utvecklar mobiltelefoner här.
Förslagen i 18037 liknar den teknik som Jan Kristoffersens företag Ramtex använder för att utveckla LCD-drivrutiner för olika plattformar. Det illustrerar nyttan med standarden.
- Samma programkod kan användas på alla platser som använder samma LCD-displayer, förklarar Jan Kristoffersen.
- Förr brukade man vara tvungen att börja om från noll med programvaran varje gång man bytte processor.
Standarden betyder att konstruktören kan behålla en hel del C-programvara när hon byter hårdvara, till exempel från en Motorola-DSP till en Texas-DSP.
"En klumpig lösning"
Det blir också enklare för programkomponentleverantörer att erbjuda produkter över flera plattformar. Även om dessa leverantörer idag är härdade och har vant sig vid arbetet med att portera C-kod mellan olika plattformar.
För det tredje blir det enklare att byta programverktyg. Verktygsleverantörerna erbjuder ofta egna enhetliga lösningar på de problem 18037 adresserar. Det kan faktiskt idag vara svårare att byta kompilator än att byta hårdvara.
Noga räknat är DTR 18037 ingen standard, utan en "teknisk rapport av typ 2", som nu påbörjar en minst femårig prövotid innan den bara eventuellt antas som standard.
Petter Edman på svenska programverktygstillverkaren IAR, gillar DTR 18037. I princip.
- Det är bra att man standardiserar på inbyggnadssidan, det är ett eftersatt område.
Assembler är på tillbakagång i inbyggda system till förmån för C.
- Utvecklarna är ofta högutbildade. De tycker inte om att hacka assembler och söker efter smidigare verktyg.
Petter Edman är dock skeptisk mot den tredje delen av standarden, som anger hur C-program på låg nivå ska kommunicera med enheter som displayer och sensorer.
- Lösningen låter bättre än den är. Portabiliteten går bara på ytan, säger Petter Edman.
- Den här sortens programvara är så hårdvarunära att den passerar gränsen för vad som låter sig porteras. Den föreslagna lösningen är klumpig och ger ändå inte sann portabilitet, säger Petter Edman.
Arbetsgruppen har med en liknande motivering valt att inte standardisera avbrottshantering. Det skulle varit komplext att få den att passa alla plattformar. När det gäller avbrottshanteringen skulle det dessutom inte ge så mycket utbyte, eftersom den trots allt är ganska enkel att portera.
Jan Tångring