请问 在__HIGH_CODE段内调用浮点数除法运算,浮点数除法部分也是放在__HIGH_CODE段吗?
如果不是,如何把这个除法部分放入__HIGH_CODE段?
热门产品 :
CH585: 集成高速USB和NFC的蓝牙MCU
请问 在__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
还是看图片吧