AFAIK gdb/JTAG using openocd works fine.

ESP32S3 has internal USB_SERIAL_JTAG, so you don't need external hardware!

BR,

Alan

On 9/18/23, Mike Moretti <nu...@mordent.com.invalid> wrote:
> Hi,
>
> Thanks.  That worked.
>
> Sorry, I got as far as grepping for pthread_key_create, saw that it
> existed in the code, and then just figured it would be easier to ask
> here again, as after a month of this kind of thing, I'm pretty tired of
> fighting with configuration/building/crashes in NuttX.
>
> After months of trying, we actually finally got this app working, a
> little over a week ago, on the esp32-devkit NuttX 12.2.1 release.
> However, unfortunately, the app, without any modifications other than
> the change in NuttX board/configuration, doesn't seem to work at all on
> the ESP32S3 with either 12.2.1 or master.  (The app is a sort of
> specialized communications router that uses udp and uart, etc; it's very
> linuxy/posixy and uses epoll and a bunch of other linux/posix apis).
> I'm not really sure what I'm going to do now. Debugging apps running
> under NuttX is way more difficult than I thought it would be, as I don't
> see any easy way to do JTAG/gdb as you can with other MCU RTOSes, and
> there are just so many layers and configurations.
>
> -m
>
> On 9/18/2023 4:19 PM, Alan C. Assis wrote:
>> Hi Mike,
>>
>> Let me explain the mental process I follow to fix this kind of error!
>>
>> The error message in this case is very "clear"
>>
>> undefined reference to `pthread_key_create'
>>
>> So let see where it is defined:
>>
>> $ cd nuttxspace/nuttx
>>
>> $ git grep pthread_key_create
>> ...
>> libs/libc/pthread/pthread_keycreate.c:int pthread_key_create(FAR
>> pthread_key_t *key,
>> ...
>>
>> Ok, just open libs/libc/pthread/Make.defs and see what symbol we need
>> to enable to get pthread_keycreate.c compiled:
>>
>> ifneq ($(CONFIG_TLS_NELEM),0)
>> CSRCS += pthread_keycreate.c pthread_setspecific.c pthread_getspecific.c
>> CSRCS += pthread_keydelete.c
>> endif
>>
>> Hmm, basically it is testing if CONFIG_TLS_NELEM != 0
>>
>> So, open menuconfig:
>>
>> $ make menuconfig
>>
>> And search for CONFIG_TLS_NELEM (press "/" inside menuconfig and type
>> TLS_NELEM and press ENTER)
>>
>> Bingo:
>> Symbol: TLS_NELEM [=0]
>>
>> You will need to increase it.
>>
>> BR,
>>
>> Alan
>>
>> On 9/18/23, Mike Moretti <nu...@mordent.com.invalid> wrote:
>>> Unfortunately, using master seems to come with yet other problems. I'm
>>> getting a link error:
>>>
>>> xtensa-esp32s3-elf-ld:
>>> nuttx/staging/libxx.a(cxa_exception_storage.o):(.literal._ZN10__cxxabiv112_GLOBAL__N_110construct_Ev+0xc):
>>>
>>> undefined reference to `pthread_key_create'
>>> xtensa-esp32s3-elf-ld:
>>> nuttx/staging/libxx.a(cxa_exception_storage.o):(.literal._ZN10__cxxabiv112_GLOBAL__N_19destruct_EPv+0x4):
>>>
>>> undefined reference to `pthread_setspecific'
>>> xtensa-esp32s3-elf-ld:
>>> nuttx/staging/libxx.a(cxa_exception_storage.o):(.literal.__cxa_get_globals_fast+0xc):
>>>
>>> undefined reference to `pthread_getspecific'
>>> xtensa-esp32s3-elf-ld: nuttx/staging/libxx.a(cxa_exception_storage.o):
>>> in function `std::__1::__libcpp_tls_create(int*, void (*)(void*))':
>>> nuttx/include/libcxx/__threading_support:551: undefined reference to
>>> `pthread_key_create'
>>> xtensa-esp32s3-elf-ld: nuttx/staging/libxx.a(cxa_exception_storage.o):
>>> in function `std::__1::__libcpp_tls_set(int, void*)':
>>> nuttx/include/libcxx/__threading_support:561: undefined reference to
>>> `pthread_setspecific'
>>> xtensa-esp32s3-elf-ld: nuttx/staging/libxx.a(cxa_exception_storage.o):
>>> in function `std::__1::__libcpp_tls_get(int)':
>>> nuttx/include/libcxx/__threading_support:556: undefined reference to
>>> `pthread_getspecific'
>>> xtensa-esp32s3-elf-ld: nuttx/staging/libxx.a(cxa_exception_storage.o):
>>> in function `std::__1::__libcpp_tls_set(int, void*)':
>>> nuttx/include/libcxx/__threading_support:561: undefined reference to
>>> `pthread_setspecific'
>>>
>>>
>>> Our custom app uses C++ and these specific config options (because
>>> they're necessary for the app to compile):
>>>
>>> CONFIG_LIBC_LOCALE=y
>>> CONFIG_HAVE_CXX=y
>>> CONFIG_HAVE_CXXINITIALIZE=y
>>> CONFIG_LIBCXX=y
>>> CONFIG_LIBCXXABI=y
>>> CONFIG_CXX_STANDARD="gnu++17"
>>> CONFIG_CXX_EXCEPTION=y
>>> CONFIG_CXX_RTTI=y
>>>
>>> -m
>>>
>>> On 9/18/2023 3:19 PM, Petro Karashchenko wrote:
>>>> Using a released version is usually better, but since EPS32S3 has
>>>> active
>>>> feature development using master can give you better features support.
>>>> That
>>>> is obviously a tradeoff you need to make.
>>>> I'm trying to fix all the issues I meet with ESP32S3 as I'm trying to
>>>> build
>>>> a product on top of it, but there are still many features that I hope
>>>> gona
>>>> be added soon (like USB host support for example), so I'm staying on
>>>> master
>>>> currently.
>>>>
>>>> Best regards,
>>>> Petro
>>>>
>>>> пн, 18 вер. 2023 р. о 22:15 Mike Moretti <nu...@mordent.com.invalid>
>>>> пише:
>>>>
>>>>> Hi,
>>>>>
>>>>> I'm using 12.2.1, the latest release.  The more I work with this chip
>>>>> the more I'm wondering if I'm going to have to move to using master.
>>>>> I've been trying to avoid not using an actual release version of
>>>>> NuttX.
>>>>>
>>>>> -m
>>>>>
>>>>> On 9/18/2023 3:08 PM, Petro Karashchenko wrote:
>>>>>> Hello Mike,
>>>>>>
>>>>>> Which version of nuttx code are you using? Recently I was dealing
>>>>>> with
>>>>>> UART1/2 on ESP32S3 and managed those to be working in
>>>>>> https://github.com/apache/nuttx/pull/10467
>>>>>> There were few issues including some clocking configuration problem
>>>>>> as
>>>>> well
>>>>>> as wrong pin functions used for UART1.
>>>>>>
>>>>>> At the end I was able to even run RS485 with EPS32S3 and make a kind
>>>>>> of
>>>>>> a
>>>>>> loopback test connecting UART1-RS485 <-> UART2-RS485 on the same
>>>>>> device
>>>>> and
>>>>>> exchange data between those UARTs.
>>>>>>
>>>>>> Please check if your code base contains my fixes.
>>>>>>
>>>>>> Looking forward to hearing from you,
>>>>>> Petro
>>>>>>
>>>>>> пн, 18 вер. 2023 р. о 21:59 Mike Moretti <nu...@mordent.com.invalid>
>>>>> пише:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I'm having trouble with NuttX on the ESP32S3 trying to get UART1
>>>>>>> (configured on the default pins) working via /dev/ttyS1.  The driver
>>>>>>> code for esp32s3_serial.c seems to configure uart1 as /dev/ttys1
>>>>>>> when
>>>>>>> you enable it in the configs, however, testing via
>>>>>>> serialblaster/serialrx (and our own custom app) doesn't seem to send
>>>>>>> or
>>>>>>> receive anything on uart1.  I've tried swapping my connections to
>>>>>>> the
>>>>>>> pins, testing every pin on the devkit board with serialblaster and
>>>>>>> nothing ever comes out.  I don't have this problem on an esp32
>>>>>>> devkit
>>>>>>> (with either uart1 or uart2).  It seems to only happen on the
>>>>>>> esp32s3
>>>>>>> devkit.  I can successfully use serialblaster/serialrx on /dev/ttyS0
>>>>>>> and
>>>>>>> see the output/enter text.
>>>>>>>
>>>>>>> Is there something I'm missing?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> -m
>>>>>>>
>>>
>
>

Reply via email to