Utvecklingsverktyg för små programmerbara systemkomponenter

Programmerbara SoC-komponenter av typen Cypress PSoC ger konstruktören större frihet, men kräver också ett delvis annat tankesätt. Naman Jain och Anshu Kandhari från Cypress Semiconductor beskriver här  hur man kan arbeta med företagets verktygsuppsättning.

 

Att utveckla ett embeddedsystem kan vara svårt och tidsödande, men följande kortfattade steg är ett exempel på hur man kan underlätta designprocessen. Vi förutsätter här att vi har en innovativ idé eller ett system som gör livet lättare och/eller minskar mängden arbete som måste läggas ned för att utföra en uppgift. Därifrån skall vi ta oss hela vägen till en färdig produkt.

Definition
Först skall hela systemet definieras. Här måste man även ange vad systemet skall göra vid olika typer av inmatning. Denna definition är kanske den allra viktigaste delen eftersom fel här påverkar hela systemets funktion. Vi kan dela upp arbetet i tre delar:
* Överväganden kring inmatning/utmatning: Definierar vilken utmatning systemet gör för varje inmatning, men ser systemet som en svart låda.
* Matematisk modellering: Design av algoritmen så att systemet fungerar som avsett.
* Funktionell modellering: Design av systemets funktioner för acceptans av inmatning och produktion av önskat resultat.

Teknikval och konstruktion
Därefter är det dags att se till detaljerna. Gå igenom tillgänglig teknik baserat på punkterna ovan och välj de enheter som uppfyller alla kraven samt balansera effektivitet, kostnad och tiden tills produkten kan komma ut på marknaden.
För integration och kretskortsdesign behövs en lista över alla de komponenter som du behöver för att implementera dina funktioner och hur de skall placeras ut på kretskortet. Spår och andra vägar skall ha minsta möjliga mängd elektromagnetiska störningar (EMI) och skall vara fria från olika typer av fel. Under kretskortsdesignen är det viktigt att vara särskilt noggrann med jorden och alla komponenter på kretskortet som använder jord.


Fig 1. Skapa ett projekt med PSoC Creator i fyra steg

Vid utveckling och felsökning av fast programvara gäller det att göra koden så okomplicerad som möjligt. Då man skriver kod ställs man inför många olika fel och för att lösa dem behöver man ett bra felsökningsprotokoll.

Testning och dokumentation
Felsökning testar de enskilda kodstyckena, men för en heltäckande testning måste man testa hela systemet, det vill säga både maskinvaran och programvaran.
Det är slutligen viktigt att dokumentera allt så att vem som helst som tar en närmare titt på den färdiga applikationen kan förstå vad allt betyder och hur det fungerar.

Problem med nuvarande designprocesser
Vid utveckling av inbäddade applikationer behöver man förstå hur olika chip fungerar och är uppbyggda, så att man kan skapa ett flöde i systemdesignen.
Man behöver också en applikation som förser produkten och dess komponenter med funktionalitet och därför skriver man kod. Systemkraven förändras dock kontinuerligt medan koden skrivs, så designern behöver verktyg som stöder olika felsökningsprotokoll. Det kan hända att man inte kan återanvända sin kod och dessutom vill man få med så många olika funktioner som möjligt i ett och samma system.


Fig 2. Schematisk vy i PSoC Creator

Det finns alltså många olika faktorer att tänka på och därför kräver design av inbäddade system att man tar hänsyn till många olika omständigheter som pris, prestanda, storlek, effektförlust, tiden tills produkten kan befinna sig på marknaden, underhåll och säkerhet samt minnet för det kompletta systemet. Dessutom vill utvecklare av inbäddade system implementera både analoga och digitala programmerbara periferenheter på ett enda chip, vilket innebär att man arbetar med så kallade system på chip (SoC), vilket är mycket tidskrävande för utvecklare.
Då inbäddade system blir allt mer komplexa och kräver programmerbarhet för en rad olika förhållanden, behöver en designer verktyg som kan hantera detta tidsödande arbete och tillhandahålla en användarvänlig miljö där han eller hon kan utveckla sin applikation. Även om det finns ett par marknadsbaserade SOC-kompatibla verktyg är många inte helt på det klara med hur dessa verktyg fungerar. Verktyget måste också kunna utnyttja den maximala potentialen hos produktens funktioner. En designer behöver kort sagt ett verktyg som minskar tiden tills produkten finns på marknaden och hanterar alla utvecklingsaspekter både intuitivt och effektivt. Det bör även vara kostnadseffektivt genom att möjliggöra migration av projekt från ett chip till ett annat, allt eftersom kravspecifikationerna förändras.

PSoC Creator
Tillverkare av programmerbara system på chip (PSoC) har insett att dagens designer behöver ett komplett system på ett enda chip med både digitala och analoga funktioner och som även är helt programmerbart. För att kunna utveckla en inbäddad applikation som fungerar på de här chipen, och har en lösning på alla dessa problemställningar, har Cypress Semiconductor tagit fram PSoC Creator. Verktyget har ett schemabaserat format som medför att en designer kan utveckla applikationer utan att behöva hantera arkitekturen manuellt eller konfigurera register.


Fig 3. Guide för komponentkonfigurering

Med PSoC Creator behöver designern bara föreställa sig designen och sedan rita upp den, antingen genom att dra komponenterna från Cypress komponentbiblioteket till designschemat, eller genom att använda sitt eget komponentbibliotek. Det fungerar precis som när man ritar upp ett blockdiagram för ett system, oberoende av den enhet som används.
Detta är möjligt tack vare redigeraren för grafisk design som skapar en kraftfull miljö för gemensam design av både maskin- och programvara. Det här verktyget kombinerar inte bara en miljö för programutveckling med en intuitiv redigerare för grafisk design, utan gör det även möjligt att testa nya idéer direkt, ger snabb respons på maskinvaruförändringar, skapar bibliotek av designelement som kan delas, möjliggör egna periferenheter, felfri interaktion med periferenheterna på chipet och fullständig designrealisering med hjälp av den inbyggda felsökaren.
Verktygets funktionalitet och användbarhet kan i korthet brytas ned i de fyra steg som visas nedan i fig 1.

C-baserat
PSoC Creator kombinerar ett C-baserat utvecklingsflöde med automatiskt genererade komponent-API:er i designen. Verktyget möjliggör sömlös migration från en enhet till en annan, till exempel från 8-bitars till 32-bitars, om kraven ändras på ett senare stadium. Vid migration från en enhetsserie till en annan behöver man inte fundera över minnesmappningen, instruktioner och så vidare. En fördel med detta är att designen kan utvecklas utan att specificera målchipserien. Istället kan designern byta enhet när som helst under utvecklingscykeln, utan att han eller hon behöver modifiera något annat i projektet.
I exemplet nedan visas funktionen och användbarheten hos PSoC Creator vid utveckling av en inbäddad applikation i realtidsmiljö. Illustrationen visar hur man kontrollerar LED-intensiteten med pulsbreddsmodulering (PWM).
I fig 2 visas demonstreras den schematiska vy som visas efter att man har dragit och släppt önskade komponenter, det vill säga PWM, ingångsstift, utgångsstift och klocka, från komponentfönstret. Som framgår av bilden har åtkomsten till komponenterna förenklats. Dessutom kan en utvecklare skapa egna komponenter genom att helt enkelt rita upp designen och låta verktyget skapa en symbol för den. När komponenten har placerats i ett bibliotek är den klar att användas. Alla designprojekt med referens till biblioteket får tillgång till den nya komponenten i katalogen och kan använda den precis som vilken annan inbyggd komponent som helst. Utvecklare kan snabbt bygga upp designbibliotek genom att dra nytta av återanvändningen av designer i PSoC Creator. Detta innebär att designern, när han eller hon påbörjar ett nytt projekt, kan fokusera på innovation istället för på gamla funktioner.


Fig 4. Stiftdiagram och konfigurationer

I fig 3 demonstreras guiden för komponentkonfigurering, som visas om man högerklickar på komponenten. Med guidens hjälp kan man ställa in komponentens parametrar. För PWM kan man till exempel ställa in parametrar som antal bitar, period, jämförelsevärde och så vidare. Alla komponenter har på liknande sätt egna parametrar som går att ställa in i överensstämmelse med applikationen. Det finns även ett datablad för varje komponent som beskriver funktionalitet, parametrar, elektriska specifikationer, API:er och så vidare för komponenten. Dessutom finns det API:er och datablad för egna komponenter och det går att konfigurera dem på samma sätt som man konfigurerar de inbyggda komponenterna.

Mappning
Nästa steg är att konfigurera mappningen för de stift som används i applikationen med stiftdiagrammet (visas i fig 4) och genomföra ändringar i enlighet med konfigurationen. Längst ned i diagrammet finns det flikar för olika konfigurationer som klockor, DMA, avbrott, system och så vidare. Det inbyggda konfigurationsverktyget mappar designen till enheten och beräknar klockinställning och routning automatiskt, vilket underlättar uppgiften väsentligt för utvecklaren.


Fig 5. Applikationskod

I fig 5 visas den skärmbild där man skriver in applikationskod för att utföra önskade funktioner. Här visas även en brytpunktsanalys, vilket är till hjälp vid felsökning genom att tillhandahålla värden för variabler, register, minne och så vidare vid körning. Numera används de inbyggda API:erna för att kommunicera med komponenterna vid körning. API:erna minskar antalet kodningsfel och säkrar korrekt interaktion med periferenheterna så att hela programutvecklingen sker fortare, lättare och med färre fel.

Felsökning
Felsökning är den viktigaste fasen i produktutvecklingscykeln. PSoC Creator kombinerar en felsökare av typen ”cross-debugger” med ett felsökningsfönster för periferenheter som visar den interna statusen för komponenterna på chipet. Verktyget stödjer även felsökningslägena JTAG och SWD. Andra användbara funktioner är ”hoverfunktionen” med vilken man kan visa typ, adress och värde för en variabel om man hovrar över den med musen. Dessutom kan en utvecklare designa ett helt projekt utan att bekymra sig särskilt mycket om register, minne, felsökningsprotokoll, effektförlust, chipval, funktionsanrop och så vidare.
Eftersom det är en komplex process i sig att designa ett inbäddat system, blir det väldigt tidsödande att placera både analoga och digitala funktioner på samma chip. Utvecklare vill även kunna migrera en design på ett enkelt sätt mellan olika chip, när som helst i designprocessen, samt få maximal användbarhet för de tillgängliga resurserna på ett intuitivt sätt. PSoC Creator löser de här problemen med funktioner som API-stöd för alla komponenter, flexibelt felsökningsstöd och möjlighet att skapa egna och återanvändningsbara komponenter. Verktyget kan även användas för att modifiera befintliga bibliotekskomponenter baserat på applikationskrav och liknande.
Naman Jain och Anshu Kandhari, Cypress Semiconductor
 

Comments are closed.