Standard SDK: [RTL8195] SSL – 使用Ameba來發送簡單的HTTPS請求

材料準備

  • Ameba x 1

範例說明

這個範例裡,我們會用 AT COMMAND 將 Ameba 連接上 WiFi, 然後發送一個簡單的 HTTPS 請求到 www.github.com 來獲取網頁相關信息。

  • 修改 SDK 的 flag 開啟 SSL 功能
    platform_opts.h ($ sdk \project\realtek_ameba1_va0_example\inc)中修改:

    #define CONFIG_SSL_CLIENT       1
    

    將 CONFIG_SSL_CLIENT 設置為1。

  • Ameba 8710/8711AF 用戶更改 SSL 文件的位置
    對於使用 8710/8711 的用戶,需要將 SSL 的相關文件從 SDRAM 移到 SRAM。
    通過 IAR 打開 $ sdk \project\realtek_ameba1_va0_example\EWARM-RELEASE 下的 project.eww
    在 workspace 窗口中,將 ”polarssl” 和 ”ssl_ram_map” 兩個文件夾從 ”SDRAM” 中拖至 ”Project-Debug” 下。
    1
  • 在 IAR 中 make 編譯程序並下載到 Ameba 中
    點擊project目錄下的make,或點擊IAR右上方的“make”快捷鍵,對程序進行編譯,下載程序到Ameba中。
    2
  • 在 UART console 上發送 AT Command 進行 SSL 連線
    首先使用AT Command 將Ameba連上WiFi

    • ATW0=SSID (設置WiFi的名稱)
    • ATW1=PASSWARD (設置WiFi的密碼,若無密碼,可跳過這一步)
    • ATWC (進行WiFi連線)

    若在 platform_opts.h ($ sdk \project\realtek_ameba1_va0_example\inc)中開啟 auto reconnect 功能(默認為開啟狀態):

    #define CONFIG_EXAMPLE_WLAN_FAST_CONNECT 1
    

    Ameba 將會把 WiFi 的信息儲存在 flash 中,reset之後會自動對上次保存的 WiFi 信息進行連線。
    3

    然後就可以使用 AT Command 與 SSL 的服務器進行連線了: ATWL=HOST_NAME
    此處以 www.github.com 為例:
    4

常見錯誤及原因

  1. net_connect returned -86
    請檢查WiFi是否連線正常,以及確認WiFi是否可與internet正常通訊。
  2. net_connect returned -68
    請確認連線的服務器是否支持SSL。
  3. ssl_handshake returned -0x7200
    可能是該服務器設定的file 大小超過了默認的SSL_MAX_CONTENT_LEN 4096的範圍,可到 config_rsa.h ($ sdk\component\common\network\ssl\polarssl-1.3.8\include\polarssl)中,將 SSL_MAX_CONTENT_LEN 設置為可容納file大小+digest,最大可設為16384。
    例如連線 www.baidu.com, 需要將SSL_MAX_CONTENT_LEN 改為大於4419。
  4. ssl_handshake returned -0x2880
    SSL MALLOC 失敗,需要到 FreeRTOSConfig.h ($ sdk\project\realtek_ameba1_va0_example\inc)中將 configTOTAL_HEAP_SIZE 的值調大。