zoukankan      html  css  js  c++  java
  • RTT之ENV

    一 先安装工具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 模块的配置信息已经有了。

    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'
  • 相关阅读:
    vue3.0中如何使用ueditor
    如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索
    select 使其默认选中文本不为空
    java环境配置
    amaze ui 滚动监听
    vue项目中如何使用less
    强大的css3库
    input type file兼容性
    select中想要加a链接 并且新窗口打开
    echarts绘制k线图为什么写candlestick类型就报错
  • 原文地址:https://www.cnblogs.com/jieruishu/p/10268755.html
Copyright © 2011-2022 走看看