欢迎关注“嵌入式干货铺子”,更多干货,每日分享。
日常工作中大家都会用到仿真器来烧写程序,那么单片机把程序存在哪里了呢,如何放进去的呢,今天我们来学习下相关的知识。
我们烧写进单片机的程序也是大多是bin文件,或者hex文件,这两类文件可以相互转换,hex文件比bin文件多了一些地址等信息,所以相对较大,两者没有本质区别,只是遵从不同的协议格式。
![b3840588d5ef9aa9be2092cb84200211.png](https://i-blog.csdnimg.cn/blog_migrate/7c89e54ef5bfe849a07db2f40c0d765b.jpeg)
我们的代码经过编译、链接生成的文件就以上图的形式烧写进入单片机的flash中,也就是非易失存储器。
关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失。
![5666deb8293b8411ce8ab1a7d656c4fc.png](https://i-blog.csdnimg.cn/blog_migrate/2abefdd050873d7f3f0ab4972513e7bd.jpeg)
Flash的全名叫做Flash Memory,从名字就可以看出,这是种数据存储设备,存储设备有很多类,Flash属于非易失性存储设备,与此相对应的是易失性存储设备。这类设备,除了Flash。还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
Flash的硬件实现机制
Flash的内部存储是MOSFET,里面有个悬浮门,是真正存储数据的单元。
其实在Flash之前,紫外线可擦除的EPROM,就已经采用了Floating Gate存储数据这一技术了。
![5c717aad45b0a5c04b9b5430f22e0f26.png](https://i-blog.csdnimg.cn/blog_migrate/3c395a67d374173e370984913d9eb0bc.jpeg)
数据在Flash内存单元中是以电荷形式存储的。存储电荷的多少,取决于图中的外部门所上施加的电压,这个电压控制存储单元中加入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示,因此,Flash的存储单元的默认值,不是0(其他常见的存储设备,比如硬盘灯,默认值为0),而是1,而如果将电荷释放掉,电压降低到一定程度,则表述数字0。
就这样施加不同的电压就可以实现flash的擦除和写入,这样我们的程序就被存储在单片机里面了,而且掉电后也不会丢失,你明白了吗~~