Commit Graph
100 Commits
Author SHA1 Message Date
Ivan Grokhotkov 4d9018e925 Merge branch 'feature/ulp_cmake_cleanups' into 'master'
ulp: CMake and python cleanups

See merge request espressif/esp-idf!19817
2022-08-31 17:59:05 +08:00
Ivan Grokhotkov 5b88c6b142 console: pass esp_console_repl_universal_t pointer to the repl task
For usb_serial_jtag REPL only, xTaskCreate was passing a pointer to
esp_console_repl_com_t, while esp_console_repl_task was expecting
a pointer to esp_console_repl_universal_t.

The way the two structures are defined, this makes no difference, and
the pointer values are the same. Still, this could potentially break
in the future.

(I am not sure what is the distinction between repl_com (common?) and
repl_universal; it seems that `int uart_channel` could just as well
be part of esp_console_repl_com_t; alternatively, as suggested in the
previous commit, this structure could contain a callback function
pointer, which would allow `esp_console_new_repl_*` functions to
specify how stdin/stdout should be initialized by the REPL task.)
2022-08-30 19:37:15 +02:00
Ivan Grokhotkov c1d5717013 console: fix a crash when initializing usb_serial_jtag console
The crash occurred when calling setvbuf(stdin,...) with stdin==NULL.
This happened because esp_console_repl_task started running before
its args->uart_channel was initialized; then esp_console_repl_task
went into the code path 'uart_channel != CONFIG_ESP_CONSOLE_UART_NUM',
and tried to 'fopen("/dev/uart/0");`
Since the UART VFS is not registered when ESP_CONSOLE_USB_SERIAL_JTAG
option is enabled, fopen failed and 'stdin' was NULL.
Fix by moving the initialization of repl task arguments before the
start of the task, same as it is done for the usb_cdcacm case.

The crash started happening after the commit 287ab7566b. I haven’t
verified this, but I guess the reason why it wasn’t happening before
was that xTaskCreate was not correctly yielding to the newly created
higher-priority 'repl' task, therefore the code which was setting
the repl task arguments after xTaskCreate had time to execute.

It should be noted that the 'uart_channel' argument is a bit hacky,
in the first place. The code should be refactored to pass a callback
function to the repl task, and let this callback initialize stdin and
stdout based on the chosen console channel. Then esp_console_repl_task
does not require assumptions about the specific interface used.

Closes https://github.com/espressif/esp-idf/issues/9662
2022-08-30 19:16:51 +02:00
Ivan Grokhotkov 1ba3d58b78 tools: cmake: upgrade from 3.23.1 to 3.24.0 2022-08-30 16:38:14 +02:00
Ivan Grokhotkov 13881a3832 idf.py: ensure that build log is always sanitized from color sequences
The actual output from the build tool (CMake/Ninja) may or may not
contain color escape codes, depending on various factors. The output
written to the log file should never include color escape codes,
though. This is because color escape codes in files are usually not
rendered as "color" in editors, and complicate reading. Also escape
codes would break the regular expressions used to display hints for
compilation errors.
2022-08-30 16:38:14 +02:00
Ivan Grokhotkov d04b554065 tools: idf.py: enable CLICOLOR_FORCE for interactive builds
If stdout is a TTY (meaning that the output is not redirected), tell
the build tool (GNU Make or Ninja) to enable colorized output.

GNU Make and Ninja also check if their stdout is redirected and
strip color escape sequences in that case. CLICOLOR_FORCE environment
variable overrides this behavior.

With this change, if the compiler was launched with the
-fcolor-diagnostics flag and idf.py output is not redirected, the
final output in the terminal will be colorized.

(-fcolor-diagnostics is handled at CMake level by the previous commit)
2022-08-30 16:38:13 +02:00
Ivan Grokhotkov 56e6263350 cmake: enable CMAKE_COLOR_DIAGNOSTICS by default
Related to https://github.com/espressif/esp-idf/issues/4162

Setting this option informs CMake that it should pass
-fcolor-diagnostics flag to the compiler.

(Colorized build system output, like from GNU Make, is produced even
without this flag.)

Note that if the build is done using Ninja and the build output is
redirected (not a TTY), Ninja will still strip the escape codes from
the output. For the case of idf.py, this is handled in the next
commit.
2022-08-30 16:38:13 +02:00
Ivan Grokhotkov b548d9345e Revert "Merge branch 'feature/build_color_output' into 'master'"
This reverts merge request !19330
2022-08-30 15:14:47 +08:00
Ivan Grokhotkov 9aecfe2b9d ulp: fix typo in peripherals ld file names 2022-08-30 02:34:28 +02:00
Ivan Grokhotkov 2916bf9b6c ulp: esp32ulp_mapgen: remove the special case for RISC-V, cleanup
There are multiple changes in this commit:

1. Unify the RISC-V and ULP-FSM code paths in esp32ulp_mapgen.py.
   It seems that these were originally introduced because `nm` output
   for the RISC-V case contained symbol sizes, while for the ULP-FSM
   no symbol sizes were reported. This makes sense, because the
   ULP-FSM object files are produced from assembly source, symbol
   sizes have to be added manually using the .size directive.
   In the case of RISC-V, the object files are built from C sources
   and the sizes are automatically added by the compiler.

   Now 'posix' output format is used for both RISC-V and ULP-FSM.

2. Move BASE_ADDR out of esp32ulp_mapgen.py. This now has to be passed
   from CMake, which should make it easier to modify if a new chip
   with a different RTC RAM base address is added.

3. Add C++ guards to the generated header file.

4. Switch from optparse to argparse for similarity with other IDF
   tools.

5. Add type annotations.
2022-08-30 02:34:28 +02:00
Ivan Grokhotkov 4b03e233d0 ulp: cmake: simplify the dependency on the generated LD script
* "dummy loop to force pre-processed linker file generation" seems to
  be unnecessary. It looks like the idea was copied from the
  dependency of ULP-FSM preprocessed source files on the LD script.
* Can use add_dependencies instead of
  set_target_properties(...LINK_DEPENDS...) which is more readable
* Use target_link_options instead of target_link_libraries, which is
  supported starting from CMake 3.13. Unlike target_link_libraries,
  it doesn't require manually quoting the pats.
2022-08-30 02:34:28 +02:00
Ivan Grokhotkov 67bd7a300a ulp: cmake: add the target early, use target_* commands everywhere
Instead of collecting options in various variables, use CMake
commands like target_sources and target_link_options.
2022-08-30 02:34:28 +02:00
Ivan Grokhotkov 1a73374f82 ulp: move the expected ULP-FSM toolchain version from .mk to CMake
toolchain_ulp_version.mk is a remnant of the time when we had two
build systems, and CMake had to read the expected version from a
makefile.
2022-08-30 02:34:28 +02:00
Ivan Grokhotkov 2c5b62f10e tools: idf.py: use actual sys.stdout instead of the memoized one
This fixes the issue with build output not being colorized on Windows,
while the hints messages are colorized.

The issue occurred because sys.stdout and sys.stderr get overridden
by colorama.init() at runtime, but the default argument
output_stream=sys.stdout holds the reference to the"original"
sys.stdout.

colorama.init() (which, by the way, gets called via a curious chain
of imports, via idf_component_tools.manifest and tqdm package)
overrides standard streams, on Windows only. The overridden streams
contain logic to convert ANSI color codes into Windows Console API
calls to colorize the text.

Since read_and_write_stream function used the default value of
output_stream evaluated at module loading time, it was using the
original sys.stdout, not the one overridden by colorama.

One extra note is that while this does fix the coloring issue, the
solution is a bit fragile, as it relies on one of the following
(on Windows):
- colorama.init() is called (this can change if idf-component-manager
  stops importing tqdm)
- Sufficiently new version of Windows 10 is used, and ANSI color codes
  support is enabled in the Registry.
2022-08-30 01:30:32 +02:00
Ivan Grokhotkov b7efde18c6 Merge branch 'bugfix/vfs_build_warning' into 'master'
vfs: use recommended `esp_cpu_dbgr_is_attached` API

See merge request espressif/esp-idf!19843
2022-08-30 07:18:40 +08:00
Ivan Grokhotkov 02a19c6df5 Merge branch 'feature/build_color_output' into 'master'
build system, tools: enable compiler color diagnostics by default

Closes IDFGH-1965

See merge request espressif/esp-idf!19330
2022-08-29 20:32:42 +08:00
Ivan Grokhotkov 4f0967d44c Merge branch 'feature/update-gdb-to-11.2_20220823' into 'master'
tools: update gdb version to '11.2_20220823'

Closes IDFGH-4276 and IDF-842

See merge request espressif/esp-idf!19723
2022-08-29 19:34:40 +08:00
Ivan Grokhotkov 990681764e tools: cmake: upgrade from 3.23.1 to 3.24.0 2022-08-29 11:15:25 +02:00
Ivan Grokhotkov 712743d777 idf.py: ensure that build log is always sanitized from color sequences
The actual output from the build tool (CMake/Ninja) may or may not
contain color escape codes, depending on various factors. The output
written to the log file should never include color escape codes,
though. This is because color escape codes in files are usually not
rendered as "color" in editors, and complicate reading. Also escape
codes would break the regular expressions used to display hints for
compilation errors.
2022-08-29 11:15:16 +02:00
Ivan Grokhotkov 12abe1f316 tools: idf.py: enable CLICOLOR_FORCE for interactive builds
If stdout is a TTY (meaning that the output is not redirected), tell
the build tool (GNU Make or Ninja) to enable colorized output.

GNU Make and Ninja also check if their stdout is redirected and
strip color escape sequences in that case. CLICOLOR_FORCE environment
variable overrides this behavior.

With this change, if the compiler was launched with the
-fcolor-diagnostics flag and idf.py output is not redirected, the
final output in the terminal will be colorized.

(-fcolor-diagnostics is handled at CMake level by the previous commit)
2022-08-29 11:15:00 +02:00
Ivan Grokhotkov 41cffbb2f2 cmake: enable CMAKE_COLOR_DIAGNOSTICS by default
Related to https://github.com/espressif/esp-idf/issues/4162

Setting this option informs CMake that it should pass
-fcolor-diagnostics flag to the compiler.

(Colorized build system output, like from GNU Make, is produced even
without this flag.)

Note that if the build is done using Ninja and the build output is
redirected (not a TTY), Ninja will still strip the escape codes from
the output. For the case of idf.py, this is handled in the next
commit.
2022-08-29 11:05:15 +02:00
Ivan Grokhotkov 7ab8500aaa Merge branch 'doc/lcd_list' into 'master'
docs: Added link to list of available LCD controller drivers.

See merge request espressif/esp-idf!19769
2022-08-28 22:11:37 +08:00
Ivan Grokhotkov 5c8db0ea7f ci: increase timeout for python packages install test
On the build runners, the installation frequently takes around 150
seconds, which is above the current timeout. This change increases
the timeout.

Closes IDFCI-1436
2022-08-25 10:45:03 +02:00
Ivan Grokhotkov ae256e9ca2 Merge branch 'bugfix/docker_remove_libpython2.7' into 'master'
tools: Docker: remove libpython2.7

See merge request espressif/esp-idf!19703
2022-08-24 02:06:18 +08:00
Ivan Grokhotkov d5973b8b14 build system: add 'linux' component to common requirements
'linux' component provides some of the common header files, such as
'sys/queue.h' and 'sys/lock.h'. For chip targets, it is possible to
include these files without having to add any extra requirements.
With this change, the same behavior will apply for the linux target.
2022-08-22 14:50:19 +02:00
Ivan Grokhotkov b679c95ddc tools: Docker: remove libpython2.7
libpython2.7 was added to the container to allow running GDB built
with Python 2.7 support and distributed as part of the cross-compiler
toolchain.

Now that we have a new release of GDB which works with Python 3.x,
the GDB shipped with the cross-compiler is no longer used. Removing
libpython2.7 should reduce the image size.

This reverts commit be0372b1db.
2022-08-22 13:25:09 +02:00
Ivan Grokhotkov 3ae64a7120 Merge branch 'feat/issue_forms' into 'master'
Add issue forms

See merge request espressif/esp-idf!19370
2022-08-20 01:17:30 +08:00
Ivan Grokhotkov ea5fda812b Merge branch 'bugfix/esp_err_linux_target' into 'master'
esp_common: make esp_err_to_name and ESP_ERROR_CHECK usable on Linux target

Closes IDF-2693

See merge request espressif/esp-idf!19569
2022-08-19 20:44:35 +08:00
Ivan Grokhotkov c6e9a0c350 esp_common: make esp_err_to_name and ESP_ERROR_CHECK usable on Linux 2022-08-18 18:16:45 +02:00
Ivan Grokhotkov 4e0fa26e64 nvs_flash: link the host test against libbsd when building on Linux
...and clean up the linking rule
2022-08-17 12:20:37 +02:00
Ivan Grokhotkov 7a1e19edf1 nvs_flash: replace strncpy + manual null termination with strlcpy
Since libbsd is now a build dependency on Linux, strncpy can be
replaced with the safer and less verbose strlcpy.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov bee241b0e2 nvs_flash: remove leftover ESP_ERROR_CHECKS
Similar to the asserts, these are replaced by error checks.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov 02661081be nvs_flash: make nvs_flash_init usable for Linux target
Since the partition API is now supported for Linux target builds,
this function can now be used.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov bfb6f31872 nvs_flash: remove unnecessary check that the data pointer is in DROM
spi_flash driver knows how to write data from cache (DROM or PSRAM)
into flash, so the extra check in nvs_flash is unnecessary.
Besides, the hardcoded address limit (0x3ff00000) is wrong for some
of the newer chips.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov 08e41973f0 nvs_flash: update intrusive_list for compatibility with C++17
std::iterator is deprecated since C++17, the code produces a warning
when compiled with clang and libc++.
2022-08-17 12:20:36 +02:00
Ivan Grokhotkov 512b59f388 Merge branch 'test/newlib_blksize' into 'master'
newlib: add test for st_blksize and FILE buffer size

See merge request espressif/esp-idf!19366
2022-08-16 23:02:59 +08:00
Ivan Grokhotkov 985f44c158 Merge branch 'bugfix/partition_api_linux_test' into 'master'
spi_flash: convert Linux partition API test to Unity, bug fixes

See merge request espressif/esp-idf!19567
2022-08-16 21:28:41 +08:00
Ivan Grokhotkov ad2a15d549 ci: enable artifacts for test_pytest_qemu 2022-08-16 00:02:17 +02:00
Ivan Grokhotkov 181105cddb ci: run partition API test on host 2022-08-15 18:25:14 +02:00
Ivan Grokhotkov ab02e15601 spi_flash: use Unity fixture in the partition API test 2022-08-15 18:15:19 +02:00
Ivan Grokhotkov 91d0e016a1 spi_flash: fix build for Linux target
CONFIG_MMU_PAGE_SIZE is not defined for the Linux target, add a
fallback definition.
2022-08-15 18:15:19 +02:00
Ivan Grokhotkov 1ac3fc79b7 unity: add linux port
This allows using unity fixture in Linux host tests
2022-08-15 18:15:19 +02:00
Ivan Grokhotkov afc6fba7f5 Merge branch 'bugfix/exclude_component_dirs_pacman' into 'master'
build: fix excluded components being passed to component manager

Closes PACMAN-422

See merge request espressif/esp-idf!19443
2022-08-11 01:10:17 +08:00
Ivan Grokhotkov 3b7eee3978 build: fix excluded components being passed to component manager
`__COMPONENT_TARGETS` is evaluated very early when components and
component directories are added to the build, which means that all
components (including the ones which are in EXCLUDE_COMPONENTS) have
a build system target defined. The component manager was given the
list of all known components (derived from the list of targets), not
the list of components after EXCLUDE_COMPONENTS were processed.
Because of that, EXCLUDE_COMPONENTS didn't effectively exclude the
component from the consideration of the component manager.
2022-08-08 13:09:20 +02:00
Ivan Grokhotkov 3eec11005c ci: upgrade qemu to 20220802 release
Changes accumulated since 20210826 release:

- Fixed cache flush emulation
- Fixed loading of baremetal ELF files via -kernel arg
- Added emulation of AES peripheral
- Fixed division by zero in UART emulation
- Fixed APP CPU using same ROM code as PRO CPU
- Base QEMU version upgraded from 6.1.0 to 7.0.0
2022-08-07 11:00:41 +02:00
Ivan Grokhotkov d366664b0d tools: use built-in USB_SERIAL_JTAG for "idf.py openocd" on C3 and S3
Since both chips have built-in JTAG functionality, and there are no
official boards with FT2232H for these chips, use the built-in JTAG
by default.

To use them with esp-prog, set:
  OPENOCD_COMMANDS="-f board/esp32c3-ftdi.cfg"
or pass this via the --openocd-commands argument to idf.py.
2022-08-05 18:22:30 +02:00
Ivan Grokhotkov f222655619 Merge branch 'update/version_5_1_0' into 'master'
Update version to 5.1.0 (for v5.1-dev tag)

See merge request espressif/esp-idf!19376
2022-08-04 22:03:46 +08:00
Ivan Grokhotkov 012fafb827 versions: Update version to 5.1.0 2022-08-04 09:55:43 +02:00
Ivan Grokhotkov e596c84d49 build system: re-add -Wno-format as private flag for some example components 2022-08-03 16:42:47 +04:00
Ivan Grokhotkov 401c10ecfb build system: re-add -Wno-format as private flag for some components 2022-08-03 16:42:47 +04:00
Ivan Grokhotkov 879352b7f3 build system: remove -Wno-format flag for RISC-V targets 2022-08-03 16:42:47 +04:00
Ivan Grokhotkov cb1033abf8 log: fix -Wformat issue when uint32_t == unsigned long 2022-08-03 16:42:47 +04:00
Ivan Grokhotkov cd70631f13 newlib: add test for st_blksize and FILE buffer size
Inspired by https://github.com/joltwallet/esp_littlefs/pull/91/files#r935872478
2022-08-02 20:42:45 +02:00
Ivan Grokhotkov f332790af5 Merge branch 'feature/update-gdb-to-11.2_20220729' into 'master'
tools: update gdb version to '11.2_20220729'

Closes IDFGH-7851

See merge request espressif/esp-idf!19293
2022-08-02 23:59:19 +08:00
Ivan Grokhotkov a0689f0434 Merge branch 'feature/format-hint' into 'master'
Tools: Add hint to resolve [u]int32_t formatting errors

See merge request espressif/esp-idf!19296
2022-08-02 22:41:06 +08:00
Ivan Grokhotkov 0d4a533b74 Merge branch 'bugfix/usb_console_reset' into 'master'
esp_system: usb_console: fix restart when Wi-Fi is working

Closes IDFGH-5683

See merge request espressif/esp-idf!19289
2022-08-01 13:36:44 +08:00
Ivan Grokhotkov bf10146a15 esp_system, vfs: fix incomplete blocking reads in vfs_cdcacm
Blocking read from cdcacm VFS could return less bytes than requested.
This didn’t match the behaviour of other VFS drivers, and higher level
code could misbehave.
2022-07-28 17:28:08 +02:00
Ivan Grokhotkov 3254f8deae esp_system: usb_console: fix restart when Wi-Fi is working
Previously, reset over USB CDC was done by calling esp_restart from
an interrupt handler. This works only until some restart hook function
is registered using esp_register_shutdown_handler, and the hook
function tries to do something that isn’t allowed in an interrupt
handler. One such case is with Wi-Fi. When Wi-Fi driver is installed,
it registers esp_wifi_stop as a shutdown handler function. However
esp_wifi_stop cannot be called from an ISR, and hence we shouldn’t
call esp_restart from an ISR either.

This commit modifies USB CDC driver to call esp_restart by posting it
to esp_timer task.

Closes https://github.com/espressif/esp-idf/issues/7404
2022-07-28 17:15:03 +02:00
Ivan Grokhotkov 0330e952d1 Merge branch 'feature/add-wl-support-fatfsparse' into 'master'
fatfsparse.py: Add support for WL

Closes IDF-4994 and IDF-5522

See merge request espressif/esp-idf!18760
2022-07-27 16:01:02 +08:00
Ivan Grokhotkov c38c153f6a Merge branch 'bugfix/cpu_utils_watchpoint_num' into 'master'
xtensa: fix swapped breakpoint and watchpoint numbers

Closes IDFCI-1315

See merge request espressif/esp-idf!19213
2022-07-26 20:31:10 +08:00
Ivan Grokhotkov a97686f607 xtensa: fix swapped breakpoint and watchpoint numbers 2022-07-25 09:43:10 +02:00
Ivan Grokhotkov e56b1fd59d Merge branch 'feature/unity_runner_get_test_list' into 'master'
unity: expose some internal functions to allow iterating over tests

See merge request espressif/esp-idf!19056
2022-07-20 16:57:49 +08:00
Ivan Grokhotkov de3990f1c0 Merge branch 'doc/esp32c2_jtag' into 'master'
docs: update JTAG related information for ESP32-C2

Closes IDF-4327

See merge request espressif/esp-idf!18496
2022-07-20 01:55:23 +08:00
Ivan Grokhotkov c0e94c6688 Merge branch 'feature/update-gdb-to-11.2_20220715' into 'master'
tools: update gdb version to '11.2_20220715'

Closes IDFGH-7787

See merge request espressif/esp-idf!19071
2022-07-19 16:04:07 +08:00
Ivan Grokhotkov eeb2808a32 Merge branch 'bugfix/check_readmes_pre_commit_idf_path' into 'master'
ci: allow running check-readmes pre-commit hook without IDF_PATH set

See merge request espressif/esp-idf!19055
2022-07-19 04:46:30 +08:00
Ivan Grokhotkov 1b1068ce22 Merge branch 'feature/console_log_level_command' into 'master'
console: add log_level command to the example

See merge request espressif/esp-idf!18614
2022-07-16 16:53:51 +08:00
Ivan Grokhotkov ef9e89062a console: add log_level command to the example
This allows calling esp_log_level_set function from the console.
Together with CONFIG_LOG_MAXIMUM_LEVEL option, this allows enabling
logs from different tags at run time.
2022-07-15 14:51:05 +02:00
Ivan Grokhotkov 0abf886284 console: support ESP32-C2 in the 'version' command 2022-07-15 14:51:04 +02:00
Ivan Grokhotkov 09c70d5781 unity: expose some internal functions to allow iterating over tests 2022-07-14 19:47:46 +02:00
Ivan Grokhotkov 8870ffc6e1 ci: allow running check-readmes pre-commit hook without IDF_PATH set
... which may happen when making a git commit using a GUI tool.
2022-07-14 16:32:20 +02:00
Ivan Grokhotkov 2ce10d44ab docs: update JTAG related information for ESP32-C2 2022-07-14 15:57:43 +02:00
Ivan Grokhotkov 230e732018 Merge branch 'feature/system_init_priorities' into 'master'
esp_system: introduce priorities for startup functions

Closes IDFGH-5683 and IDF-4954

See merge request espressif/esp-idf!18159
2022-07-14 06:22:25 +08:00
Ivan Grokhotkov 02f28ef32a Merge branch 'bugfix/esp_error_check_func_addr' into 'master'
esp_err: two minor issues

Closes IDFGH-7530

See merge request espressif/esp-idf!18665
2022-07-14 04:14:16 +08:00
Ivan Grokhotkov 9a00475bd9 esp_common: include stdlib.h into esp_err.h for 'abort' declaration
Closes https://github.com/espressif/esp-idf/issues/9093
2022-07-12 17:01:47 +02:00
Ivan Grokhotkov ca7c9947fc esp_system: fix address printed by ESP_ERROR_CHECK
...to point to the calling function, not to _esp_error_check_failed.
2022-07-12 17:01:47 +02:00
Ivan Grokhotkov a334cd50ce app_trace: perform initialization using ESP_SYSTEM_INIT_FN 2022-07-12 16:58:15 +02:00
Ivan Grokhotkov 0e53b32d2e esp_hw_support: perform sleep initialization using ESP_SYSTEM_INIT_FN 2022-07-12 16:58:15 +02:00
Ivan Grokhotkov bb771fb7c4 esp_timer: perform initialization using ESP_SYSTEM_INIT_FN
(startup.c still calls esp_timer_early_init directly)
2022-07-12 16:58:15 +02:00
Ivan Grokhotkov 42654927d5 esp_system: add a script to check the startup priorities 2022-07-12 16:58:14 +02:00
Ivan Grokhotkov 523aacd413 esp_system: allow defining priorities for startup functions
* Some components have initialization dependencies. To account for
  them, simple numeric priority values are introduced.
* esp_system_init_fn_array moved into Flash from DRAM
* System init functions defined using ESP_SYSTEM_INIT_FN now return
  an error code. This enables simpler and more consistent error
  handling in the init functions. Returning an error from an init
  function is now a valid approach — the startup code will print
  an error and abort.
2022-07-12 16:58:14 +02:00
Ivan Grokhotkov b0191ef292 examples: import_lib: add example test 2022-07-12 15:04:28 +02:00
Ivan Grokhotkov 94230777d9 examples: import_lib: simplify with fatfs partition generator
Instead of embedding the file and copying it to the FAT partition at
run time, generate the FAT partition with the file in it.
2022-07-12 15:04:28 +02:00
Ivan Grokhotkov faa349b93f global: remove tinyxml2 submodule 2022-07-12 15:04:28 +02:00
Ivan Grokhotkov b2e129fe4f examples: import_lib: demonstrate ExternalProject_Add
Many of the more complicated CMake projects can't be added to the IDF
build system simply by calling add_subdirectory.
"add_subdirectory" also cannot be used with projects which use build
systems other than CMake (for example GNU Make or cargo).
This commit changes the example to use ExternalProject_Add, instead,
which is a more general way of adding subprojects.
As part of this change, tinyxml2 is now downloaded from the Internet,
which allows removing one submodule.
2022-07-12 15:00:10 +02:00
Ivan Grokhotkov 2e37218ce5 soc, hal: remove XTAL_CLK_FREQ
XTAL_CLK_FREQ now depends on the actual XTAL used, remove this macro
and get the XTAL frequency from the RTC register instead.
No uses of XTAL_CLK_FREQ found, other than in the UART LL.
2022-07-11 12:24:58 +08:00
Ivan Grokhotkov a1d7089b59 ci: add build-only test for esp32c2 with 26 MHz XTAL option enabled 2022-07-11 12:24:58 +08:00
Ivan Grokhotkov 5b54ae76d4 esp_timer, hal: add support for non-integer systimer frequency
When ESP32-C2 is paired with a 26 MHz XTAL, the systimer tick
frequency becomes equal to 26 / 2.5 = 10.4 MHz. Previously we always
assumed that systimer tick frequency is integer (and 1 MHz * power of
two, above that!).
This commit introduces a new LL macro, SYSTIMER_LL_TICKS_PER_US_DIV.
It should be set in such a way that:

1. SYSTIMER_LL_TICKS_PER_US / SYSTIMER_LL_TICKS_PER_US_DIV equals the
   actual systimer tick frequency,
2. and SYSTIMER_LL_TICKS_PER_US is integer.

For ESP32-C2 this means that SYSTIMER_LL_TICKS_PER_US = 52 and
SYSTIMER_LL_TICKS_PER_US_DIV = 5.

This introduced two possible issues:

1. Overflow when multiplying systimer counter by 5
   - Should not be an issue, since systimer counter is 52-bit, so
     counter * 5 is no more than 55-bit.
2. The code needs to perform:
   - divide by 5: when converting from microseconds to ticks
   - divide by 52: when converting from ticks to microseconds
   The latter potentially introduces a performance issue for the
   esp_timer_get_time function.
2022-07-11 12:24:37 +08:00
Ivan Grokhotkov f0f9890096 bootloader: set the initial XTAL frequency based on the Kconfig option 2022-07-08 15:04:26 +08:00
Ivan Grokhotkov 672e70a023 esp_hw_support: add 26 MHz XTAL option for esp32c2
Some esp32c2 boards will be produced with a 26 MHz XTAL. This commit
adds the basic Kconfig option for this type of hardware.
Support for CONFIG_ESP32C2_XTAL_FREQ_26 in other areas of IDF will be
implemented in subsequent commits.
2022-07-08 15:04:17 +08:00
Ivan Grokhotkov 4c3dec9705 ci: check_public_headers: run for all targets 2022-06-29 22:49:51 +02:00
Ivan Grokhotkov fefbf6a5b3 ci: check_public_headers: exclude sections generated on RISC-V target 2022-06-29 22:48:16 +02:00
Ivan Grokhotkov 28ac778099 ci: check_public_headers: run the build in a temporary directory
this allows running multiple builds for different targets
2022-06-29 22:47:02 +02:00
Ivan Grokhotkov 87180907f7 Merge branch 'bugfix/nvs_part_ptr_wrong_init' into 'master'
bugfix (nvs_flash): Fix nvs_flash_init_partition_ptr

Closes IDFGH-7503 and IDFGH-7152

See merge request espressif/esp-idf!18503
2022-06-23 21:23:39 +08:00
Ivan Grokhotkov 88d2a221f1 fatfs, spiffs: add missing dependency on vfs
Since vfs is no longer a common component, the dependency needs to be
added explicitly.
2022-06-21 17:16:49 +02:00
Ivan Grokhotkov 3973db7664 soc: make register access macros compatible with C++20
In C++20, using the result of an assignment to a 'volatile' value is
deprecated.

Breaking change: register "setter" or modification macros can no
longer be used as expressions.

Closes https://github.com/espressif/esp-idf/issues/9170
2022-06-17 18:09:22 +02:00
Ivan Grokhotkov 157247f98f asio: fix example for compatibility with C++20
Fix deprecated-enum-enum-conversion warning when compiling the
example with C++20
2022-06-17 16:44:17 +02:00
Ivan Grokhotkov 9ff37d122a esp_common: add handling for designated inits for C++20 2022-06-17 16:44:17 +02:00
Ivan Grokhotkov 9dba0476a0 asio: disable concepts support
The bundled version of asio uses legacy concepts syntax
(https://en.cppreference.com/w/cpp/experimental/constraints) which is
not accepted by GCC with -std=c++20.
Disable the concepts support until asio is upgraded to a version which
supports the new syntax.
2022-06-17 16:44:17 +02:00
Ivan Grokhotkov 7f971429bc cmake: allow lower language versions when building for linux target 2022-06-17 16:44:17 +02:00
Ivan Grokhotkov a2ca5d03c5 examples, components: remove C/C++ standard overrides
...where they are not necessary after switching to C17 and C++20.
2022-06-17 16:44:17 +02:00