logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

SIMCOM SIM8xx HTTP GET, pobranie pliku bin z serwera

Karol966 14 Wrz 2022 14:31 363 1
REKLAMA
  • #1 20189684
    Karol966
    Poziom 31  
    Cześć,

    Pisząc bootloader dla procesora mega328pb niemal wszyscy jednogłośnie sugerowali aby pobierać pliki *.bin z serwera zamiast *.hex. Ten drugi, czyli hex pobieram poprawnie, wysyłam kawałkami przez port szeregowy do procesora, niestety napotkałem problem w czasie pobierania pliku *.bin. Oczywiście przełączyłem terminal (bry terminal) na tryb hex zamiast ascii by zobaczyć co moduł GSM mi wysyła/ co pobrał z serwera ale wygląda jakby był jakiś problem (pomijając kwestię samego czasu pobierania pliku z serwera czy jego wysyłania kawałkami do terminala z mega opóźnieniami, całość potrafi się wysypać). Doczytałem, że powonieniem w tym celu użyć kodowania base64. A właściwie o co dokładniej chodzi? Mam na serwerze umieścić plik bin zakodowany do base64 a potem co dalej, zdekodować go w tym malutkim programie bootloadera? Dokumentacja SIM868 jedynie wspomina o pobieraniu pliku hex/bin w kontekście FTP (a ja chcę prosto użyć HTTP GET, co już działa dla pliku hex) lub w kontekście SMTP/ email a nic nie mówi o HTTP.

    Czego tutaj nie rozumiem? Przecież plik bin to zwykły obraz pamięci jak leci od początku do końca, a skoro procesor jest 8bitowy to znaczy, że każdy znak jest z zakresu bajta (0-0xFF) więc w czym jest problem z pobraniem tego pliku przez HTTP metodą GET? A może to są słowa czyli bitów?

    Generalnie stanąłem na rozdrożu, szukać rozwiązania z plikiem *.bin czy poberać jednak *.hex i dekodować go w bootloaderze. Idąc drugą drogą pomyślałem, że można by po stronie serwera wywalić z pliku intel hex wszelkie dane inne poza surowymi danymi (":10010000",....DANE_16_bajtow,CRC") a dalej odebrać przez sim8xx i zapisać kolejen strony pamięci. Czy to dobre rozwiązanie? Czuję, że nie dlatego poszukuję jednak rozwiązania z plikiem bin + http/get.

    Pozdrawiam
    Karol
  • REKLAMA
  • #2 20189729
    jarekgol
    Poziom 38  
    Możesz mieć problem z bajtami typu 0 (zero), Ctrl+Z i tym podobnymi znakami sterującymi przy przesyłaniu i interpretacji danych między modemem a procesorem.
    Napisz jakich komend AT po kolei używasz do łączności http i jak interpretujesz odpowiedzi modemu.
    Co do baze64 czy intel hex - one będą miały "drukowalne" ascii więc w.w. problemy odpadają, ale tak, będziesz musiał je dekodować po stronie mikrokontrolera.
    Zaletą binarnego, jeśli nie ma stada zer w środku jest mniejszy rozmiar i bezpośredniość, natomiast taki intel hex jeśli są duże przestrzenie nie użytej pamięci, może ich w ogólne nie kodować i ma sumy kontrolne.
    Ja na podobnych modemach (neoway) wysyłam krótkie pakiety TCP z binarną zawartością i względnie mi to działa.
REKLAMA