C xc8

Miroslav Draxal evik na volny.cz
Středa Prosinec 6 12:51:25 CET 2017


Dobrý den, 
Proto se ptám zdejších odborníků. 
Chci pro jeden projekt modifikovat bootloader. Mám nastavený rozsah paměti ROM pro daný pojekt bootloaderu 0x000~0x400.Jsem ve fázi hledání toho co se děje. Překlad skončí úspěšně s tím, že mi zbývá 0x60byte volného místa. A teď

Vložím do zdrojáku 
1/ Volatile const char ootLoader [] @0x30 = {"BootLoader"};  
Překlad skončí chybou, o nedostatku místa pro pro překlad.
Pokud odstraním rozsah ROM (celá paměť) přeloží se vše v pořádku s tím, že konstanta ootLoader je umístěna od adresy  0x30, ale část kódu se uloží od adresy 0xf00 výše.

2/ Volatile const char ootLoader  @0x30 = {"BootLoader"};
Překlad skončí chybou, o nedostatku místa pro pro překlad.
Pokud odstraním rozsah ROM (celá paměť) přeloží se vše v pořádku s tím, že ootLoader je umístěna od adresy  0xf00, a část kódu se uloží za konstantu ootLoader

Volatile const char ootLoader [] @0x30 = {"BootLoader"};  
Volatile const char ootLoader  @0x30 = {"BootLoader"};
Oba dva řádky vygenerují stejný sled byte v ROM.
Neřešme zde následný přístup k němu, pouze umístění v paměti.

Prostě mám volných 0x60 bytů a po přidání 11 bytů (11 byt uloží 0) mi to hlásí, že mám nedostatek místa.
Míra



-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of konfera na efton.sk
Sent: Tuesday, December 05, 2017 10:28 PM
To: HW-news
Subject: Re: C xc8

To prve definuje pole charov dlzky danej inicializatorom, a nainicializuju ju tym retazcom.

Tie druhe dva definuju na adrese 0x30 premennu typu char (t.j. jedeb jediny byte), do ktorej sa snazia narvat (nainicializovat ju na) pointer na retazcovu konstantu (string literal). Ta pochopitelne moze byt potom umiestnena kdekolvek.

wek



-----Original Message-----

From:  "Miroslav Draxal" <evik na volny.cz>
Subj:  C xc8
Date:  Tue 5. Dec 2017 17:24
Size:  2K
To:  "'HW-news'" <hw-list na list.hw.cz>

     Dobrý den,
Ne¾ to ode¹lu jako bug vxc8, optám se zdej¹ích odborníku.

const char ootLoader [] @0x30 = {"BootLoader"};  ulo¾í do ROM od adresy 0x30

const char ootLoader  @0x30 = {"BootLoader"};

ulo¾í do ROM od adresy 0x100 pro procesory do 8kW, 0xf00 pro procesory do 64kW bez upozornìní.
Myslíte, ¾e je ktomu nìjaký dùvod?
Díky za reakce, Míra

Ps. Navazuje na vlákno PIC XC8 Bootloader

 

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list