CMake搭建GHS工具链编译RH850/U2A16

这篇具有很好参考价值的文章主要介绍了CMake搭建GHS工具链编译RH850/U2A16。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译参数和链接参数,都是参考GHS IDE中编译的输出文件。在编译输出目录中,会有很多 .o 文件,里面有每个文件的编译命令。编译参数参数可以参考该出处。链接参数参考GHS IDE工程主目标的链接命令,在最下面的command窗口中,会有完整的链接命令,链接参数可以参考该位置。

ghs_ccv850.cmake

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_C_COMPILER_WORKS TRUE CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER_WORKS TRUE CACHE INTERNAL "")
set(CMAKE_C_COMPILER_FORCED TRUE CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER_FORCED TRUE CACHE INTERNAL "")
set(CMAKE_C_COMPILER_ID_RUN TRUE CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER_ID_RUN TRUE CACHE INTERNAL "")

set(CMAKE_C_COMPILER "C:/ghs/comp_202015/ccv850.exe")
set(CMAKE_CXX_COMPILER "C:/ghs/comp_202015/cxv850.exe")
set(CMAKE_AR "C:/ghs/comp_202015/cxv850.exe")
set(CMAKE_ASM_COMPILER "C:/ghs/comp_202015/ccv850.exe")

set(LINK_TOOL_COMPILER "C:/ghs/comp_202015/ccv850.exe")

set(GHS_TOOLSET_ROOT "C:/ghs")

set(CMAKE_C_FLAGS "-MD -cpu=rh850g4mh --preprocess_linker_directive_full -large_sda -large_zda -farcalls -ghsmc_core_count=1 -ghsmc_file="${CMAKE_SOURCE_DIR}"/StartupBuild.ghsmc -D__RH850_U2A__ -D__RH850_U2A__ -D__RH850_U2A16__ -fnofunctions -sda=all -dwarf2 -shorten_loads -no_init_ram_at_startup -g -no_data_delete -no_uvfd -no_codefactor -no_ignore_debug_references -Osize -object_dir=OBJ")
set(CMAKE_ASM_FLAGS "-MD -G -Odebug -bsp generic -cpu=rh850g4mh -pic -pid -ghsmc_core_count=1 -ghsmc_file="${CMAKE_SOURCE_DIR}"/StartupBuild.ghsmc -object_dir=OBJ")

set(CMAKE_C_LINK_FLAGS "")
set(CMAKE_C_LINK_EXECUTABLE "${LINK_TOOL_COMPILER} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET>")

主目录CMakeLists.txt

cmake_minimum_required(VERSION 3.2)

#设置编译器
set(CMAKE_TOOLCHAIN_FILE ./cmake/ghs_ccv850.cmake)

#设置cmake工程名
project(${PRODUCT_TYPE} LANGUAGES C ASM)

set(PRODUCT_TYPE u2a16)

#设置目标文件
set(PROJECT_TARGET ${PRODUCT_TYPE}.elf)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

#添加源文件到目标文件
ADD_EXECUTABLE(${PROJECT_TARGET} ${SOURCES})

#设置链接选项
set(LINK_OPTIONS -cpu=rh850g4mh -MD -bsp generic -pic -pid -ghsmc_core_count=1 -ghsmc_file=${CMAKE_SOURCE_DIR}/StartupBuild.ghsmc -object_dir=OBJS -T ${CMAKE_SOURCE_DIR}/platform/Linker/U2A16_Common.ld
    )
target_link_options(${PROJECT_TARGET} PRIVATE ${LINK_OPTIONS})

#添加库文件到目标文件
target_link_libraries(${PROJECT_TARGET} )

#增加子目录
add_subdirectory(platform)
add_subdirectory(src)

汇编启动代码的编译
由于CMake无法识别 .850 后缀的汇编代码,直接修改后缀,使用 ccv850 工具链编译是会有问题,目前看到的现象是无法进行预处理,会导致一些不需要的符号被编译进去,导致链接失败。
因此的解决办法是对于这些启动文件进行单独编译,再把 .o 加到链接参数里面。

startup文章来源地址https://www.toymoban.com/news/detail-529838.html


cmake_minimum_required(VERSION 3.1)

set(SOURCES_LIST
    ${CMAKE_CURRENT_SOURCE_DIR}/Interrupt_Handler.c
    ${CMAKE_CURRENT_SOURCE_DIR}/Interrupt_VectorTable.c
)

set(HDR_PATH_LIST
    # ${CMAKE_SOURCE_DIR}/platform/startup
)

add_dependencies(
    ${PROJECT_TARGET} startup
    )

add_custom_target(
    startup
    DEPENDS ${CMAKE_SOURCE_DIR}/build/OBJ/coldreset.o ${CMAKE_SOURCE_DIR}/build/OBJ/exception.o ${CMAKE_SOURCE_DIR}/build/OBJ/set_csa.o
)

add_custom_command(
    OUTPUT ${CMAKE_SOURCE_DIR}/build/OBJ/coldreset.o
    COMMAND ${CMAKE_C_COMPILER} -c -MD -G -Odebug -bsp generic -cpu=rh850g4mh -pic -pid -ghsmc_core_count=1 -ghsmc_file=${CMAKE_SOURCE_DIR}/StartupBuild.ghsmc -object_dir=${CMAKE_SOURCE_DIR}/build/OBJ -filetype.assembly ${CMAKE_CURRENT_SOURCE_DIR}/coldreset.850 -o coldreset.o
)

add_custom_command(
    OUTPUT ${CMAKE_SOURCE_DIR}/build/OBJ/exception.o
    COMMAND ${CMAKE_C_COMPILER} -c -MD -G -Odebug -bsp generic -cpu=rh850g4mh -pic -pid -ghsmc_core_count=1 -ghsmc_file=${CMAKE_SOURCE_DIR}/StartupBuild.ghsmc -object_dir=${CMAKE_SOURCE_DIR}/build/OBJ -filetype.assembly ${CMAKE_CURRENT_SOURCE_DIR}/exception.850 -o exception.o
)

add_custom_command(
    OUTPUT ${CMAKE_SOURCE_DIR}/build/OBJ/set_csa.o
    COMMAND ${CMAKE_C_COMPILER} -c -MD -G -Odebug -bsp generic -cpu=rh850g4mh -pic -pid -ghsmc_core_count=1 -ghsmc_file=${CMAKE_SOURCE_DIR}/StartupBuild.ghsmc -object_dir=${CMAKE_SOURCE_DIR}/build/OBJ -filetype.assembly ${CMAKE_CURRENT_SOURCE_DIR}/set_csa.850 -o set_csa.o
)

target_link_options(${PROJECT_TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/build/OBJ/coldreset.o ${CMAKE_SOURCE_DIR}/build/OBJ/exception.o ${CMAKE_SOURCE_DIR}/build/OBJ/set_csa.o)
target_sources(${PROJECT_TARGET} PRIVATE ${SOURCES_LIST})
target_include_directories(${PROJECT_TARGET} PRIVATE ${HDR_PATH_LIST})

到了这里,关于CMake搭建GHS工具链编译RH850/U2A16的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AUTOSAR】RH850(F1KM) MCU PWM配置(MCAL)

    前言 在嵌入式项目中,我们经常需要使用到PWM信号。本文将基于汽车电子AUTOSAR架构下的软件开发方式。以RH850为例进行说明,介绍如何查阅芯片参考文档,并结合项目原理图,使用Davinci工具配置MCAL PWM模块,输出PWM波形。 仅供大家学习参考。 其他MCU的配置方法类似,需要找

    2024年02月13日
    浏览(45)
  • Autosar MCAL-RH850P1HC Mcu配置

    2024年01月18日
    浏览(45)
  • 瑞萨RH850-P1X ECM和英飞凌TC3xx SMU对比

            P1X ECM(Error Control Module)收集从不同的错误源和监控电路发来的错误信号,并通过error pin(ERROROUTZ)对外输出、产生中断并发出ECM reset信号。         P1x-C系列根据产品型号不同,ECM个数也不相同,如下:         对应寄存器基地址如下:         其内部结构

    2024年02月08日
    浏览(47)
  • CMake rv1109交叉编译环境搭建

    准备安装包VMware-workstation-full-15.5.1-15018445.exe 下载地址 安装 参考资料 准备安装包ubuntu-18.04.4-desktop-amd64.iso 下载地址 安装 参考资料 准备安装包rv1109_toolchain_release.tar.bz2 下载地址 解压安装包rv1109_toolchain_release.tar.bz2 运行安装包脚本安装 配置环境变量~/.bashrc 安装结果检查 如下

    2024年02月10日
    浏览(38)
  • 04-vscode搭建cmake的编译环境

    vscode+mingw搭建C/C++环境系列 01.vscode+mingw搭建编译调试环境 02-vscode编译调试单个源文件程序 03-vscode编译调试多个源文件程序 04-vscode搭建cmake的编译环境 前面的文章中提到过通过修改settings.json文件和tasks.json文件可以完成多个源文件程序编译运行,但是如果源文件较多,每次都

    2024年01月17日
    浏览(42)
  • 嵌入式C编译工具:gcc/make/Autotools/cmake

    gcc时GNU编译套件,一种编译器,可以编译c,c++,java等语言。当只有一个文件时,使用gcc编译器就很方便,但是当有多个文件时,编译顺序以及包含关系等使用gcc很麻烦。 make工具:make就相当于一个智能的批处理工具,通过调用makefile实现编译,在makefile规定编译以及链接的顺序

    2024年02月02日
    浏览(53)
  • C/C++开发,linux下OpenCV+gcc+cmake编译环境搭建

    目录 一、源码下载 二、源码编译         2.1 OpenCV源码下载         2.2 cmake安装(非必要)         2.3 opencv安装依赖及支持模块查看         2.4 安装pkgconfig包         2.5 安装opencv依赖包         2.6 真正安装opencv包开始         2.7 opencv环境路径配置 三、案

    2024年02月06日
    浏览(54)
  • 【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)

    除了之前的使用 VSCode 插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖 launch.json 和 tasks.json 文件。 目录 一、下载编译器 1、下载 Windows GCC 2、选择编译器路径 二、配置 debug 环境 1、配置 lauch.json 文件 2、配置 tasks.json 文件 三、编译工程 1、测试工程结

    2024年02月03日
    浏览(50)
  • 编译opencv环境搭建:vs2019 + cmake-3.25 + opencv-4.5.5

    一 下载vs2019 链接:Downloads - Visual Studio Subscriptions Portal 下载社区版本,因为是免费的,大家随便用 下载成功后直接安装就可以了。 有的环境安装好后在属性管理器中可能没有 Microsoft.Cpp.x64 文件 从如下链接下载 Microsoft.Cpp.x64 文件  (链接转载(227条消息) 解决vs2019属性管理器里

    2024年02月11日
    浏览(57)
  • 安装交叉编译工具链aarch64-linux-gnu-g++ 以及cmake测试

       测试文件结构    CMakeLists.txt  参考文章: linux 交叉编译 C和C++_aarch64-linux-gnu-gcc查看版本_weixin_45302027的博客-CSDN博客 ubuntu16.04 安装交叉编译工具aarch64-linux-gnu-gccg++_ubuntu 安装aarch64-linux-gnu-gcc_普通网友的博客-CSDN博客

    2024年02月12日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包