一 先安装工具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. HUB和Switch

    http://baike.baidu.com/view/600161.htm 当然交换机的功能还不止如此,它可以把网络拆解成网络分支.分割网络数据流,隔离分支中发生的故障,这样就可以减少每个网络分支的 ...

  2. 《Head First Servlets & JSP》-12-Web应用安全

    serlvet安全的4大要素 认证.授权.机密性和数据完整性. 容器完成认证和授权的过程 代码中不要有安全信息 大多数Web应用,大多数情况下Web应用的安全约束都应该以声明方式处理,即在部署描述文档 ...

  3. ubuntu重新安装 apache2

    $ sudo apt-get --purge remove apache2 $ sudo apt-get --purge remove apache2.2-common $ sudo apt-get ...

  4. tomcat - 认识

    tomcat - web应用服务器 环境:ubuntu测试 @shell命令(cd到tomcat目录下) 启动: ./bin  startup.sh 关闭:./bin  shutdown.sh @部署 ...

  5. [Windows] VS打开资源文件(.rc)时显示 error RC2247 : SYMBOL name too long

    源解决方案:error RC2247 : SYMBOL name too long 解决方法: 将所有要包含的文件用 APSTUDIO_HIDDEN_SYMBOLS 宏包起来,保存后关闭当前的资源文件 ...

  6. [python]glob模块中的glob()函数为什么返回空列表??

    最近在学习语音的知识,看一个语音合成实现的相关工具包的源代码,碰到了glob()函数.然后开启了我与这个函数相爱想杀的一个下午. 摘自官网解释: https://docs.python.org/2/l ...

  7. go语言入门教程百度网盘 mysql图形化操作与数据导入

    mysql图形化操作与数据导入 @author:Davie 版权所有:北京千锋互联科技有限公司 数据库存储技术 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个 ...

  8. std::copy使用方法

    推荐2个c++函数库,类定义的资料库: http://en.cppreference.com/w/cpp/algorithm/copy http://www.cplusplus.com/referen ...

  9. kuangbin专题十二 HDU1260 Tickets (dp)

    Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  10. php字符串截取中文出现乱码解决

    在截取中文字符串时使用substr()容易出现乱码 可以使用mb_substr()用法与substr类似,但是比substr多了一个参数,第四个参数指定网页编码