当前位置: 首页 > news >正文

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

在设计芯片的时候,关于烧录的环节是一个不得不考虑的问题。首先排除掉,由外部硬件直接操控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。
 

http://www.lryc.cn/news/343044.html

相关文章:

  • 【Linux】25. 网络基础(一)
  • 项目经理【人】任务
  • Linux学习(嵌入式硬件知识)
  • 英语学习笔记4——Is this your ...?
  • Hive Bucketed Tables 分桶表
  • 【拆位法 决策包容性 位运算】2871. 将数组分割成最多数目的子数组
  • Java 线程池 ( Thread Pool )的简单介绍
  • 鸿蒙内核源码分析(时间管理篇) | 谁是内核基本时间单位
  • 安装numpy遇到的问题
  • 页面嵌套,界面套娃,除了用iframe,还有其他方式吗?
  • 上传文件至linux服务器失败
  • 渗透 如何防御ARP欺骗,LLMNR-MDNS-NBNS等协议的作用
  • 【C++ 所有STL容器简介】
  • Django调用SECRET_KEY对数据进行加密
  • 芸众商城电商专业版400+插件源码+搭建教程
  • 【机器学习与实现】线性回归示例——波士顿房价分析
  • Redis核心数据结构——跳表(生成数据到文件和从文件中读取数据、模块合并、)
  • 微信小程序下载文件详解
  • 2024 概率论和数理统计/专业考试/本科考研/论文/重点公式考点汇总
  • 四川易点慧电子商务抖音小店:潜力无限的新零售风口
  • Seal^_^【送书活动第3期】——《Hadoop大数据分析技术》
  • win10下,svn上传.so文件失败
  • ubuntu20安装colmap
  • kubeflow简单记录
  • ARM的工作模式
  • 为家庭公网IP配置DDNS域名
  • QT-TCP通信
  • SparkSQL优化
  • STM32——基础篇
  • 【从零开始学架构 架构基础】架构设计的本质、历史背景和目的