标题: 程序大小超过flash也能烧录吗 [打印本页]

作者: samxon    时间: 2024-7-22 22:25
标题: 程序大小超过flash也能烧录吗
我用15W408AS, 规格书上说明是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的文件格式。至于能够烧写进去,要么是设定的问题,要么是软件的问题,没有进行报错(确实超过的情况下),这时候烧写,是后面的覆盖前面的内容,程序运行就不正常了。
作者: 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文件, 右大框下面有代码长度就是实际占用空间, 不好理解就点保存数据, 输入文件名后会以BIN方式保存, 这个文件大小就是实际占用空间大小. HEX会是实际空间的2点多倍
作者: Y_G_G    时间: 2024-7-23 09:35
这个要看在Keil编译后的提示,里面会有code的大小
新版本的下载不知道,几年前的某个版本code超过了,会有提示,但还是可以下载的,只是没法运行而已,烧录是成功的
程序大小是看code长度,不是看HEX这个文件本身的大小
作者: npn    时间: 2024-7-23 10:19
某程序编译后编译器提示19字节,编译器会将bin编码成hex格式为90字节。
单片机烧录软件打开hex格式后,首先将hex解码成bin数据,解码出的19字节才是被写入单片机的数据。
作者: devcang    时间: 2024-7-23 10:34

hex文件是文本格式,每行有命令、地址、数据、校验等。。。。。实际的二进制数据和bin文件一致的。
作者: samxon    时间: 2024-7-23 11:25
Y_G_G 发表于 2024-7-23 09:35
这个要看在Keil编译后的提示,里面会有code的大小
新版本的下载不知道,几年前的某个版本code超过了,会有提 ...

程序可以正常使用,转成bin文件占用空间8KB



作者: npn    时间: 2024-7-23 21:08
samxon 发表于 2024-7-23 11:25
程序可以正常使用,转成bin文件占用空间8KB

硬盘格式化时簇大小为4kb,文件4kb以内占4kb,超过4kb且8kb以内占8kb,大于8kb小于等于12kb的占12kb,以此类推...
作者: Y_G_G    时间: 2024-7-23 21:56
samxon 发表于 2024-7-23 11:25
程序可以正常使用,转成bin文件占用空间8KB

看左下,那个就是代码的长度,这个是16进制的或者是在Keil中编译后,看这个,这个是10进制的

如果代码长度超过了单片机的程序空间,下载器会有提示的

作者: 51Proteus0001    时间: 2024-7-28 20:26
在单片机上烧录程序时,程序大小通常受限于芯片内部的闪存(Flash)容量。通常情况下,如果程序大小超过芯片的Flash容量,是不能正常烧录的,因为存储空间不够。然而,在你提到的情况中,使用15W408AS芯片(假设是一种8K Flash容量的单片机)却能正常烧录一个15K的hex文件,这可能有以下几个原因:

1. 不同的存储单位
Flash容量与hex文件大小的单位不同:Flash的容量通常以字节(Bytes)为单位,而hex文件的大小可能包括更多的信息,不仅仅是纯代码数据。hex文件中包含了程序的二进制代码(机器码),但也可能包含其他信息,如校验和、地址等,这些额外的信息并不会被烧录到芯片中,只是在烧录过程中用于验证和定位。
2. 压缩和优化
编译器优化:编译器在生成hex文件时可能会进行优化,将程序代码压缩到更小的尺寸。因此,hex文件的大小不一定直接反映程序在Flash中的占用空间。
3. 程序空间与数据空间的区分
Flash与其他存储器:某些单片机具有不同类型的存储空间,如代码存储区(Flash)和数据存储区(如RAM、EEPROM)。hex文件的某些部分可能属于数据区,而不占用代码存储区的空间。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1