Val av banker

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Hantering, OK, semantik ;)
Nu så är det inte just *därför* som det är så, utan för att adressbitarna
i instruktionerna (t.ex GOTO pch CALL) inte räcker till...
Givetvis, vad jag menade var att PIC har separata metoder att välja page/bank för program och data eftersom program och dataminnen är separata. Detta till skillnad mot tex en z80 med bankat minne där samma metod att byta banker används för både program och data.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Hantering, OK, semantik

Japp. för den som inte har koll (typ nybörjare) så är det viktigt att
använda rätt begrepp och namn på saker och ting, annars blir
det lätt väldigt förvillande.

:-)
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Jo, du har alldeles rätt. Bara för att jag förstår vad jag menar, behöver det inte betyda att andra gör det ;)

Lyckades nyss passera 2k i min 16f690-kod och kunde inte begripa (först) varför inget fungerade längre :)

Fanns en del tips och trix här:
http://www.piclist.com/techref/microchip/pages.htm

(Jag vet att du vet, men jag skriver för eventuella "lurkers")
Nerre
Inlägg: 27257
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Inlägg av Nerre »

Banker och paging används ju av helt olika anledningar.

Paging används när instruktionslängden inte tillåter att man anger en komplett adress för hopp och kan ju ses som en "variant" av relativa hopp. Ett vanligt relativt hopp hoppar ju relativt aktuell position, ett pagat hopp hoppar relativt aktuell page-bas kan man säga.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Paging används när instruktionslängden inte tillåter att man anger en komplett adress för hopp och kan ju ses som en "variant" av relativa hopp. Ett vanligt relativt hopp hoppar ju relativt aktuell position, ett pagat hopp hoppar relativt aktuell page-bas kan man säga.
Då tycker jag att Sodjans förklaring är den redigaste, dvs "bitarna räcker inte till"

Korta och långa hopp är eg ngt annat. Åtminstone i x86 världen har korta och långa hopp olika instruktioner i CPUn. I en PIC är det samma kod för båda och var man hamnar bestäms av ett annat register som håller de sista bitarna.

Det är inte speciellt elegant, varken i PIC eller x86, men antagligen priset man får betala för bakåtkompatibilitet.

Edit:

en del av förvillelsen kan bottna i att samma ord används för litet olika saker. Dvs att "banking" och "paging" eg är samma sak (samma typ av mekanism) på en PIC:
The "bank select" needed for accessing some file registers fr.htm is conceptually similar to the "page select" needed to access some subroutines.
medan:
Bank switching (also known as "paging", but only loosely related to the ordinary meaning of "paging" in computing)
I min värld har dock alltid "bank switching" varit ngt man gör själv, medan "paging" sker mer eller mindre automagiskt, typ "virtuellt minne"
Nerre
Inlägg: 27257
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Inlägg av Nerre »

AndersG skrev: Då tycker jag att Sodjans förklaring är den redigaste, dvs "bitarna räcker inte till"
Vilka av bitarna? Det är ju det som är kruxet:-)

Den primära skillnaden är väl att banker använder man på grund av begränsningar i hårdvaran (d.v.s. bitarna på adressbussen räcker inte till), medans paging används på grund av begränsningar i instruktionsuppsättningen (bitarna i instruktionen räcker inte till)?

Och banker är ju egentligen inget som processorn behöver vara medveten om, medans paging är nåt som processorn måste hantera.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Den primära skillnaden är väl att banker använder man på grund av begränsningar i hårdvaran, medans paging används på grund av begränsningar i instruktionsuppsättningen?
Dvs "man har för litet bitar" som Sodjan sade.
Och banker är ju egentligen inget som processorn behöver vara medveten om, medans paging är nåt som processorn måste hantera.
Måste och måste.. Det som kallas "paging" i PIC litteraturen hanteras inte av processorn utan av användare/program
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

ang. banker

Inlägg av persika »

Vad ska man hålla för linjer angående banker ?

Ska man ha principen att ha bank 0 som default, och ändra bankbitarna bara när man ska till en annan bank, och sen ändra tillbaka så man är i bank 0 igen.

eller...
Ska man ha principen att alltid ställa in bankbitarna.

Det som kan inträffa med det senare är att man ställer in bankbitarna i onödan, dvs dom är redan rätt.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Det finns en längre diskussion om "banking/paging srategies" här:

http://www.piclist.com/techref/microchip/pages.htm

Som jag förstår har olika metoder olika för och nackdelar och det viktigaste är att man:
a) förstår hr det funkar
b) håller sig till EN strategi

;)
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Jag ska ta mig igenom länken AndersG ger.

Bara en liten undran ändå.. är BANKSEL så smart att den inte ger nån kod om bankbitarna är rätt ?
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Finns bara ett sätt att kolla :) Kika i listfilen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> är BANKSEL så smart att den inte ger nån kod om bankbitarna är rätt ?

Nej, den har inte en aning om hur bitarna står innan BANKSEL.
Det enda är att den ser de fall där det inte spelar någon roll hur
bitarna är satta (un-banked RAM eller SFR's som ligger i alla banker).
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Man kan ju faktist titta på koden som genereras av det hela har jag för mig.

Banksel är otroligt smart och en enorm arbetsbesparing jämfört med att sätta registrena manuellt. Dessutom har de en stor fördel om man får för sig att byta processor, då styr automagiskt banksel om till rätt bank. Kräver dock att man kompilerar om men det är en lite eftergift :roll:
Skriv svar