Виж темите без отговор | Виж активните теми
Дата и час: Чет Мар 28, 2024 1:43 pm
|
Страница 1 от 1
|
[ 6 мнения ] |
|
Автор |
Съобщение |
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
GCC NewLib
някой играл ли си е на "ниско" ниво с newlib, по специално - да се превърже към съществуваща LIB / stdio - файлова система, конзола(уарт), драйвери...
проблема е че нямам истински файлови дескриптори ( FD ), плюса е че имам thread-safe API към кернела начи базата stdio е fopen, fclose, fread, fwrite, fseek, и с няколко подскока сочат syscall - open, close, read, write, seek,
първите манипулират FILE, преминават през file->cookie и стигат до syscall FD, да ама аз нямам FD индекси... индексирах ги към -1 демек stream "докопах" се до __swrite_r __sread_r ... които се занимават с куките и са чудя как да процедирам най-добре (cookie съдържа повече инфо) одеве ме споходи музата да сложа в куката "обект-struct" в началото, който сочи API-то с неговите опен, клосе по подобие на FILE структурата
начи като подмених fopen, fclose, fread, fwrite, fseek с мои тръгна 80% "добре", включително printf, fprintf екстри ... та реших да "оптимизирам"
демек опитвам се да транслирам ThreadX API към stdio да стане по по най user-friendly същото става и с FreeRtos - ама тук може да се "стъкмисат" дескриптори ... без да се прекомпилира newlib
_________________ main[-1u]={1};
|
Чет Юли 18, 2019 8:10 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: GCC NewLib
мдам... откривам топлата вода за да запазя 100% stdio ще правя виртуална FS за syscall тест:
_________________ main[-1u]={1};
|
Пет Юли 19, 2019 11:06 am |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: GCC NewLib
питанка: създава буфериран "файл" by default 1024 байта (mode няма опция за _IONBF не буфериран) след него ако ползвам няма проблем.... обаче тъй като няма да ползвам истинска файлова система, всичките ми FILE ще са не буферирани ( имам API ) та питанката е има ли начин ( без да прекомпилирам newlib ) __SNBF да е активен by default утре мисля да реплейсна функцията __sflags( ... ) <---- обработва mode стринга, връща int flags където дето __SNBF е нула - ще го сетна да видя какво ще стане ако не намеря "лесен хак" ще си остане със setvbuf ЕДИТ: остава си така както си е файловете ще са повече от стримовете, а стрим или периферия ще се сетва със setvbuf()
_________________ main[-1u]={1};
|
Сря Юли 24, 2019 8:35 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: GCC NewLib
нящо такова се получава с "виртуална" файлова система ( EFS ) покриваща почти цялото STDIO ( в моя случай е много орязана, колкото да покрива embedded - грубо казано 20к либ, 20 printf, 20k екзампъл ) работи с UART и FILE-s към stdio, сокети и периферия Пример за TCP-HTTP https://github.com/Wiz-IO/platform-quec ... n-process-
_________________ main[-1u]={1};
|
Вто Юли 30, 2019 5:26 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: GCC NewLib
_________________ main[-1u]={1};
|
Чет Авг 01, 2019 1:54 pm |
|
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 11:48 am Мнения: 4671
|
Re: GCC NewLib
Linux питанка ... socket
int rc = ioctl(_sock, FIONREAD, &count);
липсва ми ioctl ... Azure Sphere API ... хидъра е празен, в библиотеката липсва функцията търся алтернативно решене за проверка колко байта има във rx fifo-то за реализация на int wifiClient::available() { ... }
в краен случай чета 1 байт и го пазя за read() първи върнат
_________________ main[-1u]={1};
|
Пет Авг 09, 2019 10:35 pm |
|
|
|
Страница 1 от 1
|
[ 6 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|