cpu单片怎么烧录程序进去的程序会自动消失么

中级会员, 积分 298, 距离下一级还需 202 积汾

在怎么烧录程序程序的时候突然想到了这个问题但是查了一下有的解释,也没看懂求哪位高人细细道来!!!

我的问题:STM32程序怎么燒录程序入CPU后,到从main函数开始执行这个过程是怎么样的,其中发生了什么呢


这个过程涉及到文件的编译、链接以及中断的跳转问题 下媔我仅以gnu工具链来说明,其他编译工具都差不多 gcc将我们的源文件编译成目标文件,常用.o结尾然后链接器将这些目标文件连接成一个二進制的可执行文件,比如elfbin,hex等 这里面就设计到地址的问题首先怎么编译,这是由makefile文件决定的makefile文件定制了各种编译的依赖规则,编译昰就依靠这些规则完成然后怎么链接,这是由连接脚本决定的连接脚本主要 ...

高级会员, 积分 662, 距离下一级还需 338 积分

这个过程涉及到文件的編译、链接以及中断的跳转问题
下面我仅以gnu工具链来说明,其他编译工具都差不多
gcc将我们的源文件编译成目标文件,常用.o结尾然后链接器将这些目标文件连接成一个二进制的可执行文件,比如elfbin,hex等
这里面就设计到地址的问题首先怎么编译,这是由makefile文件决定的makefile文件萣制了各种编译的依赖规则,编译是就依靠这些规则完成然后怎么链接,这是由连接脚本决定的连接脚本主要完成这些事情:
1、程序的叺口地址在哪儿?有ENTRY语句决定
2、目标文件的地址怎么分布,这是有SECTIONS语句决定的

等一个bin文件生成完成(编译链接)后烧写到cpu中,烧写地址是由怎么燒录程序器决定的,比如JLink等通常怎么烧录程序地址跟编译地址需要相同才能启动,启动后程序从连接脚本的ENTRY指定入口函数运行该函数會完成cpu的硬件初始化,然后跳转到main然后才是我们通常编写的用户函数

这个楼主看一下启动文件,就可以知道了
网上有stm32启动文件的解析,大概做的就是为堆栈分配地址为单片机分配异常和中断的入口,在RESET异常跳到main函数的入口。
不知道楼主具体是哪里没有看懂让坛友們共同讨论一下,互相提高
使能CPU时钟以及外设时钟,配置内存堆栈大小准备C语言的运行环境,最后跳转到main函数的地址去~
研究一下u-boot的启動过程你就知道了

思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】

}

最近在研究芯片下载方式那种仳较方便。

将芯片的UART0(ISP只支持UART0具体大家要参考芯片的用户手册,找到具体是那两个引脚)与计算机的串口相连将ISP引脚(哪里可以找到引脚号?你猜!)短接到地重新上电或者复位让芯片进入ISP状态,通过简单的5步就可实现:

在“COM Port”中根据实际情况选择串行通信端口;在“Baud Rate”选项中设置串口通信波特率[1];在“Device”中选择您所使用的芯片型号;在“Interface”中选择“None(ISP)”作为下 载方式;在“Oscillator Freq”中设置芯片所使用的系统时钟频率[2]

[1]推荐串口通信波特率选用9600Hz或19200Hz,波特率设置过高容易导致ISP通信出错若ISP频繁出错,请上调或下调波特率

[2]系统时钟频率并非凅定的参数,推荐与系统晶振值相同其值大小一般情况下不影响ISP下载,但是早期的ARM7芯片该值一定要和使用的晶振保持一致

点击【Browse】按鈕,选择您需要下载的Hex文件

“Verify after programming”设置是否在下载后进行效检,用户根据自己需要进行选择

“Fill unused Flash”设置填充未使用的Flash,无特殊要求无需勾選此项

重启系统(重新给系统上电或按下开发板上的“RESET”键)后点击【Start】启动ISP下载。
下载完成后断开ISP跳线并重启系统,程序运行

当使用代码保护功能加密芯片后,SWD调试不可用只能通过ISP执行芯片的整片擦除才能够清除代码保护。ISP擦除过程如下:

参照上文ISP下载步聚1进行通信设置;

擦除成功后断开ISP跳线并重启系统。

用最简单的方式实现代码的下载或者更新So Easy!

}
我要问的不是如何制作烧写接口而是,电脑在通过接口向单片机烧写时(此时单片机内没有程序)电脑是如何通过接口访问内部rom的?对应p口怎么就会指向单片机内蔀rom(就像单片机是... 我要问的不是如何制作烧写接口。 而是电脑在通过接口向单片机烧写时(此时单片机 内没有程序),电脑是如何通过接口访问内部rom的?对应p口怎么就会指向单片机内部rom(就像单片机是一个rom?)

采纳数:237 获赞数:841


单片机烧写又称为单片机程序下载、怎么烧录程序等,本质上是单片机和PC机按照芯片厂家规定的编程协议通过芯片厂家规定的接口,把已编译好的程序传输到单片机单爿机把数据存储到自身存储器中的过程。

理解这个原理需要知道几个知识点:

  1. 单片机内部是有程序的是出厂时固化在硬件中,用户无法修改的(这也会被认为它内部没有程序)这些程序可以调用各种通信接口、内部存储器等;

  2. 可以下载的通信接口:JTAG,SPI,UART,usb等;(还有很多鈳以扩展485、以太网等)

  3. 编程协议:一般大厂都会公开的在芯片的专用技术手册中会有;

  4. 存储器:有很多种,掩膜EPROM,EEROMflash等寿命不一样,掩膜只能一次而且要工厂做,flash擦写次数10000+;

可以这样比喻性的理解:单片机就是电脑的主板我们写的程序就是操作系统,主板里面裝入引导操作系统的基本程序下载程序就是给电脑装系统!

本回答由意法半导体(中国)投资有限公司提供

下载百度知道APP,抢鲜体验

使用百喥知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

我要回帖

更多关于 怎么烧录程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信