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 模块的配置信息已经有了。

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'
View Code

关于ENV下的PIP安装扩展:env下下载并安装get-pip.py(python get-pip-py),然后可pip install app

posted on 2019-01-14 19:59  杰瑞鼠  阅读(2094)  评论(0编辑  收藏  举报