搜索
bottom↓
回复: 19

关于BoolLoader自编程

[复制链接]

出0入0汤圆

发表于 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了,说明你已经具备了相当的水平了:)。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2004-12-3 13:41:28 | 显示全部楼层
"给2个设计参考"?在哪

出0入104汤圆

发表于 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编辑过

出0入104汤圆

发表于 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/

出0入0汤圆

发表于 2004-12-3 19:03:50 | 显示全部楼层
哈哈,这个帖子还是我昨晚顶起来的...



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



http://www.21icbbs.com/club/bbs/showEssence.asp?id=4489
-----此内容被hotpower于2004-12-03,19:23:58编辑过

出0入0汤圆

发表于 2004-12-3 19:16:45 | 显示全部楼层
阿莫教主再给您看几个好东西...







AVR 单片机与GCC 编程



WinAVR 快速入门



芯艺设计室




-----此内容被hotpower于2004-12-13,22:43:32编辑过

出0入0汤圆

发表于 2004-12-3 22:38:15 | 显示全部楼层
megaload好用!

出0入0汤圆

 楼主| 发表于 2004-12-5 17:22:46 | 显示全部楼层
在M128书的第五章中,会有一个更加完善和实用的示例和全部的代码(C+汇编)。它先是我的研究生吴明琪编写的,经过我优化并改正了其中的BUG。
头像被屏蔽

出0入0汤圆

发表于 2004-12-5 17:37:59 | 显示全部楼层
期待 machao 老师的大作。估计到时肯定会掀起M128的热潮。



至少我已经知道,本网站好多会员对M128已经跃跃欲试了。

出0入0汤圆

发表于 2004-12-5 19:58:28 | 显示全部楼层
machao 大师~!

             m128什么时候才能出呢?期待中~~~~~!

出0入0汤圆

 楼主| 发表于 2004-12-6 00:20:19 | 显示全部楼层
IAP应用(BOOTLOAD)示例见:马潮老师的专栏:正在编写M128原理与使用指南中的一小节,请提意见和建议(5.2)

出0入0汤圆

发表于 2005-8-11 18:09:04 | 显示全部楼层
我的BOOT LOADER写成功了,发送数据成功了,但老是说校验不通过,这可能是什么问题啊?

出0入0汤圆

发表于 2005-8-21 09:14:01 | 显示全部楼层
我参考megaload和527dz兄弟的下位机程序,用DELPHI写了一个上位机程序,同时下位机软件也作了一定的修改,但是速度有点慢,稍后公布源程序,希望大家支持!



点击此处下载上位机软件

点击此处下载fireware
-----此内容被peterf于2005-08-21,09:15:51编辑过

出0入0汤圆

发表于 2006-6-9 15:03:27 | 显示全部楼层
谢谢!

感觉学无止境.

好贴要顶!

出0入0汤圆

发表于 2009-10-26 10:32:48 | 显示全部楼层
good

出0入0汤圆

发表于 2009-12-18 17:02:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-30 10:07:37 | 显示全部楼层
很受教育,谢谢

出0入0汤圆

发表于 2010-4-16 13:08:33 | 显示全部楼层
跨越时空的.....帖子..

出0入0汤圆

发表于 2012-8-8 10:32:05 | 显示全部楼层
再穿越一下

出0入0汤圆

发表于 2012-10-18 13:15:19 | 显示全部楼层
受教了~~~~~~~~~~~~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 16:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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