Отговори на тема  [ 84 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща
In-Application-Programming 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
А някой знае ли как е реализирано програмирането с фирмените дебъгери? Дали има нещо хардуерно в чипа което позволява при каквато и да е ситуация да се пише във флаша и да се ресетне ядрото или е реализирано като изпълнение на код (част от буутлоадъра) който просто чете пакети и ги записва във флаша?

Ако е втория вариант - как е защитен чипа от това някой да му изтрие тези функции и чипа да стане неизползваем? Въобще може ли да се смени буутлоадъра с който чипа се продава или не може?


Нед Окт 04, 2015 4:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: In-Application-Programming
Всичко има по света.
Например МСП430 има някакъв сериен боотлодер, който се стартира хардуерно през 2 от пиновете за дебъг, но може да се стартира и от апликейшъна май. За част от вариантите първо се зарежда някаква подобрена версия в рама и се стартира тя, за същинската работа. За '51 на Атмел и Филипс отначало се използваше ром програмиран зареждач.
Всякакви неща има по света. Докато си лафим тука - сигурно са измислили нещо ново. При тебе още не са взети решенията, та мисли овреме. :-)


Нед Окт 04, 2015 5:36 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
А има ли някой запознат с ARM контролерите на NXP и ST как стоят нещата?! Търся в нета по тези теми, но няма много информация (явно се брои за секретна по някакви причини)...


Нед Окт 04, 2015 5:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: In-Application-Programming
При stm си е разписано, има си документ по въпроса.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Нед Окт 04, 2015 7:56 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: In-Application-Programming
Страх те е ,че клиентът ще презапише лоадера и ще умре устройството?
Напиши си бутлоадер,изтествай си го и така. После му трепери първите 2 години.Има един готин ап.ноте на Майкрочип- как да ползваме един светодиод за двупосочен уарт.
Накрая счетоводителите ще ти кажат кой вариант е примлив.


Нед Окт 04, 2015 7:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: In-Application-Programming
DanielDimov написа:
А някой знае ли как е реализирано програмирането с фирмените дебъгери? Дали има нещо хардуерно в чипа което позволява при каквато и да е ситуация да се пише във флаша и да се ресетне ядрото или е реализирано като изпълнение на код (част от буутлоадъра) който просто чете пакети и ги записва във флаша?

Ако е втория вариант - как е защитен чипа от това някой да му изтрие тези функции и чипа да стане неизползваем? Въобще може ли да се смени буутлоадъра с който чипа се продава или не може?


При АРМ, почти всички имат ROM, който няма как да се изстрие ;-)

При различните поризводители има различни техники откъде да буутне проца, дали от флаша, дали от рома, рама или нещо друго. При ST е с краче (или две крачета) и по нивото при ресет се избира, съответно ти трябва да предвидиш нещо като джъмпер, бутонче или по друг начин да го управляваш. При Атмел обикновено е по съдържанието на флаша в началото, ако FFFF значи не си го програмирал и се зарежда буутстрапа. А отвън обикновено има ERASE pin пък с който може да изтриеш флаша и така пак ще стигнеш до буутстрапа. При Луминари пък бяха разни опшън байтове дето програмираш, за да буутва по един или друг начин. Въобще всеки производител има различни техники...
Освен да го вкараш в буутстрап трябва и да съобразиш опроводяването, щото обикновено се поддържат доста, но не всички интерфейси. Кварца също може да трябва да е с определена стойност, така че най-добре хващаш чаршафите и четеш.
Проблемът обаче с тия буутлоадери е, че не ти осигуряват никаква защита, т.е. всеки може да види какво програмираш и да го копира. Хубавото им е че обикновено работят и не се налага нито да пишеш собствен буутстрап, нито приложение...


Пон Окт 05, 2015 9:58 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
При мен приложение ще трябва защото пакетите за актуализиране ще са криптирани... За момента съм го измислил така: приложението за PC ще е просто един папагал - прочита поредния пакет от сървъра и го изпраща на контролерчето по USB-то. Контролерчето вътрешно ще си декриптира пакета и ще го записва на съответната страница. На PC-то нищо няма да се записва под формата на файлове.


Пон Окт 05, 2015 10:26 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: In-Application-Programming
Аз на няколко пъти казах, че вградените буутлоадери нямат криптиране, съответно не може да ги ползваш. Всъщност може да ги ползваш при производство само, за да си качиш твоя буутлоадер.


Пон Окт 05, 2015 11:04 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
мога да ги ползвам по следната схема: по мой си протокол прочитам криптиран пакет в паметта, декриптирам го и накрая викам функцията на вградения буутлоадър да запише във флаша декриптираните данни.

нали така става?


Пон Окт 05, 2015 11:17 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: In-Application-Programming
Защо такива гимнастики за една проста флаш рутина от 20 реда (в най-лошия случай)?


Пон Окт 05, 2015 11:34 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
кое е 20 реда ?!?


Пон Окт 05, 2015 11:37 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: In-Application-Programming
Рутината, дето ти пише във флаша. Като пример, ето една доказано работеща за PIC18:
Код:
void FLASH_WriteBlock(UInt16  startAddress, const UInt8*  pSrcData)
{
    UInt8  byteCount;
    UInt8  tblptru_temp;
    UInt8  tblptrh_temp;
    UInt8  tblptrl_temp;
    UInt8  address_lo;
    UInt8  address_hi;
    struct {
        UInt8  GIE :1;
    } temp;

    temp.GIE = 0;

    /* Store the current content TBLPTR regs */
    tblptru_temp = TBLPTRU;
    tblptrh_temp = TBLPTRH;
    tblptrl_temp = TBLPTRL;

    /* Load table pointer with the starting address to program */
    address_hi = (UInt8)(startAddress >> 8);
    address_lo = ((UInt8)startAddress) & (0xFF ^ (_FLASH_WRITE_SIZE - 1)); /* Align to 64-bit boundary */

    TBLPTRU = 0;
    TBLPTRH = address_hi;
    TBLPTRL = address_lo;

    /* Write all data to holding registers */
    byteCount = _FLASH_WRITE_SIZE;
    do
    {
        TABLAT = *pSrcData;
#ifndef WIN32
#asm
        TBLWT*+
#endasm
#endif
        pSrcData++;
        byteCount--;
    }
    while (0 < byteCount);

    /* Reload TBL pointer with initial value */
    TBLPTRH = address_hi;
    TBLPTRL = address_lo;

    /* Prepare the write operation */
    EECON1bits.EEPGD = 1; /* Point to Flash program memory */
    EECON1bits.CFGS  = 0; /* Access Flash program memory   */
    EECON1bits.WREN  = 1; /* Enable write to memory        */
    EECON1bits.FREE  = 0; /* Disable block Erase operation  */// Is it necessary?
   
    if (0 != INTCONbits.GIE) { temp.GIE = 1; }
    INTCONbits.GIE = 0; /* Disable interrupts */
   
    /* Do the 'magic sequence' */
    EECON2        = 0x55;
    EECON2        = 0xAA;
    EECON1bits.WR = 1;  /* Start write (CPU will stall here) */
   
    EECON1bits.WREN = 0;
   
    /* Restore the TBLPTR regs */
    TBLPTRU = tblptru_temp;
    TBLPTRH = tblptrh_temp;
    TBLPTRL = tblptrl_temp;

    if (0 != temp.GIE) { INTCONbits.GIE = 1; } /* Enable interrupts (if been enabled) */
}


Е, не е 20 реда, 70-тина е, но порядъка е същия.
За STM32 даже рутините ти ги дават готови.


Пон Окт 05, 2015 11:41 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: In-Application-Programming
Зависи какъв е чепа, зависи какъв ти е стила...

От чепа зависи, понеже не съм много сигурен дали всички имат приличен интерфейс към ROM-a. Един от проблемите е, че някои изобщо не дават достъп до ROM-а, а камо ли до ROM-функции. Другият проблем е, че дори и да имаш достъп, от ревизия на ревизия съдържанието на ROM-а може да си го сменят както си искат. Пак казвам "някои" (Луминари) за тая цел експортират ROM-таблици с адресите на определени функции. Така, на теория те могат да сменят ROM-a без това да те бърка. На практика, обаче тия същите убавци така бяха намазали чеповете, че освен смяна на ROM-а бяха сложили и пач във флаша и цялата тая теория за съвместимост отиде в киреча...

И така стигаме до твоя стил... ако искаш да разчиташ на някой си - ОК, това е твое право. Но аз примерно не го правя, защото за мен файдата от вградените ROM функции e по-малка от евентуалните мизерии, които по-късно могат да ти създадат. С две думи - или ползвам техния буутстрап изцяло (as is), или изобщо не го ползвам.


Пон Окт 05, 2015 11:45 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: In-Application-Programming
този процесор може ли едновременно да изпълнява код от флаша и да пише на друго място в него? не е ли необходимо поцедурката да се изкопира в RAM-а и да се изпълни от там?


Пон Окт 05, 2015 11:49 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение Re: In-Application-Programming
DanielDimov написа:
този процесор може ли едновременно да изпълнява код от флаша и да пише на друго място в него? не е ли необходимо поцедурката да се изкопира в RAM-а и да се изпълни от там?


Е и какво от това - ако и това ти се вижда сложно - сбъркал си професията !


Пон Окт 05, 2015 11:59 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 84 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни