0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编译过程中替换函数名的两种方法

冬至子 来源:药RV 作者:药RV 2023-10-11 17:15 次阅读

编译过程中替换函数名的两种方法 (第二种很好使)

方法一

函数名为__wrap_symbol,且称其为包装函数,“symbol”是一个函数名,大致执行过程是这样的:当调用“symbol”函数时,如果“symbol”函数未定义的话就会调用__wrap_symbol函数;__wrap_symbol称做包装函数。

示例:

DEVICE = ' -march=rv32imac -Wl,--wrap,timer_irq_handler -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
void __wrap_timer_irq_handler(uint32_t mcause)
{
#warning requires critical section if interrupt nesting is used.
rt_interrupt_enter();
rt_tick_increase();
rt_interrupt_leave();
}

若定义了timer_irq_handler函数就会使用timer_irq_handler,未定义timer_irq_handler就使用__wrap_timer_irq_handler

方法二

示例

下文是张向量表,向量表使用了corev_handler

vector_table:
j corev_handler // irq0
j corev_handler
j corev_handler
j corev_handler // irq3
j corev_handler
j corev_handler
...
在编译命令中添加如下代码

DEVICE = ' -march=rv32imac -D"corev_handler=SW_handler" -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
这种方式会将扫描到存在corev_handler的地方均重定义为SW_handler

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RT-Thread
    +关注

    关注

    31

    文章

    1149

    浏览量

    38906
收藏 人收藏

    评论

    相关推荐

    使用ADUC843BSZ62-5替换ADUC831的过程中出现的疑问求解

    请问:使用ADUC843BSZ62-5替换ADUC831的过程中出现一些问题。外部晶振更换为32.768KHZ。系统上电后发现,PSEN引脚始终为0V,CREF电压为0.32V。VREF电压在1V波动。使用WSD下载程序时,无法识别芯片型号。
    发表于 01-11 07:07

    Multisim仿真幅频特性曲线和相频特性曲线的两种方法

    Multisim仿真幅频特性曲线和相频特性曲线的两种方法
    的头像 发表于 12-11 17:29 4697次阅读
    Multisim仿真幅频特性曲线和相频特性曲线的<b class='flag-5'>两种方法</b>

    利用SPICE进行放大器稳定性分析的两种方法

    利用SPICE进行放大器稳定性分析的两种方法
    的头像 发表于 12-05 15:38 4175次阅读
    利用SPICE进行放大器稳定性分析的<b class='flag-5'>两种方法</b>

    MySQL替换字符串函数REPLACE

    MySQL是目前非常流行的开源数据库管理系统之一,它具有强大的功能和性能。其中之一的字符串函数REPLACE,可以用于替换字符串中的指定字符或字符串。在本文中,我们将详细讨论MySQL替换字符串
    的头像 发表于 11-30 10:44 374次阅读

    PoE以太网供电的两种方法

    PoE以太网供电的两种方法  PoE(Power over Ethernet)以太网供电是一种通过以太网电缆向网络设备传输电力的技术。它可以为无线接入点、IP电话、网络摄像机、交换机等设备提供
    的头像 发表于 11-28 15:51 551次阅读

    Python将字符元素替换成数字

    Python提供了多种方法将字符元素替换成数字。在本文章中,我将详尽、详实、细致地介绍其中的几种常见方法。 使用replace()函数: replace()
    的头像 发表于 11-22 09:48 395次阅读

    宏和函数应该怎么选

    今天我们来看一下利用宏定义编写类似函数调用的方法和真实的函数有什么区别。 一、宏和函数怎么选? 首先来看一个例子: # define N 2+2 void main () { int
    的头像 发表于 11-01 17:35 202次阅读

    关于51单片机的矩阵键盘扫描的两种方法的困惑求解

    key_value,然后在主函数里将根据key_value的值来做出相应的动作! 分析上述两种方法:对于第一种方法,如果主程序特别长且很消耗时间,那么很可能出现按键漏扫的情况,不可靠。第二种情况是每隔段
    发表于 10-26 08:02

    C语言在编译成hex文件的过程中,这个目标文件的大小跟编译器的优化等级有关系吗?

    C语言在编译成hex文件的过程中,这个目标文件的大小跟编译器的优化等级有关系吗
    发表于 10-15 09:54

    串口通信过程中的回车符是什么个什么字节?

    串口通信过程中的回车符是什么个什么字节
    发表于 10-12 06:15

    C语言获取文件长度的两种方法

    C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法
    的头像 发表于 10-10 16:15 643次阅读
    C语言获取文件长度的<b class='flag-5'>两种方法</b>

    图腾柱TCM之两相变频错相的两种方法

    目前而言,TCM的错相方法两种:开环180deg固定错相,以及闭环实时调节错相;在我们的代码中,我们同时采用了这两种方法
    的头像 发表于 08-20 10:03 633次阅读
    图腾柱TCM之两相变频错相的<b class='flag-5'>两种方法</b>

    SOLIDWORKS技巧培训-绘制零件滚花的两种方法

    以上就是绘制零件滚花的两种方法,大家可以参考一下,如果还有问题,可以随时联系众联亿诚——达索SOLIDWORKS正版授权代理商,除了为您提供SOLIDWORKS教育版正版软件,还可以为您提供更多培训服务、二次开发、考试认证等增值服务。
    的头像 发表于 05-30 17:00 2409次阅读
    SOLIDWORKS技巧培训-绘制零件滚花的<b class='flag-5'>两种方法</b>

    smt贴片加工过程中,误印锡膏如何妥善处理?

    在smt贴片加工过程中,难免会遇到各种各样的问题。如果在加工过程中误印锡膏,如何妥善处理?以下是佳金源锡膏厂家讲解一下常用的锡膏清洗方法:出现误印锡膏后很多人第一反应是赶紧用刮板清除掉,这种方
    的头像 发表于 05-22 10:28 383次阅读
    smt贴片加工<b class='flag-5'>过程中</b>,误印锡膏如何妥善处理?

    如何让程序在执行过程中暂停?

    你如何让程序在执行过程中暂停,就像Arduino 的 通过 Basic 的 delay 函数: delay: 会等待一定的毫秒数再继续执行。 用于制作 LED 闪烁 延迟 {Va
    发表于 05-10 07:22