HaaS 100¶
3. 环境搭建¶
环境搭建有两种方法:基于源码编译烧录和基于官方固件直接烧录。如果没有特殊需求,建议开发者基于官方固件快速搭建 Python 开发环境。
I. 固件下载和烧录¶
MacOS 电脑烧录需要用到pyserial工具,请输入下面的命令进行安装:
pip3 install pyserial第一步:下载对应HaaS硬件设备的官方固件包并解压(HaaS 100 不区分电脑系统,MacOS 和Windows 固件均通过 Python 命令行烧录)。
¶ HaaS型号
MacOS/Windows 固件下载链接
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 foundWin 系统:
开发者可以通过控制面板下的设备管理器,查询当前电脑下HaaS设备插入后新增的端口。示例中显示 HaaS 设备连接后新增的串口为 COM7
第三步:更新 HaaS 设备固件。
下载并解压第一步中附带的固件,执行下面的命令行进入到解压后的目录并烧录固件(这里我们假设解压后固件路径为 Downloads/haas100):
MacOS 系统推荐使用 picocom 连接串口
cd ~/Downloads/haas100 python flash_program.py --bin=./ota_rtos.bin --bin=./littlefs.bin#0xB32000Win系统烧录推荐使用 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-AU03P0PAWin 推荐使用 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
命令行输入下面的命令执行 LED 跑马灯程序:
python /data/python-apps/driver/led/main.py以下是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除了支持全量的原生接口外,还提供了丰富的外设及物联网接口。各个接口的详细使用请参考 编程接口。
具体支持能力如下:
¶ 基础库
支持能力
cmath
支持
math
支持
uarray
支持
ubinascii
支持
ucollections
支持
uerrno
支持
uhashlib
支持
uheapq
支持
uio
支持
ujson
支持
uos
支持
ure
支持
uselect
支持
usocket
支持
ussl
支持
ustruct
支持
usys
支持
utime
支持
uzlib
支持
_thread
支持
¶ 轻应用特定库
支持能力
btree
支持
framebuf
支持
machine
支持
micropython
支持
ucryptolib
支持
urandom
支持
¶ Driver库
支持能力
BoardConfig
支持
UART
支持
GPIO
支持
ADC
支持
DAC
支持
PWM
支持
I2C
支持
SPI
支持
TIMER
支持
KV
支持
¶ 高级组件库
支持能力
iot
支持
minicv
支持
OSS
支持
audio
支持
blt_netconfig
支持
http
支持
mqtt
支持
network
支持
modbus
支持
ulog
支持
ota
支持
6 开机自启动¶
Python 轻应用支持开机自启动功能, 开发者只需要把相关文件推送到 data 分区 或者 SD 卡的 pyamp 路径下,并且提供 main.py 主入口文件,就能实现相关功能。 具体文件推送请参考 Python 轻应用开发工具 HaaS-Studio