星通智联TB01 W600芯片 RT-Thread在苹果MacOS+GCC环境下的编译与固件刷写

简介

到手了一块W600芯片的星通智联TB01,与ESP8266相似,自带wifi,但却芯片内置1M 的存储,并且可以使用RT-Thread系统,于是上手耍起来。
在这里插入图片描述在这里插入图片描述

刚拿到板子,发现真的非常小巧,呈星型排布的蓝色LED非常有特色。板子上只有个MicroUSB,上电与刷写固件均使用这个口,可以说是非常简洁了。两边共放置了24个排针插孔,赠送插针没有焊,整体看着非常舒爽。

下载官方的SDK(从QQ群中获取,github上也有),展开后,非常简洁

➜  rt tree RT-Thread_W60X_SDK -L 1
RT-Thread_W60X_SDK
├── README.pdf
├── docs
├── drivers
├── examples
├── libraries
├── rt-thread
└── tools

6 directories, 1 file

相关的文档也非常齐全,看着内心无比愉悦,赶紧上手搞起来!

环境

我使用的环境是MacOS+GCC

点灯

上手一块板子,点灯可以说是第一课了。这里官方提供的examples可以说是非常完整了:

➜  rt tree RT-Thread_W60X_SDK/examples -L 1
RT-Thread_W60X_SDK/examples
├── 01_basic_led_blink
├── 02_basic_key
├── 03_basic_rgb_led
├── 04_basic_beep
├── 05_basic_ir
├── 06_driver_lcd
├── 07_driver_temp_humi
├── 08_driver_als_ps
├── 09_component_fs_tf_card
├── 10_component_fal
├── 11_component_kv
├── 12_component_fs_flash
├── 13_component_ulog
├── 14_component_adbd
├── 15_component_micropython
├── 16_iot_wifi_manager
├── 17_iot_web_config_wifi
├── 18_iot_airkiss
├── 20_iot_at_server
├── 21_iot_mqtt
├── 22_iot_http_client
├── 23_iot_web_server
├── 24_iot_websocket
├── 25_iot_cjson
├── 26_iot_mbedtls
├── 27_iot_hw_crypto
├── 28_iot_ota_ymodem
├── 29_iot_ota_http
├── 30_iot_netutils
├── 31_iot_cloud_rtt
├── 32_iot_cloud_onenet
├── 33_iot_cloud_ali_iotkit
├── 34_iot_cloud_ms_azure
├── 35_iot_cloud_tencent
└── 36_iot_board_demo

35 directories, 0 files

我们首先使用第一个 01_basic_led_blink 进行学习和上手。

➜  rt tree RT-Thread_W60X_SDK/examples/01_basic_led_blink -L 1 
RT-Thread_W60X_SDK/examples/01_basic_led_blink
├── Bin
├── Kconfig
├── README.md
├── ROM.ini
├── SConscript
├── SConstruct
├── applications
├── build
├── cconfig.h
├── makeimg.bat
├── makeimg.py
├── project.ewp
├── project.eww
├── project.uvoptx
├── project.uvprojx
├── rtconfig.h
├── rtconfig.py
├── rtconfig.pyc
├── rtthread-w60x.map
├── rtthread.bin
├── rtthread.elf
├── template.ewp
├── template.uvoptx
└── template.uvprojx

3 directories, 21 files

这里默认有Keil的工程文件,是针对使用Windows+keil的开发者使用的。而我是Mac用户,习惯使用GCC,这里就忽略那些工程文件了。

修改源码

直接打开 examples/01_basic_led_blink/applications 就可以看到main.c,根据相关文档,我们这里只把led灯的引脚改为TB01的一个LED即可,不过我这里做了一点点小修改:

#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

/* 配置 LED 灯引脚 */
#define LED_PIN     PIN_LED_R
int pins[5] = {19, 20, 21, 22, 23};
int main(void)
{
    unsigned int count = 1;
    unsigned int i = 0;
    for (i = 0; i < 5; i++) {
        /* 设置 LED 引脚为输出模式 */
        rt_pin_mode(pins[i], PIN_MODE_OUTPUT);
    }
    while (count > 0)
    {
        for (i = 0; i < 5; i++) {
            /* LED 灯亮 */
            rt_pin_write(pins[i], PIN_LOW);
            LOG_D("led on, count: %d;pins[%d]", count, pins[i]);
            rt_thread_mdelay(500);
        }
        for (i = 0; i < 5; i++) {
            /* LED 灯灭 */
            rt_pin_write(pins[i], PIN_HIGH);
            LOG_D("led off");
            rt_thread_mdelay(500);
        }
        count++;
    }
    return 0;
}

不过根据文档,还需要修改examples/01_basic_led_blink/rtconfig.h

/* W60x Device config */
#define SOC_W600_A8xx
// #define SOC_W601_A8xx

编译

scons

编译环境这个地方,需要修改配置文件:examples/01_basic_led_blink/rtconfig.py

EXEC_PATH   = '/Users/lee/rt/gcc-arm-none-eabi-6-2017-q1-update/bin'

这里我采用的是gcc-arm-none-eabi-6-2017-q1-update版本,因为最新版本编译时,会有问题。(这里先占位,后续再写篇文章详细描述。)

固件生成

适配苹果MacOS系统环境

SDK默认支持Windows 和 Linux 两种系统,但是MacOS虽然与Linux同源,但仍有些区别,恰好,

tools/ota_packager/rt_ota_packaging_tool_cli
libraries/WM_Libraries/Tools/makeimg
libraries/WM_Libraries/Tools/makeimg_all
tools/update_fls

这几个重要文件都没有办法在MacOS上使用:

➜  RT-Thread_W60X_SDK file libraries/WM_Libraries/Tools/makeimg 
libraries/WM_Libraries/Tools/makeimg: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=77563dbbf392d9903c683a52939eeaf7f152d10f, not stripped


在群里寻求帮助,但可惜没有比较合适的办法,只好自己编译这几个文件了。其实这几个文件,除了rt_ota_packaging_tool_cli 之外,都在SDK中带了源码,编译就好了。

➜  RT-Thread_W60X_SDK gcc libraries/WM_Libraries/Tools/makeimgsource/makeimg.c -o libraries/WM_Libraries/Tools/makeimg
➜  RT-Thread_W60X_SDK gcc libraries/WM_Libraries/Tools/makeimgsource/makeimg_all.c -o libraries/WM_Libraries/Tools/makeimg_all

 

就这么简单,makeimgmakeimg_all 就编译成功了。运行一下:

➜  RT-Thread_W60X_SDK ./libraries/WM_Libraries/Tools/makeimg                                                                  

param cnt error
参数0:  exe
参数1:  输入bin文件 ,原始文件或者压缩档文件
参数2 : 输出文件
参数3:  输入IMAGE类型,0:user image,1:reserved,2:secboot
参数4:  输入压缩类型标志,0:非压缩,1:压缩
参数5:  版本号文件
参数6: 输入image存放位置
参数7: 输入image运行位置
参数8: 输入原始image文件
➜  RT-Thread_W60X_SDK ./libraries/WM_Libraries/Tools/makeimg_all

param cnt error
参数0:  exe
参数1:  输入secboot.img文件
参数2:  输入image文件
参数3 : 输出文件
➜  RT-Thread_W60X_SDK 
 
 

非常顺利。

接下来就是 update_fls

➜  RT-Thread_W60X_SDK gcc tools/make_fal/crc32.c tools/make_fal/make_fal.c -Itools/make_fal/ -o tools/update_fls          
➜  RT-Thread_W60X_SDK file tools/update_fls
tools/update_fls: Mach-O 64-bit executable x86_64
➜  RT-Thread_W60X_SDK tools/update_fls 
param cnt error!
param 0: .
param 1: input FLS file
param 2: input FAL file
param 3: output FLS file
➜  RT-Thread_W60X_SDK 
 
 

同样顺利。

编译生成固件

剩下就是标准步骤了:

➜  RT-Thread_W60X_SDK cd examples/01_basic_led_blink 
➜  01_basic_led_blink python makeimg.py 
makeimg rtthread.rbl ...
/bin/sh: /Users/lee/rt/RT-Thread_W60X_SDK/tools/ota_packager/rt_ota_packaging_tool_cli: cannot execute binary file
makeimg 1M Flash...
makeimg 2M Flash...
end
➜  01_basic_led_blink ls -t Bin
rtthread_layout_16M.FLS  rtthread_layout_1M.FLS   version.txt           
 
  
     

这样,我们的固件就生成了。

刷写固件

但是,另一个问题来了,怎么下载到板子上呢?官方提供的刷写都是在Windows下,使用自家开发的串口工具进行下载的,虽然非常方便,但是对于我这个工作环境不适用啊?

参考文档

本来这个问题让我挺头大的,但是,其实解决起来确实非常简单。

在官方提供的文档中libraries/WM_Libraries/Doc/WM_W60X_固件升级指导_V1.2.pdf

中,明确指出,可以使用secureCRT工具进行刷写固件。

恰巧,我的MacOS系统也安装了这个secureCRT工具。

刷写方法

文档中已经写的非常详细了,我这边简单写一下就是:TB01开发板,只需要按住key键,再按一下Reset键,松开两个按键,即可进入刷机模式,然后拖拽固件rtthread_layout_1M.FLS 到窗口中,使用Xmodem选项下载,等待下载完成,再次按下Reset即可。就是这么简单。

总结

至此,终于可以愉快的在星通智联TB01 W600芯片 上使用RT-Thread了。

纵观整个过程,我也有过很多迷茫,中间求助群友,被冷嘲热讽了一下,但是经过不懈的学习,查阅资料,终于解决了自己的问题,内心还是很有成就感的。

至于我使用什么样的环境,也许并不跟我的信仰、道德、人品挂钩。并且,丰富开发环境,让开发者能够更简单的使用,降低上手门槛,让更多不同平台的开发者都可以参与其中,这不跟星通智联TB01的设计理念相通吗?

这也提醒着我,今后如果碰到别的群友遇到了他们解决不了的问题,不要站在道德或知识的至高点去打击他们,而是鼓励、帮助他们解决问题,这才能成为一个 更好的自己

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值