編譯過程中替換函數(shù)名的兩種方法 (第二種很好使)
方法一
函數(shù)名為__wrap_symbol,且稱其為包裝函數(shù),“symbol”是一個(gè)函數(shù)名,大致執(zhí)行過程是這樣的:當(dāng)調(diào)用“symbol”函數(shù)時(shí),如果“symbol”函數(shù)未定義的話就會(huì)調(diào)用__wrap_symbol函數(shù);__wrap_symbol稱做包裝函數(shù)。
示例:
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函數(shù)就會(huì)使用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 '
這種方式會(huì)將掃描到存在corev_handler的地方均重定義為SW_handler
-
RT-Thread
+關(guān)注
關(guān)注
32文章
1614瀏覽量
44907
發(fā)布評論請先 登錄
C編譯器錯(cuò)誤與解決方法
函數(shù)指針介紹
ESP32 編譯過程中 bootloader 配置階段的 CMake 緩存沖突錯(cuò)誤,記錄
西門子PLC中函數(shù)FC的使用方法
函數(shù)指針及指針函數(shù)的區(qū)別
用PLC實(shí)現(xiàn)卷徑計(jì)算的兩種算法
程序加載過程中遇到的問題及其解決方法
lv_port_disp_init();使用lvgl時(shí)在移植過程中這個(gè)函數(shù)報(bào)錯(cuò)怎么解決?
芯片研發(fā)過程中的兩種流片方式
使用AURIX進(jìn)行調(diào)試的過程中,如果進(jìn)入某個(gè)函數(shù)的時(shí)候出現(xiàn)問題,是配置項(xiàng)的問題還是函數(shù)中的變量的問題?
超聲波清洗機(jī)如何在清洗過程中減少廢液和對環(huán)境的影響?
六相永磁同步電機(jī)串聯(lián)系統(tǒng)控制的兩種方法分析研究
半導(dǎo)體制造過程中的三個(gè)主要階段
請問在NXP板的BSP QA過程中采用了哪些具體的測試方法?
解鎖TSMaster fifo函數(shù):報(bào)文讀取的高效方法
編譯過程中替換函數(shù)名的兩種方法
評論