Sorry, I didn't get your name :) . But here is my take on your questions - 1. I was using gcc compiler - so I didn't see any problem with lack of c++/c11 library features. Most compilers support features like 'atomic' - check if your compiler offers it or not. Overall, I think it is good to have, if not essential, to have c++/c11 support in your compiler. It will save a lot of hard-work for you. For example - atomic operation can be emulated in software if your compiler does not support by default - but that's additional amount of work and it will make the system slower.
2. I think ThreadX does provide a thin posix implementation(check their sample apps/examples etc). Having said that, you may not have to do the same. You can always add 'ThreadX implementation' to what all grpc OS(posix) interface requires. For example - Queue, Threads, semaphores, mutexes, most of basic constructs are already available in ThreadX. 3. No, grpc may require some of these features. So, you've to review what you can implement and what you have to disable. For example - if GPR_LINUX_ENV is all about setting environment(key-value pair), setenv(...), getenv(...) from a linux-host perspective. Think of how you can achieve the same on your system. See if you can implement and fulfill these API requirements on your system. If you'are able to do that, you don't have to disable GPR_LINUX_ENV - as a result - all the code/test-apps/examples etc will continue to work. Alternative is to come with your own, GPR_THREADX_ENV flag and replace it with GPR_LINUX_ENV across the library - but that might be more intrusive and you may miss things. Idea is to really see what gets you closer to a working piece of grpc library. Like most of porting exercises - it is always good to have a new implementation of the interface rather than having a new interface itself. ________________________________ From: [email protected] <[email protected]> on behalf of [email protected] <[email protected]> Sent: Thursday, September 12, 2019 3:36 PM To: grpc.io <[email protected]> Subject: Re: [grpc-io] Re: gRPC for embedded systems( for example - RTOS like ThreadX, FreeRTOS etc. ) Hello Dharam, I'm lucky to see your mail when I'm planning to put grpc to embedded device running ThreadX. But it's not easy for me since grpc does not provide any options for embedded device running RTOS. I have following questions and I'm looking forward to your reply. 1. The compiler I'm using is DS-5 ARM compiler 6.02 armclang which has unsupported features such as -stdlib=libstdc++, and use of C11 library feature. so there're many compiling issues like atomic is not supported, no type named 'memory_order' in namespace 'std'. Did you see these compiling issue like these? what compiler are you using for compiling grpc? If atomic is not supported, is it possible to compile and run gprc? 2. As POSIX APIs are not supported in ThreadX. So these posix-APIs need to be implemented by my own? 3. When adding options for THREADX in port_platform.h, I disable many features such as GPR_LINUX_LOG, GPR_SUPPORT_CHANNEL_FROM_FD, GPR_LINUX_ENV and GPR_POSIX_TMPFILE But I'm not sure if grpc can work properly as these features are disabled. Any suggestions? Thanks! Dharam Kumar於 2019年8月21日星期三 UTC-7上午3時22分48秒寫道: Hello Jaehong, I've been able to put grpc framework on wiced rtos APIs<https://www.cypress.com/products/wiced-software>. Basically, Wiced SDK from Cypress provides abstracted RTOS/Networking APIs which is underneath implemented by different rtos/network stacks. For example - Expresslogic's ThreadX/NetX, FreeRTOS/lwip etc. I was able to get threads running, start grpc core service, create grpc endpoints(tcp) etc... Please note that grpc library does not support embedded TLS stacks like mbed-tls(from ARM). Also, default grpc transports module(chttp2?)might be too heavy for your embedded platform. So, you may have to work on these aspect. So be remindful of how "embedded" you can go. For example - it probably won't work on a board/platform with 256KB of RAM. In nutshell, putting grpc framework is totally possible. ...@Nicolas Noble - I'm not sure about the grpc being intertwined with posix part - as i recollect there are pretty good grpc abstractions for different platforms(windows, unix, posix etc.) - i just built on that and was able to get the grpc core up and running. Br, Dharam ________________________________ From: [email protected] <[email protected]> on behalf of Nicolas Noble <[email protected]> Sent: Wednesday, August 21, 2019 12:31 AM To: jaehong park <[email protected]> Cc: grpc.io<http://grpc.io> <[email protected]> Subject: Re: [grpc-io] Re: gRPC for embedded systems( for example - RTOS like ThreadX, FreeRTOS etc. ) We have no plans for that, and the current codebase is way too intertwined with posix to ever work on FreeRTOS / lwip. A full third party implementation of grpc would be needed for that at this point. On Tue, Aug 20, 2019 at 10:23 AM jaehong park <[email protected]> wrote: Hello Dharam, I'm having a similar project like below question. (III.Any effort in community in bringing gRPC for embedded devices(for RTOSes) ? ) Do you have any progress this issue? Could you let me know where I can find the answer for this? Thanks, Jaehong On Tuesday, January 23, 2018 at 9:39:07 PM UTC-8, [email protected] wrote: Hello folks, I'm working on a project where we are planning to create a Google Assistant service instance on embedded/deeply embedded devices( non-linux, ARM processors running RTOS like ThreadX, FreeRTOS etc. ) Our system has support for building executables for c/c++ etc. but it is not same as linux( for example - no posix availability ). Of course, like RTOSes these days, we have wrappers for providing OS/Networking functionality for applications/libraries to use. My questions are: i. How fit gRPC is for embedded devices? I can see abstraction for different platforms in "port_platform.h" file used to build grpc-core with options given in the file. My first thought is it should be doable if I adapt port_platform.h and build grpc-core with the capabilities provided by our system. ii. How deep gRPC's love is for posix? If any platform/devices does not provide any posix-like high level APIs, will gRPC still work as expected? How straight-forward such a task is going to be? iii. Any effort in community in bringing gRPC for embedded devices(for RTOSes) ? Would not it be great to have a tiny(and limited) gRPC library which can be easily integrated to embedded devices ? And such a thing supported by gRPC community/authors ? I understand that I can get most of the answers from reading the code itself(which I'm doing btw). But it would be nice to know insights/perspective of gRPC authors and community folks who understands gRPC better than me. Open for suggestions/feedback. Best regards, Dharam -- You received this message because you are subscribed to the Google Groups "grpc.io<http://grpc.io>" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/5a72e682-031f-415b-830f-7818810f434f%40googlegroups.com<https://groups.google.com/d/msgid/grpc-io/5a72e682-031f-415b-830f-7818810f434f%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to a topic in the Google Groups "grpc.io<http://grpc.io>" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/grpc-io/A0PlDMi2an8/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAEvr0PEr7TM5m3JUtP04Jgc3tZj6zSx%2BmfRdGJNh5hwsB0HH6Q%40mail.gmail.com<https://groups.google.com/d/msgid/grpc-io/CAEvr0PEr7TM5m3JUtP04Jgc3tZj6zSx%2BmfRdGJNh5hwsB0HH6Q%40mail.gmail.com?utm_medium=email&utm_source=footer>. This message and any attachments may contain confidential information from Cypress or its subsidiaries. If it has been received in error, please advise the sender and immediately delete this message. -- You received this message because you are subscribed to a topic in the Google Groups "grpc.io" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/grpc-io/A0PlDMi2an8/unsubscribe. To unsubscribe from this group and all its topics, send an email to [email protected]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/4d301f1c-04fd-43a2-9e1c-3061329a0a5b%40googlegroups.com<https://groups.google.com/d/msgid/grpc-io/4d301f1c-04fd-43a2-9e1c-3061329a0a5b%40googlegroups.com?utm_medium=email&utm_source=footer>. This message and any attachments may contain confidential information from Cypress or its subsidiaries. If it has been received in error, please advise the sender and immediately delete this message. -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/SN6PR06MB396603D11C7C93626FD8570E95B00%40SN6PR06MB3966.namprd06.prod.outlook.com.
