From 639687f92bf489a0e2dab4f4ed464e06420ad3ad Mon Sep 17 00:00:00 2001 From: Kirill Chalov Date: Tue, 23 Jul 2019 17:45:41 +0800 Subject: [PATCH] Replace gif images on EN and zh_CN index pages with identical png images for successful building of PDFs on ReadTheDocs. --- docs/_static/api-guides.gif | Bin 3285 -> 0 bytes docs/_static/api-guides.png | Bin 0 -> 7875 bytes docs/_static/api-reference.gif | Bin 3100 -> 0 bytes docs/_static/api-reference.png | Bin 0 -> 6986 bytes docs/_static/contribute.gif | Bin 3377 -> 0 bytes docs/_static/contribute.png | Bin 0 -> 6437 bytes docs/_static/esp32-pico-kit-v4.1-layout.jpg | Bin 90612 -> 0 bytes docs/_static/get-started-garbled-output.png | Bin 0 -> 17717 bytes docs/_static/get-started.gif | Bin 2865 -> 0 bytes docs/_static/get-started.png | Bin 0 -> 6625 bytes docs/_static/hw-reference.gif | Bin 3032 -> 0 bytes docs/_static/hw-reference.png | Bin 0 -> 6567 bytes docs/_static/resources.gif | Bin 2454 -> 0 bytes docs/_static/resources.png | Bin 0 -> 4482 bytes docs/en/get-started-legacy/index.rst | 8 +- docs/en/get-started/index.rst | 8 +- docs/en/index.rst | 12 +- docs/zh_CN/get-started-legacy/index.rst | 894 +++++++++--------- docs/zh_CN/get-started/index.rst | 986 ++++++++++---------- docs/zh_CN/index.rst | 12 +- 20 files changed, 960 insertions(+), 960 deletions(-) delete mode 100644 docs/_static/api-guides.gif create mode 100644 docs/_static/api-guides.png delete mode 100644 docs/_static/api-reference.gif create mode 100644 docs/_static/api-reference.png delete mode 100644 docs/_static/contribute.gif create mode 100644 docs/_static/contribute.png delete mode 100644 docs/_static/esp32-pico-kit-v4.1-layout.jpg create mode 100644 docs/_static/get-started-garbled-output.png delete mode 100644 docs/_static/get-started.gif create mode 100644 docs/_static/get-started.png delete mode 100644 docs/_static/hw-reference.gif create mode 100644 docs/_static/hw-reference.png delete mode 100644 docs/_static/resources.gif create mode 100644 docs/_static/resources.png diff --git a/docs/_static/api-guides.gif b/docs/_static/api-guides.gif deleted file mode 100644 index bc9dd36dba1f4c17e6cda59528cf28c8d66bc67e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3285 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 diff --git a/docs/_static/api-guides.png b/docs/_static/api-guides.png new file mode 100644 index 0000000000000000000000000000000000000000..885e36bba1300f1d83220cfe9cc79a6a435267a2 GIT binary patch literal 7875 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 H4Ez59?Tp%x diff --git a/docs/_static/api-reference.png b/docs/_static/api-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..91b09ad6e747923218a309ae366baa3eda09a727 GIT binary patch literal 6986 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 i|34Y-lsn==pJS_!d2W7aBa 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 S1`CKvl8Z`7!_d;wy!^q- diff --git a/docs/_static/contribute.png b/docs/_static/contribute.png new file mode 100644 index 0000000000000000000000000000000000000000..1984736545fb6090fddeb65c71e57aac2e075d57 GIT binary patch literal 6437 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 No7ZZu%H&Nx{|`-9U~K>Z literal 0 HcmV?d00001 diff --git a/docs/_static/esp32-pico-kit-v4.1-layout.jpg b/docs/_static/esp32-pico-kit-v4.1-layout.jpg deleted file mode 100644 index 3c9e64fcf51da1ddf764b4ce198a763c386f9b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90612 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 BRIdO4 diff --git a/docs/_static/get-started-garbled-output.png b/docs/_static/get-started-garbled-output.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6dd68ca388d8dc958f03aa305a47e11dc94d7c GIT binary patch literal 17717 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 P|4vDZD~MH!82J4^%w0@h literal 0 HcmV?d00001 diff --git a/docs/_static/get-started.gif b/docs/_static/get-started.gif deleted file mode 100644 index 7a7a8023b694b3fe0baaeaaa00a8110de2181795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2865 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 diff --git a/docs/_static/get-started.png b/docs/_static/get-started.png new file mode 100644 index 0000000000000000000000000000000000000000..3444635115adc3cfbddfb098cbea231747f79567 GIT binary patch literal 6625 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 OSUMW|>UFAi@&5x4yHHO6 literal 0 HcmV?d00001 diff --git a/docs/_static/hw-reference.gif b/docs/_static/hw-reference.gif deleted file mode 100644 index 0b969c209988a8f8993dbc3e79e42588e12d6313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3032 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 jE&gNQ)7xsu6>TGgWNaWur}o1J_h0Q diff --git a/docs/_static/hw-reference.png b/docs/_static/hw-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..ec31ab52b9796f9adcc0eb88086b4c3bfc5a5839 GIT binary patch literal 6567 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 MQt4~O7vsSH0W}+RlmGw# literal 0 HcmV?d00001 diff --git a/docs/_static/resources.gif b/docs/_static/resources.gif deleted file mode 100644 index cde4bd80946ced3c907e931d3c66f7aa3c1b0845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 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 PRp|6}jJ0uE4pILBOVc!_ literal 0 HcmV?d00001 diff --git a/docs/en/get-started-legacy/index.rst b/docs/en/get-started-legacy/index.rst index bd3d000ce..7e8f93ca0 100644 --- a/docs/en/get-started-legacy/index.rst +++ b/docs/en/get-started-legacy/index.rst @@ -373,10 +373,10 @@ To exit IDF monitor use the shortcut ``Ctrl+]``. If IDF monitor fails shortly after the upload, or if instead of the messages above you see a random garbage similar to what is given below, your board is likely using a 26MHz crystal. Most development board designs use 40MHz, so ESP-IDF uses this frequency as a default value. -.. code-block:: none - - e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA - ~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp +.. figure:: ../../_static/get-started-garbled-output.png + :align: center + :alt: Garbled output + :figclass: align-center If you have such a problem, do the following: diff --git a/docs/en/get-started/index.rst b/docs/en/get-started/index.rst index 51b87fa32..713362bb7 100644 --- a/docs/en/get-started/index.rst +++ b/docs/en/get-started/index.rst @@ -447,10 +447,10 @@ To exit IDF monitor use the shortcut ``Ctrl+]``. If IDF monitor fails shortly after the upload, or, if instead of the messages above, you see random garbage similar to what is given below, your board is likely using a 26MHz crystal. Most development board designs use 40MHz, so ESP-IDF uses this frequency as a default value. -.. code-block:: none - - e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA - ~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp +.. figure:: ../../_static/get-started-garbled-output.png + :align: center + :alt: Garbled output + :figclass: align-center If you have such a problem, do the following: diff --git a/docs/en/index.rst b/docs/en/index.rst index d8a10c1d4..2a2f3382a 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst @@ -14,24 +14,24 @@ This is the documentation for Espressif IoT Development Framework (`esp-idf `_。 - - -.. figure:: ../../_static/what-you-need.png - :align: center - :alt: ESP32 应用程序开发 - :figclass: align-center - - ESP32 应用程序开发 - - -开发板简介 -========== - -请点击下方连接,了解有关具体开发板的详细信息。 - -.. toctree:: - :maxdepth: 1 - - ESP32-DevKitC <../hw-reference/get-started-devkitc> - ESP-WROVER-KIT <../hw-reference/get-started-wrover-kit> - ESP32-PICO-KIT <../hw-reference/get-started-pico-kit> - ESP32-Ethernet-Kit <../hw-reference/get-started-ethernet-kit> - - -.. _get-started-step-by-step-legacy: - -详细安装步骤 -============ - -请根据下方详细步骤,完成安装过程。 - -设置开发环境 -~~~~~~~~~~~~ - -* :ref:`get-started-setup-toolchain-legacy` -* :ref:`get-started-get-esp-idf-legacy` -* :ref:`get-started-setup-path-legacy` -* :ref:`get-started-get-packages-legacy` - -创建您的第一个工程 -~~~~~~~~~~~~~~~~~~ - -* :ref:`get-started-start-project-legacy` -* :ref:`get-started-connect-legacy` -* :ref:`get-started-configure-legacy` -* :ref:`get-started-build-and-flash-legacy` -* :ref:`get-started-monitor-legacy` - - -.. _get-started-setup-toolchain-legacy: - -第一步:设置工具链 -================== - -工具链指一套用于编译代码和应用程序的程序。 - -为了加快开发进度,您可以直接使用乐鑫提供的预制工具链。请根据您的操作系统,点击下方对应的链接,并按照链接中的指导进行安装。 - -.. toctree:: - :hidden: - - Windows - Linux - MacOS - -+-----------------------------+-------------------------+----------------------------------+ -| |windows-logo| | |linux-logo| | |macos-logo| | -+-----------------------------+-------------------------+----------------------------------+ -| `Windows `_ | `Linux `_ | `Mac OS `_ | -+-----------------------------+-------------------------+----------------------------------+ - -.. |windows-logo| image:: ../../_static/windows-logo.png - :target: ../get-started-legacy/windows-setup.html - -.. |linux-logo| image:: ../../_static/linux-logo.png - :target: ../get-started-legacy/linux-setup.html - -.. |macos-logo| image:: ../../_static/macos-logo.png - :target: ../get-started-legacy/macos-setup.html - -.. _Windows-legacy: ../get-started-legacy/windows-setup.html -.. _Linux-legacy: ../get-started-legacy/linux-setup.html -.. _Mac OS-legacy: ../get-started-legacy/macos-setup.html - -.. note:: - - 在本文档中,Linux 和 MacOS 操作系统中 ESP-IDF 的默认安装路径为 ``~/esp``;Windows 操作系统的默认路径为 ``%userprofile%\esp``。您也可以将 ESP-IDF 安装在任何其他路径下,但请注意在使用命令行时进行相应替换。注意,ESP-IDF 不支持带有空格的路径。 - -此外, 您也可以根据自身经验和实际需求,对环境进行个性化设置,而非使用预制工具链。此时,请前往 :ref:`工具链的个性化设置` 章节获取更多信息。 - - -.. _get-started-get-esp-idf-legacy: - -第二步:获取 ESP-IDF -===================== - -除了工具链,您还需要供 ESP32 使用的 API(软件库和源代码),具体请见 `ESP-IDF 仓库 `_。 - -获取本地副本:打开终端,切换到你要存放 ESP-IDF 的工作目录,使用 ``git clone`` 命令克隆远程仓库。 - -打开终端,后运行以下命令: - -.. include:: /_build/inc/git-clone-bash.inc - -ESP-IDF 将下载至 ``~/esp/esp-idf``。 - -请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 - -.. include:: /_build/inc/git-clone-notes.inc - -.. note:: - - 在克隆远程仓库时,不要忘记加上 ``--recursive`` 选项。否则,请接着运行以下命令,获取所有子模块: :: - - cd esp-idf - git submodule update --init - - -.. _get-started-setup-path-legacy: - -第三步:设置环境变量 -===================== - -工具链通过环境变量 ``IDF_PATH`` 获得 ESP-IDF 的目录。因此,您需要在 PC 中设置该环境变量,否则无法编译工程。 - -您可以在每次重启会话时手动设置,也可以在用户配置中进行永久设置,具体请前往 :doc:`add-idf_path-to-profile` 章节,查看 :ref:`Windows ` 、:ref:`Linux 及 MacOS ` 操作系统的具体设置方式。 - - -.. _get-started-get-packages-legacy: - -第四步:安装 Python 软件包 -========================== - -ESP-IDF 所需 Python 软件包位于 ``IDF_PATH/requirements.txt`` 中。您可以运行以下命令进行安装: :: - - python -m pip install --user -r $IDF_PATH/requirements.txt - -.. note:: - - 请注意查询您所使用的 Python 解释器的版本(运行命令 ``python --version``),并根据查询结果将上方命令中的 ``python`` 替换为 ``python2``, ``python2.7``,例如: :: - - python2.7 -m pip install --user -r $IDF_PATH/requirements.txt - - -.. _get-started-start-project-legacy: - -第五步:开始创建工程 -===================== - -现在,您可以开始准备开发 ESP32 应用程序了。您可以从 ESP-IDF 中 :idf:`examples` 目录下的 :example:`get-started/hello_world` 工程开始。 - -将 :example:`get-started/hello_world` 复制至您本地的 ``~/esp`` 目录下: - -Linux 和 MacOS 操作系统 -~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: bash - - cd ~/esp - cp -r $IDF_PATH/examples/get-started/hello_world . - -Windows 操作系统 -~~~~~~~~~~~~~~~~~~ - -.. code-block:: batch - - cd %userprofile%\esp - xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world - -ESP-IDF 的 :idf:`examples` 目录下有一系列示例工程,都可以按照上面的方法进行创建。您可以按照上述方法复制并运行其中的任何示例,也可以直接编译示例,无需进行复制。 - -.. important:: - - ESP-IDF 编译系统不支持带有空格的路径。 - -.. _get-started-connect-legacy: - -第六步:连接设备 -================== - -现在,请将您的 ESP32 开发板连接到 PC,并查看开发板使用的串口。 - -通常,串口在不同操作系统下显示的名称有所不同: - -- **Windows 操作系统:** ``COM1`` 等 -- **Linux 操作系统:** 以 ``/dev/tty`` 开始 -- **MacOS 操作系统:** 以 ``/dev/cu.`` 开始 - -有关如何查看串口名称的详细信息,请见 :doc:`establish-serial-connection`。 - -.. note:: - - 请记住串口名,您会在下面的步骤中用到。 - - -.. _get-started-configure-legacy: - -第七步:配置 -============= - -请进入 :ref:`get-started-start-project-legacy` 中提到的 ``hello_world`` 目录,并运行工程配置工具 ``menuconfig``。 - -Linux 和 MacOS 操作系统 -~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: bash - - cd ~/esp/hello_world - make menuconfig - -Windows 操作系统 -~~~~~~~~~~~~~~~~~~~ - -.. code-block:: batch - - cd %userprofile%\esp\hello_world - make menuconfig - -如果之前的步骤都正确,则会显示下面的菜单: - -.. figure:: ../../_static/project-configuration.png - :align: center - :alt: 工程配置 — 主窗口 - :figclass: align-center - - 工程配置 — 主窗口 - -进入菜单后,选择 ``Serial flasher config`` > ``Default serial port`` 配置串口(设备将通过该串口加载工程)。按回车键确认选择,点击 ``< Save >`` 保存配置,然后点击 ``< Exit >`` 退出 ``menuconfig``。 - -``menuconfig`` 工具的常见操作见下。 - -* ``上下箭头``:移动 -* ``回车``:进入子菜单 -* ``ESC 键``:返回上级菜单或退出 -* ``英文问号``:调出帮助菜单(退出帮助菜单,请按回车键)。 -* ``空格``、``Y 键``或``N 键``:使能/禁用 ``[*]`` 配置选项 -* ``英文问号`` :调出有关高亮选项的帮助菜单 -* ``/ 键``:寻找配置项目 - -.. note:: - - 如果您是 **Arch Linux** 用户,请前往 ``SDK tool configuration``,并将 ``Python 2 interpreter`` 的名称从 ``python`` 替换为 ``python2``。 - -.. attention:: - - 如果您使用的是 ESP32-DevKitC(板载 ESP32-SOLO-1 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式(:ref:`CONFIG_FREERTOS_UNICORE`)。 - -.. _get-started-build-and-flash-legacy: - -第八步:编译和烧录 -==================== - -请使用以下命令,编译烧录工程: :: - - make flash - -运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件。接着,这些二进制文件将被烧录至 ESP32 开发板。 - -如果一切顺利,您可在烧录完成后看到类似下方的打印信息(代表加载进程)。接着,开发板将会复位,应用程序 "hello_world" 开始启动。 - -.. highlight:: none - -:: - - esptool.py v2.0-beta2 - Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)... - esptool.py v2.0-beta2 - Connecting........___ - Uploading stub... - Running stub... - Stub running... - Changing baud rate to 921600 - Changed. - Attaching SPI flash... - Configuring flash size... - Auto-detected Flash size:4MB - Flash params set to 0x0220 - Compressed 11616 bytes to 6695... - Wrote 11616 bytes (6695 compressed) at 0x00001000 in 0.1 seconds (effective 920.5 kbit/s)... - Hash of data verified. - Compressed 408096 bytes to 171625... - Wrote 408096 bytes (171625 compressed) at 0x00010000 in 3.9 seconds (effective 847.3 kbit/s)... - Hash of data verified. - Compressed 3072 bytes to 82... - Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 8297.4 kbit/s)... - Hash of data verified. - - Leaving... - Hard resetting... - - -如果您希望使用 Eclipse IDE,而非 ``make`` 编译系统,请参考 :doc:`Eclipse 指南 `。 - - -.. _get-started-monitor-legacy: - -第九步:监视器 -=============== - -您可以使用 ``make monitor`` 命令,监视 “hello_world” 的运行情况。 - -运行该命令后,:doc:`IDF 监视器 <../api-guides/tools/idf-monitor>` 应用程序将启动: :: - - $ make monitor - MONITOR - --- idf_monitor on /dev/ttyUSB0 115200 --- - --- Quit:Ctrl+] | Menu:Ctrl+T | Help:Ctrl+T followed by Ctrl+H --- - ets Jun 8 2016 00:22:57 - - rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) - ets Jun 8 2016 00:22:57 - ... - -此时,您就可以在启动日志和诊断日志之后,看到打印的 “Hello world!” 了。 - -.. code-block:: none - - ... - Hello world! - Restarting in 10 seconds... - I (211) cpu_start:Starting scheduler on APP CPU. - Restarting in 9 seconds... - Restarting in 8 seconds... - Restarting in 7 seconds... - -您可使用快捷键 ``Ctrl+]``,退出 IDF 监视器。 - -如果 IDF 监视器在烧录后很快发生错误,或打印信息全是乱码(见下),很有可能是因为您的开发板选用了 26 MHz 晶振,而 ESP-IDF 默认支持大多数开发板使用的 40 MHz 晶振。 - -.. code-block:: none - - e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA - ~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp - -此时,请您: - -1. 退出监视器。 -2. 打开 :ref:`menuconfig `, -3. 进入 ``Component config`` --> ``ESP32-specific`` --> ``Main XTAL frequency`` 进行配置,将 :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` 设置为 26 MHz。 -4. 然后,请重新 :ref:`编译和烧录 ` 应用程序。 - -.. note:: - - 您也可以运行以下命令,一次性执行构建、烧录和监视过程: :: - - make flash monitor - -此外,请前往 :doc:`IDF 监视器 <../api-guides/tools/idf-monitor>`,了解更多使用 IDF 监视器的快捷键和其他详情。 - -**恭喜,您已完成 ESP32 的入门学习!** - -现在,您可以尝试一些其他 :idf:`examples`,或者直接开发自己的应用程序。 - - -环境变量 -========= - -用户可以在使用 ``make`` 命令时 **直接设置** 部分环境变量,而无需进入 ``make menuconfig`` 进行重新配置。这些变量包括: - -+-----------------+-----------------------------------------------------------------------+ -| 变量 | 描述与使用方式 | -+-----------------+-----------------------------------------------------------------------+ -| ``ESPPORT`` | 覆盖 ``flash`` 和 ``monitor`` 命令使用的串口。 | -+ +-----------------------------------------------------------------------+ -| | 例:``make flash ESPPORT=/dev/ttyUSB1``, ``make monitor ESPPORT=COM1``| -+-----------------+-----------------------------------------------------------------------+ -| ``ESPBAUD`` | 覆盖烧录 ESP32 时使用的串口速率。 | -+ +-----------------------------------------------------------------------+ -| | 例:``make flash ESPBAUD=9600`` | -+-----------------+-----------------------------------------------------------------------+ -| ``MONITORBAUD`` | 覆盖监控时使用的串口速率。 | -+ +-----------------------------------------------------------------------+ -| | 例:``make monitor MONITORBAUD=9600`` | -+-----------------+-----------------------------------------------------------------------+ - -.. note:: - - 您可导出环境变量(例:``export ESPPORT=/dev/ttyUSB1``)。 - 在同一会话窗口中,如果未被同步覆盖,所有 ``make`` 命令均会使用导出的环境变量值。 - - -更新 ESP-IDF -============= - -乐鑫会不时推出更新版本的 ESP-IDF,修复 bug 或提出新的特性。因此,在使用时,您也应注意更新您本地的版本。最简单的方法是:直接删除您本地的 ``esp-idf`` 文件夹,然后按照 :ref:`get-started-get-esp-idf-legacy` 中的指示,重新完成克隆。 - -如果您希望将 ESP-IDF 克隆到新的路径下,请务必 :doc:`重新设置 IDF_PATH `。否则,工具链将无法找到 ESP-IDF。 - -此外,您可以仅更新变更部分。具体方式,请前往 :ref:`更新 ` 章节查看。 - -相关文档 -========= - -.. toctree:: - :maxdepth: 1 - - add-idf_path-to-profile - establish-serial-connection - make-project - eclipse-setup - ../api-guides/tools/idf-monitor - toolchain-setup-scratch - -.. _Stable version: https://docs.espressif.com/projects/esp-idf/zh_CN/stable/ -.. _Releases page: https://github.com/espressif/esp-idf/releases +*************************** +快速入门 (传统 GNU Make) +*************************** +:link_to_translation:`en:[English]` + +.. include:: ../gnu-make-legacy.rst + +本文档旨在指导用户搭建 ESP32 硬件开发的软件环境, + +通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。 + +.. include:: /_build/inc/version-note.inc + +概述 +==== + +ESP32 SoC 芯片支持以下功能: + +* 2.4 GHz Wi-Fi +* 蓝牙 4.2 标准 +* 高性能双核 +* 超低功耗协处理器 +* 多种外设 + +ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。 + +乐鑫为用户提供完整的软、硬件资源,进行 ESP32 硬件设备的开发。其中,乐鑫的软件开发环境 ESP-IDF 旨在协助用户快速开发物联网 (IoT) 应用,可满足用户对 Wi-Fi、蓝牙、低功耗等方面的要求。 + +准备工作 +======== + +硬件: + +* 一款 **ESP32** 开发板 +* **USB 数据线** (USB A/Micro USB B) +* PC(Windows、Linux 或 Mac OS) + +软件: + +* 设置 **工具链**,用于编译 ESP32 **应用程序**; +* 获取 **ESP-IDF** 软件开发框架。该框架已经基本包含 ESP32 使用的 API(软件库和源代码)和运行 **工具链** 的脚本; +* 安装 C 语言编程(**工程**)的 **文本编辑器**,例如 `Eclipse `_。 + + +.. figure:: ../../_static/what-you-need.png + :align: center + :alt: ESP32 应用程序开发 + :figclass: align-center + + ESP32 应用程序开发 + + +开发板简介 +========== + +请点击下方连接,了解有关具体开发板的详细信息。 + +.. toctree:: + :maxdepth: 1 + + ESP32-DevKitC <../hw-reference/get-started-devkitc> + ESP-WROVER-KIT <../hw-reference/get-started-wrover-kit> + ESP32-PICO-KIT <../hw-reference/get-started-pico-kit> + ESP32-Ethernet-Kit <../hw-reference/get-started-ethernet-kit> + + +.. _get-started-step-by-step-legacy: + +详细安装步骤 +============ + +请根据下方详细步骤,完成安装过程。 + +设置开发环境 +~~~~~~~~~~~~ + +* :ref:`get-started-setup-toolchain-legacy` +* :ref:`get-started-get-esp-idf-legacy` +* :ref:`get-started-setup-path-legacy` +* :ref:`get-started-get-packages-legacy` + +创建您的第一个工程 +~~~~~~~~~~~~~~~~~~ + +* :ref:`get-started-start-project-legacy` +* :ref:`get-started-connect-legacy` +* :ref:`get-started-configure-legacy` +* :ref:`get-started-build-and-flash-legacy` +* :ref:`get-started-monitor-legacy` + + +.. _get-started-setup-toolchain-legacy: + +第一步:设置工具链 +================== + +工具链指一套用于编译代码和应用程序的程序。 + +为了加快开发进度,您可以直接使用乐鑫提供的预制工具链。请根据您的操作系统,点击下方对应的链接,并按照链接中的指导进行安装。 + +.. toctree:: + :hidden: + + Windows + Linux + MacOS + ++-----------------------------+-------------------------+----------------------------------+ +| |windows-logo| | |linux-logo| | |macos-logo| | ++-----------------------------+-------------------------+----------------------------------+ +| `Windows `_ | `Linux `_ | `Mac OS `_ | ++-----------------------------+-------------------------+----------------------------------+ + +.. |windows-logo| image:: ../../_static/windows-logo.png + :target: ../get-started-legacy/windows-setup.html + +.. |linux-logo| image:: ../../_static/linux-logo.png + :target: ../get-started-legacy/linux-setup.html + +.. |macos-logo| image:: ../../_static/macos-logo.png + :target: ../get-started-legacy/macos-setup.html + +.. _Windows-legacy: ../get-started-legacy/windows-setup.html +.. _Linux-legacy: ../get-started-legacy/linux-setup.html +.. _Mac OS-legacy: ../get-started-legacy/macos-setup.html + +.. note:: + + 在本文档中,Linux 和 MacOS 操作系统中 ESP-IDF 的默认安装路径为 ``~/esp``;Windows 操作系统的默认路径为 ``%userprofile%\esp``。您也可以将 ESP-IDF 安装在任何其他路径下,但请注意在使用命令行时进行相应替换。注意,ESP-IDF 不支持带有空格的路径。 + +此外, 您也可以根据自身经验和实际需求,对环境进行个性化设置,而非使用预制工具链。此时,请前往 :ref:`工具链的个性化设置` 章节获取更多信息。 + + +.. _get-started-get-esp-idf-legacy: + +第二步:获取 ESP-IDF +===================== + +除了工具链,您还需要供 ESP32 使用的 API(软件库和源代码),具体请见 `ESP-IDF 仓库 `_。 + +获取本地副本:打开终端,切换到你要存放 ESP-IDF 的工作目录,使用 ``git clone`` 命令克隆远程仓库。 + +打开终端,后运行以下命令: + +.. include:: /_build/inc/git-clone-bash.inc + +ESP-IDF 将下载至 ``~/esp/esp-idf``。 + +请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 + +.. include:: /_build/inc/git-clone-notes.inc + +.. note:: + + 在克隆远程仓库时,不要忘记加上 ``--recursive`` 选项。否则,请接着运行以下命令,获取所有子模块: :: + + cd esp-idf + git submodule update --init + + +.. _get-started-setup-path-legacy: + +第三步:设置环境变量 +===================== + +工具链通过环境变量 ``IDF_PATH`` 获得 ESP-IDF 的目录。因此,您需要在 PC 中设置该环境变量,否则无法编译工程。 + +您可以在每次重启会话时手动设置,也可以在用户配置中进行永久设置,具体请前往 :doc:`add-idf_path-to-profile` 章节,查看 :ref:`Windows ` 、:ref:`Linux 及 MacOS ` 操作系统的具体设置方式。 + + +.. _get-started-get-packages-legacy: + +第四步:安装 Python 软件包 +========================== + +ESP-IDF 所需 Python 软件包位于 ``IDF_PATH/requirements.txt`` 中。您可以运行以下命令进行安装: :: + + python -m pip install --user -r $IDF_PATH/requirements.txt + +.. note:: + + 请注意查询您所使用的 Python 解释器的版本(运行命令 ``python --version``),并根据查询结果将上方命令中的 ``python`` 替换为 ``python2``, ``python2.7``,例如: :: + + python2.7 -m pip install --user -r $IDF_PATH/requirements.txt + + +.. _get-started-start-project-legacy: + +第五步:开始创建工程 +===================== + +现在,您可以开始准备开发 ESP32 应用程序了。您可以从 ESP-IDF 中 :idf:`examples` 目录下的 :example:`get-started/hello_world` 工程开始。 + +将 :example:`get-started/hello_world` 复制至您本地的 ``~/esp`` 目录下: + +Linux 和 MacOS 操作系统 +~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + cd ~/esp + cp -r $IDF_PATH/examples/get-started/hello_world . + +Windows 操作系统 +~~~~~~~~~~~~~~~~~~ + +.. code-block:: batch + + cd %userprofile%\esp + xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world + +ESP-IDF 的 :idf:`examples` 目录下有一系列示例工程,都可以按照上面的方法进行创建。您可以按照上述方法复制并运行其中的任何示例,也可以直接编译示例,无需进行复制。 + +.. important:: + + ESP-IDF 编译系统不支持带有空格的路径。 + +.. _get-started-connect-legacy: + +第六步:连接设备 +================== + +现在,请将您的 ESP32 开发板连接到 PC,并查看开发板使用的串口。 + +通常,串口在不同操作系统下显示的名称有所不同: + +- **Windows 操作系统:** ``COM1`` 等 +- **Linux 操作系统:** 以 ``/dev/tty`` 开始 +- **MacOS 操作系统:** 以 ``/dev/cu.`` 开始 + +有关如何查看串口名称的详细信息,请见 :doc:`establish-serial-connection`。 + +.. note:: + + 请记住串口名,您会在下面的步骤中用到。 + + +.. _get-started-configure-legacy: + +第七步:配置 +============= + +请进入 :ref:`get-started-start-project-legacy` 中提到的 ``hello_world`` 目录,并运行工程配置工具 ``menuconfig``。 + +Linux 和 MacOS 操作系统 +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + cd ~/esp/hello_world + make menuconfig + +Windows 操作系统 +~~~~~~~~~~~~~~~~~~~ + +.. code-block:: batch + + cd %userprofile%\esp\hello_world + make menuconfig + +如果之前的步骤都正确,则会显示下面的菜单: + +.. figure:: ../../_static/project-configuration.png + :align: center + :alt: 工程配置 — 主窗口 + :figclass: align-center + + 工程配置 — 主窗口 + +进入菜单后,选择 ``Serial flasher config`` > ``Default serial port`` 配置串口(设备将通过该串口加载工程)。按回车键确认选择,点击 ``< Save >`` 保存配置,然后点击 ``< Exit >`` 退出 ``menuconfig``。 + +``menuconfig`` 工具的常见操作见下。 + +* ``上下箭头``:移动 +* ``回车``:进入子菜单 +* ``ESC 键``:返回上级菜单或退出 +* ``英文问号``:调出帮助菜单(退出帮助菜单,请按回车键)。 +* ``空格``、``Y 键``或``N 键``:使能/禁用 ``[*]`` 配置选项 +* ``英文问号`` :调出有关高亮选项的帮助菜单 +* ``/ 键``:寻找配置项目 + +.. note:: + + 如果您是 **Arch Linux** 用户,请前往 ``SDK tool configuration``,并将 ``Python 2 interpreter`` 的名称从 ``python`` 替换为 ``python2``。 + +.. attention:: + + 如果您使用的是 ESP32-DevKitC(板载 ESP32-SOLO-1 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式(:ref:`CONFIG_FREERTOS_UNICORE`)。 + +.. _get-started-build-and-flash-legacy: + +第八步:编译和烧录 +==================== + +请使用以下命令,编译烧录工程: :: + + make flash + +运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件。接着,这些二进制文件将被烧录至 ESP32 开发板。 + +如果一切顺利,您可在烧录完成后看到类似下方的打印信息(代表加载进程)。接着,开发板将会复位,应用程序 "hello_world" 开始启动。 + +.. highlight:: none + +:: + + esptool.py v2.0-beta2 + Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)... + esptool.py v2.0-beta2 + Connecting........___ + Uploading stub... + Running stub... + Stub running... + Changing baud rate to 921600 + Changed. + Attaching SPI flash... + Configuring flash size... + Auto-detected Flash size:4MB + Flash params set to 0x0220 + Compressed 11616 bytes to 6695... + Wrote 11616 bytes (6695 compressed) at 0x00001000 in 0.1 seconds (effective 920.5 kbit/s)... + Hash of data verified. + Compressed 408096 bytes to 171625... + Wrote 408096 bytes (171625 compressed) at 0x00010000 in 3.9 seconds (effective 847.3 kbit/s)... + Hash of data verified. + Compressed 3072 bytes to 82... + Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 8297.4 kbit/s)... + Hash of data verified. + + Leaving... + Hard resetting... + + +如果您希望使用 Eclipse IDE,而非 ``make`` 编译系统,请参考 :doc:`Eclipse 指南 `。 + + +.. _get-started-monitor-legacy: + +第九步:监视器 +=============== + +您可以使用 ``make monitor`` 命令,监视 “hello_world” 的运行情况。 + +运行该命令后,:doc:`IDF 监视器 <../api-guides/tools/idf-monitor>` 应用程序将启动: :: + + $ make monitor + MONITOR + --- idf_monitor on /dev/ttyUSB0 115200 --- + --- Quit:Ctrl+] | Menu:Ctrl+T | Help:Ctrl+T followed by Ctrl+H --- + ets Jun 8 2016 00:22:57 + + rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) + ets Jun 8 2016 00:22:57 + ... + +此时,您就可以在启动日志和诊断日志之后,看到打印的 “Hello world!” 了。 + +.. code-block:: none + + ... + Hello world! + Restarting in 10 seconds... + I (211) cpu_start:Starting scheduler on APP CPU. + Restarting in 9 seconds... + Restarting in 8 seconds... + Restarting in 7 seconds... + +您可使用快捷键 ``Ctrl+]``,退出 IDF 监视器。 + +如果 IDF 监视器在烧录后很快发生错误,或打印信息全是乱码(见下),很有可能是因为您的开发板选用了 26 MHz 晶振,而 ESP-IDF 默认支持大多数开发板使用的 40 MHz 晶振。 + +.. figure:: ../../_static/get-started-garbled-output.png + :align: center + :alt: 乱码输出 + :figclass: align-center + +此时,请您: + +1. 退出监视器。 +2. 打开 :ref:`menuconfig `, +3. 进入 ``Component config`` --> ``ESP32-specific`` --> ``Main XTAL frequency`` 进行配置,将 :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` 设置为 26 MHz。 +4. 然后,请重新 :ref:`编译和烧录 ` 应用程序。 + +.. note:: + + 您也可以运行以下命令,一次性执行构建、烧录和监视过程: :: + + make flash monitor + +此外,请前往 :doc:`IDF 监视器 <../api-guides/tools/idf-monitor>`,了解更多使用 IDF 监视器的快捷键和其他详情。 + +**恭喜,您已完成 ESP32 的入门学习!** + +现在,您可以尝试一些其他 :idf:`examples`,或者直接开发自己的应用程序。 + + +环境变量 +========= + +用户可以在使用 ``make`` 命令时 **直接设置** 部分环境变量,而无需进入 ``make menuconfig`` 进行重新配置。这些变量包括: + ++-----------------+-----------------------------------------------------------------------+ +| 变量 | 描述与使用方式 | ++-----------------+-----------------------------------------------------------------------+ +| ``ESPPORT`` | 覆盖 ``flash`` 和 ``monitor`` 命令使用的串口。 | ++ +-----------------------------------------------------------------------+ +| | 例:``make flash ESPPORT=/dev/ttyUSB1``, ``make monitor ESPPORT=COM1``| ++-----------------+-----------------------------------------------------------------------+ +| ``ESPBAUD`` | 覆盖烧录 ESP32 时使用的串口速率。 | ++ +-----------------------------------------------------------------------+ +| | 例:``make flash ESPBAUD=9600`` | ++-----------------+-----------------------------------------------------------------------+ +| ``MONITORBAUD`` | 覆盖监控时使用的串口速率。 | ++ +-----------------------------------------------------------------------+ +| | 例:``make monitor MONITORBAUD=9600`` | ++-----------------+-----------------------------------------------------------------------+ + +.. note:: + + 您可导出环境变量(例:``export ESPPORT=/dev/ttyUSB1``)。 + 在同一会话窗口中,如果未被同步覆盖,所有 ``make`` 命令均会使用导出的环境变量值。 + + +更新 ESP-IDF +============= + +乐鑫会不时推出更新版本的 ESP-IDF,修复 bug 或提出新的特性。因此,在使用时,您也应注意更新您本地的版本。最简单的方法是:直接删除您本地的 ``esp-idf`` 文件夹,然后按照 :ref:`get-started-get-esp-idf-legacy` 中的指示,重新完成克隆。 + +如果您希望将 ESP-IDF 克隆到新的路径下,请务必 :doc:`重新设置 IDF_PATH `。否则,工具链将无法找到 ESP-IDF。 + +此外,您可以仅更新变更部分。具体方式,请前往 :ref:`更新 ` 章节查看。 + +相关文档 +========= + +.. toctree:: + :maxdepth: 1 + + add-idf_path-to-profile + establish-serial-connection + make-project + eclipse-setup + ../api-guides/tools/idf-monitor + toolchain-setup-scratch + +.. _Stable version: https://docs.espressif.com/projects/esp-idf/zh_CN/stable/ +.. _Releases page: https://github.com/espressif/esp-idf/releases diff --git a/docs/zh_CN/get-started/index.rst b/docs/zh_CN/get-started/index.rst index 1baf28fcb..9f0a9ee90 100644 --- a/docs/zh_CN/get-started/index.rst +++ b/docs/zh_CN/get-started/index.rst @@ -1,493 +1,493 @@ -******************* -快速入门(CMake) -******************* - -:link_to_translation:`en:[English]` - -本文档旨在指导用户搭建 ESP32 硬件开发的软件环境, - -通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。 - -.. include:: /_build/inc/version-note.inc - -概述 -==== - -ESP32 SoC 芯片支持以下功能: - -* 2.4 GHz Wi-Fi -* 蓝牙 4.2 标准 -* 高性能双核 -* 超低功耗协处理器 -* 多种外设 - -ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。 - -乐鑫为用户提供完整的软、硬件资源,进行 ESP32 硬件设备的开发。其中,乐鑫的软件开发环境 ESP-IDF 旨在协助用户快速开发物联网 (IoT) 应用,可满足用户对 Wi-Fi、蓝牙、低功耗等方面的要求。 - -准备工作 -======== - -硬件: - -* 一款 **ESP32** 开发板 -* **USB 数据线** (USB A/Micro USB B) -* PC(Windows、Linux 或 Mac OS) - -软件: - -* 设置 **工具链**,用于编译 ESP32 代码; -* **编译工具** —— CMake 和 Ninja 编译工具,用于编译 ESP32 **应用程序**; -* 获取 **ESP-IDF** 软件开发框架。该框架已经基本包含 ESP32 使用的 API(软件库和源代码)和运行 **工具链** 的脚本; -* 安装 C 语言编程(**工程**)的 **文本编辑器**,例如 `Eclipse `_。 - - -.. figure:: ../../_static/what-you-need.png - :align: center - :alt: ESP32 应用程序开发 - :figclass: align-center - - ESP32 应用程序开发 - - -开发板简介 -========== - -请点击下方连接,了解有关具体开发板的详细信息。 - -.. toctree:: - :maxdepth: 1 - - ESP32-DevKitC <../hw-reference/get-started-devkitc> - ESP-WROVER-KIT <../hw-reference/get-started-wrover-kit> - ESP32-PICO-KIT <../hw-reference/get-started-pico-kit> - ESP32-Ethernet-Kit <../hw-reference/get-started-ethernet-kit> - - -.. _get-started-step-by-step: - -详细安装步骤 -============== - -请根据下方详细步骤,完成安装过程。 - -设置开发环境 -~~~~~~~~~~~~~~~~ - -* :ref:`get-started-setup-toolchain` -* :ref:`get-started-get-esp-idf` -* :ref:`get-started-setup-path` -* :ref:`get-started-get-packages` - -创建您的第一个工程 -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* :ref:`get-started-start-project` -* :ref:`get-started-connect` -* :ref:`get-started-configure` -* :ref:`get-started-build` -* :ref:`get-started-flash` -* :ref:`get-started-build-monitor` - - -.. _get-started-setup-toolchain: - -第一步:设置工具链 -==================== - -工具链指一套用于编译代码和应用程序的程序。 - -为了加快开发进度,您可以直接使用乐鑫提供的预制工具链。请根据您的操作系统,点击下方对应的链接,并按照链接中的指导进行安装。 - -.. toctree:: - :hidden: - - Windows - Linux - MacOS - -+-------------------+-------------------+-------------------+ -| |windows-logo| | |linux-logo| | |macos-logo| | -+-------------------+-------------------+-------------------+ -| `Windows`_ | `Linux`_ | `Mac OS`_ | -+-------------------+-------------------+-------------------+ - -.. |windows-logo| image:: ../../_static/windows-logo.png - :target: ../get-started/windows-setup.html - -.. |linux-logo| image:: ../../_static/linux-logo.png - :target: ../get-started/linux-setup.html - -.. |macos-logo| image:: ../../_static/macos-logo.png - :target: ../get-started/macos-setup.html - -.. _Windows: ../get-started/windows-setup.html -.. _Linux: ../get-started/linux-setup.html -.. _Mac OS: ../get-started/macos-setup.html - -.. note:: - - 在本文档中,Linux 和 MacOS 操作系统中 ESP-IDF 的默认安装路径为 ``~/esp``;Windows 操作系统的默认路径为 ``%userprofile%\esp``。您也可以将 ESP-IDF 安装在任何其他路径下,但请注意在使用命令行时进行相应替换。注意,ESP-IDF 不支持带有空格的路径。 - -此外, 您也可以根据自身经验和实际需求,对环境进行个性化设置,而非使用预制工具链。此时,请前往 :ref:`工具链的个性化设置` 章节获取更多信息。 - - -.. _get-started-get-esp-idf: - -第二步:获取 ESP-IDF -=========================== - -除了工具链,您还需要供 ESP32 使用的 API(软件库和源代码),具体请见 `ESP-IDF 仓库 `_。 - -请将 ESP-IDF 下载到您的本地。 - -获取本地副本:打开终端,切换到你要存放 ESP-IDF 的工作目录,使用 ``git clone`` 命令克隆远程仓库。 - -Linux 和 MacOS 操作系统 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -打开终端,后运行以下命令: - -.. include:: /_build/inc/git-clone-bash.inc - -ESP-IDF 将下载至 ``~/esp/esp-idf``。 - -请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 - -Windows 操作系统 -~~~~~~~~~~~~~~~~~~ - -.. note:: - - 较早版本 ESP-IDF 使用了 **MSYS2 bash 终端** 命令行。目前,基于 CMake 的编译系统可使用常见的 **Windows 命令窗口**,即本指南中使用的终端。 - -请注意,如果您使用基于 bash 的终端或 PowerShell 终端,一些命令语法将与下面描述有所不同。 - -打开命令提示符,后运行以下命令: - -.. include:: /_build/inc/git-clone-windows.inc - -ESP-IDF 将下载至 ``%userprofile%\esp\esp-idf``。 - -请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 - -.. include:: /_build/inc/git-clone-notes.inc - -.. note:: - - 在克隆远程仓库时,不要忘记加上 ``--recursive`` 选项。否则,请接着运行以下命令,获取所有子模块: :: - - cd esp-idf - git submodule update --init - -.. _get-started-setup-path: - -第三步:设置环境变量 -=========================== - -请在您的 PC 上设置以下环境变量,否则无法编译工程。 - -- ``IDF_PATH`` 应设置为 ESP-IDF 根目录的路径。 -- ``PATH`` 应包括同一 ``IDF_PATH`` 目录下的 ``tools`` 目录路径。 - -您可以在每次重启会话时手动设置,也可以在用户配置中进行永久设置,具体请前往 :doc:`add-idf_path-to-profile` 章节,查看 :ref:`Windows ` 、:ref:`Linux 及 MacOS ` 操作系统的具体设置方式。 - - -.. _get-started-get-packages: - -第四步:安装 Python 软件包 -================================= - -ESP-IDF 所需的 Python 软件包位于 ``IDF_PATH/requirements.txt`` 中。您可以运行以下命令进行安装: :: - - python -m pip install --user -r $IDF_PATH/requirements.txt - -.. note:: - - 请注意查询您所使用的 Python 解释器的版本(运行命令 ``python --version``),并根据查询结果将上方命令中的 ``python`` 替换为 ``python2``, ``python2.7``,例如: - - ``python2.7 -m pip install --user -r $IDF_PATH/requirements.txt`` - -.. _get-started-start-project: - -第五步:开始创建工程 -======================= - -现在,您可以开始准备开发 ESP32 应用程序了。您可以从 ESP-IDF 中 :idf:`examples` 目录下的 :example:`get-started/hello_world` 工程开始。 - -将 :example:`get-started/hello_world` 复制至您本地的 ``~/esp`` 目录下: - -Linux 和 MacOS 操作系统 -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: bash - - cd ~/esp - cp -r $IDF_PATH/examples/get-started/hello_world . - -Windows 操作系统 -~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: batch - - cd %userprofile%\esp - xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world - -ESP-IDF 的 :idf:`examples` 目录下有一系列示例工程,都可以按照上面的方法进行创建。您可以按照上述方法复制并运行其中的任何示例,也可以直接编译示例,无需进行复制。 - -.. important:: - - ESP-IDF 编译系统不支持带有空格的路径。 - -.. _get-started-connect: - -第六步:连接设备 -====================== - -现在,请将您的 ESP32 开发板连接到 PC,并查看开发板使用的串口。 - -通常,串口在不同操作系统下显示的名称有所不同: - -- **Windows 操作系统:** ``COM1`` 等 -- **Linux 操作系统:** 以 ``/dev/tty`` 开始 -- **MacOS 操作系统:** 以 ``/dev/cu.`` 开始 - -有关如何查看串口名称的详细信息,请见 :doc:`establish-serial-connection`。 - -.. note:: - - 请记住串口名,您会在下面的步骤中用到。 - - -.. _get-started-configure: - -第七步:配置 -================= - -请进入 :ref:`get-started-start-project` 中提到的 ``hello_world`` 目录,并运行工程配置工具 ``menuconfig``。 - -Linux 和 MacOS 操作系统 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: bash - - cd ~/esp/hello_world - idf.py menuconfig - -如果您的默认 Python 版本为 3.0 以上,可能需要运行 ``python2 idf.py`` 。 - -Windows 操作系统 -~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: batch - - cd %userprofile%\esp\hello_world - idf.py menuconfig - -Python 2.7 安装程序将尝试配置 Windows,将 ``.py`` 文件与 Python 2 关联起来。如果其他程序(比如 Visual Studio Python 工具)曾关联了其他版本 Python,则 ``idf.py`` 可能无法正常运行(文件将在 Visual Studio 中打开)。这种情况下,您可以选择每次都运行一遍 ``C:\Python27\python idf.py``,或更改 Windows 的 ``.py`` 关联文件设置。 - -.. note:: - - 如果出现 ``idf.py not found(无法找到 idf.py)`` 错误,请确保 ``PATH`` 环境变量设置无误,具体请参考 :ref:`get-started-setup-path`。如果 ``tools`` 目录下没有 ``idf.py`` 文件,请确保 CMake 预览的分支正确无误,具体请参考 :ref:`get-started-get-esp-idf`。 - -如果之前的步骤都正确,则会显示下面的菜单: - -.. figure:: ../../_static/project-configuration.png - :align: center - :alt: 工程配置 — 主窗口 - :figclass: align-center - - 工程配置 — 主窗口 - -``menuconfig`` 工具的常见操作见下。 - -* ``上下箭头``:移动 -* ``回车``:进入子菜单 -* ``ESC 键``:返回上级菜单或退出 -* ``英文问号``:调出帮助菜单(退出帮助菜单,请按回车键)。 -* ``空格``、``Y 键``或``N 键``:使能/禁用 ``[*]`` 配置选项 -* ``英文问号``:调出有关高亮选项的帮助菜单 -* ``/ 键``:寻找配置项目 - -.. attention:: - - 如果您使用的是 ESP32-DevKitC(板载 ESP32-SOLO-1 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式(:ref:`CONFIG_FREERTOS_UNICORE`)。 - -.. _get-started-build: - -第八步:编译工程 -================== - -请使用以下命令,编译烧录工程::: - - idf.py build - -运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件。 - -.. code-block:: none - - $ idf.py build - Running cmake in directory /path/to/hello_world/build - Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"... - Warn about uninitialized values. - -- Found Git: /usr/bin/git (found version "2.17.0") - -- Building empty aws_iot component due to configuration - -- Component names: ... - -- Component paths: ... - - ... (more lines of build system output) - - [527/527] Generating hello-world.bin - esptool.py v2.3.1 - - Project build complete. To flash, run this command: - ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin - or run 'idf.py -p PORT flash' - -如果一切正常,编译完成后将生成 .bin 文件。 - - -.. _get-started-flash: - -第九步:烧录到设备 -==================== - -请使用以下命令,将刚刚生成的二进制文件烧录至您的 ESP32 开发板: :: - - idf.py -p PORT [-b BAUD] flash - -请将 PORT 替换为 ESP32 开发板的串口名称,具体可见 :ref:`get-started-connect`。 - -您还可以将 BAUD 替换为您希望的烧录波特率。默认波特率为 ``460800``。 - -更多有关 idf.py 参数的详情,请见 :ref:`idf.py`。 - -.. note:: - - 勾选 ``flash`` 选项将自动编译并烧录工程,因此无需再运行 ``idf.py build``。 - -.. code-block:: none - - Running esptool.py in directory [...]/esp/hello_world - Executing "python [...]/esp-idf/components/esptool_py/esptool/esptool.py -b 460800 write_flash @flash_project_args"... - esptool.py -b 460800 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 hello-world.bin - esptool.py v2.3.1 - Connecting.... - Detecting chip type... ESP32 - Chip is ESP32D0WDQ6 (revision 1) - Features: WiFi, BT, Dual Core - Uploading stub... - Running stub... - Stub running... - Changing baud rate to 460800 - Changed. - Configuring flash size... - Auto-detected Flash size: 4MB - Flash params set to 0x0220 - Compressed 22992 bytes to 13019... - Wrote 22992 bytes (13019 compressed) at 0x00001000 in 0.3 seconds (effective 558.9 kbit/s)... - Hash of data verified. - Compressed 3072 bytes to 82... - Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 5789.3 kbit/s)... - Hash of data verified. - Compressed 136672 bytes to 67544... - Wrote 136672 bytes (67544 compressed) at 0x00010000 in 1.9 seconds (effective 567.5 kbit/s)... - Hash of data verified. - - Leaving... - Hard resetting via RTS pin... - -如果一切顺利,烧录完成后,开发板将会复位,应用程序 "hello_world" 开始运行。 - -.. note:: - - (目前不支持)如果您希望使用 Eclipse IDE,而非 ``idf.py``,请参考 :doc:`Eclipse 指南 `。 - - -.. _get-started-build-monitor: - -第十步:监视器 -================== - -您可以使用 ``make monitor`` 命令,监视 “hello_world” 的运行情况。注意,不要忘记将 PORT 替换为您的串口名称。 - -运行该命令后,:doc:`IDF 监视器 <../api-guides/tools/idf-monitor>` 应用程序将启动: :: - - $ idf.py -p /dev/ttyUSB0 monitor - Running idf_monitor in directory [...]/esp/hello_world/build - Executing "python [...]/esp-idf/tools/idf_monitor.py -b 115200 [...]/esp/hello_world/build/hello-world.elf"... - --- idf_monitor on /dev/ttyUSB0 115200 --- - --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- - ets Jun 8 2016 00:22:57 - - rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) - ets Jun 8 2016 00:22:57 - ... - -此时,您就可以在启动日志和诊断日志之后,看到打印的 “Hello world!” 了。 - -.. code-block:: none - - ... - Hello world! - Restarting in 10 seconds... - I (211) cpu_start: Starting scheduler on APP CPU. - Restarting in 9 seconds... - Restarting in 8 seconds... - Restarting in 7 seconds... - -您可使用快捷键 ``Ctrl+]``,退出 IDF 监视器。 - -如果 IDF 监视器在烧录后很快发生错误,或打印信息全是乱码(见下),很有可能是因为您的开发板选用了 26 MHz 晶振,而 ESP-IDF 默认支持大多数开发板使用的 40 MHz 晶振。 - -.. code-block:: none - - e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA - ~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp - -此时,请您: - -1. 退出监视器。 -2. 打开 :ref:`menuconfig `, -3. 进入 ``Component config`` --> ``ESP32-specific`` --> ``Main XTAL frequency`` 进行配置,将 :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` 设置为 26 MHz。 -4. 然后,请重新 :ref:`编译和烧录 ` 应用程序。 - -.. note:: - - 您也可以运行以下命令,一次性执行构建、烧录和监视过程: - - ``idf.py -p PORT flash monitor`` - -此外, - -- 请前往 :doc:`IDF 监视器 <../api-guides/tools/idf-monitor>`,了解更多使用 IDF 监视器的快捷键和其他详情。 -- 请前往 :ref:`idf.py`,查看更多 ``idf.py`` 命令和选项。 - -**恭喜,您已完成 ESP32 的入门学习!** - -现在,您可以尝试一些其他 :idf:`examples`,或者直接开发自己的应用程序。 - -更新 ESP-IDF -================= - -乐鑫会不时推出更新版本的 ESP-IDF,修复 bug 或提出新的特性。因此,您在使用时,也应注意更新您本地的版本。最简单的方法是:直接删除您本地的 ``esp-idf`` 文件夹,然后按照 :ref:`get-started-get-esp-idf` 中的指示,重新完成克隆。 - -如果您希望将 ESP-IDF 克隆到新的路径下,请务必 :doc:`重新设置 IDF_PATH `。否则,工具链将无法找到 ESP-IDF。 - -此外,您可以仅更新变更部分。具体方式,请前往 :ref:`更新 ` 章节查看。 - -相关文档 -=========== - -.. toctree:: - :maxdepth: 1 - - add-idf_path-to-profile - establish-serial-connection - eclipse-setup - ../api-guides/tools/idf-monitor - toolchain-setup-scratch - ../get-started-legacy/index - -.. _Stable version: https://docs.espressif.com/projects/esp-idf/zh_CN/stable/ -.. _Releases page: https://github.com/espressif/esp-idf/releases +******************* +快速入门(CMake) +******************* + +:link_to_translation:`en:[English]` + +本文档旨在指导用户搭建 ESP32 硬件开发的软件环境, + +通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。 + +.. include:: /_build/inc/version-note.inc + +概述 +==== + +ESP32 SoC 芯片支持以下功能: + +* 2.4 GHz Wi-Fi +* 蓝牙 4.2 标准 +* 高性能双核 +* 超低功耗协处理器 +* 多种外设 + +ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。 + +乐鑫为用户提供完整的软、硬件资源,进行 ESP32 硬件设备的开发。其中,乐鑫的软件开发环境 ESP-IDF 旨在协助用户快速开发物联网 (IoT) 应用,可满足用户对 Wi-Fi、蓝牙、低功耗等方面的要求。 + +准备工作 +======== + +硬件: + +* 一款 **ESP32** 开发板 +* **USB 数据线** (USB A/Micro USB B) +* PC(Windows、Linux 或 Mac OS) + +软件: + +* 设置 **工具链**,用于编译 ESP32 代码; +* **编译工具** —— CMake 和 Ninja 编译工具,用于编译 ESP32 **应用程序**; +* 获取 **ESP-IDF** 软件开发框架。该框架已经基本包含 ESP32 使用的 API(软件库和源代码)和运行 **工具链** 的脚本; +* 安装 C 语言编程(**工程**)的 **文本编辑器**,例如 `Eclipse `_。 + + +.. figure:: ../../_static/what-you-need.png + :align: center + :alt: ESP32 应用程序开发 + :figclass: align-center + + ESP32 应用程序开发 + + +开发板简介 +========== + +请点击下方连接,了解有关具体开发板的详细信息。 + +.. toctree:: + :maxdepth: 1 + + ESP32-DevKitC <../hw-reference/get-started-devkitc> + ESP-WROVER-KIT <../hw-reference/get-started-wrover-kit> + ESP32-PICO-KIT <../hw-reference/get-started-pico-kit> + ESP32-Ethernet-Kit <../hw-reference/get-started-ethernet-kit> + + +.. _get-started-step-by-step: + +详细安装步骤 +============== + +请根据下方详细步骤,完成安装过程。 + +设置开发环境 +~~~~~~~~~~~~~~~~ + +* :ref:`get-started-setup-toolchain` +* :ref:`get-started-get-esp-idf` +* :ref:`get-started-setup-path` +* :ref:`get-started-get-packages` + +创建您的第一个工程 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* :ref:`get-started-start-project` +* :ref:`get-started-connect` +* :ref:`get-started-configure` +* :ref:`get-started-build` +* :ref:`get-started-flash` +* :ref:`get-started-build-monitor` + + +.. _get-started-setup-toolchain: + +第一步:设置工具链 +==================== + +工具链指一套用于编译代码和应用程序的程序。 + +为了加快开发进度,您可以直接使用乐鑫提供的预制工具链。请根据您的操作系统,点击下方对应的链接,并按照链接中的指导进行安装。 + +.. toctree:: + :hidden: + + Windows + Linux + MacOS + ++-------------------+-------------------+-------------------+ +| |windows-logo| | |linux-logo| | |macos-logo| | ++-------------------+-------------------+-------------------+ +| `Windows`_ | `Linux`_ | `Mac OS`_ | ++-------------------+-------------------+-------------------+ + +.. |windows-logo| image:: ../../_static/windows-logo.png + :target: ../get-started/windows-setup.html + +.. |linux-logo| image:: ../../_static/linux-logo.png + :target: ../get-started/linux-setup.html + +.. |macos-logo| image:: ../../_static/macos-logo.png + :target: ../get-started/macos-setup.html + +.. _Windows: ../get-started/windows-setup.html +.. _Linux: ../get-started/linux-setup.html +.. _Mac OS: ../get-started/macos-setup.html + +.. note:: + + 在本文档中,Linux 和 MacOS 操作系统中 ESP-IDF 的默认安装路径为 ``~/esp``;Windows 操作系统的默认路径为 ``%userprofile%\esp``。您也可以将 ESP-IDF 安装在任何其他路径下,但请注意在使用命令行时进行相应替换。注意,ESP-IDF 不支持带有空格的路径。 + +此外, 您也可以根据自身经验和实际需求,对环境进行个性化设置,而非使用预制工具链。此时,请前往 :ref:`工具链的个性化设置` 章节获取更多信息。 + + +.. _get-started-get-esp-idf: + +第二步:获取 ESP-IDF +=========================== + +除了工具链,您还需要供 ESP32 使用的 API(软件库和源代码),具体请见 `ESP-IDF 仓库 `_。 + +请将 ESP-IDF 下载到您的本地。 + +获取本地副本:打开终端,切换到你要存放 ESP-IDF 的工作目录,使用 ``git clone`` 命令克隆远程仓库。 + +Linux 和 MacOS 操作系统 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +打开终端,后运行以下命令: + +.. include:: /_build/inc/git-clone-bash.inc + +ESP-IDF 将下载至 ``~/esp/esp-idf``。 + +请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 + +Windows 操作系统 +~~~~~~~~~~~~~~~~~~ + +.. note:: + + 较早版本 ESP-IDF 使用了 **MSYS2 bash 终端** 命令行。目前,基于 CMake 的编译系统可使用常见的 **Windows 命令窗口**,即本指南中使用的终端。 + +请注意,如果您使用基于 bash 的终端或 PowerShell 终端,一些命令语法将与下面描述有所不同。 + +打开命令提示符,后运行以下命令: + +.. include:: /_build/inc/git-clone-windows.inc + +ESP-IDF 将下载至 ``%userprofile%\esp\esp-idf``。 + +请前往 :doc:`/versions`,查看 ESP-IDF 不同版本的具体适用场景。 + +.. include:: /_build/inc/git-clone-notes.inc + +.. note:: + + 在克隆远程仓库时,不要忘记加上 ``--recursive`` 选项。否则,请接着运行以下命令,获取所有子模块: :: + + cd esp-idf + git submodule update --init + +.. _get-started-setup-path: + +第三步:设置环境变量 +=========================== + +请在您的 PC 上设置以下环境变量,否则无法编译工程。 + +- ``IDF_PATH`` 应设置为 ESP-IDF 根目录的路径。 +- ``PATH`` 应包括同一 ``IDF_PATH`` 目录下的 ``tools`` 目录路径。 + +您可以在每次重启会话时手动设置,也可以在用户配置中进行永久设置,具体请前往 :doc:`add-idf_path-to-profile` 章节,查看 :ref:`Windows ` 、:ref:`Linux 及 MacOS ` 操作系统的具体设置方式。 + + +.. _get-started-get-packages: + +第四步:安装 Python 软件包 +================================= + +ESP-IDF 所需的 Python 软件包位于 ``IDF_PATH/requirements.txt`` 中。您可以运行以下命令进行安装: :: + + python -m pip install --user -r $IDF_PATH/requirements.txt + +.. note:: + + 请注意查询您所使用的 Python 解释器的版本(运行命令 ``python --version``),并根据查询结果将上方命令中的 ``python`` 替换为 ``python2``, ``python2.7``,例如: + + ``python2.7 -m pip install --user -r $IDF_PATH/requirements.txt`` + +.. _get-started-start-project: + +第五步:开始创建工程 +======================= + +现在,您可以开始准备开发 ESP32 应用程序了。您可以从 ESP-IDF 中 :idf:`examples` 目录下的 :example:`get-started/hello_world` 工程开始。 + +将 :example:`get-started/hello_world` 复制至您本地的 ``~/esp`` 目录下: + +Linux 和 MacOS 操作系统 +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + cd ~/esp + cp -r $IDF_PATH/examples/get-started/hello_world . + +Windows 操作系统 +~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: batch + + cd %userprofile%\esp + xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world + +ESP-IDF 的 :idf:`examples` 目录下有一系列示例工程,都可以按照上面的方法进行创建。您可以按照上述方法复制并运行其中的任何示例,也可以直接编译示例,无需进行复制。 + +.. important:: + + ESP-IDF 编译系统不支持带有空格的路径。 + +.. _get-started-connect: + +第六步:连接设备 +====================== + +现在,请将您的 ESP32 开发板连接到 PC,并查看开发板使用的串口。 + +通常,串口在不同操作系统下显示的名称有所不同: + +- **Windows 操作系统:** ``COM1`` 等 +- **Linux 操作系统:** 以 ``/dev/tty`` 开始 +- **MacOS 操作系统:** 以 ``/dev/cu.`` 开始 + +有关如何查看串口名称的详细信息,请见 :doc:`establish-serial-connection`。 + +.. note:: + + 请记住串口名,您会在下面的步骤中用到。 + + +.. _get-started-configure: + +第七步:配置 +================= + +请进入 :ref:`get-started-start-project` 中提到的 ``hello_world`` 目录,并运行工程配置工具 ``menuconfig``。 + +Linux 和 MacOS 操作系统 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + cd ~/esp/hello_world + idf.py menuconfig + +如果您的默认 Python 版本为 3.0 以上,可能需要运行 ``python2 idf.py`` 。 + +Windows 操作系统 +~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: batch + + cd %userprofile%\esp\hello_world + idf.py menuconfig + +Python 2.7 安装程序将尝试配置 Windows,将 ``.py`` 文件与 Python 2 关联起来。如果其他程序(比如 Visual Studio Python 工具)曾关联了其他版本 Python,则 ``idf.py`` 可能无法正常运行(文件将在 Visual Studio 中打开)。这种情况下,您可以选择每次都运行一遍 ``C:\Python27\python idf.py``,或更改 Windows 的 ``.py`` 关联文件设置。 + +.. note:: + + 如果出现 ``idf.py not found(无法找到 idf.py)`` 错误,请确保 ``PATH`` 环境变量设置无误,具体请参考 :ref:`get-started-setup-path`。如果 ``tools`` 目录下没有 ``idf.py`` 文件,请确保 CMake 预览的分支正确无误,具体请参考 :ref:`get-started-get-esp-idf`。 + +如果之前的步骤都正确,则会显示下面的菜单: + +.. figure:: ../../_static/project-configuration.png + :align: center + :alt: 工程配置 — 主窗口 + :figclass: align-center + + 工程配置 — 主窗口 + +``menuconfig`` 工具的常见操作见下。 + +* ``上下箭头``:移动 +* ``回车``:进入子菜单 +* ``ESC 键``:返回上级菜单或退出 +* ``英文问号``:调出帮助菜单(退出帮助菜单,请按回车键)。 +* ``空格``、``Y 键``或``N 键``:使能/禁用 ``[*]`` 配置选项 +* ``英文问号``:调出有关高亮选项的帮助菜单 +* ``/ 键``:寻找配置项目 + +.. attention:: + + 如果您使用的是 ESP32-DevKitC(板载 ESP32-SOLO-1 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式(:ref:`CONFIG_FREERTOS_UNICORE`)。 + +.. _get-started-build: + +第八步:编译工程 +================== + +请使用以下命令,编译烧录工程::: + + idf.py build + +运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件。 + +.. code-block:: none + + $ idf.py build + Running cmake in directory /path/to/hello_world/build + Executing "cmake -G Ninja --warn-uninitialized /path/to/hello_world"... + Warn about uninitialized values. + -- Found Git: /usr/bin/git (found version "2.17.0") + -- Building empty aws_iot component due to configuration + -- Component names: ... + -- Component paths: ... + + ... (more lines of build system output) + + [527/527] Generating hello-world.bin + esptool.py v2.3.1 + + Project build complete. To flash, run this command: + ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x10000 build/hello-world.bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin + or run 'idf.py -p PORT flash' + +如果一切正常,编译完成后将生成 .bin 文件。 + + +.. _get-started-flash: + +第九步:烧录到设备 +==================== + +请使用以下命令,将刚刚生成的二进制文件烧录至您的 ESP32 开发板: :: + + idf.py -p PORT [-b BAUD] flash + +请将 PORT 替换为 ESP32 开发板的串口名称,具体可见 :ref:`get-started-connect`。 + +您还可以将 BAUD 替换为您希望的烧录波特率。默认波特率为 ``460800``。 + +更多有关 idf.py 参数的详情,请见 :ref:`idf.py`。 + +.. note:: + + 勾选 ``flash`` 选项将自动编译并烧录工程,因此无需再运行 ``idf.py build``。 + +.. code-block:: none + + Running esptool.py in directory [...]/esp/hello_world + Executing "python [...]/esp-idf/components/esptool_py/esptool/esptool.py -b 460800 write_flash @flash_project_args"... + esptool.py -b 460800 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 hello-world.bin + esptool.py v2.3.1 + Connecting.... + Detecting chip type... ESP32 + Chip is ESP32D0WDQ6 (revision 1) + Features: WiFi, BT, Dual Core + Uploading stub... + Running stub... + Stub running... + Changing baud rate to 460800 + Changed. + Configuring flash size... + Auto-detected Flash size: 4MB + Flash params set to 0x0220 + Compressed 22992 bytes to 13019... + Wrote 22992 bytes (13019 compressed) at 0x00001000 in 0.3 seconds (effective 558.9 kbit/s)... + Hash of data verified. + Compressed 3072 bytes to 82... + Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 5789.3 kbit/s)... + Hash of data verified. + Compressed 136672 bytes to 67544... + Wrote 136672 bytes (67544 compressed) at 0x00010000 in 1.9 seconds (effective 567.5 kbit/s)... + Hash of data verified. + + Leaving... + Hard resetting via RTS pin... + +如果一切顺利,烧录完成后,开发板将会复位,应用程序 "hello_world" 开始运行。 + +.. note:: + + (目前不支持)如果您希望使用 Eclipse IDE,而非 ``idf.py``,请参考 :doc:`Eclipse 指南 `。 + + +.. _get-started-build-monitor: + +第十步:监视器 +================== + +您可以使用 ``make monitor`` 命令,监视 “hello_world” 的运行情况。注意,不要忘记将 PORT 替换为您的串口名称。 + +运行该命令后,:doc:`IDF 监视器 <../api-guides/tools/idf-monitor>` 应用程序将启动: :: + + $ idf.py -p /dev/ttyUSB0 monitor + Running idf_monitor in directory [...]/esp/hello_world/build + Executing "python [...]/esp-idf/tools/idf_monitor.py -b 115200 [...]/esp/hello_world/build/hello-world.elf"... + --- idf_monitor on /dev/ttyUSB0 115200 --- + --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- + ets Jun 8 2016 00:22:57 + + rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) + ets Jun 8 2016 00:22:57 + ... + +此时,您就可以在启动日志和诊断日志之后,看到打印的 “Hello world!” 了。 + +.. code-block:: none + + ... + Hello world! + Restarting in 10 seconds... + I (211) cpu_start: Starting scheduler on APP CPU. + Restarting in 9 seconds... + Restarting in 8 seconds... + Restarting in 7 seconds... + +您可使用快捷键 ``Ctrl+]``,退出 IDF 监视器。 + +如果 IDF 监视器在烧录后很快发生错误,或打印信息全是乱码(见下),很有可能是因为您的开发板选用了 26 MHz 晶振,而 ESP-IDF 默认支持大多数开发板使用的 40 MHz 晶振。 + +.. figure:: ../../_static/get-started-garbled-output.png + :align: center + :alt: 乱码输出 + :figclass: align-center + +此时,请您: + +1. 退出监视器。 +2. 打开 :ref:`menuconfig `, +3. 进入 ``Component config`` --> ``ESP32-specific`` --> ``Main XTAL frequency`` 进行配置,将 :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` 设置为 26 MHz。 +4. 然后,请重新 :ref:`编译和烧录 ` 应用程序。 + +.. note:: + + 您也可以运行以下命令,一次性执行构建、烧录和监视过程: + + ``idf.py -p PORT flash monitor`` + +此外, + +- 请前往 :doc:`IDF 监视器 <../api-guides/tools/idf-monitor>`,了解更多使用 IDF 监视器的快捷键和其他详情。 +- 请前往 :ref:`idf.py`,查看更多 ``idf.py`` 命令和选项。 + +**恭喜,您已完成 ESP32 的入门学习!** + +现在,您可以尝试一些其他 :idf:`examples`,或者直接开发自己的应用程序。 + +更新 ESP-IDF +================= + +乐鑫会不时推出更新版本的 ESP-IDF,修复 bug 或提出新的特性。因此,您在使用时,也应注意更新您本地的版本。最简单的方法是:直接删除您本地的 ``esp-idf`` 文件夹,然后按照 :ref:`get-started-get-esp-idf` 中的指示,重新完成克隆。 + +如果您希望将 ESP-IDF 克隆到新的路径下,请务必 :doc:`重新设置 IDF_PATH `。否则,工具链将无法找到 ESP-IDF。 + +此外,您可以仅更新变更部分。具体方式,请前往 :ref:`更新 ` 章节查看。 + +相关文档 +=========== + +.. toctree:: + :maxdepth: 1 + + add-idf_path-to-profile + establish-serial-connection + eclipse-setup + ../api-guides/tools/idf-monitor + toolchain-setup-scratch + ../get-started-legacy/index + +.. _Stable version: https://docs.espressif.com/projects/esp-idf/zh_CN/stable/ +.. _Releases page: https://github.com/espressif/esp-idf/releases diff --git a/docs/zh_CN/index.rst b/docs/zh_CN/index.rst index dfdd2da23..5cd11e5f0 100644 --- a/docs/zh_CN/index.rst +++ b/docs/zh_CN/index.rst @@ -15,24 +15,24 @@ ESP-IDF 编程指南 ================== ================== ================== -.. |快速入门| image:: ../_static/get-started.gif +.. |快速入门| image:: ../_static/get-started.png .. _快速入门: get-started/index.html -.. |API 参考| image:: ../_static/api-reference.gif +.. |API 参考| image:: ../_static/api-reference.png .. _API 参考: api-reference/index.html -.. |H/W 参考| image:: ../_static/hw-reference.gif +.. |H/W 参考| image:: ../_static/hw-reference.png .. _H/W 参考: hw-reference/index.html -.. |API 指南| image:: ../_static/api-guides.gif +.. |API 指南| image:: ../_static/api-guides.png .. _API 指南: api-guides/index.html .. _Libraries and Frameworks: libraries-and-frameworks/index.html -.. |贡献代码| image:: ../_static/contribute.gif +.. |贡献代码| image:: ../_static/contribute.png .. _贡献代码: contribute/index.html -.. |相关资源| image:: ../_static/resources.gif +.. |相关资源| image:: ../_static/resources.png .. _相关资源: resources.html