找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

程序大小超過flash也能燒錄嗎

查看數(shù): 2362 | 評(píng)論數(shù): 14 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2024-7-22 22:25

正文摘要:

我用15W408AS, 規(guī)格書上說明是8K flash, 但我的hex文件15K了,燒錄正常,這個(gè)是怎么回事,哪位幫忙普及一下知識(shí)。謝謝。

回復(fù)

ID:1129742 發(fā)表于 2024-7-28 20:26
在單片機(jī)上燒錄程序時(shí),程序大小通常受限于芯片內(nèi)部的閃存(Flash)容量。通常情況下,如果程序大小超過芯片的Flash容量,是不能正常燒錄的,因?yàn)榇鎯?chǔ)空間不夠。然而,在你提到的情況中,使用15W408AS芯片(假設(shè)是一種8K Flash容量的單片機(jī))卻能正常燒錄一個(gè)15K的hex文件,這可能有以下幾個(gè)原因:

1. 不同的存儲(chǔ)單位
Flash容量與hex文件大小的單位不同:Flash的容量通常以字節(jié)(Bytes)為單位,而hex文件的大小可能包括更多的信息,不僅僅是純代碼數(shù)據(jù)。hex文件中包含了程序的二進(jìn)制代碼(機(jī)器碼),但也可能包含其他信息,如校驗(yàn)和、地址等,這些額外的信息并不會(huì)被燒錄到芯片中,只是在燒錄過程中用于驗(yàn)證和定位。
2. 壓縮和優(yōu)化
編譯器優(yōu)化:編譯器在生成hex文件時(shí)可能會(huì)進(jìn)行優(yōu)化,將程序代碼壓縮到更小的尺寸。因此,hex文件的大小不一定直接反映程序在Flash中的占用空間。
3. 程序空間與數(shù)據(jù)空間的區(qū)分
Flash與其他存儲(chǔ)器:某些單片機(jī)具有不同類型的存儲(chǔ)空間,如代碼存儲(chǔ)區(qū)(Flash)和數(shù)據(jù)存儲(chǔ)區(qū)(如RAM、EEPROM)。hex文件的某些部分可能屬于數(shù)據(jù)區(qū),而不占用代碼存儲(chǔ)區(qū)的空間。
ID:401564 發(fā)表于 2024-7-23 21:56
samxon 發(fā)表于 2024-7-23 11:25
程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB

看左下,那個(gè)就是代碼的長度,這個(gè)是16進(jìn)制的或者是在Keil中編譯后,看這個(gè),這個(gè)是10進(jìn)制的

如果代碼長度超過了單片機(jī)的程序空間,下載器會(huì)有提示的
ID:57657 發(fā)表于 2024-7-23 21:08
samxon 發(fā)表于 2024-7-23 11:25
程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB

硬盤格式化時(shí)簇大小為4kb,文件4kb以內(nèi)占4kb,超過4kb且8kb以內(nèi)占8kb,大于8kb小于等于12kb的占12kb,以此類推...
ID:277550 發(fā)表于 2024-7-23 10:34

hex文件是文本格式,每行有命令、地址、數(shù)據(jù)、校驗(yàn)等。。。。。實(shí)際的二進(jìn)制數(shù)據(jù)和bin文件一致的。
ID:57657 發(fā)表于 2024-7-23 10:19
某程序編譯后編譯器提示19字節(jié),編譯器會(huì)將bin編碼成hex格式為90字節(jié)。
單片機(jī)燒錄軟件打開hex格式后,首先將hex解碼成bin數(shù)據(jù),解碼出的19字節(jié)才是被寫入單片機(jī)的數(shù)據(jù)。
ID:401564 發(fā)表于 2024-7-23 09:35
這個(gè)要看在Keil編譯后的提示,里面會(huì)有code的大小
新版本的下載不知道,幾年前的某個(gè)版本code超過了,會(huì)有提示,但還是可以下載的,只是沒法運(yùn)行而已,燒錄是成功的
程序大小是看code長度,不是看HEX這個(gè)文件本身的大小
ID:341045 發(fā)表于 2024-7-23 09:17
進(jìn)入STC-ISP, 點(diǎn)打開程序文件裝入HEX文件, 右大框下面有代碼長度就是實(shí)際占用空間, 不好理解就點(diǎn)保存數(shù)據(jù), 輸入文件名后會(huì)以BIN方式保存, 這個(gè)文件大小就是實(shí)際占用空間大小. HEX會(huì)是實(shí)際空間的2點(diǎn)多倍
ID:829223 發(fā)表于 2024-7-23 08:55
如果超過了,在燒錄程序時(shí)會(huì)有提示
ID:879348 發(fā)表于 2024-7-23 08:54
hex大小不等于程序大小
ID:118322 發(fā)表于 2024-7-23 08:40
要看編譯后的code是多大,hex文件雖然有15K,但是code有可能只有7K多。
ID:88256 發(fā)表于 2024-7-23 08:10
hex文件大小有15K,但燒寫進(jìn)單片機(jī)的卻不會(huì)有那么大,因?yàn)閔ex格式的文件里面有地址、驗(yàn)證碼等,如果是bin格式的就一樣大了。想了解更多可以搜索hex、bin的文件格式。至于能夠燒寫進(jìn)去,要么是設(shè)定的問題,要么是軟件的問題,沒有進(jìn)行報(bào)錯(cuò)(確實(shí)超過的情況下),這時(shí)候燒寫,是后面的覆蓋前面的內(nèi)容,程序運(yùn)行就不正常了。
ID:517951 發(fā)表于 2024-7-23 07:36
8K空間確能燒進(jìn)去15K hex, 能不能正常跑程序,是個(gè)問題.
ID:69038 發(fā)表于 2024-7-22 23:30
最終寫入的文件是BIN的,如果是hex文件,會(huì)大好多。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表