| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| API Kernel <- -> Application http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=16048 |
Страница 1 от 1 |
| Автор: | TheWizard [ Вто Юли 24, 2018 2:25 pm ] | ||||||||||||||||||
| Заглавие: | API Kernel <- -> Application | ||||||||||||||||||
случая е малко хакерски... имам комуникационен модул (LTE NB/CAT) с работещо API за user applications, обаче е много бедно на функции (писано-недописано) реверснах кърнела и му изкарах над 3000 функции (име, адрес, С структури...) от които реално ~200 ми трябват (HAL, OS, SSL, мрежа и разни екстри) тръгнах да пиша разширено API и вече се чудя кой път да поема... спрял съм се на това, което е зависимо от компилацията на кърнела:
може и така, а и има нищожна възможност джикитайците да ми напълнят структурата с адресите при инициализация
идеята е да интегрирам новите неща в Arduino ядро, което е почи готово - трябва ми мрежовите фунции и екстрите |
|||||||||||||||||||
| Автор: | woody [ Вто Юли 24, 2018 5:13 pm ] |
| Заглавие: | Re: API Kernel <- -> Application |
Можеш да оставиш прототипите "extern", а адресите да ги закачиш през линкер скрипт или асемблерски файл, като последните и двете машинно генерирани. |
|
| Автор: | TheWizard [ Сря Юли 25, 2018 8:45 am ] |
| Заглавие: | Re: API Kernel <- -> Application |
и така го правих, ама май го омазах... и реших да бутна API-то в static library оригиналното апи - има една информационна структура в първата ROM секция по която се ориентира кърнела за апликацията и нейната entry point a функциите се викат с hash стринг на функцията, кърнела връща адреса (за секюрити уж, да не се вижда адреса)... стил Mediatek Qualcomm са с Dispatcher функция ID... ма не мисля да го усложнявам и поне малко да "скрия" адресите |
|
| Автор: | TheWizard [ Сря Юли 25, 2018 9:14 am ] | |||||||||
| Заглавие: | Re: API Kernel <- -> Application | |||||||||
с АСМ файл май изглежда по-добре:
|
||||||||||
| Автор: | woody [ Сря Юли 25, 2018 10:40 am ] | |||||||||
| Заглавие: | Re: API Kernel <- -> Application | |||||||||
Можеш да се опиташ да спестиш указателите и дереференцията като ги направиш абсолютни символи, т.е. прототипът да е:
Естествено, ако може всичкото това да се генерира от програма/скрипт. Билдваш с GCC и после дизасемблираш с ADS/Keil? |
||||||||||
| Автор: | TheWizard [ Сря Юли 25, 2018 11:02 am ] |
| Заглавие: | Re: API Kernel <- -> Application |
GCC да IDA ползвам за деасем... генерирам сорса със скрипт - автоматично търся функциите във firmware-то и форматирам "сорса" 10% не ги намирам но на ръка ги оправям ако ми трябват Бях ги форматирал като пойнтери void* ама не ми хареса дезасемблера или ида-та се лъжеше |
|
| Автор: | woody [ Сря Юли 25, 2018 12:19 pm ] | |||||||||
| Заглавие: | Re: API Kernel <- -> Application | |||||||||
Странно че IDA са решили да ползват ADS синтаксис. Ама исторически може и да не е толкова странно. Ако успееш да го направиш да не е през указатели, а с директно викане на функция (през абсолютни символи), може евентуално трите инструкции
да се сведат до една B/BL/BLX ако e наблизо на +/-32MB или до LDR/BLX за по-далечни. |
||||||||||
| Автор: | palavrov [ Сря Юли 25, 2018 5:18 pm ] | |||||||||
| Заглавие: | Re: API Kernel <- -> Application | |||||||||
Отдавна не съм дизасемблирал с ИДА-та но поне навремето можеше да я конфигурираш за различен формат на дизасемблера - intel, gcc, и т.н. примерно за x86 |
||||||||||
| Автор: | TheWizard [ Сря Юли 25, 2018 10:58 pm ] |
| Заглавие: | Re: API Kernel <- -> Application |
аз GCC "стил" не намерих в опциите на ида-та открих "топлата вода" - скриптове - така експортнах всички имена на процедури трите инструкции са ми достатъчни - не гоня скорост, спрямо оригиналното апи е в пъти по-бързо... модула е комуникационен(NB/CAT), не се гони завидна скорост... по-нататък ще взема един борд за хардуерни проби, лошото е че в БГ няма все още мрежа (NB) иначе става въпрос за Quectel BC66 - чипсет Mediatek MT2625 апликационен процесор ARM Cortex-M на 104 MHz, модема е някво неизвестно DSP на кристала, RAM,FLASH по 4 меги (за усера към 300к апликация) няма GSM само NB/CAT модем IO: GPIO, I2C, I2S, PCM, SDIO, UART, USB... OS: FreeRTOS (директно недостъпен за усера) NET: LwIP & mbedssl (директно недостъпен) Clinets: HTTP/S, MQTT, COAP, LWM2M (първите две са RIL достъпни) достъпа до всичко горе е само по RIL (AT команди).... за сега ако му изкарам разширеното апи си става супер подкарах го на GCC Linaro last + Eclipse за Windows мисля че няма да му е проблем да носи едно Arduino ядро като апликация |
|
| Автор: | woody [ Чет Юли 26, 2018 10:18 am ] |
| Заглавие: | Re: API Kernel <- -> Application |
Успехи. |
|
| Автор: | TheWizard [ Чет Юли 26, 2018 1:02 pm ] | |||||||||
| Заглавие: | Re: API Kernel <- -> Application | |||||||||
метнах го в static lib и се компилна така
|
||||||||||
| Автор: | woody [ Чет Юли 26, 2018 3:24 pm ] |
| Заглавие: | Re: API Kernel <- -> Application |
Мда, самата константа е в literal pool. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|