打印

请教关于Stellaris Bootloader的几个问题

[复制链接]
3630|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rainbow99|  楼主 | 2011-8-30 22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,刚接触LM3SB96不久,有几个问题一直弄不太清楚,请大家指教:
1. 内部ROM有bootloader,为什么都选择在外部自己烧写bootloader?
2.即使有了bootloader,无论是通过串口、以太网和USB升级,烧写应用程序也是通过LM programmer工具,能不能通过U盘等存储设备升级?
3.在IAR的例程中,关于boot的文件有6个,我看了很多资料都没看懂这6个工程是怎么回事,boot_eth、boot_serial和boot_usb这三个应该是烧写在flash 0x0地址的bootloader吧?那么boot_demo1、boot_demo2和boot_demo_eth这三个应该是通过bootloader烧写的应用程序把?但是为什么在这三个文件最后都跳转到jumptobootloader这个地方呢?什么意思啊?

相关帖子

沙发
永远的不知| | 2011-8-30 22:49 | 只看该作者
1# rainbow99

1. 很多人在使用内部ROM的bootloader,使用内部的bootloader比较灵活,源码开放,自己可以引用修改;另外内置的bootloader不能使用usb dfu。

2. 可以通过U盘升级,我们的hellom3里就有使用U盘升级的例程。

3. 前面您分析的是对的,boot_eth、boot_serial和boot_usb是引导程序bootloader;boot_demo1、boot_demo2和boot_demo_eth这几个可以认为是应用程序,但其本身在运行这几个应用程序时,也可以调用bootloader来升级更新程序,所以会调用jumptobootloader()这个函数。

使用特权

评论回复
板凳
mohanwei| | 2011-8-30 23:24 | 只看该作者
在用户程序里直接jumptobootloader()的方法不好因为用户程序可能开了N个中断,使能了N个外设,不做处理就跳到bootloader可能会引发一堆问题。而TI本身的demo在培训的时候讲师都头大……

我们的做法是需要升级时,用户程序在存储器的约定地方设标志位,然后启动看门自动复位;复位后首先运行bootloader,它先读取约定地方的标志位,如果需要升级,就升级,否则跳转到用户程序(当然还有一系列的完整性验证过程)。这样做还有个好处,bootloader也跟普通程序一样编写,便于调试;不像原厂那个根本没法仿真

使用特权

评论回复
地板
永远的不知| | 2011-8-30 23:48 | 只看该作者
您的方法也不错,欢迎一起探讨。
您说的“用户程序在存储器的约定地方设标志位”,是指在RAM中吗?上电复位时RAM为随机值,不为确定值,此时是否有概率造成“复位后首先运行bootloader,它先读取约定地方的标志位”的误判断呢?

直接调用jumptobootloader()应该问题不大,因为用户程序已经要升级程序了,此时应用程序当前的状态已经意义不大,可以直接忽略进入程序升级。此外,使用内部ROM中的bootloader还可以节省Flash程序空间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

54

帖子

1

粉丝