HaaS 100

1 淘宝购买

HaaS 100是阿里云智能首款积木式平台,该产品旨在帮助AIoT中小开发者聚焦业务,低门槛快速组装软硬件积木,实现设备安全上云。 淘宝购买链接

2 功能介绍

HaaS100 搭载双核Cortex-M33,主频是300MHz,带有16MB的片内RAM和16MB的片内Flash,同时支持了非常丰富的外设及接口。

haas100介绍

3. 环境搭建

环境搭建有两种方法:基于源码编译烧录和基于官方固件直接烧录。如果没有特殊需求,建议开发者基于官方固件快速搭建 Python 开发环境。


I. 固件下载和烧录

MacOS 电脑烧录需要用到pyserial工具,请输入下面的命令进行安装:

pip3 install pyserial

第一步:下载对应HaaS硬件设备的官方固件包并解压(HaaS 100 不区分电脑系统,MacOS 和Windows 固件均通过 Python 命令行烧录)。

HaaS 100 固件包

HaaS型号

MacOS/Windows 固件下载链接

HaaS 100

HaaS 100 固件

固件包中包含如下文件:

.
├── __init__.py             # 初始化脚本
├── 20210615                # 固件版本信息,会随发布时间变化而变化
├── flash_program_ll.py     # 固件烧录脚本
├── flash_program.py        # 固件烧录脚本
├── littlefs.bin            # 固件文件系统
├── ota_rtos.bin            # 固件镜像文件
└── ymodem.py               # 固件烧录ymodem脚本

第二步:设备通过 USB 串口连接到电脑。

设备上电后, 电脑上会多出来一个串口设备:

  • MacOS 系统:

    执行下面的命令可以查看到设备在当前电脑上注册的串口路径和端口号:

    pyserial-ports
    

    下面示例为某台电脑上连接HaaS设备后执行 pyserial-ports 命令后得到的串口路径和端口号信息, 其中 /dev/cu.usbserial-AU03P0PA 即HaaS设备在当前电脑注册的串口信息。 该串口信息在后面固件烧录的时候会用到。不同 HaaS 设备在电脑上显示的串口信息会有差异。

    /dev/cu.Bluetooth-Incoming-Port
    /dev/cu.usbserial-AU03P0PA
    2 ports found
    
  • Win 系统:

    开发者可以通过控制面板下的设备管理器,查询当前电脑下HaaS设备插入后新增的端口。示例中显示 HaaS 设备连接后新增的串口为 COM7

    serial_port

第三步:更新 HaaS 设备固件。


下载并解压第一步中附带的固件,执行下面的命令行进入到解压后的目录并烧录固件(这里我们假设解压后固件路径为 Downloads/haas100):

  • MacOS 系统推荐使用 picocom 连接串口

    cd ~/Downloads/haas100
    python flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000
    
  • Win系统烧录推荐使用 PowerShell

    cd C:\Users\xxx\Downloads\haas100
    python.exe flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000
    

首次烧录显示如下信息让用户选择设备信息:

  • MacOS 系统:

    binary file is ['./ota_rtos.bin', './littlefs.bin#0xB32000']
    
    --- Available ports:
    ---  1: /dev/cu.Bluetooth-Incoming-Port 'n/a'
    ---  2: /dev/cu.usbserial-AU03P0PA 'FT232R USB UART - FT232R USB UART'
    --- Enter port index or full name:
    
  • Win 系统:

    binary file is ['./ota_rtos.bin', './littlefs.bin#0xB32000']
    
    --- Available ports:
    ---  1: COM7                 'USB Serial Port (COM7)'
    --- Enter port index or full name:
    

选择HaaS设备的串口号(以MAC为例选择 2 ),开始固件烧录。当看到如下所示的提示后,则表明烧录开始:

--- Enter port index or full name: 2
serial port is /dev/cu.usbserial-AU03P0PA
the settings were restored in the file /Users/xxxxxxxx/Downloads/haas100/.config_burn

(ash:/data)# reboot
?H???

CHIP_ID=haas1000
KERNEL=
OTA_CODE_OFFSET=0
CRASH_DUMP_SIZE=0

......

Backup part addr:0x2a000
Please input flash addr:
0x2a000
flash addr: 0x2a000

Please start ymodem ... (press ctrl+c to cancel)

CCCC
<<< 0x43
Packet 0 >>>
<<< 0x6
<<< 0x43
Packet 2720 / 2719.0 >>>  <<< ACK
EOF
>>> EOT
<<< 0x15
>>> EOT
<<< 0x6
<<< 0x43
Packet End >>>

如果在烧录的过程中会出现如下提示,请按下板子上复位按钮(最外侧远离电源的黑色按钮)重启设备并继续烧录。

"Please reboot the board manually"

烧录完成以后,可以通过串口工具连接设备进入命令行,MacOS 推荐使用 picocom 连接, 需要退出串口的时候请先按Ctrl+a, 再按Ctrl+q。

picocom -b 1500000 /dev/cu.usbserial-AU03P0PA

Win 推荐使用 MobaXterm。最终的串口输出信息如下:

picocom v3.1

port is        : /dev/cu.usbserial-AU03P0PA
flowcontrol    : none
baudrate is    : 1500000
parity is      : none
databits are   : 8
stopbits are   : 1
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
hangup is      : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv -E
imap is        :
omap is        :
emap is        : crcrlf,delbs,
logfile is     : none
initstring     : none
exit_after is  : not set
exit is        : no

Type [C-a] [C-h] to see available commands
Terminal ready

(ash:/data)#

烧录成功后,串口信息会被记录到了烧录文件夹下的 .config_burn 文件中,内容如下:

MacOS为
  {
    "chip_haas1000": {
        "baudrate": "1500000",
        "binfile": [
            "./ota_rtos.bin",
            "./littlefs.bin#0xB32000"
        ],
        "serialport": "/dev/cu.usbserial-AU03P0PA"
    }
  }

Windows为
  {
    "chip_haas1000": {
        "baudrate": "1500000",
        "binfile": [
            "./ota_rtos.bin",
            "./littlefs.bin#0xB32000"
        ],
        "serialport": "COM7"
    }
  }

serialport 字段为HaaS设备在当前电脑上的串口路径,不同设备会有差异。如果串口路径信息发生了改变, 需要手动修改 serialport 字段的值为 实际路径之后再进行烧录。


如果在烧录的过程中出现如下错误,则表明设备的串口信息发生改变。可以按照第二步的操作,在终端输入 pyserial-ports 命令获取有效的串口信息并修改serialport 字段 即可。

python flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB31000
binary file is ['./ota_rtos.bin', './littlefs.bin#0xB31000']
serial port is /dev/cu.xxxxxxxxxxxxx
the settings were restored in the file /Users/xxxx/Downloads/haas100/.config_burn
Traceback (most recent call last):
  File "flash_program.py", line 228, in <module>
    main()
  File "flash_program.py", line 223, in main
    burn_bin_files(myconfig["serialport"], myconfig['baudrate'], myconfig["binfile"])
  File "flash_program.py", line 154, in burn_bin_files
    raise Exception("Failed to open serial port: %s!" % portnum)
Exception: Failed to open serial port: /dev/cu.xxxxxxxxxxxxx!

II. 固件编译

详细的源码编译环境搭建方法,可以参考 HaaS100快速开始

  • 选择解决方案: micropython示例

  • 选择开发板: haas100

alios-studio 插件烧录注意事项

默认情况下,alios-studio 插件只会烧录您当前编译的ota_rtos.bin。对于 Python 轻应用而言,需要修改如下代码才能同时烧录littlefs.bin。

取消 hardware/chip/haas1000/package.yaml 文件中以下代码段的注释:

program_data_files:
  - filename: release/write_flash_tool/ota_bin/littlefs.bin
    address: 0xB32000

4 快速验证

开机默认会启动之前烧录进去的程序,打开串口工具,选择对应的串口设备,设置波特率为1500000 并连接。


Python轻应用默认支持两种运行模式:交互式 和 文件执行,在串口下输入不同的命令进入不同的模式

  • 命令行输入 python 进入交互模式,在交互模式输入代码就能看到执行结果。键盘按下ctrl+d 退出交互模式:

    python
    
Python轻应用交互式运行结果

  • 命令行输入下面的命令执行 LED 跑马灯程序:

    python /data/python-apps/driver/led/main.py
    
Python跑马灯运行结果

以下是HaaS100上跑马灯的代码示例。更多示例请参考 参考案例 界面。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# -*- coding: UTF-8 -*-
import utime
from driver import GPIO
# 初始化GPIO 类
gpio = GPIO()

leds=("led1", "led2", "led3", "led4", "led5")
for i in range(5):
    for led in leds:
        #open 函数支持的参数列表: led1, led2, led3, led4, led5
        gpio.open(led)
        #点亮led
        gpio.write(0)
        utime.sleep_ms(200)
        #熄灭led
        gpio.write(1)
        utime.sleep_ms(200)
        gpio.close()

同时我们也预置了上述代码到data分区方便开发者直接体验。输入下面的命令即可体验:

python /data/python-apps/driver/led/main.py

如果开发者手上有 Sdcard , 我们也支持直接从 Sdcard 运行Python文件。拷贝你的 Python 文件(假设为 test.py)到 Sdcard 并重启设备, 输入下面的命令运行 Sdcard 上的文件:

python /sdcard/test.py

5 编程接口能力

HaaS 100除了支持全量的原生接口外,还提供了丰富的外设及物联网接口。各个接口的详细使用请参考 编程接口

具体支持能力如下:

HaaS 100 基础库支持能力

基础库

支持能力

cmath

支持

math

支持

uarray

支持

ubinascii

支持

ucollections

支持

uerrno

支持

uhashlib

支持

uheapq

支持

uio

支持

ujson

支持

uos

支持

ure

支持

uselect

支持

usocket

支持

ussl

支持

ustruct

支持

usys

支持

utime

支持

uzlib

支持

_thread

支持

HaaS 100 轻应用特定库支持能力

轻应用特定库

支持能力

btree

支持

framebuf

支持

machine

支持

micropython

支持

ucryptolib

支持

urandom

支持

HaaS 100 Driver库支持能力

Driver库

支持能力

BoardConfig

支持

UART

支持

GPIO

支持

ADC

支持

DAC

支持

PWM

支持

I2C

支持

SPI

支持

TIMER

支持

KV

支持

HaaS 100 高级组件库支持能力

高级组件库

支持能力

iot

支持

minicv

支持

OSS

支持

audio

支持

blt_netconfig

支持

http

支持

mqtt

支持

network

支持

modbus

支持

ulog

支持

ota

支持

6 开机自启动

Python 轻应用支持开机自启动功能, 开发者只需要把相关文件推送到 data 分区 或者 SD 卡的 pyamp 路径下,并且提供 main.py 主入口文件,就能实现相关功能。 具体文件推送请参考 Python 轻应用开发工具 HaaS-Studio