RTT之ENV
一 先安装工具git:在CMD命令行中运行git命令检验git环境变量安装成功
二 下载env工具:然后解压,打开对应的exe(打开失败可以尝试使用 env.bat)
然后右击-setting-intergration-registor这样后就可以在对应的目录下用右键直接打开env;Env同时对rt-thread软件包 进行管理。
三env的功能和命令:
Kconfig---menuconfig--->save/exit----->.config-----menuconfig.py----->rt_config.h----->软件包用到的宏
rtconfig.py:工具链设置,全局构建参数设置.
sconstruct/sconsript:分层指定构建内容。
tools/building.py:自定义构建接口。
3.1 配置自动生成mdk4/5/IAR相应的工程:eg:scons --target=mdk5
3.2自动编译:scons,注意默认是使用ARM GCC编译器,如果要使用keil mdk的ARM CC编译器则需要在Env命令行中这样指定:
set RTT_CC=keil
set RTT_EXEC_PATH=C:/Keilv5
3.3项目配置menuconfig(可以用tag键的自动补全功能):上下左右键移动,空格键使能禁能某个功能,shift+?进行查找,/进行
四软件包pkgs:可重用的软件包,从V3.0开始,使用方法:先利用menuconfig进行查找和配置相应的组件,然后使用命令:pkgs --update
五 config:在RTT源码下的任意一个BSP上进行:
menuconfig -s :设置每次退出menuconfig后自动生成软件包(pkgs --update)和自动重新生成相应mdk/iar工程(scons --target=mdk5)。
menuconfig的使用条件:1 RTT版本要V3.0以上 ;2自己的根目录下要有Kconfig文件(从)
六添加模块文件到scons:
6.1 在文件夹下有三个文件:xxx.c xxx.h还有SConscript(通过自定义宏 RT_USING_HELLO是否添加使能该模块),其中SConscript内容如下:
from building import *
cwd = GetCurrentDir()
include_path = [cwd]
src = []
if GetDepend(['RT_USING_HELLO']):
src += ['hello.c']
group = DefineGroup('hello', src, depend = [''], CPPPATH = include_path)
Return('group')
6.2 menuconfig 命令通过读取工程的各个 Kconfig 文件(如下,Kconfig语法),生成配置界面供用户配置内核,最后所有配置相关的宏定义都会自动保存到 BSP 目录里的 rtconfig.h 文件中,每一个 BSP 都有一个 rtconfig.h 文件,如果想在 menuconfig 的配置项中添加宏定义,则可以修改 BSP 下的 Kconfig 文件;新项目(还未生成 .config 和 rtconfig.h)通过拷贝别的BSP下的KCONFIG修改RTT_ROOT 值为 RT-Thread 所在目录,然后按照kconfig语法修改;还没有menconfig的项目首先备份旧项目内的 rtconfig.h 文件。使用 scons --genconfig根据已有的 rtconfig.h 生成 .config 文件,拷贝支持mencuconfig的BSP的Kconfig文件到项目根目录,修改RTT_ROOT,然后用menuconfig修改配置保存生成新的rtconfig.h .
Kconfig->Menuconfig->rtconfig.h->.config
保存配置后退出配置界面,打开 stm32f10x-HAL BSP 目录下的 rtconfig.h 文件可以看到 hello 模块的配置信息已经有了。
注意:每次 menuconfig 配置完成后都要使用 scons --target=XXX 命令生成新工程。
因为 rtconfig.h 中已经定义了 RT_USING_HELLO 宏,所以新生成工程时就会把 hello.c 的源文件添加到新工程中。
1 import os 2 3 # toolchains options 4 ARCH='arm' 5 CPU='cortex-m3' 6 CROSS_TOOL='gcc' 7 8 if os.getenv('RTT_CC'): 9 CROSS_TOOL = os.getenv('RTT_CC') 10 11 # cross_tool provides the cross compiler 12 # EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR 13 14 if CROSS_TOOL == 'gcc': 15 PLATFORM = 'gcc' 16 EXEC_PATH = '/usr/local/gcc-arm-none-eabi-5_4-2016q3/bin/' 17 elif CROSS_TOOL == 'keil': 18 PLATFORM = 'armcc' 19 EXEC_PATH = 'C:/Keilv5' 20 elif CROSS_TOOL == 'iar': 21 PLATFORM = 'iar' 22 EXEC_PATH = 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation' 23 24 if os.getenv('RTT_EXEC_PATH'): 25 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 26 27 BUILD = 'debug' 28 29 if PLATFORM == 'gcc': 30 # toolchains 31 PREFIX = 'arm-none-eabi-' 32 CC = PREFIX + 'gcc' 33 AS = PREFIX + 'gcc' 34 AR = PREFIX + 'ar' 35 LINK = PREFIX + 'gcc' 36 TARGET_EXT = 'elf' 37 SIZE = PREFIX + 'size' 38 OBJDUMP = PREFIX + 'objdump' 39 OBJCPY = PREFIX + 'objcopy' 40 41 DEVICE = '-mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections' 42 CFLAGS = DEVICE 43 AFLAGS = '-c' + DEVICE + '-x assembler-with-cpp' 44 LFLAGS = DEVICE + '-Wl,--gc-sections,-Map=rtthread-stm32.map,-cref,-u,Reset_Handler -T stm32_rom.ld'
关于ENV下的PIP安装扩展:env下下载并安装get-pip.py(python get-pip-py),然后可pip install app