Am 2. Juni 2025 20:06:08 MESZ schrieb E Shattow <e...@freeshell.de>:
>
>
>On 6/2/25 01:11, Jerome Forissier wrote:
>> Hi Tim,
>> 
>> On 5/30/25 17:46, Tim Harvey wrote:
>>> On Wed, May 21, 2025 at 8:15 AM Jerome Forissier
>>> <jerome.foriss...@linaro.org> wrote:
>>>>
>>>> Implement the sntp command with lwIP (CONFIG_NET_LWIP=y). SNTP is
>>>> supported as an app in lib/lwip/lwip/src/apps/sntp/sntp.c so this is
>>>> mainly about adding that file to the build and writing do_sntp() to use
>>>> the sntp_*() API and run the receive & timer loop. There is a patch to
>>>> extract a small bit of common code from net/sntp.c to avoid duplication.
>>>> The QEMU arm64 lwIP defconfig is updated to provide the sntp command by
>>>> default for convenience.
>>>> I could not test the case when the NTP server IP is provided by DHCP. If
>>>> someone has access right away to such a configuration and in case it
>>>> does not work, please let me know.
>>>>
>>>>
>>>> Jerome Forissier (3):
>>>>   net: extract function net_sntp_set_rtc() from sntp_handler()
>>>>   net: lwip: add sntp command
>>>>   configs: qemu_arm64_lwip_defconfig: enable CMD_SNTP
>>>>
>>>>  cmd/Kconfig                       |  13 +--
>>>>  cmd/net-lwip.c                    |   5 ++
>>>>  configs/qemu_arm64_lwip_defconfig |   1 +
>>>>  include/net-common.h              |  13 +++
>>>>  lib/lwip/Makefile                 |   1 +
>>>>  lib/lwip/u-boot/arch/cc.h         |   4 +
>>>>  lib/lwip/u-boot/lwipopts.h        |   4 +
>>>>  net/lwip/Makefile                 |   1 +
>>>>  net/lwip/sntp.c                   | 128 ++++++++++++++++++++++++++++++
>>>>  net/net-common.c                  |  28 +++++++
>>>>  net/sntp.c                        |  23 +-----
>>>>  11 files changed, 195 insertions(+), 26 deletions(-)
>>>>  create mode 100644 net/lwip/sntp.c
>>>>
>>>
>>> Hi Jerome,
>>>
>>> Thanks for the continued work on lwIP!
>> 
>> Sure. Thank you for testing and fixing bugs :)
>>  
>>> For the series:
>>> Reviewed-by: Tim Harvey <thar...@gateworks.com>
>>>
>>> Note that if this is merged before my series we'll want to have a
>>> followup that removes the sys_check_timeouts() after net_lwip_rx(udev,
>>> netif), or if it is merged before my series I can send a v3 that does
>>> it.
>> 
>> Both series are in my patchwork queue, so I'll take care of that. Thanks
>> for the heads up.
>> 
>>> Do you have a list of lwIP features you're still working on? I'm going
>>> to be moving the Gateworks venice boards to it as things look pretty
>>> good. The only thing I saw that was missing was TFTPPUT which I don't
>>> really care about.
>> 
>> I don't have any thing left in my to-do list for lwIP at the moment. There
>> are several U-Boot features that are still not supported with NET_LWIP. As
>> you said TFTP PUT but also IPv6, the bootp command, as well as ncsi, ethsw,
>> and wol (those are found in cmd/Kconfig). Maybe other things, I don't know.
>> 
>> BR,
>
>Getting data off from the U-Boot device under test is missing some
>similar function today. It would be enough to re-implement tftpput but I
>rather like the convenience of "wget" to do everything from host and
>from U-Boot device.
>
>Before LwIP and missing tftpput I did use tftpput:
>
>1. Send data from memory address range read from some flash peripheral
>
>2. Send data from files on attached storage filesystem (repeat
>intermediate step to read each file to memory address).
>
>The tftpput command is useful for (1) and is a problem for (2).
>
>Suggestion is an HTTP server command to respond with data from a memory
>address range or device filesystem i.e.:
>
>httpd <[<address> <size>]|[<interface> [<dev[:part]>]> [filename]
>
>The command responds to HTTP GET requests until a simple timeout in
>seconds (default 0 no timeout), probably as an environment variable.
>There might also be an environment variable to limit the maximum number
>of requests handled (default 0 for unlimited) so that you could use this
>in a script as a kind of network operated trigger or automation.
>
>When first parameter is a valid memory address (default $loadaddr) then
>second parameter (default $filesize) is the size. A size of 0 is valid
>and does not read from the memory address also returns no data. Optional
>third parameter unspecified or default responds to any GET request. If
>third parameter is specified then only respond to GET request for that
>filename with any leading pathname stripped from the parameter.
>
>This would allow to simply command `httpd` after some other memory read
>operation which has set env variables for us, and optionally `httpd - -
>"filename"` if we want to be selective about the GET request that will
>read our data. For an HTTP request viewer specify `httpd - 0` or in a
>script for example if you want to hold up script execution until a
>certain number of valid network requests for "secret" resource but don't
>care about the return data, something like `httpd - 0 "secret"` and the
>appropriate environment variable to limit successful responses before exit.
>
>If first parameter not a valid memory address, then we assume a similar
>invocation as `ls`. When responding to a request if filename parameter
>is then a valid directory respond with a directory listing, else serve
>that file. File not found is 404 response but does not exit.
>
>This overloading of both memory address and device filesystem works if
>there are not any devices that are named with address values. If that is
>too much then split to `httpd` and `httpdmem` i.e. two commands.
>
>Overall with LwIP adding HTTP `wget` command we are able to simply start
>a host HTTP server to get files from, and this is easy on most host
>systems that have Python lang:
>
>$ python3 -m http.server 8080
>
>I hope this description is useful?
>
>- E Shattow

Implementing a robust and safe HTTP server is not trivial.

If you want to use http to transport a file out of U-Boot, you should implement 
a HTTP POST command.

https://pypi.org/project/uploadserver/ allows you to easily spin up an HTTP 
server.

I would favor focussing on reaching feature parity to eliminate the old network 
stack before implementing new features.

Best regards

Heinrich


Reply via email to