当前位置: 代码网 > 服务器>网络>网络协议 > 单片机为什么能直接烧录程序?

单片机为什么能直接烧录程序?

2024年08月02日 网络协议 我要评论
单片机为什么能直接烧录程序?

在设计芯片的时候,关于烧录的环节是一个不得不考虑的问题。首先排除掉,由外部硬件直接操控flash的方案,这个方案有很多缺点。

1)每个ic使用的flash型号各不相同,每种型号的flash的烧录命令和流程都有差别,这会导致烧录器需要把所有的flash控制方式都内置,但是万一下次换了一个最新型号的flash呢?因此这种方式通用性非常低。

2)有些ic未必使用flash,有可能会采用otp(一次性编程),otp一般是由芯片自己的内部寄存器来控制,直接写flash的烧录器在这根本就没办法用了。

那现在换一个思路,让芯片自己控制自己的内部存储器,用通信的方式把固件发给芯片,由它自己来完成这个过程呢?

很好,现在面临的问题变成了如何将这段烧录程序导入到芯片中运行。

假如,芯片设计的时候就是一个空片。那如何将程序下载进芯片中运行呢?

别怕,jtag在调试的时候,是不是可以随便修改ram,随便设置pc指针?而且几乎所有的芯片硬件都是支持jtag功能的吧?那么这个问题就有解了。

可以用jtag将一段程序写入到ram中,设置pc指针到程序的起始地址。这个程序是专门用来烧录flash和otp的程序,按下列步骤去做:

1)将这个程序导入到ram中

2)将固件的一部分内容导入到ram的某个固定地址

3)设置pc到这个程序的起始地址,同时在程序结束的位置设置一个断点

4)启动这个烧录程序,等待断点触发,往复2、3、4即可

这个就是keil烧录算法的实现原理。而算法文件就是这个ic对应的烧录程序。那现在,完全搞定烧录的问题吗? 不,还只完成了一半。

这种方式还有好几个缺点:

1)烧录器硬件成本比较高

2)jtag烧录器的控制复杂度和开发难度很高

3)对于安全程度非常高的芯片,jtag很不安全

因此,能不能默认就将这段程序在芯片出厂的时候烧录或者固化到芯片上呢?同时采用成本更低和通用性更高的串口通信。故这段程序怎么放,有很多方案:

1)直接芯片投片的时候,由数字电路设计人员将固件硬编码到晶圆上,芯片生产出来的时候,都会携带这个程序。这个的缺点就是,这段固件不可更改,固化前会经过大量的测试。

2)对于有otp的芯片的话,会在芯片出厂测试时将这个程序烧录到otp中,烧录方式用的就是jtag。

芯片的烧录方案,基本上就是这些了,对于那些接触到的各种千奇百怪的烧录工具,其实也就是厂商自己定的通信协议的不同导致的。

来源:知乎hippop
 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com