往事回顾
大学期间,最开始玩的就是89C51芯片,这也应该是很多嵌入式玩家的入门玩具吧。当时的我,甚至还不知道仿真器是个什么玩意,在加上教程中也一直使用的ISP进行代码的烧写,所以也觉得这个东东没什么不好的,就是烧写程序太麻烦,还要整一个专用的软件,配置波特率,设置校验等等。
直到后来,开始接触到仿真器的使用,才发现原来烧写代码可以这样简单,简直比以前太高效了,从此便不再想看见ISP。
但是在今天,看见书上提到ISP。现在看来。貌似还有一点深层次的知识,我一直没有领悟到,或者没有在使用它的时候觉察到。所以,在这里记录一下。
本人对ISP的理解
对CPU的工作原理大概了解的童鞋应该知道,我们一般是通过IDE或者编辑器完成程序的编写,那么如何才能让芯片运行程序呢?毋庸置疑,首先需要将代码烧写进芯片啦!那么烧写进芯片哪里呢?一般而言,有两种选择。第一是直接烧写进RAM,但是由于RAM的特性,所以掉电之后,程序便会丢失,上下电之后还需要重新烧写,显得比较麻烦。另一种方法便是少些进入Flash,便可以长期保存。
那为什么利用串口调试助手就可以将二进制代码烧写进RAM或者Flash呢?个人的理解是利用了引导程序这一概念,类似于电脑的Bios,可以选择从USB启动系统或者硬盘启动系统等。与之类似,芯片的Bios常常被称为Boot,通过配置Boot引脚,便可以选择启动方式。如果我们选择USART方式,那么便意味着可以利用UASRT协议,将二进制代码烧写进入存储设备,从而开始执行代码。与之类似的是,选择SPI方式,则利用SPI协议将二进制代码烧写进存储设备等等。
基于此,便产生了串口调试助手。
说明
本文仅是作者对ISP的理解,可能存在错误之处,还望读者可以不吝指正,在下不胜感激,谢谢!