本文介绍如何将第一个 MiCO 应用程序跑起来。即:如何借助 mico-cube 工具 和 MiCoder IDE 进行 MiCO 应用程序:Helloworld 工程获取,编译,下载,运行与调试。
连接调试串口: 将 MiCOKit-3165 开发板通过 Micro-USB 线连接至 PC,以为开发板提供电源和连接调试串口,即:
用户PC端USB口 ————> Micro USB 串口线 ————> 开发板
连接仿真器:将开发板的 JTAG 口通过 JLink 或 STLink (仅针对 ST 芯片) 仿真器,连接至 PC,即:
用户PC端USB口 —————> USB线 —————> 仿真器 —————> JTAG 排线 —————> 开发板
连接USB转串口模块: 若需要 查看用户串口 log,需将 PC 端通过USB转串口模块,连接到开发板的用户串口管脚,即:
用户PC端USB口 —————> USB转串口模块 ————> TX,RX串口线 ————> 开发板
首先,您的 PC 端需要:
1) 安装 Python,要求版本:2.7.13。
安装过程中需要注意:
Python 的可执行文件目录 (Python) 需要添加到系统的 PATH 环境变量中,在 Python 安装时指定,Windows 系统中如下图。
确认安装好 Python 后,找到 Python 的安装目录,接着找到 pip.exe,一般而言它会在Scripts文件夹下,这里选择的是pip2.7.exe,如图。
接下来,win+r,输入cmd,回车打开系统命令行工具,将pip2.7.exe拖动至命令提示符窗口,出现如下代码,然后回车。
至此,Python 2.7.13 安装完毕。可在终端上输入命令:python --version
来验证Python是否正确安装,如下:
python --version
Python 2.7.13
2) 安装 Git,要求版本:1.9.5及以上;或安装 Mercurial ,要求版本:2.2.2及以上。可在终端上输入命令:git --version
,来验证Git是否正确安装,如下:
git --version
git version 2.11.0 (Apple Git-81)
3)下载 MiCoder Tools,要求版本:1.1及以上,并解压。
以上3点准备完毕,您就可以打开终端,输入指令安装 MiCO Cube 啦。
1) 安装MiCO-Cube
打开系统命令行工具,输入指令如下:
$ pip install mico-cube
Collecting mico-cube
Downloading mico-cube-1.0.6.tar.gz
Installing collected packages: mico-cube
Running setup.py install for mico-cube ... done
Successfully installed mico-cube-1.0.6
注意:在Linux和macOS上, 需要加上
sudo
获得安装权限。
2) 升级MiCO-Cube
MiCO Cube 安装完成后,您还可以通过指令升级MiCO Cube的版本。
$ pip install --upgrade mico-cube
Collecting mico-cube
Downloading mico-cube-1.0.6.tar.gz
Installing collected packages: mico-cube
Found existing installation: mico-cube 1.0.0
Uninstalling mico-cube-1.0.0:
Successfully uninstalled mico-cube-1.0.0
Running setup.py install for mico-cube ... done
Successfully installed mico-cube-1.0.6
3)为MiCO Cube 配置MiCoder Tools路径
特别注意: 如果您想通过MiCO Cube命令进行编译和下载MiCO项目,必须 为MiCO Cube设置MiCoder Tools的路径。这里的路径是指 MiCoder 文件夹在您 PC 中的位置。
$ mico config --global MICODER ~/MiCO_SDK/MiCO/MiCoder
[mico] /Users/william/MiCO_SDK/MiCO/MiCoder now set as default MICODER in program "helloworld"
配置好后,可查看 MiCO Cube 的有效配置参数:
$ mico config --list
[mico] Global config:
MICODER=/Users/william/Develop/MiCO_SDK/MiCO/MiCoder
[mico] Local config (/Users/william/Develop/mico-program/helloworld):
No local configuration is set
根据您 PC 端的系统类型,下载: MiCoder IDE,并安装。
您需要在 PC 端查看 “调试串口” log内容,需安装驱动: Micro-USB 串口驱动,推荐:FIDI(调试串口即指 MiCOKit 上的 micro-usb 接口)。
您需要在 PC 端连接 “用户串口” 并调试,需安装驱动:USB转串口模块驱动,推荐:CP2102 Driver。
同时,还需要在 PC 端安装串口调试软件,推荐:SecureCRT (可用该软件查看 以上串口的 log 打印信息) 。
如果您在Window系统中使用jlink仿真器进行下载,需要 更新Jlink驱动程序。
首先,您需要从MiCO仓库中导入一个项目。 在终端中输入命令:
mico import https://code.aliyun.com/mico/helloworld.git
Tips: 若需要看到详细的项目导入过程 log 信息,可以在指令中加入 -v -vv 后缀,形如:
$ mico import https://code.aliyun.com/mico/helloworld.git -v -vv
也可以缩写为:mico import helloworld
代码获取到本地后,切换至当前工程目录:
cd helloworld
注意:为了确保获取到的 mico-os 是最新版本,请输入命令:
$ cd mico-os
$ git checkout mico-os-3.5 # Switch branch to mico-os-3.5
Previous HEAD position was 6949563... Merge branch 'master' into mico-os-3.5
Switch to a new branch 'mico-os-3.5'
Branch mico-os-3.5 set up to track remote branch mico-os-3.5 from origin.
$ mico update # This will update "mico-os" to latest version, not "mico-example-program"
[mico]Updating library "mico-os" to latest revision in the current branch.
或
$ mico update 3.5.x # This will update "mico-os" to the designated version
[mico]Updating library "mico-os" to branch 3.5.x
命令终端输入 MiCO Cube 编译命令:
mico make helloworld@MK3165
编译过程需要几秒钟左右,编译结束后,编译成功结束后,log信息如下:
MICO MEMORY MAP
|=================================================================|
| MODULE | ROM | RAM |
|=================================================================|
| App_Helloworld | 141 | 0 |
| Board_MK3165 | 1308 | 124 |
| crt0_GCC | 272 | 0 |
| FreeRTOS | 5832 | 424 |
| hardfault_handler | 991 | 0 |
| libc | 38059 | 2268 |
| libgcc | 3360 | 0 |
[snip]
| STM32F4xx | 5115 | 2215 |
| STM32F4xx_Peripheral_Drivers | 9299 | 236 |
| STM32F4xx_Peripheral_Libraries | 5948 | 16 |
| *fill* | 253 | 926 |
|=================================================================|
| TOTAL (bytes) | 243524 | 34971 |
|=================================================================|
Build complete
Making .gdbinit
Making .openocd_cfg
make 编译命令格式:[target] [download] [run | debug] [JTAG=xxx] [VERBOSE=1] [JOBS=<jobs>]
参数如下:
<target>
用于选择编译目标. 目标由参与编译的各个组件构成, 以下的每一个组件用'@‘分割开来。
Application
(项目中需要编译的应用程序组件,即应用程序在项目中的路径,并将/
替换成.
)
Board
( mico-os/board/*
中定义的硬件平台组件 )
[RTOS]
( mico-os/MiCO/rtos/*
中定义的RTOS内核组件, 默认使用 FreeRTOS
)
[Network Stack]
( mico-os/MiCO/net/*
中定义的网络协议栈组件,默认使用 LwIP
)
[TLS]
( mico-os/MiCO/security/TLS/*
中定义的安全传输组件, 默认使用 wolfSSL
)
[debug | release_log | release]
( 编译选项默认使用release_log
) Note: 如果你使用moc平台,例如 MK3031
, MK3080
, 添加 moc
等同于同时添加 mocOS@mocIP@mocTLS
。
[download]
通过调试器(安装)下载目标固件到硬件平台,。
[run|debug]
通过调试器(安装)复位硬件并运行程序或者连接到目标处理器进行调试。
[JTAG=xxx]
mico-os/makefiles/OpenOCD/interface 中定义的JTAG接口配置文件。默认使用jlink_swd
, 该参数可省略不写。
[VERBOSE=1]
(可选) 显示编译过程中运行的命令。
[JOBS=<jobs>]
(可选) 控制多线程编译,提高编译速度。默认值是 4。可以根据处理器核心的数量来设置这个参数,也可以使用 JOBS=1
来执行单线程的顺序编译.
如:
helloworld@MK3165 JTAG=jlink_swd
helloworld@MK3165 total
helloworld@MK3031@moc total download JTAG=jlink_swd
helloworld@MK3080B@moc total download JTAG=jlink_swd
编译生成的可执行文件,ELF文件,内存使用和链接数据可以在 build/<target>/binary
目录下找到。
命令终端输入 mico-cube 下载命令:
mico make helloworld@MK3165 download
下载过程需要几秒钟左右。
Skipping building bootloader due to "total" is not set
MICO MEMORY MAP
|=================================================================|
| MODULE | ROM | RAM |
|=================================================================|
| App_Helloworld | 141 | 0 |
| Board_MK3165 | 1192 | 120 |
| crt0_GCC | 272 | 0 |
| FreeRTOS | 5832 | 424 |
| hardfault_handler | 991 | 0 |
| libc | 42755 | 2268 |
| libgcc | 3360 | 0 |
| Lib_gpio_button_MK3165 | 224 | 200 |
| Lib_JSON_C | 6762 | 12 |
| Lib_MiCO_Kernel | 12 | 12 |
| Lib_MiCO_System | 26736 | 415 |
| Lib_MiCO_System_QC | 1312 | 80 |
| Lib_SPI_Flash_Library_MK3165 | 904 | 0 |
| Lib_Utilities | 8861 | 0 |
| Lib_wolfSSL.Cortex-M4.GCC.release | 14867 | 8 |
| LwIP | 112 | 0 |
| mem_newlib | 96 | 16 |
| MiCO.3165.GCC | 102733 | 27880 |
| MiCO_FreeRTOS_Interface | 2949 | 36 |
| mico_system_power_daemon | 653 | 25 |
| platform_vector_table | 0 | 0 |
| stdio_newlib | 108 | 0 |
| STM32F4xx | 4385 | 2215 |
| STM32F4xx_Peripheral_Drivers | 7731 | 236 |
| STM32F4xx_Peripheral_Libraries | 5350 | 16 |
| *fill* | 227 | 925 |
|=================================================================|
| TOTAL (bytes) | 238565 | 34888 |
|=================================================================|
Downloading Bootloader ...
Skipping download bootloader due to "total" is not set
Downloading application to partition: 2 size: 241448 bytes...
Download complete
Build complete
Making .gdbinit
Making .openocd_cfg
如果是第一次下载固件,可在编译命令中使用 total ,即包含 bootloader 工程一起编译, 下载命令中也使用 total,即全片固件下载,包含:bootloader,app 和 射频固件。
打开 MiCoder IDE,选择:File–>Import,选择:General–>Existing Projects into Workspace,然后 Next,点击 Browse ,选择 MiCO SDK 文件路径,点击 Finish ,即可导入成功。
导入后,IDE界面如图:
在 IDE 右侧 “make target settings"中添加新 make 命令,详细 make 命令格式及使用,请参考:编译与下载命令行。
make 命令添加方法:
应用程序功能:(1)调试串口打印字符串:“Helloworld!”;(2)开发底板LED灯间隔1秒闪烁。
串口log:应用程序下载成功后,打开串口工具软件 SecureCRT,参数设置如下:
查看串口 log 内容:
[2][Platform: mico_platform_common.c: 98] Platform initialised, build by GNUC
[651][APDS9930: APDS9930.c: 168] APDS9930_ERROR: no i2c device found!
[1080][BME280_USER: bme280_user.c: 480] BME280_ERROR: no i2c device found!
[1107][RTOS: mico_rtos_common.c: 82] Started FreeRTOS v7.1.0
[1703][SYSTEM: system_misc.c: 222] Free memory 75368 bytes
[1709][SYSTEM: system_misc.c: 228] Kernel version: 31621002.050
[1715][SYSTEM: system_misc.c: 231] MiCO version: 3.0.0
[1720][SYSTEM: system_misc.c: 233] Wi-Fi driver version wl0: Nov 7 2014 16:03:45 version 5.90.230.12 FWI, mac C8:93:46:53:B7:61
[1732][SYSTEM: config_server.c: 148] Config Server established at port: 8000, fd: 1
[1932][helloworld: helloworld.c: 43] Hello world!
现象:观察 MiCOKit 开发底板右下角黄绿LED灯间隔1秒交替亮灭。
MiCoder IDE 支持 MiCO 应用程序在线调试功能,这里可以选择调试 MiCO 应用程序 或 MiCO Bootloader 程序,二者参数配置一致,具体参数配置方法:
更详细的 MiCoder IDE 中调试内容请参考:如何在 IDE 中调试 MiCO 应用程序
#include "MICO.h"
#define os_helloworld_log(format, ...) custom_log("helloworld", format, ##__VA_ARGS__)
int application_start( void )
{
/* Start MiCO system functions according to mico_config.h*/
mico_system_init( mico_system_context_init( 0 ) );
/* Output on debug serial port */
os_helloworld_log( "Hello world!" );
/* Trigger MiCO system led available on most MiCOKit */
while(1)
{
MicoGpioOutputTrigger( MICO_SYS_LED );
mico_thread_sleep(1);
}
}
更多 MiCO 开发内容,请参考文档中心其它页面。
上一篇:3.1 引导程序
版权所有 © 2017 - 2018 MXCHIP授权代理商 - 深圳市博易特智能科技有限公司 粤ICP备17063559号
服务热线:0755-23733662 Email:info@mxchip.cc