开一个世界前沿的话题讨论下:如何减小芯片BootLoader的size。

[复制链接]
4950|19
 楼主| pheavecn 发表于 2008-10-23 13:32 | 显示全部楼层 |阅读模式
NXP的lpc2000系列芯片BootLoader占用12KB的存储器空间。
ST的stm32f系列BootLoader占用2106字节的存储器空间。不过我看过其反汇编代码,真是很挤呀!!!isp的功能也马马虎虎。
NXP的lpc1000系列芯片规格出来了,BootLoader占用8KB的空间。
有没有办法用1k字节左右的存储器空间实现同样甚至更复杂完备的BootLoader!!!

如果可以,那省出来的存储器都是白花花的银子呀!!!

同样我们要实现IAP应用程序升级功能,IAP BootLoader也是占用空间越小越好。

强调一下目标:
  不仅仅是把目前的2k、12k、8k等BootLoader减小,而且要把复杂到几十k的BootLoader也大幅度减小。
lucidmask 发表于 2008-10-23 13:49 | 显示全部楼层

re

又要size小,又要功能强,都是你的了,要哪么强功能干什么,能load就行了
 楼主| pheavecn 发表于 2008-10-23 13:59 | 显示全部楼层

呵呵,这就叫挑战嘛!世界前沿的技术不就是一个一个的挑

举例来说,自动波特率、超强纠错、超强加解密,这些都是好处大大的东东。

在某些IAP应用场合,甚至会用到RSA、ECC等算法。

刚看了atmel的at91sam7系列,BootLoader占16KB,太浪费了!!!

欢迎各位踊跃讨论,2个月后我公开我的做法!!!

如超过100楼,提前公开!!!
农民讲习所 发表于 2008-10-23 14:02 | 显示全部楼层

俺在S3C2410自己做的BOOTLOADER大小4K

C写的,4KBOOTRAM正好放下,不需要第二个BOOT。
初始化。
调用NANDFLASH图片显示**。
串口ISP下载。

原先以为能做到2K,估计错了。

black_wolf 发表于 2008-10-23 14:06 | 显示全部楼层

别关心Size了

我觉得能用的上Bootloader的芯片对几K的大小基本都不太关心了,还是讨论一下什么功能最重要,怎么实现,什么样的结构最合理吧!?
 楼主| pheavecn 发表于 2008-10-23 14:08 | 显示全部楼层

呵呵,我做到1K多呢。

优化一下可以控制在1KB。
农民讲习所 发表于 2008-10-23 14:09 | 显示全部楼层

自动波特率没什么大作用,固定115200就好了。

lpc,stc都采用自动波特率,有时候会出现连接不上,很麻烦的。
aweyfan 发表于 2008-10-23 14:12 | 显示全部楼层

我做的avr的bootloader,220字节,带简单加密

主要工作由上位机完成
 楼主| pheavecn 发表于 2008-10-23 14:23 | 显示全部楼层

在设备芯片里烧一个BootLoader。

只有原始制造商提供的代码才能升级。
而原始制造商提供的代码只有指定的设备才能升级。

这种功能不知道有没有意义?
 楼主| pheavecn 发表于 2008-10-23 14:26 | 显示全部楼层

aweyfan老兄的简单加密,恐怕没有很大意义。

在密码学体制里属于古典密码体制,即安全性能依赖于加密算法的保密性。

现在密码体制,分为对称密钥体制和非对称密钥体制。都是依靠密钥来实现安全性,而算法是充分公开的。
yewuyi 发表于 2008-10-23 14:33 | 显示全部楼层

嘿嘿,做成固件最省空间,一个字节都不要。。。

农民讲习所 发表于 2008-10-23 14:41 | 显示全部楼层

pheavecn可以先把要求提出来

MCU型号?功能?
aweyfan 发表于 2008-10-23 15:11 | 显示全部楼层

复杂可以搞aes或des,起码要2k空间了

加密这东西,只是一张纸,你搞的再复杂,别人花几百块直接解密了
 楼主| pheavecn 发表于 2008-10-23 17:25 | 显示全部楼层

arm7和cortex-m3

正常版本:
自动波特率(stm32f的),uu编码纠错(lpc2000的)。
支持aes加密,这样串口的数据不会被窃听。

高级IAP版本支持数字签名,diff-hellman密码协商。

总之最终目的要保证可靠、方便、安全、排他的进行ISP/IAP。

比如烧录数量控制、烧录版本控制、试用版本烧录等、软件防篡改,都是现实中会遇到的问题。
我的目标是提供合法、可靠的手段去实现这些目的。

暂时可不考虑AVR这些低端mcu,真做不出什么花样来。
平常人 发表于 2008-10-23 18:42 | 显示全部楼层

与上百KB的Flash空间相比,在Bootloader上省出1KB,有意义吗?

意义有多大?

在2K、4K、8K中省出1KB甚至所有8K空间,相对于上百KB的Flash空间,简直是九牛一毛,而且从100K、200K、500K的程序中挤出10K、8K的空间比在Bootloader中花功夫容易得多。
mohanwei 发表于 2008-10-23 19:37 | 显示全部楼层

我做的一个uPSD3254A/uPSD3354D的Bootloader就是实现9楼的功能

有用的塞上,没有用的也不停塞,终于填满了32K的空间。
hotpower 发表于 2008-10-23 20:54 | 显示全部楼层

支持一下~~~

zoudem500 发表于 2008-10-24 09:14 | 显示全部楼层

菜菜的问下

看到各位大侠在这讨论这个bootloader,在次问下。那些地方学要做这个bootloader,意义何在啊?我公司有些程序都是有bootloader的,在我感觉他们做这个bootloader就是定义了一些底层定义和引脚的分配。具体意义不清楚?大侠给讲解下,菜鸟询问!谢谢!
99st 发表于 2008-10-24 15:26 | 显示全部楼层

各位不能说没用。

当BootLoader定下来的时候,是没办法。
很多芯片不就多点RAM,FLASH,但价钱就贵了点吗?
这些单位可是几KB。

支持一下~
 楼主| pheavecn 发表于 2008-10-25 09:28 | 显示全部楼层

谢谢楼上兄弟的支持。

楼上的楼上,单片机的BootLoader一般指把程序烧录到FLASH里面去的一段程序。
而在linuxwince等操作系统中,BootLoader是跟电脑的BIOS差不多的一个角色。

单片机的BootLoader,改称BootBurner比较合适。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

918

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部