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

    文章

    1288

    浏览量

    40116
收藏 人收藏

    评论

    相关推荐

    芯片制造过程中两种刻蚀方法

    本文简单介绍了芯片制造过程中两种刻蚀方法   刻蚀(Etch)是芯片制造过程中相当重要的步骤。 刻蚀主要分为干刻蚀和湿法刻蚀。 ①干法刻蚀 利用等离子体将不要的材料去除。 ②湿法刻蚀
    的头像 发表于 12-06 11:13 259次阅读
    芯片制造<b class='flag-5'>过程中</b>的<b class='flag-5'>两种</b>刻蚀<b class='flag-5'>方法</b>

    同样是函数,在C和C++中有什么区别

    同样是函数,在 C 和 C++ 中有什么区别? 第一个返回值。 C语言的函数可以不写返回值类型,编译器会默认为返回 int。 但是 C++ 的函数,除了构造和析构这
    的头像 发表于 11-29 10:25 296次阅读

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

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

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

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

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

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

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

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

    定华雷达知识讲堂:雷达物位计在测量过程中的干扰有哪些?

    用户介绍一下DHE雷达物位计在测量过程中产生干扰的具体因素都有哪些。 一、DHE雷达物位计在测量过程中,常见的干扰可分为两种:直流干扰和交流干扰。 1、直流干扰        在雷达物位计测量回路
    的头像 发表于 06-26 16:03 372次阅读

    添加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 843次阅读

    函数发生器的常见故障及解决方法

    函数发生器,作为电子测试和测量领域的重要工具,其稳定性和可靠性对于实验和测试结果的准确性至关重要。然而,由于各种原因,函数发生器在使用过程中可能会遇到各种故障。本文将详细介绍函数发生器
    的头像 发表于 05-15 11:45 1017次阅读

    使用示波器如何测量频率

    两种方法都是示波器测量频率的常用方法,可以根据实际情况选择使用。同时,需要注意在测量过程中,确保示波器的设置和参数选择正确,以获得准确的测量结果。
    的头像 发表于 05-08 17:22 4600次阅读

    smt加工过程中空洞产生的原因及处理方法

    一站式PCBA智造厂家今天为大家讲讲smt加工过程中空洞产生的原因有哪些?解决SMT加工过程中空洞问题的方法。SMT加工是电子制造中常见的一种表面贴装技术,它具有高效、高质、高可靠性等特点。然而,在
    的头像 发表于 04-02 09:40 610次阅读

    PHP用户定义函数详细讲解

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

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

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

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

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