Sida 1 av 1

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

Postat: 8 september 2010, 09:00:34
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?

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

Postat: 8 september 2010, 09:37:17
av bos

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

Postat: 8 september 2010, 10:14:32
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?

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

Postat: 8 september 2010, 10:45:24
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.

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

Postat: 8 september 2010, 11:46:37
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?

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

Postat: 8 september 2010, 11:58:20
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.

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

Postat: 8 september 2010, 12:10:14
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 ?

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

Postat: 8 september 2010, 12:14:29
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".

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

Postat: 8 september 2010, 12:25:20
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

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

Postat: 8 september 2010, 12:35:06
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...

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

Postat: 8 september 2010, 12:42:49
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?

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

Postat: 8 september 2010, 13:04:30
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...