一 先安装工具git:在CMD命令行中运行git命令检验git环境变量安装成功

二 下载env工具:然后解压,打开对应的exe然后右击-setting-intergration-registor这样后就可以在对应的目录下用右键直接打开env

三env的功能和命令:

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 文件(如下),生成配置界面供用户配置内核,最后所有配置相关的宏定义都会自动保存到 BSP 目录里的 rtconfig.h 文件中,每一个 BSP 都有一个 rtconfig.h 文件

保存配置后退出配置界面,打开 stm32f10x-HAL BSP 目录下的 rtconfig.h 文件可以看到 hello 模块的配置信息已经有了。

注意:每次 menuconfig 配置完成后都要使用 scons --target=XXX 命令生成新工程。

因为 rtconfig.h 中已经定义了 RT_USING_HELLO 宏,所以新生成工程时就会把 hello.c 的源文件添加到新工程中。

rtconfig.py 是一个 RT-Thread 标准的编译器配置文件

import os

# toolchains options
ARCH='arm'
CPU='cortex-m3'
CROSS_TOOL='gcc' if os.getenv('RTT_CC'):
CROSS_TOOL = os.getenv('RTT_CC') # cross_tool provides the cross compiler
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR if CROSS_TOOL == 'gcc':
PLATFORM = 'gcc'
EXEC_PATH = '/usr/local/gcc-arm-none-eabi-5_4-2016q3/bin/'
elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc'
EXEC_PATH = 'C:/Keilv5'
elif CROSS_TOOL == 'iar':
PLATFORM = 'iar'
EXEC_PATH = 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation' if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH') BUILD = 'debug' if PLATFORM == 'gcc':
# toolchains
PREFIX = 'arm-none-eabi-'
CC = PREFIX + 'gcc'
AS = PREFIX + 'gcc'
AR = PREFIX + 'ar'
LINK = PREFIX + 'gcc'
TARGET_EXT = 'elf'
SIZE = PREFIX + 'size'
OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy' DEVICE = '-mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections'
CFLAGS = DEVICE
AFLAGS = '-c' + DEVICE + '-x assembler-with-cpp'
LFLAGS = DEVICE + '-Wl,--gc-sections,-Map=rtthread-stm32.map,-cref,-u,Reset_Handler -T stm32_rom.ld'

RTT之ENV的更多相关文章

  1. laravel中如何防止直接访问.env文件

    .env文件含有数据库账号密码等敏感数据,在laravel5.2中,在本地访问127.0.0.1/laravel/.env可直接访问到.env. 为避免.env被直接访问,可使用重定向,方法如下: 在 ...

  2. jni调试3(线程调试env变量问题)

    jni层调试线程死机原因 一,导致死机原因:   jni层中  线程函数中  只要添加调用env 的函数 ,,就会死机     二,解决方法 第一我们应该理解: ①(独立性) JNIEnv 是一个与线 ...

  3. 【Junit 报错】No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).

    Junit报错 log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvi ...

  4. express+gulp构建项目(四)env环境变量

    这里的文件的作用是负责设置env环境变量和日志. index.js try { require('dotenv').load({silent: true}); //dotenv从一个.env文件中读取 ...

  5. #!/usr/bin/env python与#!/usr/bin/python的区别

    [摘自:http://blog.csdn.net/wh_19910525/article/details/8040494] 一般的python文件的开头都有#!/usr/bin/python.这是什么 ...

  6. java:comp/env/jdbc/ 的两种配置方法

    1. 在 META-INF 下建立文件: context.xml <?xml version="1.0" encoding="UTF-8"?> &l ...

  7. Cannot install NodeJs: /usr/bin/env: node: No such file or directory

    安装doxmate时,doxmate地址是:https://github.com/JacksonTian/doxmatenpm install doxmate -g 安装完后把错误:Cannot in ...

  8. python之fabric(一):环境env

    原文:https://my.oschina.net/indestiny/blog/289587 1. fabric有很多可配置的环境,如: user:默认用于ssh登录的本地用户名. password ...

  9. env,export

    这几个命令都是和Linux环境变量相关的 env 查看系统所有的环境变量,个人觉得这里面最重要的就是PATH,我们在终端敲入的命令,其实都是一个个脚本文件,那么Shell去哪找这些文件呢?搜索路径就存 ...

随机推荐

  1. Entity Framework Tutorial Basics(27):Update Entity Graph

    Update Entity Graph using DbContext: Updating an entity graph in disconnected scenario is a complex ...

  2. [译]Javascript中的for循环

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...

  3. C++工程实践 一个开始

    打算把C++工程过程中的一些总结写下来.从打算写这个内容到今天(2017/1/12)已经很多年了,但是一直没有想好如何写,反正就这样,有什么写什么吧. C++工程实践之所以难产,主要原因有几个 内容比 ...

  4. [转]VisualSVN错误 Cannot query proxy blanket解决办法

    最近重新做了一下系统,在安装和使用svn过程中遇到了一些问题,记下备忘. 第一次安装好系统之后,安装VisualSVN遇到报错: Custom action InstallWMISchemaExcut ...

  5. C#校验算法列举

    以下是工作中常用的几种校验算法,后期将不断更新 和校验 /// <summary> /// CS和校验 /// </summary> /// <param name=&q ...

  6. MongoDB 分片2

    mongodb 在windows下面进行分片 mongodb 更新很快,在做分片的时候,查找了不少文章,但是很多已经过时了.现在把我搭建的过程及命令分享给大家.我用的是最新版本windows版3.4. ...

  7. [Algorithm]树与二叉树

    一.树与二叉树相关算法 1.二叉树按顺序结构存储,求编号为i和j的两个结点的最近公共祖先结点的值 1 ElemType CommonAncestor( SeqTree T, int i, int j ...

  8. [hdu 2089] 不要62 数位dp|dfs 入门

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...

  9. Loadrunner 性能测试笔记

    性能测试脚本 // 关联token 放在请求返回前 web_reg_save_param("tokenId", "LB=,\"tokenId\":\& ...

  10. 常用linux基础命令(持续更新...)

    删除 空目录 rmdir非空目录 rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件命令rm -f 文件名将会强行删除文件,且无提 ...