標題: 程序大小超過flash也能燒錄嗎 [打印本頁]

作者: samxon    時間: 2024-7-22 22:25
標題: 程序大小超過flash也能燒錄嗎
我用15W408AS, 規(guī)格書上說明是8K flash, 但我的hex文件15K了,燒錄正常,這個是怎么回事,哪位幫忙普及一下知識。謝謝。

作者: zhuls    時間: 2024-7-22 23:30
最終寫入的文件是BIN的,如果是hex文件,會大好多。
作者: rayin    時間: 2024-7-23 07:36
8K空間確能燒進去15K hex, 能不能正常跑程序,是個問題.
作者: hhdsdy    時間: 2024-7-23 08:10
hex文件大小有15K,但燒寫進單片機的卻不會有那么大,因為hex格式的文件里面有地址、驗證碼等,如果是bin格式的就一樣大了。想了解更多可以搜索hex、bin的文件格式。至于能夠燒寫進去,要么是設定的問題,要么是軟件的問題,沒有進行報錯(確實超過的情況下),這時候燒寫,是后面的覆蓋前面的內(nèi)容,程序運行就不正常了。
作者: ohshit    時間: 2024-7-23 08:40
要看編譯后的code是多大,hex文件雖然有15K,但是code有可能只有7K多。
作者: wufa1986    時間: 2024-7-23 08:54
hex大小不等于程序大小
作者: CQQ@123    時間: 2024-7-23 08:55
如果超過了,在燒錄程序時會有提示
作者: lzts88    時間: 2024-7-23 09:17
進入STC-ISP, 點打開程序文件裝入HEX文件, 右大框下面有代碼長度就是實際占用空間, 不好理解就點保存數(shù)據(jù), 輸入文件名后會以BIN方式保存, 這個文件大小就是實際占用空間大小. HEX會是實際空間的2點多倍
作者: Y_G_G    時間: 2024-7-23 09:35
這個要看在Keil編譯后的提示,里面會有code的大小
新版本的下載不知道,幾年前的某個版本code超過了,會有提示,但還是可以下載的,只是沒法運行而已,燒錄是成功的
程序大小是看code長度,不是看HEX這個文件本身的大小
作者: npn    時間: 2024-7-23 10:19
某程序編譯后編譯器提示19字節(jié),編譯器會將bin編碼成hex格式為90字節(jié)。
單片機燒錄軟件打開hex格式后,首先將hex解碼成bin數(shù)據(jù),解碼出的19字節(jié)才是被寫入單片機的數(shù)據(jù)。
作者: devcang    時間: 2024-7-23 10:34

hex文件是文本格式,每行有命令、地址、數(shù)據(jù)、校驗等。。。。。實際的二進制數(shù)據(jù)和bin文件一致的。
作者: samxon    時間: 2024-7-23 11:25
Y_G_G 發(fā)表于 2024-7-23 09:35
這個要看在Keil編譯后的提示,里面會有code的大小
新版本的下載不知道,幾年前的某個版本code超過了,會有提 ...

程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB



作者: npn    時間: 2024-7-23 21:08
samxon 發(fā)表于 2024-7-23 11:25
程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB

硬盤格式化時簇大小為4kb,文件4kb以內(nèi)占4kb,超過4kb且8kb以內(nèi)占8kb,大于8kb小于等于12kb的占12kb,以此類推...
作者: Y_G_G    時間: 2024-7-23 21:56
samxon 發(fā)表于 2024-7-23 11:25
程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB

看左下,那個就是代碼的長度,這個是16進制的或者是在Keil中編譯后,看這個,這個是10進制的

如果代碼長度超過了單片機的程序空間,下載器會有提示的

作者: 51Proteus0001    時間: 2024-7-28 20:26
在單片機上燒錄程序時,程序大小通常受限于芯片內(nèi)部的閃存(Flash)容量。通常情況下,如果程序大小超過芯片的Flash容量,是不能正常燒錄的,因為存儲空間不夠。然而,在你提到的情況中,使用15W408AS芯片(假設是一種8K Flash容量的單片機)卻能正常燒錄一個15K的hex文件,這可能有以下幾個原因:

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





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