mapa paměti

Software potřebné k práci s elektronikou

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Aqarel
Příspěvky: 241
Registrován: 04 úno 2007, 00:00
Kontaktovat uživatele:

mapa paměti

#1 Příspěvek od Aqarel »

zdravím, potřeboval bych software, který by dokázal z asm kódu pro 8051 vytáhnout použitá paměťova místa z celého programu. dále při symbolickém pojmenování: x equ 20h ;promená x , program vytáhne adresu(20h), název(x), komentář(proměnná x). Ušetřilo by mi to hodně času a zbytečných chyb. Ideálně kdyby program vygeneroval textovou tabulku s obsazením paměti do textového souboru. Existuje něco takového nebo mi nezbyde než si to naprogramovat sám?
Uživatelský avatar
Hill
Administrátor
Příspěvky: 21233
Registrován: 10 zář 2004, 02:00
Bydliště: Jičín, Český ráj

#2 Příspěvek od Hill »

Tys asi ještě s assemblerem nedělal, viď?
Jinak bys věděl, že jde o jazyk symbolických adres, který při překladu do strojového kódu ty symboly nahradí adresami skutečnými a symboly se nikam neukládají.
Ve zdrojovém kódu se při překladu vytvoří tabulka skutečných adres, ale to je také naposledy, co ji lze vidět. Do procesoru se už pálí s adresami z té tabulky. Bez symbolických názvů.
Při zpětném překladu se ti v instrukcích skoků a volání a v definicích objeví místo symbolu adresa, které byl symbol přiřazen.
Na tobě je, dát těm adresám jména - disassembler je nemá kde vyčíst.
Stejně jako komentáře, kterými si při psaní programu ulehčuješ orientaci, procesor na nic nepotřebuje a jen by tam překážely, proto se nepřekládají a neukládají.
Jednoduše - takový software neexistuje. Leda křišťálová koule.
Uživatelský avatar
Aqarel
Příspěvky: 241
Registrován: 04 úno 2007, 00:00
Kontaktovat uživatele:

#3 Příspěvek od Aqarel »

s asseblerem pracuji pár měsiců, asi jsem se špatně vyjádřil. Když píši program(trochu složitější) ztrácím rychle přehled, která paměťová místa jsem využil, proto se ptám na program, který by mi dokázal vypsat využití uživatelské paměti - 30h až 7Fh, bitově adresovatelného prostoru 20h - 2Fh a portů z NEzkompilovaného programu(pro mcu atmel 89s51/52...). Zatím to dělám ručně, ale až příliš mě to zdržuje a je velká šance, že se přepíšu a způsobím si zbytečné komplikace.
Ukázka výpisu paměti:

Kód: Vybrat vše

|........|...............|...................................................|
|P3.0    |-              |RXD - RS232                                        |
|P3.1    |-              |TXD - RS232                                        |
|P3.2    |PULS_C         |Pulsy z inkrementálního snímače spojky             |
|P3.3    |NC             |nezapojeno                                         |
|P3.4    |DIR_C          |Směr posunu spojky                                 |
|P3.5    |NC             |nezapojeno                                         |
|P3.6    |SEN_C2         |Pravý dorazový senzor spojky                       |
|P3.7    |SEN_C1         |Levý dorazový senzor spojky                        |
|........|...............|...................................................|
|nastavení pohoné jednotky                                          |
|20h.0   |EnMov          |0/1 - robot nejede/jede                            |
|20h.1   |DirMov         |0/1 - pohyb robota dozadu/vpýed                    |
|20h.2   |EnClu          |0/1 - spojka(clutch) - vykonej akci ne/ano         |
|20h.3   |LClu           |0/1 - nastav spojku doleva ne/ano                  |
Uživatelský avatar
Hill
Administrátor
Příspěvky: 21233
Registrován: 10 zář 2004, 02:00
Bydliště: Jičín, Český ráj

#4 Příspěvek od Hill »

Tak ti nevím: všechny kompilátory pro Z80 na konci překladu vypsaly tabulku se seznamem návěští a adres, jen vytisknout nebo uložit.
Že by to kompilátory pro 2051 neuměly, když tu tabulku stejně potřebují?
Zkus najít jiný kompilátor na www.kvetakov.net
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#5 Příspěvek od mtajovsky »

Použijte, co radi Hill. Ta tabulka se obvykle nazývá mapa linkování a sestavuje ji linker, pokud se mu zadá příslušný přepínač. K obsazování paměti používejte direktovy kompilátoru, používejte relativní segmenty pro kód, absolutní jen tam, kde je to nezbytné - startovací rutina. Je to již docela dlouho, co jsem v asm51 dělal, ale myslím, že je možno symbolicky direktivami kompilátoru popsat obsazení veškeré paměti - i bitové a potom se to vše objeví v mapě.
Uživatelský avatar
Aqarel
Příspěvky: 241
Registrován: 04 úno 2007, 00:00
Kontaktovat uživatele:

#6 Příspěvek od Aqarel »

pro editaci používám pspad a tam mám nastavený zatím cass51(zkoušel jsem i asm51 ale ani jeden to nejspíš neumí) jako kompilátor, protokol o překladu se mi vypíše dolů do logu a lze nastavit spuštění dalšího programu jehož log se automaticky otevře v další záložce, což by měla byt ta mapa paměti, začal jsem si psát proto zatím program sám, aspoň splní všechny mé pořžadavky :), po dopsaní dám na program odkaz třeba to pomůže i někomu jinýmu,
Odpovědět

Zpět na „Software“