Виж темите без отговор | Виж активните теми
Дата и час: Чет Мар 28, 2024 2:51 pm
LPWA - Narrow Band, Lora...
Автор |
Съобщение |
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
MT6261 ( ARM926EJ-S ) ... armv5te
_________________ main[-1u]={1};
|
Съб Яну 22, 2022 11:36 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
ако на някой му е интересно Position Independent Code от известно време ме тормози "лесно" добавяне на Kернел функции към User API/SDK, така че да бъдат Firmware независими ... колкото е възможно функциите са на различни адреси в различните Firmware ( GSM модули с User API/SDK ) по принцип SDK-то е сравнително Firmware независимо, но липсват функции ... като пример SSL/TLS или липсват soc_getsockopt/setsockopt ... и тем подобни също така няма протекция на кернела ... MPU/MMU ... долния пример няма да разботи за MPU до сега ги правех като пойнт към функция ... а компилатора прави разни гимнастики... int (*SSL_connect)(void *ssl) = 0x12345678; // адрес в кернела но попрочетох за fPIC ( Position Independent Code ) - прави динамична библиотека, където всички непознати функции са "организирани" в PLT ( Procedure Linkage Table ) и GOT ( Global Offset Table ) първото (PLT) е таблица с джъмпове, които взимат адреса от втората таблица (GOT) обикновено всички компутри работят с fPIC - xxx.DLL, yyy.SO ... динамично свързани библиотеки тук уловката е че иска много ресурси и най-вече RAM Как работи - ще обяснявам накратко... Когато Приложението е компилирано, непознатите кернел функции са добавени в PLT таблицата и "белязани" с @plt ... пример: SSL_connect@plt а в GOT таблицата са добавени евентуалните адреси... например Linux ще изпълнява Приложение - отваря файла с APP, malloc RAM къде да я разтовари и презаписва всички адреси в GOT таблицата на приложението приложението вече може да call непознатите функции ... или линукса ще изреве, че не поддъжа някой от тях и как да се възползвам в случая, при условие, че ползвам "микро-контролерче" и User пространсвото ми е FLASH: 300k, RAM: 100k, a кернела не подържа динамични библиотеки (по принцип е подържал, но някое джигитайче е орязал тази част и си е реализирал свое API) Та ... направих един "флашив" ASM файл, с адрес началото (за да знам адресa) на RAM .data секция ( тази RAM e rwx - executable ) този ASM също така не дава на компилатора да реве за непознати фунции, а съответно фунциите са описани в хидър файла който изглежда така: където 0xE51FF004 е кода на ( ARMv5 ) LDR PC, =<label>a второто би трябва да бъде адрес за jump, но в случая имитирам индекс, който после ще бъде сменен с истинския адрес в кернела демек направих имитация на PLT таблица с размер 8 байта RAM за функция сега остава да имитирам GOT таблица ... за последното Firmware и евентуално ново, абе да кажем ще подържам три ... правим масив за всяка версия ( питон скрипт бърника из BIN Firmware и "печата" долното ) | | | | Код: static api_t API_TABLE[3] = { { "M66FAR01A12BT", (const char *)0x100200C0, { 0x100E3995, 0x100E3949, ..... },}, { "M66FAR01A13BT", (const char *)0x100200C0, { 0x10012345, 0x10045678, ..... },}, { "M66FAR01A14BT", (const char *)0x100200C0, { 0x10022222, 0x10055555, ..... },}, }
| | | | |
в случая им обърнах значенията ROM-PLT RAM-GOT, при мен стана обратното RAM-PLT, ROM-GOT, то на практика аз ще ги ползвам, а кернела не знае какво правя реално мога да викна фунцкия ( стария вариант ) res = (int (*)(void)) API_TABLE[1].address[43]() ама писането е повече и съм "мързелив" по-по-най изглежда: res = Foo(); първи тест: вероятно е да съм допуснал нещо "тактическо" ако нещо - критикувайте
_________________ main[-1u]={1};
|
Сря Яну 26, 2022 12:29 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
една свежарска статия за старите талафони има примери за сложната версия ( ELF Loader ) на горния пример https://habr.com/ru/post/645085/само не разбрах тоя пич защо използва ELF лоадера като в кернела на телефона има такъв
_________________ main[-1u]={1};
|
Чет Яну 27, 2022 9:29 am |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
проба... едно... две... три Arduino ... за HiSilicon Hi2115 LPWA NB-IoT
_________________ main[-1u]={1};
|
Сря Фев 02, 2022 3:13 pm |
|
|
d_jelev
Ранг: Почетен член
Регистриран на: Нед Окт 25, 2009 12:48 pm Мнения: 661
|
Re: LPWA - Narrow Band, Lora...
Как ги портваш тези работи? На мен ми се струва като фантастика, щото не съм програмист. Знам, че има готови портвания по нета, но не съм опрял още до тях. Но ми се иска малко повече да се просветля. Има ли литература, елементарни примери като за начало как да портвам за Ардуино например друг чип/борд? Малко сламки ще дадеш ли?
|
Сря Фев 02, 2022 4:06 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
как ще го направиш трябват ти познания за самия контролер както и "make", компилатор, линкер, ASM, C и C++ и разни скриптове като Java и/или Python литература не съм видял, има тук там кратки докуменатции ... и форуми Общо взето Ардуино е C++ "библиотека" за работа със String, Strems и други ... и "стандарт" за драйвери а основните IDE са Arduino IDE и PlatformIO( тва може повече ) и двете имат "собствени" MAKE на първото, са едни текстови файлове ... пример https://github.com/Wiz-IO/wizio-arduino ... atform.txtа второто използва Python(SConn) ... пример https://github.com/Wiz-IO/wizio-pico/bl ... -RP2040.pyи двата примера "правят" едни също Arduino IDE е "шибано" за развой на платформи а ако разбареш как работи PlatformIO ... после лесно може прехвърлиш кода за Arduino IDE
_________________ main[-1u]={1};
|
Сря Фев 02, 2022 4:39 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
BTW; горното сигурно няма да го завърша - липсва ми доста информация, просто ми попадна частичен SDK за чипа, който се оказва доста интересна "пляска" 3 куров М0 ( секюрити, модем и апликация ) за апликацията са отделени FLASH: 256k, RAM:64k, които са напълно достатъчни за Arduino, което от своя страна е най-доброто решение за LPWA NB/CAT ... в смисъл: чипа работи има няма 30 секунди, праща нещо някъде и заспива за "дни" и като се вземе в предвид, че в мрежата има хиляди OpenSource решения за протоколи, сензори и примери ... едно приложение се прави за "часове"
_________________ main[-1u]={1};
|
Сря Фев 02, 2022 4:56 pm |
|
|
d_jelev
Ранг: Почетен член
Регистриран на: Нед Окт 25, 2009 12:48 pm Мнения: 661
|
Re: LPWA - Narrow Band, Lora...
При теб - да. Ще се пробвам, да видя аз докъде ще я докарам, дано не отнеме години Благодаря още веднъж за сламките!
|
Сря Фев 02, 2022 5:06 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
кратко обяснение: за Adruino IDE ( старото/класическо, новото трябва да е "почти" като класическото ) 1. не знам как се прави нов порт офлайн ... всеки път ми реве за глупости всичко започва с един JSON ... xxx_index.json (дето се пасва в Arduino -> File -> Preferences -> Additional Boards Manager -> URL ), който е описание за порта .... пример https://github.com/Wiz-IO/wizio-arduino ... index.json2. онлайн го правя така правя празни папки ( както ги иска Arduino ) със файловете platform.txt boards.txt programmers.txt ала бала попълнени... оправям пътя за download в xxx_index.json зипвам ги и ги качвам за download пасвам JSON-на в ардуиното - той ги сваля и инсталира "правилно" и после EDIT на всичко по "папките" ... и га стане всчико готово - зипва се както в началото и се качва за download за PlatformIO ( AKO - по-добре него учете - има много възможности ) това е плъгин за VSCODE ( IDE редактор ) който използва Python ( SConn - библиотека, която е "еквивалент" на make, cmake... ) и подържа GitHUB, та дори и DEBUG като open-ocd и предоставя редиктеруема логика за "MAKE" и разни екстри например като boot-uploader написан на Python(демек става мулти-платформен:Win,Lin,Mac...etc) порта е разделен на няколко папки: ( в директорията C:\Users\USER-NAME\.platformio ... при линукса, мак-а и разни други са в home папката ) platforms/MY-PORT ( билдер ) пример https://github.com/Wiz-IO/wizio-picopackages/framework-MY-PORT ( сорс-кодове ) пример https://github.com/Wiz-IO/framework-wizio-picopackages/toolchain-arm-compiler ( компилатора ) пример: тук използвам GCC който го предоставя PlatformIO за Win, Linux и Mac .... сваля си го "автоматично" packages/tool-MY-PORT ( разни инструменти, ако са необходими ) всяка папка има "задължителен" съответен JSON с описание кое какво е ... пример: https://github.com/Wiz-IO/wizio-pico/bl ... tform.jsonпосле изграждаме билдера ... platforms/MY-PORT ... няколко "задължителни" Python скрипта с определена логика като попълваме и packages/framework-MY-PORT ( сорс-кодовете, SDK, API ... ) в този "билдер" може да съдържа различни "билдери" ... например: baremetal, накаква RTOS платформа ... или Arduino там има и папка boards ... или определен чип ... с описание ... пример https://github.com/Wiz-IO/wizio-pico/tree/main/boardsтази boardс или чип се избира чрез един INI файл в самия ПРОЕКТ и дава възможност за "проста" редакция на порта например искаме да добавим -D/-I/-L ALA-BALA за проекта по принцип документацията е тук https://docs.platformio.org/en/latest/p ... build.htmlаз използвам PlatformIO ... някак си ми е по лесен и удобен, а и онези папки като ги кача в GITHUB всяка редакция достига до потребителя и те така...
_________________ main[-1u]={1};
|
Сря Фев 02, 2022 6:37 pm |
|
|
d_jelev
Ранг: Почетен член
Регистриран на: Нед Окт 25, 2009 12:48 pm Мнения: 661
|
Re: LPWA - Narrow Band, Lora...
|
Сря Фев 02, 2022 11:34 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
би било чудесно да тръгне ... теоретически се компилира ... бина за сега е 74к от 256к ... AT командите (технология от 19 век и заемат твърде много място) съм ги разкарал - има RPC (mailbox) между cores ама бут-лоадера на HiSilicon е твърде "смотан" от ELF правят BIN ... HASH SHA256 на BIN-a .... вероятно replace някво инфо в началото на BIN-а, после правят от BIN-a некакъв файл с разширение application. .fwpkgи накрая upload тва fwpkg ... някакси го качват в модула ( вероятно с АТ команди ) най-вероятно M0 Core Security e нещо като бут и прави проверки за оня HASH по принцип имам туловете и мога да питам - но не ми се занимава с джигитайци... стартъпа на SoC е нящо такова https://github.com/Wiz-IO/TEST/blob/mai ... o_main.cpp
_________________ main[-1u]={1};
|
Пет Фев 04, 2022 2:36 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
малко SRC ... няма смисъл да публикувам цялата платформа - нямам модул за проби и не знам как да upload RAW BIN @ Application core https://github.com/Wiz-IO/TEST/tree/main/Hi2115на "теория" е възможно ... а на този етап на джигитайция им е "в другия крачол" ( липсва ми инфо )
_________________ main[-1u]={1};
|
Пон Фев 07, 2022 2:06 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
_________________ main[-1u]={1};
|
Пет Фев 11, 2022 11:14 am |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: LPWA - Narrow Band, Lora...
някой "чувал" ли е за FWPKG ( пакетиран( архив ) Firmware ) освен, че го палзват за пакетиране на PC BIOS-и не намирам инфо ... или е неква джигитайска пляска
попаднах на джигитайско GSM Firmware - архивиран ( LZMA ) JSON файл ... секции с информация и бинарни партишъни .... кой BIN къде да иде във флаша
_________________ main[-1u]={1};
|
Съб Фев 12, 2022 5:27 pm |
|
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 12:59 pm Мнения: 3855 Местоположение: Габрово
|
Re: LPWA - Narrow Band, Lora...
Пробвал ли си да видиш дали binwalk няма да помогне с някой hint? https://github.com/ReFirmLabs/binwalk
|
Вто Фев 15, 2022 9:34 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 6 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|