Standard SDK: [RTL8195AM] 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 的值調大。
請先確認已安裝QQ通訊軟體