Založen: Sep 19, 2007 Příspěvky: 3698 Bydliště: Praha
Zaslal: po leden 16 2017, 20:02 Předmět:
Longin napsal(a):
taky bych chtěl takhle rozumět embedded věcem jako lesana
To není o rozumění embedded, to je o rozumění operačním systémům.
Mimochodem, lesana87, jak tam řešíte situaci, kdy v době zpracování volání systému z úrovně úlohy přijde interrupt, a v jeho obsluze je potřeba opět volat systémovou službu? Jinak - fakt, pěkné.
Mimochodem, když jsem upravovala ten editor ue, objevila jsem po x hodninách neúspěšného ladění moc veselý bug v SDCC 3.6.0.
Podmínku
kód:
if (buf < curp)
--curp;
přeloží jako
kód:
;ue.c:218: if (buf < curp)
ld iy,#_curp
ld a,0 (iy)
sub a, #<(_buf)
ld a,1 (iy)
sbc a, #>(_buf)
ret NC
;ue.c:219: --curp;
ld hl,(_curp)
dec hl
ld (_curp),hl
ret
tj. obráceně - chybně.
Tu samou podmínku jen napsanou v opačném pořadí
kód:
if (curp > buf)
--curp;
přeloží jako
kód:
;ue.c:218: if (curp > buf)
ld a,#<(_buf)
ld iy,#_curp
sub a, 0 (iy)
ld a,#>(_buf)
sbc a, 1 (iy)
ret NC
;ue.c:219: --curp;
ld hl,(_curp)
dec hl
ld (_curp),hl
ret
tj. správně. Už jsem si skoro rvala vlasy, proč to nechodí, když mě napadlo, projít instrukci po instrukci výsledný kód v asm. Fakt hrozně milej překladač.
Na něčem podobném jsem vyhnil u diplomky (ARM GCCčko), kdy mi taky obdobnou podmínku přeložil do asembleru blbě, takže pointer do paměti mi přepisoval oblast, kde neměl vůbec co dělat.
Pár týdnů zpátky mě zas vyplísnil toolchain pro softprocesor ve FPGAčku. Ve vývojové fázi používám standartní i/o funkce C pro výpis debugovacích logů. Při nějaké konstelaci hvězd, tam docházelo k memory corruption, protože to interně používalo dynamickou zprávu paměti, která na těhle zařízeních není od výrobce dokonale vyladěna. Zkrátka to zapisovala data tam, kam nemá.
Avšak v dokumentaci k toolchainu se o tom nezmiňují...tam to zní jakože pokud chce programátor plnou funkčnost printf/scanf funkcí, tak použije ANSI verzi, pokud chce šetřit prostředkama, použije jejich osekanou verzi, která podle disassembly už malloc nepoužívá
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3, 4
Strana 4 z 4
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.