2017年1月19日 星期四

DIY - ESP8266:RTOS SDK 在 Windows IDE 整合開發環境測試(九)

DIY - ESP8266:RTOS SDK 在 Windows IDE 整合開發環境測試(九):

測試了 ESP8266_NONOS_SDK 原程式碼後,由於樂鑫(Espressif)的 SDK 平台按照是基於作業系統可分為: Non-OS 和 RTOS 兩種版本,再進一步要測試是 ESP8266_RTOS_SDK(測試原程式碼版本:ESP8266_RTOSS_SDK_v1.5.0_20161111),看看 ESP8266 IDE 2.0(整合開發環境)有沒有問題。

ESP8266_RTOSS_SDK_v1.5.0_20161111 原程式
RTOS SDK 
  • RTOS SDK 基於 FreeRTOS,在 Github 上開源。
  • RTOS 版本 SDK 使用 FreeRTOS 系統,引入 OS 多工處理的機制,用戶可以使用 FreeRTOS  的標準介面實現資源管理、迴圈操作、任務內延時、任務間資訊傳遞和同步等面向任務流程的設計方式。具體介面使用方法參考 FreeRTOS 官方網站的使用說明或者 USING THE FreeRTOS REAL TIME KERNEL - A Practical Guide 介紹。
  • RTOS 版本 SDK 的網路操作介面是標準 lwIP API,同時提供了 BSD Socket API  介面的封裝實現,用戶可以直接按照 Socket API 的使用方式來開發軟體應用,也可以直接編譯運行其他平的標準 Socket 應用,有效降低平切換的學習成本。
  • RTOS 版本 SDK 引入了 cJSON 庫,使用該庫函數可以更加方便的實現對 JSON 資料包的解析。
  • RTOS 版本相容 Non-OS SDK 中的 Wi-Fi 介面、Smart Config 介面、Sniffer 相關介面、系統介面、計時器介面、FOTA 介面和週邊驅動介面,不支援 AT 實現。

bin: 編譯生成的 BIN 檔,可直接下載到 Flash 中。
documents: SDK 相關的文檔或鏈結。
examples: 可供用戶二次開發的示例代碼。
examples/driver_lib: 外設驅動的庫文件,如:UART、I2C 和 GPIO 等。examples/project_template: 用戶工程目錄的模版。
說明:
可以將 project_template 檔夾複製到任意目錄,如:~/workspace。
examples/smart_config: Smart Config 相關的代碼示例。
examples/spiffs_test: SPIFFS 相關的代碼示例。
examples/websocket_demo: WebSocket 相關的代碼示例。
extra_include: Xtensa 提供的相關頭檔。
include: SDK 自帶頭檔,包含了用戶可使用的相關 API 函數及其他巨集定義,用戶無需修改。
ld: 鏈結時所需的腳本檔,如無特殊需求,用戶無需修改。
lib: SDK 提供的庫檔。
third_party: 第三方開源的庫文件。
tools: 編譯 BIN 檔所需的工具,用戶無需修改。

下載 ESP8266_RTOSS_SDK 後解壓到合適的目錄下,筆者使用 D:\Aithinker\ESP8266_RTOS_SDK,由於 ESP8266 的 FreeRTOS SDK 是採用了 SDK 和 user 工程檔分離的方式,所以將 D:\Aithinker\ESP8266_RTOS_SDK\examples\project_template 拷貝到 D:\Aithinker\project_template

※ 首先使用樂鑫原廠固件:
1‧需要將 driver_lib Directory 改名 RENAME 到 app。
2‧需要將 D:\Aithinker\ESP8266_RTOS_SDK\examples\project_template 移動 MOVE 到 D:\Aithinker\。

雙擊啓動 ESP8266IDE.exe,進入 Eclipse
導入第一個工程案例,File → Import
Select → Exiting Code as Makefile Project → Next
New Project → Unclick C++ → Cygwin GCC → Browse → 選擇Code Location =  ESP8266_RTOS_SDK  → Finish
完成導入第一個工程 ESP8266_RTOS_SDK
再導入第二個工程案例,方法如導入第二個工程一樣。 
New Project → Unclick C++ → Cygwin GCC → Browse → 選擇 Code Location = project_template → Finish
導入了兩個工程案例
還需要配置專案引用,以便在兩個工程中來回跳轉函數定義。
project_template → Right Click → Properties → Project References → 勾選 ESP8266_RTOS_SDK
打開 project_template 的 Makefile 添加以下兩行代碼到 Makefile 圖中相應的位置
修改以下 Files 的內容:
project_template\Makefile 內加入
SDK_PATH=/cygdrive/d/Aithinker/ESP8266_RTOS_SDK
BIN_PATH=$(SDK_PATH)/bin

project_template → Right Click → Clean Project → Build Project
編譯後,看程式有沒有報錯,如果沒有錯,便成功編譯!
20170520 添加
ICACHE_FLASH_ATTR 巨集的函數:
對於 ESP8266_RTOS_SDK 函數默認存放在 IROM 中,無須再添加 ICACHE_FLASH_ATTR 宏。中斷處理函數也可以定義在 IROM 中。如果開發者需要將一些頻繁調用的函數定義在 IRAM 中,在函數前添加 IRAM_ATTR 宏即可。

20201112 添加
筆者一般會使用 Directory(描述程式的用途) 裝載 ESP8266_RTOS_SDK-2.0.0(原程式),最好先將 ESP8266_RTOS_SDK-2.0.0 Copy 出來使用,才用 Import→Browse ESP8266_RTOS_SDK-2.0.0 (原程式 Directory),然後才 Build All 成功編譯。
 
2017年 1月 19日 天氣報告
氣溫:20.1@ 21:40
相對濕度:百分之 85%
天氣:大致多雲

沒有留言:

張貼留言