Commit Graph

198 Commits

Author SHA1 Message Date
Konstantin Kondrashov
399d2d2605 all: Using xxx_periph.h
Using xxx_periph.h in whole IDF instead of xxx_reg.h, xxx_struct.h, xxx_channel.h ... .

Cleaned up header files from unnecessary headers (releated to soc/... headers).
2019-06-03 14:15:08 +08:00
Angus Gratton
22514c1dd9 cmake: For gcc8 use linker to find paths to libc, libm, libstdc++, etc
Removes the need to know/guess the paths to these libraries. Once we are gcc 8 only, we
can remove -nostdlib and no additional arguments are needed for system libraries.

The catch is: any time IDF overrides a symbol in the toolchain sysroot, we need
an undefined linker marker to make sure this symbol is seen by linker.
2019-05-28 12:54:37 +08:00
Renz Christian Bagaporo
2c12080049 components: correct dependency information for linking without link groups 2019-05-28 10:51:02 +08:00
Roland Dobai
0ae53691ba Rename Kconfig options (components/esp32) 2019-05-21 09:09:01 +02:00
Roland Dobai
92950db44e Rename Kconfig options (components/lwip) 2019-05-21 09:09:01 +02:00
Roland Dobai
c5000c83d2 Rename Kconfig options (root) 2019-05-21 09:09:01 +02:00
Renz Christian Bagaporo
ffec9d4947 components: update with build system changes 2019-05-13 19:59:17 +08:00
Angus Gratton
a20d02b7f1 Merge branch 'feature/remove_dependency_to_soc' into 'master'
global: remove dependency to soc everywhere except driver and kernel components

See merge request idf/esp-idf!4678
2019-04-18 08:08:41 +08:00
Ivan Grokhotkov
48109e1f5d Merge branch 'bugfix/adjtime_ut' into 'master'
newlib: Fix adjtime

See merge request idf/esp-idf!4676
2019-04-17 15:15:31 +08:00
Ivan Grokhotkov
bb4f5617ab test: clean up "leaks" tags from most unit tests 2019-04-16 20:07:40 +08:00
Michael (XIAO Xufeng)
562af8f65e global: move the soc component out of the common list
This MR removes the common dependency from every IDF components to the SOC component.

Currently, in the ``idf_functions.cmake`` script, we include the header path of SOC component by default for all components.
But for better code organization (or maybe also benifits to the compiling speed), we may remove the dependency to SOC components for most components except the driver and kernel related components.

In CMAKE, we have two kinds of header visibilities (set by include path visibility):

(Assume component A --(depends on)--> B, B is the current component)

1. public (``COMPONENT_ADD_INCLUDEDIRS``): means this path is visible to other depending components (A) (visible to A and B)
2. private (``COMPONENT_PRIV_INCLUDEDIRS``): means this path is only visible to source files inside the component (visible to B only)

and we have two kinds of depending ways:

(Assume component A --(depends on)--> B --(depends on)--> C, B is the current component)

1. public (```COMPONENT_REQUIRES```): means B can access to public include path of C. All other components rely on you (A) will also be available for the public headers. (visible to A, B)
2. private (``COMPONENT_PRIV_REQUIRES``): means B can access to public include path of C, but don't propagate this relation to other components (A). (visible to B)

1. remove the common requirement in ``idf_functions.cmake``, this makes the SOC components invisible to all other components by default.
2. if a component (for example, DRIVER) really needs the dependency to SOC, add a private dependency to SOC for it.
3. some other components that don't really depends on the SOC may still meet some errors saying "can't find header soc/...", this is because it's depended component (DRIVER) incorrectly include the header of SOC in its public headers. Moving all this kind of #include into source files, or private headers
4. Fix the include requirements for some file which miss sufficient #include directives. (Previously they include some headers by the long long long header include link)

This is a breaking change. Previous code may depends on the long include chain.
You may need to include the following headers for some files after this commit:

- soc/soc.h
- soc/soc_memory_layout.h
- driver/gpio.h
- esp_sleep.h

The major broken include chain includes:

1. esp_system.h no longer includes esp_sleep.h. The latter includes driver/gpio.h and driver/touch_pad.h.
2. ets_sys.h no longer includes soc/soc.h
3. freertos/portmacro.h no longer includes soc/soc_memory_layout.h

some peripheral headers no longer includes their hw related headers, e.g. rom/gpio.h no longer includes soc/gpio_pins.h and soc/gpio_reg.h

BREAKING CHANGE
2019-04-16 13:21:15 +08:00
Anton Maklakov
a567b6c1f6 pthread: Use a definition only if we have the old toolchain 2019-04-10 21:07:10 +07:00
Ivan Grokhotkov
5719cd6fac newlib: when compiling with GCC8, use newlib headers and libraries from toolchain 2019-04-10 13:52:30 +08:00
Ivan Grokhotkov
05aab5c0b9 newlib: force including IDF locks implementation 2019-04-10 13:52:30 +08:00
Ivan Grokhotkov
898b4bdf4d newlib: when compiling with GCC8, use newlib headers and libraries from toolchain 2019-04-10 13:52:30 +08:00
Ivan Grokhotkov
31b4fc8eb8 pthread: add dummy implementation of pthread_setcancelstate
Used by new versions of newlib in stdio functions.
2019-04-10 13:48:57 +08:00
Ivan Grokhotkov
d15e18aa5d newlib: fixes for compatibility with newlib 3.0 2019-04-10 13:48:57 +08:00
Ivan Grokhotkov
4770acf1cb newlib: add missing tzset() to the time test 2019-04-10 13:48:57 +08:00
Konstantin Kondrashov
62a9eacced newlib: Fix adjtime
Fixed adjtime function: While using the adjtime() function,
the time correction accumulated an error
when reading the time frequently (using gettimeofday).
2019-04-10 04:33:44 +00:00
Renz Christian Bagaporo
90ee405afd ldgen: update component linker fragment files 2019-04-04 15:57:34 +08:00
morris
c159984264 separate rom from esp32 component to esp_rom
1. separate rom include files and linkscript to esp_rom
2. modefiy "include rom/xxx.h" to "include esp32/rom/xxx.h"
3. Forward compatible
4. update mqtt
2019-03-21 18:51:45 +08:00
Ivan Grokhotkov
106dc05903 Merge branch 'feature/specify_includes_belonging_esp32' into 'master'
move esp32 chip specific includes to esp32/xxx.h

See merge request idf/esp-idf!4534
2019-03-21 18:34:08 +08:00
Ivan Grokhotkov
068b700786 newlib: remove usage of pre-ANSI defines 2019-03-19 22:15:26 +08:00
Ivan Grokhotkov
ac612b5422 newlib: enable timeradd, timersub, and similar macros
This uses a hack (temporarily defining __rtems__ from a wrapper header
file) to include timeradd, timersub, and similar macros, without
modifying newlib headers.
2019-03-19 22:15:12 +08:00
Ivan Grokhotkov
76d4b0150d Revert "feat(time): enable the macro timeradd, timersub, timerclear, etc."
This reverts commit 8f994b9dce.
2019-03-19 22:15:06 +08:00
morris
956c25dedd move esp32 chip specific includes to esp32/xxx.h 2019-03-18 17:14:05 +08:00
Roland Dobai
aa9d302814 VFS: Implement poll() based on select()
Closes https://github.com/espressif/esp-idf/issues/2945
2019-02-25 10:34:27 +01:00
Angus Gratton
7f28bce42e newlib: When using psram, link setlocale() to flash not IRAM 2019-02-22 03:28:41 +00:00
Angus Gratton
bd97b139eb newlib: When using psram, link qsort to flash not IRAM 2019-02-22 03:28:41 +00:00
Angus Gratton
7f307423c1 newlib: Provide library name for ROM libc object files linked as PSRAM workarounds
Works around bug reported on forums where any source file ending in *lock.c or *creat.c
was being linked to IRAM.

https://esp32.com/viewtopic.php?f=13&t=8909&p=37362#p37362

Also moves all related functionality to newlib component.
2019-01-24 11:30:05 +08:00
Angus Gratton
769bd4a4af linker: When using section type attributes, create unique sections
* Prevents section type conflict errors if (say) const & non-const data
  is put into the same section (ie with DRAM_ATTR)

* Allows linker --gc-sections to remove unused custom sections
2018-12-19 04:42:04 +00:00
Renz Christian Bagaporo
37d30c7a6e cmake: separate app from idf lib project
mbedtls: import mbedtls using unmodified cmake file
2018-11-27 13:59:24 +08:00
Ivan Grokhotkov
8deb885ce3 newlib: disable some optimizations for syscalls.c
Don’t allow the compiler to convert malloc + memset into calloc,
causing a recursive call in _calloc_r. Fixes crash when building with
-O2 optimization level.
2018-11-22 12:19:49 +08:00
Ivan Grokhotkov
6091021e83 unity: separate common and IDF specific functionality
New unity component can be used for testing other applications.
Upstream version of Unity is included as a submodule.
Utilities specific to ESP-IDF unit tests (partitions, leak checking
setup/teardown functions, etc) are kept only in unit-test-app.
Kconfig options are added to allow disabling certain Unity features.
2018-11-19 12:36:31 +08:00
Konstantin Kondrashov
b00be955ee newlib: Fix UT adjtime 2018-11-16 04:11:55 +00:00
Roland Dobai
fb334baa7c VFS: Implement utime() 2018-11-05 09:54:01 +01:00
Konstantin Kondrashov
84f1eb5eac newlib: Fix UT adjtime 2018-11-01 20:34:39 +08:00
Renz Bagaporo
cc774111bf cmake: Add support for test build 2018-10-20 12:07:24 +08:00
Ivan Grokhotkov
9240bbb708 esp32: remove ROM functions redefined in IDF from LD script
In some cases, linker could choose to use ROM functions instead of the
ones defined in IDF.
For functions used in ROM stub table, this would lead to infinite
recursion when the corresponding function was called from ROM.
For crypto functions, some of these were modified in IDF, and
incompatible with ROM counterparts.
2018-10-02 01:20:04 +00:00
Anurag Kar
f27db1f241 pthread : Add support for attributes and few APIs
This introduces the following changes :
    * Implmentation added for pthread attribute related functions :
        * pthread_attr_init
        * pthread_attr_destroy
        * pthread_attr_setdetachstate
        * pthread_attr_getdetachstate
        * pthread_attr_getstacksize
        * pthread_attr_setstacksize
    * pthread_create now supports passing attributes/configs through pthread_attr_t structure
    * pthread_mutex_timedlock added
    * pthread_exit added
    * memory for joinable thread is freed before returning from pthread_join
2018-09-22 02:35:27 +05:30
Renz Christian Bagaporo
944014f9f2 cmake: fix source list issues 2018-09-13 08:56:59 +08:00
Renz Christian Bagaporo
d9939cedd9 cmake: make main a component again 2018-09-11 09:44:12 +08:00
Angus Gratton
b355854d4d Merge branch 'master' into feature/cmake 2018-09-05 10:35:04 +08:00
Ivan Grokhotkov
6d865c6104 Merge branch 'feature/termios' into 'master'
Add basic support for termios.h

See merge request idf/esp-idf!3085
2018-09-04 20:42:21 +08:00
Angus Gratton
83a179abb0 esp32: Add esp_fill_random() function
Convenience function to fill a buffer with random bytes.

Add some unit tests (only sanity checks, really.)
2018-09-03 04:39:45 +00:00
Roland Dobai
5395435816 Add basic support for termios.h
Closes https://github.com/espressif/esp-idf/issues/2063
2018-08-30 14:29:20 +02:00
Angus Gratton
a9c4ed7139 Merge branch 'master' into feature/cmake 2018-08-30 18:51:01 +08:00
Ivan Grokhotkov
946a823ccb syscalls: fix type conversion for _raise_r stub 2018-08-29 12:49:15 +08:00
Angus Gratton
ff2404a272 Merge branch 'master' into feature/cmake 2018-08-16 17:14:17 +10:00
Roland Dobai
ce3cb5c3aa expat: add source of entropy 2018-08-02 11:02:45 +02:00
Ivan Grokhotkov
1fdbbec13a syscalls: fix arguments and return type for _raise_r
ROM code still uses incorrect function signature.

Closes https://github.com/espressif/esp-idf/issues/2245.
2018-07-31 12:08:04 +03:00
David Cermak
1ef13c524c asio: initial idf port of asio library without ssl 2018-07-30 06:28:43 +00:00
Ivan Grokhotkov
81ce7e4afa newlib: fix unit test for psram config 2018-07-24 09:56:40 +03:00
Ivan Grokhotkov
6d46220456 Merge branch 'feature/clock_gettime' into 'master'
newlib: Add function clock_gettime()

See merge request idf/esp-idf!2610
2018-07-04 18:09:04 +08:00
Konstantin Kondrashov
e274940a46 newlib: Add some functions from _POSIX_TIMERS
clock_gettime();
clock_settime();
clock_getres();

Closes https://github.com/espressif/esp-idf/issues/1302
2018-07-03 07:28:29 +05:00
Anton Maklakov
93f6700be7 newlib: fix errors for GCC 8 support
components/newlib/include/sys/reent.h:405:11: error: unnecessary parentheses in declaration of '_sig_func' [-Werror=parentheses]
   void (**(_sig_func))(int);
           ^
2018-07-02 09:05:00 +00:00
Angus Gratton
fd88d6d89c heap: Add integer overflow checks 2018-06-19 23:31:37 +00:00
Renz Bagaporo
ea711f2ee9 vfs, fatfs: Add file truncate for fatfs 2018-06-14 06:37:21 +08:00
Mahavir Jain
eef8d0f7ed Resolve required include header dependencies in component itself
Signed-off-by: Mahavir Jain <mahavir@espressif.com>
2018-06-12 11:19:39 +05:30
Angus Gratton
c99a30a167 Merge branch 'bugfix/wakeup_from_deep_sleep' into 'master'
esp32: Fix not the right time spent in a deep sleep

See merge request idf/esp-idf!2501
2018-06-08 10:40:47 +08:00
Konstantin Kondrashov
7e2a3da643 esp32: Fix not the right time spent in a deep sleep
Before entering the deep sleep, the RTC and FRC counters are synchronized. Updating the boot_time.
Added a unit test for this case.
Fixed warnings for MULTIPLE_STAGES

Closes https://github.com/espressif/esp-idf/issues/1840
2018-06-06 18:59:30 +05:00
Konstantin Kondrashov
b1189f4f6a newlib: Remove RTC_DATA_ATTR for adjtime
Using RTC_DATA_ATTR in newlib leads to increased power consumption in sleep mode. (RTC SLOW MEM)
2018-06-04 15:59:22 +05:00
Angus Gratton
6b9784cc45 Merge branch 'master' into feature/cmake_update 2018-05-31 14:46:23 +10:00
Ivan Grokhotkov
9d47f348ab Merge branch 'feature/adjtime_newlib' into 'master'
newlib: Add adjtime - makes a gradual adjustment the system clock

See merge request idf/esp-idf!2462
2018-05-30 15:00:13 +08:00
Roland Dobai
bdbcc492cf VFS: Add debugging outputs for select() related functions 2018-05-29 11:01:25 +02:00
Konstantin Kondrashov
6f529cbe64 newlib: Add adjtime - makes a gradual adjustment the system clock
This function speeds up or slows down the system clock in order to make a gradual adjustment. This ensures
 that the calendar time reported by the system clock is always monotonically increasing, which might not happen
 if you simply set the clock.

The delta argument specifies a relative adjustment to be made to the clock time. If negative, the system clock is
 slowed down for a while until it has lost this much elapsed time. If positive, the system clock is speeded up for a
 while.

If the olddelta argument is not a null pointer, the adjtime function returns information about any previous time
 adjustment that has not yet completed.

The return value is 0 on success and -1 on failure.

To stop the adjustement, call the function settimeofday(current_time).
2018-05-28 17:36:04 +05:00
Roland Dobai
e86738205d Fix redefinition of select() on platforms where ESP_PLATFORM is discarded
Ref: https://github.com/espressif/esp-idf/issues/1987
2018-05-25 13:37:43 +00:00
Roland Dobai
004bf84d8c VFS: Optionally disable the VFS implementation of select()
This allows to temporarily resolve issues like
https://github.com/espressif/esp-idf/issues/1987
while bugs are fixed in the VFS implementation of select().
2018-05-23 10:14:16 +02:00
Roland Dobai
18e83bcd53 Allow VFS file descriptors in select() 2018-05-18 08:06:33 +02:00
Roland Dobai
5129bca67c VFS: Use smaller numbers as file descriptors 2018-05-07 09:01:56 +02:00
Angus Gratton
1cb5712463 cmake: Add component dependency support
Components should set the COMPONENT_REQUIRES & COMPONENT_PRIVATE_REQUIRES variables to define their
requirements.
2018-04-30 09:59:20 +10:00
Angus Gratton
88df8fd293 cmake: Use cmake_lint project, tidy up all CMake source files 2018-04-30 09:59:20 +10:00
Angus Gratton
4f1a856dbf cmake: Remove defaults for COMPONENT_SRCDIRS, COMPONENT_SRCS, COMPONENT_ADD_INCLUDEDIRS
* Philosophical: "explicit is better than implicit".
* Practical: Allows useful errors if invalid directories given in components as the defaults aren't
  always used. Also trims the -I path from a number of components that have no actual include
  directory.
* Simplifies knowing which components will be header-only and which won't
2018-04-30 09:59:20 +10:00
Angus Gratton
c671a0c3eb build system: Initial cmake support, work in progress 2018-04-30 09:59:20 +10:00
Ivan Grokhotkov
22fbcd276c Merge branch 'feature/amazon_freertos_compat_v2' into 'master'
Changes for Amazon Freertos compatibility

See merge request idf/esp-idf!2123
2018-04-20 14:55:47 +08:00
Ivan Grokhotkov
6185e722c3 Revert "Merge branch 'feature/vfs_select' into 'master'"
This reverts merge request !2074
2018-04-20 11:51:41 +08:00
Ivan Grokhotkov
41ae0fe52b newlib: define _REENT_INIT_PTR correctly for ESP_PLATFORM 2018-04-19 18:28:55 +05:30
Roland Dobai
6852d653bd Allow VFS file descriptors in select() 2018-04-17 11:25:30 +02:00
Roland Dobai
744c2dcdd9 Resolve problems found by enabling -Wwrite-strings compilation flag 2018-04-10 08:53:43 +02:00
Ivan Grokhotkov
bee1afaf6d time: rename time source option from FRC to "high-resolution timer"
libc time function now rely on esp_timer_get_time as the source of
high-resolution time, rather than FRC1 timer. Internally, on the ESP32
esp_timer implementation uses FRC2 timer.

- Change help text and labels in Kconfig to use "high-resolution timer"
  instead of FRC1. Keep existing Kconfig option name to be backwards
  compatible.
- Change references to "FRC1" in the source code to "FRC".
2017-12-11 12:37:08 +08:00
Ivan Grokhotkov
df74211fc3 newlib/time: fix compilation error when only RTC is used as clock source
Fixes https://github.com/espressif/esp-idf/issues/1245
2017-12-08 16:17:47 +08:00
Angus Gratton
7d20e4e422 newlib: Remove out of date libc_discard.list 2017-11-16 17:43:05 +11:00
Angus Gratton
239ac0e17b newlib: Add strptime(), qsort_r(), nanf() to libc & libc_nano
These functions were discarded but not provided in ROM.

Generated from commit 8ad0aa7d6 in newlib script repo. Didn't rebuild most of libc/libc_nano,
only appended the missing object files to the existing archives (should save some git churn).
2017-11-16 17:35:18 +11:00
Angus Gratton
454e47385c Merge branch 'bugfix/select_fdset' into 'master'
LWIP: Fix select() FD_SET/FD_GET/etc

See merge request !1435
2017-10-23 10:55:33 +08:00
Ivan Grokhotkov
59b7d98fec Merge branch 'feature/dfs' into 'master'
Dynamic frequency scaling

See merge request !1189
2017-10-22 12:34:11 +08:00
Angus Gratton
f76a3c45c0 newlib: Disable sys/types.h implementations of FD_SET, etc.
Temporary measure, until we have VFS-level select() support.

Closes https://github.com/espressif/esp-idf/issues/1141
2017-10-20 18:11:32 +08:00
Ivan Grokhotkov
cc67500d3e unit test: adapt tests to single core configuration 2017-10-19 21:35:21 +08:00
Ivan Grokhotkov
37e9bc715c esp_clk.h: make public, add getters for RTC time, CPU/APB freq 2017-10-18 14:19:14 +08:00
Ivan Grokhotkov
f13623d97d make esp_timer.h public 2017-10-18 12:31:38 +08:00
Angus Gratton
48d9d507aa newlib: Remove fcntl() implementation from libc
Allows fcntl() implementation in vfs to be used.

Closes https://github.com/espressif/esp-idf/issues/1070

Note this is different to the other libc file-related syscalls, as there is no
reent structure involved.
2017-10-16 09:45:50 +08:00
Jeroen Domburg
875ae6a134 Add option to allocate external RAM using heap_alloc_caps 2017-09-14 10:47:44 +08:00
Ivan Grokhotkov
5425d8569c Merge branch 'feature/pthread_api' into 'master'
esp32: pthread API

See merge request !1146
2017-09-07 17:49:42 +08:00
Angus Gratton
f8339fc1bd newlib: Avoid deprecation warning calling system_get_time() from system_relative_time() 2017-09-07 16:32:05 +10:00
Alexey Gerenkov
20942421c3 According to review comments 2017-09-06 10:30:23 +08:00
Alexey Gerenkov
0b09c7006d pthread: Initial version of thread API 2017-09-06 10:30:23 +08:00
Angus Gratton
8670844acf build system: Restore ifdef/ifndef in Makefiles, clean up examples build 2017-09-05 16:11:03 +10:00
Deomid Ryabkov
9903ea1c11 Add --warn-undefined-variables to MAKEFLAGS
Fix warnings where undefined vars are used.

Make Kconfig emit "FOO=" for unset bool options
To ensure make variables are always defined, even if empty.

When writing auto.conf, include symbols disabled by dependency to make sure all make variables are always defined.

Fixes espressif/esp-idf#137

Cherry-picked from https://github.com/espressif/esp-idf/pull/138
2017-09-05 16:10:46 +10:00
Jeroen Domburg
34372a091c Add initial SPI RAM support. This adds support for an ESP-PSRAM32 chip connected to the default flash pins and GPIO 16 and 17. The RAM is mapped to address 0x3F800000, but otherwise ignored by esp-idf as of yet. 2017-09-04 12:05:49 +08:00
Ivan Grokhotkov
f31efb697c newlib: rename esp_setup_time_syscalls to esp_set_time_from_rtc
This function no longer sets up syscalls, and new name reflects its
purpose better.
2017-09-01 10:36:14 +08:00
michael
8f994b9dce feat(time): enable the macro timeradd, timersub, timerclear, etc.
TW#14488

Closes https://github.com/espressif/esp-idf/issues/867
2017-08-30 14:08:14 +08:00