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

    文章

    1257

    浏览量

    39815
收藏 人收藏

    评论

    相关推荐

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译编译成独立的内核模块 。以下是对这两种方
    的头像 发表于 08-30 14:46 339次阅读

    linux驱动程序的编译方法有哪两种

    Linux驱动程序的编译方法主要可以归纳为两种: 手动编译 和 使用内核构建系统(Makefile)自动编译 。 1. 手动
    的头像 发表于 08-30 14:39 439次阅读

    逻辑函数的化简方法有哪两种

    逻辑函数的化简是数字电路设计的重要步骤,它有助于减少电路的门数量,提高电路的性能和可靠性。逻辑函数的化简方法主要可以分为
    的头像 发表于 08-22 16:40 432次阅读

    电容充放电过程中电压的变化规律

    电容充放电过程中电压的变化规律是一个非常重要的电子学课题,涉及到电容器的基本工作原理和特性。在这篇文章,我们将详细探讨电容充放电过程中电压的变化规律,包括电容的基本特性、充电过程、放
    的头像 发表于 07-11 09:43 3705次阅读

    添加ESP-ADF的过程中,ESP-ADFexample工程编译出错的原因?

    使用离线工具包安装的esp-idf,vscode 中使用的是esp-idf插件。esp-idf工程正常。但是再添加ESP-ADF的过程中,ESP-ADFexample工程编译出错;顺便问一下,我的系统是win11,已经再电脑高
    发表于 06-17 07:49

    数字设备采集数字图像的两种方法是什么

    在数字设备,采集数字图像的方法有很多种,但最常见的两种方法是:1) 使用数字相机拍摄,2) 通过扫描仪扫描。 一、使用数字相机拍摄 数字相机是一种可以捕捉图像并将其转换为数字格式的设备。数字相机
    的头像 发表于 05-31 15:48 647次阅读

    PHP用户定义函数详细讲解

    描述 在所有编程和脚本语言中,函数是可以在程序重复使用的语句块。在 PHP 函数的概念与另一种语言(如“C”)的概念相同。标准 PH
    的头像 发表于 03-20 14:27 336次阅读

    高频电流探头的两种测量方法过程与特点分析

    高频电流探头的两种测量方法过程与特点分析  高频电流探头是一种用于测量高频电流的仪器,常用于电力系统、通信系统和电子设备。它具有非接触式测量、高精度、宽频带等特点,广泛应用于各个领
    的头像 发表于 01-05 16:12 691次阅读

    PCBA板清洗的两种方法介绍

    在SMT贴片加工过程中,锡膏和助焊剂会产生残留物质,残留物包含有有机酸和可分解的电离子,其中有机酸具有腐蚀作用,电离子残留在焊盘还会引起短路,而且这些残留物在PCBA板上是比较脏的,也不符合客户对产品清洁度的要求。所以,对PCBA板进行清洗是非常有必要的,接下来为大家介
    的头像 发表于 12-20 10:04 815次阅读

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

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

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

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

    MySQL替换字符串函数REPLACE

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

    PoE以太网供电的两种方法

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

    Python将字符元素替换成数字

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

    函数参数的分类有哪些

    一、函数参数的分类 函数的参数分为类:形参 及 实参 形参:形参是在创建过程中声明的参数,如果不给形参传入特定的实参,形参就没有实际的意义 实参:实参是在
    的头像 发表于 11-14 11:13 2459次阅读