如何使用 SylixOS 交叉编译链生成汇编文件

如何使用 SylixOS 交叉编译链生成汇编文件

问: 如何使用 SylixOS 交叉编译工具链生成汇编文件?
有时需要生成汇编文件,此处提供一种生成汇编文件的方法。
(1)找到对应的交叉编译工具链所在的目录
一般为<IDE安装位置>\RealEvo\compiler\<所用平台交叉编译工具链目录> ,记录交叉编译工具链*.exe文件所在的绝对路径。操作如图1-1所示

1-1  交叉编译工具链路径

(2)在 IDE 中编译目标工程,获得编译时的具体参数(若工程以前编译过的话,请先进行 clean project 的操作),如图1-2所示。
示例中得到的具体参数为:
  1. arm-sylixos-eabi-gcc -mcpu=cortex-a9  -mno-unaligned-access -O2 -g1 -gdwarf-2 -Wall-fmessage-length=0 -fsigned-char -fno-short-enums -fPIC -DSYLIXOS  -I"E:\SylixOS_WS\A9_BASE_REASE/libsylixos/SylixOS"-I"E:\SylixOS_WS\A9_BASE_REASE/libsylixos/SylixOS/include"-I"E:\SylixOS_WS\A9_BASE_REASE/libsylixos/SylixOS/include/network" -I "E:\SylixOS_WS\A9_BASE_REASE/libcextern/libcextern/include"  -MMD -MP -MF./Release/dep/CPU_LOAD/src/CPU_LOAD.d -c src/CPU_LOAD.c -o Release/obj/CPU_LOAD/src/CPU_LOAD.o,
1-2  编译参数所在位置

(3)启动 cmd,并在 cmd 中修改编译参数,具体修改为
  1. D:\SylixOS\RealEvo\compiler\arm-sylixos-toolchain\bin\arm-sylixos-eabi-gcc.exe -mcpu=cortex-a9 -mno-unaligned-access -O2 -g1 -gdwarf-2 -Wall -fmessage-length=0-fsigned-char -fno-short-enums   -fPIC -DSYLIXOS   -I "E:\SylixOS_WS\A9release/libsylixos/SylixOS" -I "E:\SylixOS_WS\A9release/libsylixos/SylixOS/include" -I "E:\SylixOS_WS\A9release/libsylixos/SylixOS/include/network" -I "E:\SylixOS_WS\A9release/libcextern/libcextern/include"  -MMD -MP -MF ./Release/dep/CPU_LOAD/src/CPU_LOAD.d -S src/CPU_LOAD.c -o Release/obj/CPU_LOAD/src/CPU_LOAD.s 
其中,标红的部分为具体的修改项,在 cmd 中执行此操作便可以都得到相应的汇编文件,汇编文件存放在 <workspace所在路径>\<工程名>\<编译版本>\obj\<工程名>\src,实例中具体如图1-3所示
1-3  目标文件输出及路径

    • Related Articles

    • IDE 交叉编译工具链更换

      问:如何更换 IDE 的交叉编译工具链? 1、打开 IDE 的安装目录,此处以我的安装目录为例,如下图所示为 SylixOS 自带的交叉编译工具链。 2、将修改的交叉编译工具链进行相应的替换。 3、重启 IDE 即可使用新的交叉编译工具链。
    • 如何使用 QtSerialPort 类库

      Q:如何使用 QtSerialPort 类库 需要修改项目文件(如 HelloWorld 项目的 HelloWorld.pro 文件),加入如如下程序所示的内容。 更多扩展知识见: 参考文章:如何在 Qt5 中使用 SylixOS 串口通信 注:从Qt 5.1开始,Qt 串行端口现在正式成为 Qt 的一部分; ​关于 QtSerialPort 类的进一步使用, 请参考 Qt 官方的 wiki: http://wiki.qt.io/QtSerialPort
    • 汇编中使用串口打印调试方式

      问:如何在汇编中使用串口打印调试方式 BSP 调试中经常会遇到汇编中需要打印相关状态的情况,如下代码基于全志 T3(ARM Cortex A7)平台展示如何在汇编中打印一个字符的串口调试信息。类似的方式经过简单修改也可以移植到其他平台上。(注意:打印串口信息过程中会使用到 R0、R1 两个寄存器,注意相关寄存器的上下文关系) LDR R1, =0x01c2807C ; /* 读取串口状态寄存器 */ 1: LDR R0, [R1] MOV R0, R0, LSR#2 ; /* ...
    • 如何使用代码添加额外 IP,并获得额外 IP 对应网卡接口名称

      Q:如何使用代码添加额外 IP,并获得额外 IP 对应网卡接口名称? 使用 ifmip 命令给指定网卡添加 IP 地址后,会生成 "mi" 开头的虚拟网卡。同样也可以使用 API 来添加网卡。 这里只进行代码分析和思路的展示,示例代码可见附件。 添加额外 IP,主要使用的是 netdev_mipif_add 函数。该函数原型为: int  netdev_mipif_add(       netdev_t *netdev,       const ip4_addr_t *ip4,        ...
    • SylixOS 中是否支持中断底半部,如何使用?

      1. 适用范围       本文档适用于对中断底半部有了解需求的开发人员。  2. 原理概述       在发生中断时,内核会记录哪个中断产生并把中断相应的处理函数加入一个处理队列里, 直到把所有同一时间发生的中断全部记录好后, 处理队列里的函数才会逐一得到调用。所以当一个中断处理函数处理过久时,就有可能影响它后面的中断处函数的执行时机。我们用的中断处 理函数是可以被中断信号打断的。   ...