Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Glattnos »

Hur delar jag upp koden till olika AVR-Studio?

När jag skriver program blir det väldigt långt, med många subrutiner. Hur gör jag om jag vill dela in olika subrutiner i olika filer?
Jag har provat att skapa en ny "Source File" men har inte lyckats koppla ihop den med den som är "Entery File". Fick 512 error och 12 warningar på ett program som tidigare fungerade, efter mina försök att återställa programmet så fungerar det inte alls. Kopierade all text och klistrade in i ett nytt projekt, och då fungerade det igen.

Så:
Hur "ska" man göra när man vill dela upp en kod?
Hur kan det komma sig att koden slutar fungera fast att man återställer den till ursprung(och måste klistra in samma kod i nytt projekt för att det ska fungera)? Vad är det som ändras?
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Glattnos »

Okej, tack. Det var ju inte helt självklart men jag fick det att fungera i alla fall.

Men nu om jag ska köra simuleringen så bråkar AVR-Studio i dialog-rutor att "files was not found" på de filer som jag inkluderat förr men nu tagit bort. Man måste trycka "OK" på alla de dialog-rutorna, men sedan fungerar det som vanligt. Men varför måste AVR-Studio bråka om det hela tiden? Jag har ju tagit bort de inkluderingarna. Var kan man ändra detta?
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av bos »

Det saknas på tok för mycket information i felbeskrivningen om problemets kringliggande omständigheter för att ens kunna göra en legitim gissning.
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Glattnos »

bos: Jag kan utöka informationen om du påvisar vad som är oklart. Jag trodde nämligen(och tror fortfarande)att någon som ofta håller på med AVR-Studio skulle känna igen problemet, eftersom jag har fått det många gånger.

Problemet är alltså: AVR-Studio visar upp en dialogruta när jag trycker på "Assemble and run", i rutan så står det, med hänvisning på en gammal inkluderad fil(som alltså inte finns med i koden längre, jag har tagit bort inkluderingen)"files was not found". Denna dialogruta kommer upp flera gånger med hänvisning till olika filer som jag förr har inkluderat men sedan tagit bort. Varför är det så?

bos: Duger det? Vad är det annars som är "på tok för mycket information" som saknas i den felbeskrivningen?
Användarvisningsbild
Icecap
Inlägg: 26658
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Icecap »

Jag håller inte på med AVR men jag har upplevd detta beteense i lite andra kompilatorer av äldre modell (a.k.a. "gammal skit").

Jag har varje gång letat efter det filnamn som den klagar över saknas i alla projektfiler som finns i projektet och sedan raderat det med en texteditor. Alla "binäre" filer som har haft namnet i sig har inte haft betydelse för projektet, de verkar mest vara resultat-filer.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av sodjan »

Det är ju uppenbart att *någonstans* så har projektet sparat att de aktuella
filerna används. Sannolikt är det från början genom att de förekom i "include"
kommandon. Att de sedan ligger kvar känns ganska naturligt, källkoderna
används vid debugging (bl.a) och man kan ju bygga ett projekt utan att
ha vissa källkoder med (genom objektfilerna) och alltså måste projektet
spara vilka källkoder som var med initialt. Det är känns alltså ganska naturligt
att det inte räcker med att bara plocka bort "include" kommandona efter att
man en gång har byggt det med dom.

Har du något alternativ till "Assemble and run" ? "Assemble all" eller liknande ?
D.v.s något som bygger om projektet från grunden, så att säga ?

I MPLAB har man "Build" (som kör en make-liknande build) och "Build all" som
bygger om allt från källkoderna oavsett om det behövs eller inte.

Eller kanske någon i stil med "Reset/clear file dependencies" (som jag bara hittade
på, men du förstår tanken...).

En temporär work-around är ju alltid att bara lägga tillbaka de saknade filerna,
de används ju i alla fall inte och du slipper larmen.

> Man måste trycka "OK" på alla de dialog-rutorna,...

Är "OK" det enda alternativet ?
Nerre
Inlägg: 27257
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Nerre »

När man jobbar med uppdelade filer så brukar ju varje fil assembleras/kompileras för sig, och sen länkas de därvid skapade objektfilerna av länkaren. Alltså är det troligen så att länkaren i det här fallet tror att filerna fortfarande används.

Även om filerna inte finns inkluderade i själva källkodsfilerna så finns de troligen inkluderade i själva "projektet".
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Swech »

Skapa ett nytt projekt istället och inkludera endast din startfil istället för att
försöka lösa ett halvmysko projekt. Med wizarden tar det under minuten.....

Övriga filer kör du
include "filnamn"
i din startfil

Så skall du se att det funkar.

Swech
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av sodjan »

> Jag har provat att skapa en ny "Source File" men har inte lyckats koppla ihop den med den som är "Entery File".

Här är det inte helt tydligt vad du gör. Det finns i pricnip två metoder att dela upp
en applikation i flera källkodsfiler :

1. Flera filer där alla filer läggs samman via "include" i samband med assembleringen.
2. Separat assemblering av varje fil där allt läggs ihop i samband med länkningen.

Metod 1 är enklast och filerna kan i princip se ut som de gjorde innan, bara
delade i separata filer. Asemblern kommer i princip inte att märka någon skillnad,
den ser (fortfarande "i princip") det hela som en enda stor ASM fil. Fördelen är
att filerna kan vara enklare att underhålla, men det ger ingen effektivitetsvinst
vid assembleringen, det är samma "jobb".

Metod 2 är renare/snyggare/effektivare men ställer normalt lite andra krav på
källkoderna. Det är bl.a normalt att man får fixa lite med global/external direktiv
för att få symboler att "synas" mellan filerna (eller för att tala om för assemblern
att symbol resolutionen ska skjutas upp till länkningen). Men det är en generellt
bättre motod att hantera stora projekt. Det är även effektivare eftersom man
normalt bara assemblerar om det som behövs (en make-liknande hantering).

Det var inte helt tydligt vilken väg du hade försökt...
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av Glattnos »

sodjan: Aha, jag har använt "Metod 1" i alla fall, visste faktiskt inte att det gick att göra på fler sätt.

I AVR-Studio finns "Assemble and run" och "Run" att välja på. "Run" går ju igenom utan att det kommer någon dialog-ruta, dock så kommer dialog-rutan upp ändå när man klickar på "Assemble and run" eller "Start debugging" efter att man klickat på "Run".
Kan det vara så att det är själva simulatorn som bråkar, eftersom "Run" går igenom? Men det innebär väl att "Run" inte bygger om allt(typ "build all")för då borde ju inte simulatorn heller bråka, eller det kanske den kan göra ändå?
Det finns bara OK att klicka på. Inga alternativ.

Swech: Ja, det fungerar.

Men innebär det att det inte finns någon knapp i AVR-studio som bygger om allt från början(typ "build all"), jag hittar inget liknande?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Nybörjarfråga, Dela upp koden i AVR-Studio? (Assem)

Inlägg av sodjan »

Notera att det *jag* skriver är helt generella saker kring utveckling,
jag har inte en susning om vad AVR miljön kan eller inte kan... :-)

Så jag har inte en aning om ifall din miljö stöder det jag kallade
"metod 2" alls...

Det jag dock kan tycka är att du knappast kan vara den första
som gör en så pass enkel sak som att plocka bort en "include", så
det skulle förvåna mycket om det inte finns en normalt metod
att ta hand om det som du ser.

> för då borde ju inte simulatorn heller bråka, eller det kanske den kan göra ändå?

Den "bråkar" nog inte förrens du kommer till en exekverbar kod som kommer
från en källkodsfil som du inte har kvar, och det gör du ju aldrig. Eller så
kollar den alla referenser i början på simuleringen, men det är vanligare
att man kan simulera på så länge simulatorn/debuggern hittar källkoderna...
Skriv svar