1. 如何烧录 arino 的 bootloader
为了恢复Arino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arino就是在AVR单片机中胡答预置了一个bootloader程序,这样再配合Arino开发环境就是所谓的Arino了,但Arino这个词本身只留给官方使用)。当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的网络,输入关键字“Arino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arino使用。那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一枯埋个普通的AVR单片机,用Arino开发软件是烧写不进去的)。
既然要烧没做蚂录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个.HEX之类的文件。但是,bootloader文件从哪来呢?继续网络。。。找到了,在Arino软件安装目录中的hardwarearino中。此文件夹下的“boards.txt”文件很重要,是很重要,其他的或许都可以在网络上找到,但因为这个文件折腾了我大半个晚上,网络上也没有明确的说明。打开文件,找到自己对应的Arino版本,因为我的是“Arino Uno”,于是锁定“uno.name=Arino Uno”区域的说明,因为看上去很乱,一定要仔细去看。找到“uno.bootloader.low_fuses=0xff"指编程熔丝低位为FF,”uno.bootloader.high_fuses=0xde“指编程熔丝高位为DE,”uno.bootloader.extended_fuses=0x05“指扩展位为05。这三个值非常重要,是决定你烧录bootloader成功的关键。至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boards.txt“文件往下看,找到”uno.bootloade旦长测短爻的诧痊超花r.path=optiboot“这就是说要烧录的bootloader文件在bootloadersoption文件夹中,“uno.bootloader.file=optiboot_atmega328.hex”文件名就是optiboot_atmega328.hex,这就是接下来需要烧录到AVR单片机中的程序。用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arino的AVR就做好了。。。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。至于progisp的使用方法很简单,网络上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,网络上面也没有对”boards.txt“文件做详细的解释。没设置熔丝位程序是可以正常的烧录进去,但Arino是不能用的,所以必须要按照官网给出的说明操作。我当时大多数时间主要花在两个问题上,一个是.HEX文件具体位置,因为Arino有不同的版本,所以.HEX文件也不同,还有一个就是熔丝位上。
2. arm体系单片机必须要bootloader吗,需要是在什么情况下,不需要又是在什么情况下cortex-m0需要bootloader
bootloader本身也是一个局氏简单的小系统,它实现了一些设备的简单设备驱动(如串口、Flash、网卡、LCD等),能够完成一定的功能。 当你的需求比较复杂,这类小系统不能满足要求时(如文件系统、数据库、WEB服务、多任务等),就需要一个功能更强的操作系统系统平台来支持(如Linux系统),这些操作系统本身需要一个引导工具,bootloader就扮演了这个引导工具的角色。
总之,如果你要实现系统的功能比较简单,如只汪郑是显示一个跑马灯、幻灯片什么的,就没有必须用复杂的操作系统,跑一个简单的实时系统就桐陵散够了(当然这些简单的系统也没有必须采用ARM芯片);反之还是需要这种组合的。
3. IAP,单片机bootloader跳转的问题
既然你的app是从0xB000开始的,那仔芹么你应当修改其连接设置,将块灶汪起始地址改为0xB000,否则编译连接出来隐戚仔的程序根本没法用,所有跳转地址全都是错的。
4. 比亚迪单片机怎么下载程序
1、要运用JTAG方法下载程序,不管是运用J-LINK、ULINK、ST-LINK,只需求把单片机上相应的程序下载留出来,然后和编程器连接上燃塌就能够下载程序了。
2、要经过ISP方法下载程序,需求用到单片机内部自带的Bootloader,这个Bootloader是预段顷制在单片机内部的,出厂自带的,在出厂握段陆后就不能修正或擦除。
5. 为什么51单片机不要写bootloader
因为51单片机运行的一般是前后台程序,程度一般比较小,而且单片机程序一般直接烧拆陪进程序存储器里,执行的时候直接从程序存储器里执行,无需旅丛将他们搬到RAM中去,旅镇蠢并且一般51单片机RAM都比较小,所以无需写BOOTLOADER.
6. STM32的BootLoader
这叫IAP。官方BootLoader是为了使用USART、USB等接口去烧写整个FLASH。IAP升级程序是烧写在FLASH里的。
7. 怎么编写pic 的bootloader
在PIC系列单片机中,只有PIC18系列和PIC16F87X系列的单片机才有IAP功能,才能够使用BootLoader功能。下面只介绍PIC18的BootLoader,PIC16F87X的BootLoader与它类似。
1 BootLoader程序的工作原理
BootLoader是一段引导程序,在单片机上电/复位后在用户程序之前先运行。运行后判断当前是否需要进入升级状态。如果不需要升级,就直接运行 Flash中原有的程序;如果需要升级,首先擦除旧的程序,然后从串口接收用户程序,同时写入Flash中。接收数据时,需要进行校验,保证接收到的数据是正确的,避免将错误的程序写入到芯片中。
PIC18单片机只有一块Flash,可以在凯培Flash的任何位置擦写(甚至可以将BootLoader自身擦除);而51单片机一般都是空闹两块Flash,只能够从一块Flash上擦写另一块Flash,而不能擦写自身。
BootLoader程序原则上是可以放在整个程序空间中的任何位置的,但是为了简单方便、具有通用性和尽量减少对用户程序的影响,使用了从0x00开始的一段程序空间。
BootLoader程序可以多种方式获取数据,包括串口、并口、I2C、SPI、USB等;但是从实际使用来看,使用串口无疑是最方便的。
为了使得用户程序可以获得最大的程序空间,就需要BootLoader程序尽可能的简短。在这里,Microchip和HI-TECH都将 BootLoader程序设计为小于200H个字节(100H个字)。使用0x00~0x1FF这个区域还有一个重要原因是,斗孙罩这个地址的空间有特殊的写保护特性。
PIC18单片机虽然有多个中断源,但只支持两级中断,有两个中断向量,分别位于0x08和0x18;而 BootLoader程序占用了0x00~0x1FF的空间,这意味着需要重新定位中断向量,使新的中断向量指向用户的中断程序,这样才能保证正常运行用户程序的中断程序。
8. 为什么51单片机不要写bootloader
51单片机的存储器的空间,ROM和RAM
是分开的。
51单片机的程序是固定不变的。
所以简亮祥,51单片机的功能是单拦搏一的,它不用像其它的计算机那样笨,开键薯机后现找程序。
因此,51单片机也不会沾染病毒。
9. Stm8单片机bootloader中iap和app都要用中断
把ZONE1作为运行区,ZONE2作为备份区,每次升级时先将代码写扰者腊在ZONE2,并设置标志缓滑,然后重启,bootloader识别有升级标志,将ZONE2的代码拷贝至ZONE1区,并清标志,就嫌雹可以了,每次都是跳转至ZONE1运行。
10. AVR单片机如何合并bootloader程序和Flash程序为一个HEX文件,我想同时烧写进单片机。用什么方法
把bootloader和Flash都转换为BIN文件格式,然后把Bootloader放在flash文件后面第120K开汪纤拦始的位置。然后困胡把这合并的文竖让件少写进单片机。