標(biāo)題: error: __use_no_semihosting_swi was requested, but _sys_open was referenced [打印本頁]

作者: 51hei社區(qū)    時(shí)間: 2016-1-11 05:01
標(biāo)題: error: __use_no_semihosting_swi was requested, but _sys_open was referenced
                        想使用malloc()函數(shù)但會(huì)報(bào)錯(cuò)

錯(cuò)誤信息如下:
.\at91sam9260-sdram\at91sam9260-sdram.axf: Error: L6915E:Library reports error: __use_no_semihosting_swi was requested, but_sys_open was referenced

可以用的,想不報(bào)錯(cuò)的話,
在usart.c里#pragma import(__use_no_semihosting) 下加了
void _ttywrch(int ch)
{
while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
USART1->DR = (u8) ch;
}
不推薦用微庫,代碼瘦身的代價(jià)往往是程序變慢,用微庫還限制的一部分功能,申請(qǐng)堆的大小在頭文件里有限制
就是startup_stm32f10x_hd.s第45行Heap_Size EQU 0x00001000
這個(gè)就是設(shè)置堆的大小,不過后來沒用malloc,這個(gè)函數(shù)用多了,就會(huì)有太多碎片,萬一申請(qǐng)不了,會(huì)出事,用malloc一定要測試函數(shù)返回值,
不然用空指針訪問內(nèi)存,程序會(huì)崩潰的,最好自己寫個(gè)內(nèi)存分配方案,分配固定的內(nèi)存給堆用,原子哥的方案比較好,不會(huì)有碎片,我因?yàn)橛玫较到y(tǒng),
自帶內(nèi)存管理,就沒用,不過沒用過,一用一大堆錯(cuò)誤,就先用數(shù)組代替了,等系統(tǒng)玩熟了,在換。。







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1