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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2057|回復(fù): 14
收起左側(cè)

程序大小超過(guò)flash也能燒錄嗎

  [復(fù)制鏈接]
ID:705846 發(fā)表于 2024-7-22 22:25 | 顯示全部樓層 |閱讀模式
我用15W408AS, 規(guī)格書(shū)上說(shuō)明是8K flash, 但我的hex文件15K了,燒錄正常,這個(gè)是怎么回事,哪位幫忙普及一下知識(shí)。謝謝。
回復(fù)

使用道具 舉報(bào)

ID:69038 發(fā)表于 2024-7-22 23:30 | 顯示全部樓層
最終寫(xiě)入的文件是BIN的,如果是hex文件,會(huì)大好多。
回復(fù)

使用道具 舉報(bào)

ID:517951 發(fā)表于 2024-7-23 07:36 | 顯示全部樓層
8K空間確能燒進(jìn)去15K hex, 能不能正常跑程序,是個(gè)問(wèn)題.
回復(fù)

使用道具 舉報(bào)

ID:88256 發(fā)表于 2024-7-23 08:10 | 顯示全部樓層
hex文件大小有15K,但燒寫(xiě)進(jìn)單片機(jī)的卻不會(huì)有那么大,因?yàn)閔ex格式的文件里面有地址、驗(yàn)證碼等,如果是bin格式的就一樣大了。想了解更多可以搜索hex、bin的文件格式。至于能夠燒寫(xiě)進(jìn)去,要么是設(shè)定的問(wèn)題,要么是軟件的問(wèn)題,沒(méi)有進(jìn)行報(bào)錯(cuò)(確實(shí)超過(guò)的情況下),這時(shí)候燒寫(xiě),是后面的覆蓋前面的內(nèi)容,程序運(yùn)行就不正常了。
回復(fù)

使用道具 舉報(bào)

ID:118322 發(fā)表于 2024-7-23 08:40 | 顯示全部樓層
要看編譯后的code是多大,hex文件雖然有15K,但是code有可能只有7K多。
回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2024-7-23 08:54 | 顯示全部樓層
hex大小不等于程序大小
回復(fù)

使用道具 舉報(bào)

ID:829223 發(fā)表于 2024-7-23 08:55 | 顯示全部樓層
如果超過(guò)了,在燒錄程序時(shí)會(huì)有提示
回復(fù)

使用道具 舉報(bào)

ID:341045 發(fā)表于 2024-7-23 09:17 | 顯示全部樓層
進(jìn)入STC-ISP, 點(diǎn)打開(kāi)程序文件裝入HEX文件, 右大框下面有代碼長(zhǎng)度就是實(shí)際占用空間, 不好理解就點(diǎn)保存數(shù)據(jù), 輸入文件名后會(huì)以BIN方式保存, 這個(gè)文件大小就是實(shí)際占用空間大小. HEX會(huì)是實(shí)際空間的2點(diǎn)多倍
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2024-7-23 09:35 | 顯示全部樓層
這個(gè)要看在Keil編譯后的提示,里面會(huì)有code的大小
新版本的下載不知道,幾年前的某個(gè)版本code超過(guò)了,會(huì)有提示,但還是可以下載的,只是沒(méi)法運(yùn)行而已,燒錄是成功的
程序大小是看code長(zhǎng)度,不是看HEX這個(gè)文件本身的大小
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2024-7-23 10:19 | 顯示全部樓層
某程序編譯后編譯器提示19字節(jié),編譯器會(huì)將bin編碼成hex格式為90字節(jié)。
單片機(jī)燒錄軟件打開(kāi)hex格式后,首先將hex解碼成bin數(shù)據(jù),解碼出的19字節(jié)才是被寫(xiě)入單片機(jī)的數(shù)據(jù)。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2024-7-23 10:34 | 顯示全部樓層

hex文件是文本格式,每行有命令、地址、數(shù)據(jù)、校驗(yàn)等。。。。。實(shí)際的二進(jìn)制數(shù)據(jù)和bin文件一致的。
回復(fù)

使用道具 舉報(bào)

ID:705846 發(fā)表于 2024-7-23 11:25 | 顯示全部樓層
Y_G_G 發(fā)表于 2024-7-23 09:35
這個(gè)要看在Keil編譯后的提示,里面會(huì)有code的大小
新版本的下載不知道,幾年前的某個(gè)版本code超過(guò)了,會(huì)有提 ...

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

1234.JPG
回復(fù)

使用道具 舉報(bào)

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,超過(guò)4kb且8kb以內(nèi)占8kb,大于8kb小于等于12kb的占12kb,以此類推...
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2024-7-23 21:56 | 顯示全部樓層
samxon 發(fā)表于 2024-7-23 11:25
程序可以正常使用,轉(zhuǎn)成bin文件占用空間8KB

51hei截圖20240723215406.png 看左下,那個(gè)就是代碼的長(zhǎng)度,這個(gè)是16進(jìn)制的或者是在Keil中編譯后,看這個(gè),這個(gè)是10進(jìn)制的 51hei截圖20240723215533.png

如果代碼長(zhǎng)度超過(guò)了單片機(jī)的程序空間,下載器會(huì)有提示的
回復(fù)

使用道具 舉報(bào)

ID:1129742 發(fā)表于 2024-7-28 20:26 | 顯示全部樓層
在單片機(jī)上燒錄程序時(shí),程序大小通常受限于芯片內(nèi)部的閃存(Flash)容量。通常情況下,如果程序大小超過(guò)芯片的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ì)被燒錄到芯片中,只是在燒錄過(guò)程中用于驗(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ū)的空間。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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