14
Bootloader Geliştirme Bir elektronik ürün tasarladığınızda, ürününüzü piyasaya, yazılım hatalarından arındırılmış ve tüm özellikleri çalışır şekilde sürmek istersiniz. Bir yazılımın son haline gelmesi uzun süren geliştirme ve test iterasyonları gerektirir. Bu süreyi beklemek, ürününüzü piyasaya geç sürmenize ve yenilikçi ürününüzün pazar payını rakiplerinize kaptırmanıza sebep olacaktır. Buna ek olarak, ürününüzü piyasaya sürdükten sonra da yeni bir özellik eklemek isteyebilir, hatta uzun süreli kullanımda ortaya çıkan hataları da düzelterek, müşterilerinize daha iyi bir kullanıcı deneyimi yaşatmak isteyebilirsiniz. Tüm bunlar için ihtiyacınız olan eksik parça bootloader’ dır. Bu dokümanda, teorik bilgi verildikten sonra STM32F4 Discovery geliştirme kiti kullanılarak örnek bir bootloader geliştirilecektir. 8.May.18 www.cmb-tech.com Rev 1 [email protected] 1/14

Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Bir elektronik ürün tasarladığınızda, ürününüzü piyasaya, yazılımhatalarından arındırılmış ve tüm özellikleri çalışır şekilde sürmekistersiniz. Bir yazılımın son haline gelmesi uzun süren geliştirme ve testiterasyonları gerektirir. Bu süreyi beklemek, ürününüzü piyasaya geçsürmenize ve yenilikçi ürününüzün pazar payını rakiplerinizekaptırmanıza sebep olacaktır.

Buna ek olarak, ürününüzü piyasaya sürdükten sonra da yeni birözellik eklemek isteyebilir, hatta uzun süreli kullanımda ortaya çıkanhataları da düzelterek, müşterilerinize daha iyi bir kullanıcı deneyimiyaşatmak isteyebilirsiniz. Tüm bunlar için ihtiyacınız olan eksik parçabootloader’ dır.

Bu dokümanda, teorik bilgi verildikten sonra STM32F4 Discoverygeliştirme kiti kullanılarak örnek bir bootloader geliştirilecektir.

8.May.18 www.cmb-tech.com

Rev 1 [email protected] 1/14

Page 2: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

İçindekilerBootloader nedir?.......................................................................................................................................3

Bootloader Bileşenleri...........................................................................................................................3Bootloader Mimarileri................................................................................................................................5

Mimari 1................................................................................................................................................5Mimari 2................................................................................................................................................6Mimari 3................................................................................................................................................6

UART Bootloader......................................................................................................................................7Uygulama Başlangıç Adresi..................................................................................................................8Jump-To-Application.............................................................................................................................8XModem Protokolü.............................................................................................................................10Eski Uygulamayı Silme.......................................................................................................................13Yeni Uygulamayı Kaydetme...............................................................................................................13

Sıra Sizde.................................................................................................................................................14

8.May.18 www.cmb-tech.com 2/14

Rev 1 [email protected]

Page 3: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Bootloader Nedir? Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcıile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulamayazılımını yükleyen, kimi durumlarda donanımı uygulama yazılımı içinhazırlayan, uygulama yazılımını güncelleyen yazılım ise bootloader’ dır.

Bir bilgisayardan örnek verirsek, BIOS bootloader’ a, işletim sistemi veprogramlar da uygulama yazılımına karşılık gelir. Gömülü sistemde isebootloader ve uygulama yazılımları daha basittirler.

Bootloader, her tasarımda olmamakla beraber, büyük çoğunlukla ilkçalışan yazılımdır.

BootloaderBileşenleri

Bootloader, en basit haliyle uygulama yazılımını günceller ve çalıştırır.Bunun için ihtiyacı olanlar;

1. Yeni uygulama yazılımının alınacağı bir veri arayüzü

2. Eski uygulama yazılımını silerek, yeni uygulama yazılımınıkopyalayacak bir yükleyici

3. Uygulama yazılımını çalıştıracak olan bir yazılım modülü

4. Opsiyonel olarak, veri güvenliği için bir şifreleyici, yazılımındoğrulunu kontrol edebilecek CRC ünitesi ve kullanıcı etkileşimiiçin bir komut arayüzü.

Veri arayüzü, yeni uygulama yazılımının alınabileceği herhangi birdonanım olabilir. Örneğin;

• UART

• Ethernet

8.May.18 www.cmb-tech.com 3/14

Rev 1 [email protected]

Page 4: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

• Wi-Fi

• SD Card

• CAN

• ModBUS

• SPI vb.

Uygulama yazılımı UART üzerinden anlık olarak alınabileceği gibi, bir SPIFlash bellekten binary olarak veya SD Card üzerinden dosya olarak daokunabilir. Ethernet veya Wi-Fi kullanıldığında ise uzaktan yazılımgüncellenebilir.

Yükleyici, donanımın yeteneklerine ve gereksinimlere bağlı olarak;

1. Dahili Flash

2. Harici SPI Flash

3. Harici NAND Flash

4. SD Card

5. RAM

gibi belleklere erişerek, eski yazılımı silebilir ve yeni yazılımı yükler.

8.May.18 www.cmb-tech.com 4/14

Rev 1 [email protected]

Page 5: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Bootloader Mimarileri

Veri arayüzü, yükleyici çeşitleri ve opsiyonel özellikler fazla olduğundan,bunların kombinasyonları ile tasarlanabilecek olan bootloader mimarilerihayal gücünüz ile sınırlıdır. Dolayısıyla burada bir kaç örnek verebilirizsadece.

Mimari 1 SD Card üzerinde bulunan uygulama yazılımını dahili belleğe yükleyerekçalıştırabiliriz.

Bunun çalışabilmesi için yeni uygulamanın SD Card üzerine yüklü olmasıgerekli ama yeni uygulama SD Card üzerine nasıl yüklenecek? Bununiçin de farklı alternatifler olabilir;

1. Kullanıcı bilgisayar kullanarak, SD Card üzerine yeni yazılımı birdosya olarak kaydedebilir. Daha sonra SD Card’ ı bizimsistemimizin SD Card yuvasına takarak sisteme enerji verdiğindebootloader devreye girebilir.

2. Eski uygulama yazılımı ile Wi-Fi veya Ethernet üzerinden yeniyazılım SD Card’ a kopyalanır ve donanım resetlendiğindebootloader devreye girebilir. Tabi ki burada donanımın Ethernetveya Wi-Fi arayüzü olduğunu varsayıyorum.

Bootloader devreye girdiğinde ilk iş olarak, SD Card üzerinde yeni biruygulama yazılımı olup olmadığını kontrol eder ve yeni uygulamayıbulması durumunda dahili bellekteki eski uygulamayı siler, yeniuygulamayı kopyalar ve uygulamayı çalıştırır.

8.May.18 www.cmb-tech.com 5/14

Rev 1 [email protected]

Page 6: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Mimari 2 SPI Flash üzerinde bulunan uygulama yazılımını RAM belleğe yükleyerekçalıştırabiliriz. Bu durumda uygulama yazılımı güç kesildiğinde RAMbellekten silinecektir. Dolayısıyla, bootloader her açılışta uygulamayazılımını RAM belleğe yeniden yüklemek durumundadır.

Mimari 3 UART ile uygulama yazılımını dahili Flash belleğe yükleyebilir veçalıştırabiliriz. Buradaki sorun, UART üzerinden uygulamanın nasılaktarılacağıdır. Çözüm olarak, bir PC yazılımı seri port üzerinden yeniuygulama yazılımını gönderebilir. Peki, haberleşme protokolü ne olacak?Bunun için kendi protokolünüzü geliştirebilir veya Kermit, XModem gibihazır protokoller kullanabilirsiniz. Kendi protokolünüzü geliştirdiğinizde,bir de bu protokolü kullanarak yeni uygulamayı gönderecek bir PCyazılımına ihtiyacınız olacaktır. Mevcut protokoller kullandığınızda PCyazılımı yazmak zorunda kalmazsınız.

8.May.18 www.cmb-tech.com 6/14

Rev 1 [email protected]

Page 7: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Bunlara benzer şekilde çok farklı alternatifler üretilebilir. Örnekuygulamada Mimari 3’ ü kullanacağız fakat yaptığımız seçim “olmasıgereken bu” demek değildir. Her tasarımın gereksinimleri farklıolacağından çözümler de farklı olmalıdır. Burada birçok olasılıktan sadece3 tanesi verilmiştir.

UART Bootloader Örneğe geçmeden önce ne yapmak istediğimizi ortaya koyalım;

1. Bootloader sistem açıldığında çalışmaya başlamalı,

2. UART üzerinden XModem protokolü ile haberleşmeli,

3. Çalışmaya başladıktan sonra 3 saniye içerisinde yeni uygulamaalınmaya başlanmazsa mevcut uygulamayı çalıştırmalı,

4. Yeni uygulama gönderilemeye başlandıysa, eski uygulamayısilerek yeni uygulamayı yüklemeli, yükleme sonunda da yeniuygulamayı çalıştırmalı.

Örnek uygulamamızı STM32F4 Discovery geliştirme kartı ile yapacağımızısöylemiştik. Bu geliştirme kartı üzerinde STM32F407VG mikrodenetleyicibulunmaktadır. Önce, bu mikrodenetleyici hakkında kritik bir kaçnoktayı belirtelim.

Mikrodenetleyicinin 1 MByte’ lık dahili Flash belleği, aşağıdaki tablodagörüleceği gibi 12 sektöre bölünmüştür. Flash bellek üzerinde silmeişlemi sektör üzerinden yapılabilir. Yani, bir byte yazmak mümkün iken,bir byte silmek istediğinizde tüm sektörü silmeniz gerekmektedir. Busektör adresleri, uygulama yazılımı için ayıracağımız alanı belirlemektebize yardımcı olacak.

İkinci olarak, mikrodenetleyiciye güç verildiğinde veya mikrodenetleyiciresetlendiğinde, donanımsal olarak 0x08000000 adresindeki değeri CPU’nun Stack pointer (SP) register’ ına yazar, 0x08000004 adresindekideğeri reset vektörü – çalıştırılacak ilk komut adresi/program başlangıç

8.May.18 www.cmb-tech.com 7/14

Rev 1 [email protected]

Page 8: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

adresi – olarak kullanır. Bu bilgi ile uygulama yazılımının başlangıçadresini bulup uygulamaya sıçramak için kullanacağız.

Üçüncü kritik nokta ise, mikrodenetleyicinin interrupt vektör tablosununbaşlangıçta 0x08000000 adresininden başlaması ve bu tablonunbaşlangıç adreslerinin uygulamaya geçilmeden önce uygulama başlangıçadresi olarak değiştirilmesi gerektiğidir. Bunun sebebini ve nasılyapılacağını daha sonra göstereceğim.

UygulamaBaşlangıç Adresi

Uygulama başlangıç adresi şeçmeden önce bootloader boyutunun neolacağını kabaca belirlemeliyiz. Gömülü yazılım konusunda birazçalıştıysanız bunun için sezgisel bir tahmin yapabilirsiniz. Bootloaderboyutu önemli çünkü uygulama bootloader dan sonraki sektördenbaşlayacak.

Örneğin bootloader için 48KB alan ayırırsak, uygulamanın başlangıçadresi 0x08000000+48KB = 0x0800C000 olacaktır. Bu da Sector 3’ ünbaşlangıç adresine karşılık gelir. Yani Sector 0~2 bootloader için, Sector3~11 uygulama için kullanılacaktır.

Jump-To-Application

Bootloader’ ın yapması gereken işlerden ilki mevcut(eski) uygulamayıveya yeni uygulamayı çalıştırmak olacaktır. Bunun için 0x080C0000adresinde yüklü olan uygulamayı, mikrodenetleyici resetlendiğindeçalışıyormuş gibi çalıştırabilmeliyiz.

Yapılması gereken özünde basit bir JUMP/CALL işlemi olsa da öncesindebirkaç satır işimiz daha var.

#define APPLICATION_START_ADDRESS 0x0800C000 //(FLASH_BASE+ 48*1024)

typedef void (*pFunction)(void);

int main(void){

8.May.18 www.cmb-tech.com 8/14

Rev 1 [email protected]

Page 9: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

SystemInit();

pFunction Jump_To_Application = *( (pFunction*) (APPLICATION_START_ADDRESS + 4) );

__set_CONTROL(0);

SysTick->CTRL = 0; //disable SysTick

SCB->VTOR = APPLICATION_START_ADDRESS;

/* Initialize user application's Stack Pointer */ __set_MSP( *( (uint32_t*) APPLICATION_START_ADDRESS ) );

Jump_To_Application();

}

Yukarıdaki kod ile 0x0800C004 adresinde bulunan uygulama başlangıçadresindeki uygulama yazılımı çalıştırılmaktadır. Fakat öncesinde0x0800C000 adresindeki değer Stack pointer içerisine yazılmaktadır.

__set_MSP( *( (uint32_t*) APPLICATION_START_ADDRESS ) );

Bootlaoder’ ın mevcut haline buradan erişebilirsiniz.

Bunu test etmek istersek, öncesinde 0x0800C000 adresine bir uygulamakodunu yazmış olmalıyız. O zaman bootloader geliştirmede kullancağımızbasit bir uygulama yazılımı hazırlayalım. En azından çalıştığınıgöreceğimiz bir yazılım olmalı. Bunun için yazılımımız D15 pinine bağlıolan LED’ i yakıp söndürsün.

void LEDTask( void* param ){ while( 1 ) { //Do smth GPIOD->ODR |= (0x00000001<<15); vTaskDelay( 100 ); GPIOD->ODR &= ~(0x00000001<<15); vTaskDelay( 900 ); }}

int main(void){

//Initialization code SystemInit();

RCC->AHB1ENR |= 0x00000008; GPIOD->MODER |= 0x55000000;

xTaskCreate( LEDTask, "LEDTask", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );

vTaskStartScheduler();

while( 1 ) { }}

Test uygulama yazılımına buradan ulaşabilirsiniz. Bootloader ileyüklenecek uygulama yazılımının normal uygulama yazılımlarından birfarkı var. Başlangıç adresi 0x08000000 yerine 0x0800C000 olmalıdır.Bunun için linker ayarlarından uygulama başlangıç adresinideğiştirmeliyiz.

8.May.18 www.cmb-tech.com 9/14

Rev 1 [email protected]

Page 10: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Ek olarak, system_stm32f4xx.c dosyasındaki VECT_TAB_OFFSET değeriniaşağıdaki gibi değiştirmeliyiz.

#define VECT_TAB_OFFSET 0x0000c000

Örnek uygulama için tüm bunlar yapılmıştır fakat kendi uygulamayazılımınızı hazırlarken buna dikkat etmelisiniz.

Bootloader ve test uygulamasını denemek için, bootloader.bin vetestApp.bin dosyalarını sıarsıyla 0x08000000 ve 0x0800C0000adreslerine yazmalısınız. Bunun için STM32 ST-LINK Utility uygulamasınıkullanabilirsiniz. İki binary dosyayı da flash belleğe yazdığınızda maviLED’ in yanıp söndüğünü göreceksiniz. Demek ki bootloader dahaönceden yüklenmiş olan uygulamayı çalıştırabiliyor ama yeni yazılımyükleyemiyoruz. Yeni yazılım da yüklemek istersek UART portunu aktifetmeli ve XModem protokolünü de eklemeliyiz.

XModem Protokolü XModem protokolü ile detaylı bilgiye buradan ulaşabilirsiniz.

Neden XModem protokolünü seçtiğimize gelirsek; öncelikle hazır birprotokol olduğundan, bir de PC yazılımı hazırlamak zorundakalmayacağız. Ayrıca XModem protokolünü gerçeklemesi çok kolaydır.Alternatif olarak farklı bir protokol şeçebilir veya kendi protokolümüzügeliştirebilirdik ama bu sefer amacımıza ulaşmak için daha fazlayorulacaktık.

XModem protokolü alıcı tarafından(bizim için bootloader) kontrol edilenbir protokoldür. Haberleşme parametreleri olarak 115200, 8n1kullanacağız ama farklı hızlarda da çalışabilirsiniz.

8.May.18 www.cmb-tech.com 10/14

Rev 1 [email protected]

Page 11: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

XModem data paketleri 132 byte uzunluğundadır ve içeriği aşağıdakigibidir;

Checksum değeri 128 byte Data içeriğindeki değerlerin toplamının 256modülo’ sudur (checksum = toplam%256). Haberleşme Bootloadertarafından gönderilen NAK paketi ile başlar ve aşağıdaki gibi devam eder.

PC tarafından gönderilen her paket 128 byte veri içerir fakat son paketiçeriği 128 den küçük olduğunda da kalan alanlar SUB (0x1A) iledoldurularak 128 byte tamamlanır.

Bootloader içerisine XModem protokolünü de ekledikten sonra PC denistediğimiz dosyayı bootloader’a gönderebiliyor olduk. Bootloaderprojesine buradan ulaşabilirsiniz. Projede UART4 ve PA0(TX) PA1(RX)pinleri kullanılmaktadır.

Test etmek için PC tarafında kullanabileceğiniz bir çok yazılım mevcutfakat biz TeraTerm’ ü kullanacağız.

Bootloader uygulamasını mikrodenetleyicinize yazdıktan ve gereklibağlantıları yaptıktan sonra TeraTerm uygulamasını açıp seri portayarlarını yapmalısınız.

8.May.18 www.cmb-tech.com 11/14

Rev 1 [email protected]

Page 12: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Artık ilk dosyamızı mikrodenetleyiciye gönderebiliriz. TeraTerm üzerindenFile->Transfer->XModem->Send dedikten sonra açılan penceredengöndermek istediğimiz dosyayı seçiyoruz. TeraTerm dosyayı göndermekiçin bekliyor. Söylediğimiz gibi XModem alıcı tarafından yönetilen birprotokoldür.

Bootloader’ in çalışması için mikrodenetleyiciyi resetlediğimizde dosyagönderme başlayacak, progressBar %100’e ulaşacak ve dosya göndermetamamlandığında yukarıdaki ekran kapanacaktır. Proje içerisinde alınandosyayı flash belleğe henüz yazmadık. Dolayısıyla gönderdiğimiz dosyaşimdilik bir işe yaramayacak.

if( checksum == data ){ //frame received successfully

//ToDo: write to flash

commChannel->write( commChannel->channel, XMODEM_ACK );

bootloaderDelay = 1000;}

Kod içerisinde yukarıdaki //ToDo: satırında bu işlemi yapacağız amaönce bir işimiz daha var.

8.May.18 www.cmb-tech.com 12/14

Rev 1 [email protected]

Page 13: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Eski UygulamayıSilme

Uygulamanın bulunacağı alanda daha önceden eski bir uygulamabulunduğundan önce bunun silinmesi gerekli. Uygulamanın sektor 3~11arasında olduğunu biliyoruz. Buna göre uygulama alanını silmek için;

void EraseApplicationArea( void ){ //unlock flash FLASH_Unlock();

FLASH_EraseSector( FLASH_Sector_3, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_4, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_5, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_6, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_7, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_8, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_9, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_10, VoltageRange_3 ); FLASH_EraseSector( FLASH_Sector_11, VoltageRange_3 );

//lock flash FLASH_Lock();}

Peki bu fonksiyon ne zaman çağırılmalı? İlk 128 byte’ lık frame’ialdığımızda bu fonksiyonu bir kez çağırırsak uygulama yazılmadan önceflash bellekteki uygulama alanını temizlemiş olacağız.

if( firstFrame ){ EraseApplicationArea(); firstFrame = 0;}

Yeni UygulamayıKaydetme

Yeni uygulamayı kaydetmek de, sildiğimiz alana aldığımız frame’ lerigeldikleri sıra ile kaydetmekten ibaret. Bunun için:

void ProgramAplicationAreaBlock(uint32_t address, uint32_t * data, uint32_t count ){ uint32_t i;

if(address<APPLICATION_START_ADDRESS) return;

//unlock flash FLASH_Unlock();

for(i=0;i<count;i++){ FLASH_ProgramWord( address, *data++ ); address+=sizeof(uint32_t); } //lock flash FLASH_Lock();}

Bu fonksiyonu da her yeni frame için çağırmalıyız.

//ToDo: write to flashProgramAplicationAreaBlock( currentProgramAddress, (uint32_t *)dataBuffer, 32 );

currentProgramAddress += sizeof(dataBuffer);

Sonunda yeni uygulamayı da kaydetmeyi başardık. Şimdi bir testyapalım. Projenin son haline buradan ulaşabilirsiniz. Test uygulamasınıderledikten sonra TeraTerm ile \testApp\Debug\bin\testApp.bin dosyasınıgöndermeyi deneyebilirsiniz. Bu uygulama 0x0800C000 adresindenitibaren yazılacak ve çalıştırılacaktır.

Siz de denediyseniz dosya gönderme işlemi biraz yavaşlamış olduğunugöreceksiniz. Özellikle ilk paketin gitmesi biraz fazla zaman alıyor. Bununsebebi ilk paket transferi ile uygulama alanının silinmesi ve bunun birazzaman almasıdır.

8.May.18 www.cmb-tech.com 13/14

Rev 1 [email protected]

Page 14: Bootloader Geliştirme · Gömülü sistemlerde, sistemin tüm gereksinimlerinin karşılayan, kullanıcı ile etkileşimde olan kısım uygulama yazılımıdır (firmware). Uygulama

Bootloader Geliştirme

Sıra Sizde Bundan sonra bootloader için yeni özellikler ekleyebilirsiniz. Örneğin;1. XModem yerine farklı bir protokol deneyebilirsiniz.2. Veri arayüzü olarak Ethernet/WiFi gibi farklı bir arayüz veya

SDCard gibi farklı depolama alanları kullanabilirsiniz.3. Gönderdiğiniz dosyayı şifreleyebilir ve bootloader içerisinde şifreyi

çözerek veri güvenliğini sağlayabilirsiniz.

8.May.18 www.cmb-tech.com 14/14

Rev 1 [email protected]