乱世煮酒论天下 发表于 2024-4-24 20:34

程序烧录的原理是什么?

<p>从51单片机,到STM32,DSP,FPGA,再到inter,Amd芯片,程序是如何烧录进这些芯片的呢,为什么程序烧录和程序参数写入不一样,掉电还能保存,芯片程序烧录有什么特别之处?</p>

qwqwqw2088 发表于 2024-4-24 21:01

<p>问这么多问题,相比是想知道,烧录的实质,计算机存储的本质</p>

<p>&nbsp;</p>

qwqwqw2088 发表于 2024-4-24 21:02

<p><span style="color: rgb(5, 7, 59); text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 15px; font-style: normal; font-weight: 400; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; background-color: rgb(253, 253, 254); text-decoration-color: initial; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial;">芯片程序烧录的实质原理是将预先编写好的程序代码,通过特定的烧录工具,最终转化为特定的二进制数据格式,,,</span></p>

qwqwqw2088 发表于 2024-4-24 21:03

<p>为啥要转换二进制格式?</p>

<p><span style="color: rgb(5, 7, 59); text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 15px; font-style: normal; font-weight: 400; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; background-color: rgb(253, 253, 254); text-decoration-color: initial; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial;">是因为硬件只能存储、处理或传送两种物理状态&mdash;&mdash;0和1的信息。二进制数是以2为基数的进位数制,其数值部分只需两个数码0和1来表示,,,</span></p>

<p>&nbsp;</p>

<p><span style="color: rgb(5, 7, 59); text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans CN&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 15px; font-style: normal; font-weight: 400; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; background-color: rgb(253, 253, 254); text-decoration-color: initial; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial;">不知道是不是所答非所问</span><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

吾妻思萌 发表于 2024-4-25 08:43

我的理解:编译器先编译成机器码,hex,bin。然后通过协议烧写到对应的flash对应的地址位。

吾妻思萌 发表于 2024-4-25 08:51

楼主可以搜一下,rom和ram,大概对应程序烧录和参数写入。
rom: read only memory.只读区块烧录启动,映像内核啥的。
ram:random accesa memory.随机存储用来和cpu运算时候交互数据,就那些变量

damiaa 发表于 2024-4-25 09:02

<div class='shownolgin' data-isdigest='no'><table cellpadding="0" cellspacing="0">
        <tbody>
                <tr>
                        <td id="postmessage_3320148">
                        <p>从51单片机,到STM32,DSP,FPGA,再到inter,Amd芯片,程序是如何烧录进这些芯片的呢?</p>

                        <p>所有这些芯片如果电路正常,上电复位后都会根据外面的IO电平或者是内部的什么设置位,跑到一个地方。</p>

                        <p>这个地方有:正常运行程序的地方和用于烧录程序的地方。</p>

                        <p>正常运行程序的地方就不说了。烧录程序的地方也有程序,是固化在芯片里面的。专门负责把外部的程序烧到固定的地方,便于后面正常运行程序。</p>

                        <p>51单片机相对简单:这个内部的烧录程序直接烧录程序到flash 0地址开始的地方。stm32也差不多。</p>

                        <p>但有些相对复杂,内部烧录程序的程序只负责加载一小部分用于启动和去加载操作系统的程序,叫bootloader 比如linux这种。</p>

                        <p>具体的还得看相关手册。</p>

                        <p>&nbsp;</p>

                        <p>为什么程序烧录和程序参数写入不一样,掉电还能保存,芯片程序烧录有什么特别之处?</p>

                        <p>因为flash和emmc nor nand这些存储器有这个掉电保存的特点。</p>

                        <p>没什么特别之处。</p>

                        <p>51单片机还经常有人用flash模拟eeporm存储数据。</p>
                        </td>
                </tr>
        </tbody>
</table>

<form action="forum.php?mod=post&amp;action=reply&amp;fid=21&amp;tid=1279400&amp;fromvf=1&amp;extra=page=1&amp;replysubmit=yes&amp;infloat=yes&amp;handlekey=vfastpost" autocomplete="off" id="vfastpostform" method="post" onsubmit="this.message.value = parseurl(this.message.value);ajaxpost('vfastpostform', 'return_reply', 'return_reply', 'onerror');return false;">&nbsp;</form>

<p>&nbsp;</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

秦天qintian0303 发表于 2024-4-25 11:19

<div class='shownolgin' data-isdigest='no'><p>为什么程序烧录和程序参数写入不一样,掉电还能保存,这个是存储的问题,能存住,你把参数写到这里面也可以掉电保存</p>
</div><script>showreplylogin();</script>

tom0107 发表于 2024-4-26 08:42

<div class='shownolgin' data-isdigest='no'>烧录是软件工程师设计好的程序,把程序导入目标IC上面,进行一套完整的动作。烧录的一个过程我们这里称为编写程序,也有地方叫做iccopy。在我们国家,一般来说习惯称为烧录。烧录(一般)是指用刻录机将数据刻录(也称烧录)到刻录盘。如CD,DVD后者的容量比前者大得多。烧录就象COPY一样。把你电脑里的东西COPY在其他文件载体上,就像1.4英寸磁盘可以说是一种烧录磁盘,但是比如GBA卡,是烧录卡,但不能称之为刻录卡。烧录刻录是同一个过程,但在不同的载体上有不同的名称。烧录器实际是个把可编程的集成电路写上数据的专用工具,烧录器主要用于单片机(含嵌入式)/存诸器(含BIOS)之类的芯片的编写程序(或称刷写)。</div><script>showreplylogin();</script>

乱世煮酒论天下 发表于 2024-5-1 10:52

<div class='shownolgin' data-isdigest='no'>吾妻思萌 发表于 2024-4-25 08:51
楼主可以搜一下,rom和ram,大概对应程序烧录和参数写入。
rom: read only memory.只读区块烧录启动,映像 ...

<p>我想你的回答解决了我的问题,是存储器的区别,易失性和非易失性的区别,就是掉电是否保存的区别,但是还有一个问题,如果是要改写的参数,如果是写入掉电丢失的存储器里,要求就是掉电不保存,重新写入参数,那程序执行的时候是按照非易失性执行还是按照易失性执行?</p><br/><p>再者,恢复出厂值有些能够恢复,有些不能恢复,这是什么原理呢,程序是如何做到部分可以恢复的呢?</p><br/></div><script>showreplylogin();</script>

lemaden520 发表于 2024-5-2 13:56

<div class='shownolgin' data-isdigest='no'>问题提得很好吖!</div><script>showreplylogin();</script>

吾妻思萌 发表于 2024-5-3 12:40

<div class='shownolgin' data-isdigest='no'>吾妻思萌 发表于 2024-4-25 08:51
楼主可以搜一下,rom和ram,大概对应程序烧录和参数写入。
rom: read only memory.只读区块烧录启动,映像 ...

我想你的回答解决了我的问题,是存储器的区别,易失性和非易失性的区别,就是掉电是否保存的区别,但是还有一个问题,如果是要改写的参数,如果是写入掉电丢失的存储器里,要求就是掉电不保存,重新写入参数,那程序执行的时候是按照非易失性执行还是按照易失性执行?再者,恢复出厂值有些能够恢复,有些不能恢复,这是什么原理呢,程序是如何做到部分可以恢复的呢?

我觉得哈,不光是,这个和设计有关 很多都是冯诺依曼架构思想,我们采用很快很快的但是掉电丢失的存储存变量,我们用慢的掉电不丢失的存数据</div><script>showreplylogin();</script>

chunyang 发表于 2024-5-3 22:10

<div class='shownolgin' data-isdigest='no'><p>早期是EPROM,后来都改成了FLASH,至于二者是什么原理以及基本存储单元的电路结构,去网上搜吧,大把。</p>
</div><script>showreplylogin();</script>

eew_vuUGKG 发表于 2024-5-11 23:29

<div class='shownolgin' data-isdigest='no'>一般来说程序烧录,是放到非易失性存储空间中,而程序参数可以放到非易失性存储空间和易失性存储空间都行。</div><script>showreplylogin();</script>

好好xuexi 发表于 2024-5-19 22:43

<div class='shownolgin' data-isdigest='no'><p>问这么多问题,相比是想知道,烧录的实质,计算机存储的本质</p>
</div><script>showreplylogin();</script>

乱世煮酒论天下 发表于 2024-5-19 22:57

<div class='shownolgin' data-isdigest='no'>好好xuexi 发表于 2024-5-19 22:43
问这么多问题,相比是想知道,烧录的实质,计算机存储的本质

<p>是的,正是因为不懂,所以问问题的时候抓不住关键所在,不知道其核心是什么?</p>
</div><script>showreplylogin();</script>

tinyhe 发表于 2024-7-19 12:16

<div class='shownolgin' data-isdigest='no'><p>这个问题很好,看了后面的跟帖,了解更多了</p><br/></div><script>showreplylogin();</script>

heleijunjie72 发表于 2024-7-27 11:39

<div class='shownolgin' data-isdigest='no'><p>以前不知道程序烧录是怎么回事,看到这才明白是怎么回事的</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: 程序烧录的原理是什么?