关于__HIGH_CODE

请问 在__HIGH_CODE段内调用浮点数除法运算,浮点数除法部分也是放在__HIGH_CODE段吗?

如果不是,如何把这个除法部分放入__HIGH_CODE段?

软件除法的具体实现,是由工具链提供的, 你可以看下对应lst文件里面, 对应的算除法运算的地方,具体调用的了哪些函数,
然后把这些函数,以及其再调用的其他函数按照下面方式加到ld文件里面即可,如:
lst文件部分:

F:\wch\CH583EVT_1.6\EXAM\ch58x_div_high_code_test\obj/../src/Main.c:49?(discriminator?3)
????????a?=?a/i;
20000100:	4ab2????????????????	lw	s5,12(sp)
20000102:	8522????????????????	mv	a0,s0
20000104:	254d????????????????	jal	200007a6?20000106:	85aa????????????????	mv	a1,a0
20000108:	8556????????????????	mv	a0,s5
2000010a:	76a000ef??????????	jal	ra,20000874?2000010e:	c62a????????????????	sw	a0,12(sp)
F:\wch\CH583EVT_1.6\EXAM\ch58x_div_high_code_test\obj/../src/Main.c:50?(discriminator?3)

那我们就把这个

__divsf3__floatunsisf

函数加到ld文件里面的 highcode 里面

*(.text.__floatunsisf);*(.text.__divsf3);

如最终LD文件high code 部分:

.highcode?:
{
.?=?()
PROVIDE(_highcode_vma_start?=?.)
*(.vector)
(*(SORT_NONE(.vector_handler)))
*(.highcode)
*(.highcode.*)





*(.__floatunsisf)
*(.__divsf3)
*(.__clzsi2)
*(.__clz_tab)
*(.__addsf3)



.?=?()
PROVIDE(_highcode_vma_end?=?.)
}?>RAM?AT>FLASH

还是看图片吧

image.png


只有登录才能回复,可以选择微信账号登录