amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 7706|回复: 19

关于BoolLoader自编程

[复制链接]
发表于 2004-12-3 13:20:07 | 显示全部楼层 |阅读模式
1.A区和B区的大小是可以通过熔丝位的设置改变大小的,但RWW,NRWW是固定的,不会改变。对于M8来说,B区的大小可设置为128、256、512、1024字,而RWW/NRWW则固定为3072/1024字。



2.MCU挂起,表示MCU“暂停”工作,即暂时停止取指令、响应中断等,待前一个硬件操作完成后再继续执行后续的指令操作。



3.当MCU对RWW区域进行页读取、写入或擦除时,一旦指令发出后,操作将由硬件自动完成(例如由硬件将RWW区中的一页32字读到临时缓冲页中),这个操作过程需要占用一定的时间,在这段时间内,MCU可以读取NRWW区中的指令并执行。这与“一边读写RWW区域,一边干别的什么事”是不同的概念。这同当AVR的硬件在做AD转换,或URAT正在接收一个字节数据时,MCU也同时执行一条指令是类似的。下面给一个例子:

   a.从UART口读入32个字,存入RAM(程序在NRWW区域的B区中)

   b.使用循环将32个字写入临时缓冲页中(程序在NRWW区域的B区中)

   c.将00000101写入SPMCR寄存器,并执行SPM指令实施对RWW区中的页写入(程序在NRWW区域的B区中)

   d1.等待3.7ms,待页写入操作完成(程序在NRWW区域的B区中)

   d2.或从UART口读入后续的32个字,存入RAM(程序在NRWW区域的B区中)!!!

   e.3.7ms到(最好使用SPM中断响应):如采用d1此时则做d2;采用d2则直接到f

   f.跳到b,更新RWW中的下一页。

   在这个简单的操作过程中,采用d2的方式,就是利用了“对RWW操作时,可以同时对NRWW区进行读操作”的特点。它减少了更新FLASH的时间。但对NRWW区更新时,不能采用上面的操作过程。一旦对NRWW区中的页进行更新操作(C后),MCU将暂停,直到操作完成后,MCU才读取下一条指令,继续运行。这是由芯片内部的硬件电路控制,不是由指令控制的。



4.AVR的BOOTLOAD功能同其它一些芯片不同,它的BOOTLOAD程序没有固化在芯片内部(出厂为空),而是需要由用户设计实现(实际上,你第一次下载BOOTLOAD程序还必须使用其它的方式编程,如ISP、JTAG等),因此对一般的用户掌握起来有一定的困难,不如一些其它芯片的BOOTLOAD使用方便。但对高手来讲,可以根据实际需要编写高级、高效、专用的BOOTLOAD程序,如从一个U盘读取数据,更新用户的应用程序;编写一个时间炸_弹,或对用户的密码进行验证,10次不对则将系统程序销毁等等。简单意味着使用方便,但灵活和适应性差,而灵活性需要你具备更高的能力去驾驭它。可能会有一天,在单片机的系统上也出现了“病毒”程序,其原因就是使用了固化的BOOTLOAD程序。由于固化的程序必须有统一开放的接口,那么用一个带“病毒”的应用程序更新原来的应用程序也就轻而易举了。



5.一般情况下,不提倡用B更新B,一旦把B中的BOOTLOAD程序破坏了,那么整个BOOTLOAD的功能便无法实现了。其整个概念为,“B区可以自编程,但不要把B区中的BOOTLOAD程序破坏”!给2个设计参考。

  a.设置B区为1024字,其低768字为中断向量区和中断服务程序及其他程序,高256字为BOOTLOAD程序。此种情况,可以运行高256字的BOOTLOAD程序,更新低768字中的程序。

  b.BOOTLOAD程序也要更新的设计:

    必须将bootload程序限制在一个规定的长度以内,假定为256字。

    B区设置为1024字,前512字为中断向量区和中断服务程序,接下来的256字空间保留,准备放新的BOOTLOAD程序,最后256字为当前的BOOTLOAD程序。

    当需要更新BOOTLOAD程序时,使用当前的BL程序将新的BL2程序写入保留的256字空间,并同时更新应用程序转入BL的入口,指向BL2,那么下次程序更新时,就会运行新的BL2程序了。



以上供各位参考,要使用BL了,说明你已经具备了相当的水平了:)。
发表于 2004-12-3 13:41:28 | 显示全部楼层
"给2个设计参考"?在哪
发表于 2004-12-3 13:55:53 | 显示全部楼层
"设计参考"

AVRstudioSKT500作上位机的BOOTLOAD软件包(C 原代码)。



http://www.lins.de/index.pl?page=DownloadSoftware&lang=de


-----此内容被andy于2004-12-03,14:29:11编辑过
发表于 2004-12-3 14:28:13 | 显示全部楼层
有现成的hex下载,可体验一下Bootloader。



下载网站;

http://hubbard.engr.scu.edu/embedded/avr/bootloader/



STK500-Emulating Bootloader:



This bootloader is written to emulate Atmel's well-known STK500 AVR development board. The STK500 uses a block transfer protocol to quickly program AVR processors using a standard serial port connection and ordinary RS-232 signaling. With this bootloader installed, you will be able to program your processor from Atmel AVR Studio, just like you would if you were using an STK500 board. For most processors, a complete programming cycle takes 5-10 seconds.



Begin by downloading an appropriate bootloader for your processor from the list below. The bootloader is already compiled into a *.hex file and is ready to be programmed into your processor. Don't forget to set the fuse bits as appropriate.



ATmega8

stkload_m8_1kw_737mhz.hex for Mega8, 1Kword, @7.37MHz (updated: Saturday January 24, 2004 )

ATmega16

stkload_m16_1kw_737mhz.hex for Mega16, 1Kword, @7.37MHz (updated: Wednesday May 05, 2004 )

stkload_m16_1kw_1475mhz.hex for Mega16, 1Kword, @14.75MHz (updated: Tuesday June 03, 2003 )

ATmega32

stkload_m32_1kw_737mhz.hex for Mega32, 1Kword, @7.37MHz (updated: Sunday September 21, 2003 )

stkload_m32_1kw_1475mhz.hex for Mega32, 1Kword, @14.75MHz (updated: Sunday September 21, 2003 )

ATmega128

stkload_m128u0_1kw_737mhz.hex for Mega128, UART0, 1Kword, @7.37MHz (updated: Friday July 18, 2003 )

stkload_m128u0_1kw_1475mhz.hex for Mega128, UART0, 1Kword, @14.75MHz (updated: Sunday June 22, 2003 )

stkload_m128u1_1kw_369mhz.hex for Mega128, UART1, 1Kword, @3.69MHz (updated: Tuesday June 24, 2003 )

stkload_m128u1_1kw_737mhz.hex for Mega128, UART1, 1Kword, @7.37MHz (updated: Saturday April 19, 2003 )

stkload_m128u1_1kw_1475mhz.hex for Mega128, UART1, 1Kword, @14.75MHz (updated: Saturday April 19, 2003 )

ATmega163

stkload_m163_1kw_737mhz.hex for Mega163, 1Kword, @7.37MHz (updated: Saturday April 19, 2003 )

stkload_m163_1kw_800mhz.hex for Mega163, 1Kword, @8.00MHz (updated: Tuesday May 06, 2003 )

ATmega323

stkload_m323_1kw_737mhz.hex for Mega323, 1Kword, @7.37MHz (updated: Saturday April 19, 2003 )

Bin files are for use with PonyProg

stkload_m163_1kw_737mhz.bin for Mega163, 1Kword, @7.37MHz (updated: Wednesday May 05, 2004 )

stkload_m16_1kw_737mhz.bin for Mega16, 1Kword, @7.37MHz (updated: Thursday May 06, 2004 )

stkload_m16_1kw_1475mhz.bin for Mega16, 1Kword, @14.75MHz (updated: Thursday May 06, 2004 )

stkload_m128u1_1kw_369mhz.bin for Mega128, UART1, 1Kword, @3.69MHz (updated: Tuesday June 24, 2003 )

stkload_m128u1_1kw_737mhz.bin for Mega128, UART1, 1Kword, @7.37MHz (updated: Tuesday June 24, 2003 )

stkload_m128u1_1kw_1475mhz.bin for Mega128, UART1, 1Kword, @14.75MHz (updated: Tuesday June 24, 2003 )





http://hubbard.engr.scu.edu/embedded/avr/bootloader/
发表于 2004-12-3 19:03:50 | 显示全部楼层
哈哈,这个帖子还是我昨晚顶起来的...



愿好帖像永不沉没的航母...



http://www.21icbbs.com/club/bbs/showEssence.asp?id=4489
-----此内容被hotpower于2004-12-03,19:23:58编辑过
发表于 2004-12-3 19:16:45 | 显示全部楼层
阿莫教主再给您看几个好东西...







AVR 单片机与GCC 编程



WinAVR 快速入门



芯艺设计室




-----此内容被hotpower于2004-12-13,22:43:32编辑过
发表于 2004-12-3 22:38:15 | 显示全部楼层
megaload好用!
 楼主| 发表于 2004-12-5 17:22:46 | 显示全部楼层
在M128书的第五章中,会有一个更加完善和实用的示例和全部的代码(C+汇编)。它先是我的研究生吴明琪编写的,经过我优化并改正了其中的BUG。
发表于 2004-12-5 17:37:59 | 显示全部楼层
期待 machao 老师的大作。估计到时肯定会掀起M128的热潮。



至少我已经知道,本网站好多会员对M128已经跃跃欲试了。
发表于 2004-12-5 19:58:28 | 显示全部楼层
machao 大师~!

             m128什么时候才能出呢?期待中~~~~~!
 楼主| 发表于 2004-12-6 00:20:19 | 显示全部楼层
发表于 2005-8-11 18:09:04 | 显示全部楼层
我的BOOT LOADER写成功了,发送数据成功了,但老是说校验不通过,这可能是什么问题啊?
发表于 2005-8-21 09:14:01 | 显示全部楼层
我参考megaload和527dz兄弟的下位机程序,用DELPHI写了一个上位机程序,同时下位机软件也作了一定的修改,但是速度有点慢,稍后公布源程序,希望大家支持!



点击此处下载上位机软件

点击此处下载fireware
-----此内容被peterf于2005-08-21,09:15:51编辑过
发表于 2006-6-9 15:03:27 | 显示全部楼层
谢谢!

感觉学无止境.

好贴要顶!
发表于 2009-10-26 10:32:48 | 显示全部楼层
good
发表于 2009-12-18 17:02:05 | 显示全部楼层
mark
发表于 2009-12-30 10:07:37 | 显示全部楼层
很受教育,谢谢
发表于 2010-4-16 13:08:33 | 显示全部楼层
跨越时空的.....帖子..
发表于 2012-8-8 10:32:05 | 显示全部楼层
再穿越一下
发表于 2012-10-18 13:15:19 | 显示全部楼层
受教了~~~~~~~~~~~~~
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-9-18 14:04

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表