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 的值调大。