17831|53

158

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

谁能讲讲8962/9B96的Bootloader的下载,调试 [复制链接]

我也不知道是怎么一回事,下载了官网上的例程(也试过ZLG的实验书程序),但是总也不见成功,调试的时候无一例外地进入一个死循环,从来也没有进入到main/updater函数中去。

我试过IAR v5.3,IAR v6.0,Keil v4.0,板子也试过ZLG的Easyarm8962(使用串口0)和自己搭的8962(使用串口1)。

哪位有成功经验的兄弟请介绍一下这方面的经验吧。

最新回复

好贴 开发板驱动怎么装不上啊 怎么搞的  详情 回复 发表于 2014-7-3 10:06
 
点赞 关注

回复
举报

1803

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 
建议用 LM3S8962 来做试试吧。
先下载 StellarisWare  Boot_serial 到开发板。
再下载 Boot_demo1 。由于用的是 EasyARM8962 所以可将 Boot_dmeo1 中有关 OLED 部分的代码去掉。
当 Boot_demo1 下载完成后,就可以通过 串口 多次下载 Boot_demo1.


 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

板凳
 

原帖由 Yawness 于 2011-9-25 15:02 发表 我也不知道是怎么一回事,下载了官网上的例程(也试过ZLG的实验书程序),但是总也不见成功,调试的时候无一例外地进入一个死循环,从来也没有进入到main/updater函数中去。 我试过IAR v5.3,IAR v6.0,Keil v4.0 ...

 

lm3s Boot Loader说明

https://bbs.eeworld.com.cn/thread-244298-1-1.html

 

通过以太网bootloader下载程序的方法

https://bbs.eeworld.com.cn/thread-219569-1-1.html

 

关于LM3S 的eth升级的学习笔记-写给那些对LM3S boot不熟悉的童鞋

https://bbs.eeworld.com.cn/thread-301784-2-1.html

 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

4
 
谢谢楼上的兄弟们,我这会儿就去试试
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

5
 
还是不行啊……

按照分析,如果我没有下载应用程序,也没有按强制升级的按键(自己搭的8962板子没有按键),那么Bootloader应该进入Bootloader的Updater函数,然后在while循环里面无限等待下去啊?

可是用TI的LM Flash Programmer选择串口根本就连不通板子……

我试着在Updater函数开始处加了一条串口发送的语句来表示程序进入到这里了,结果什么也捕捉不到……
我试着在Updater函数开始处设置了一个断点,也不能进入。程序在进入到Updater之前就不知道跳到哪里去了……

大家是用什么下载Bootloader的?
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

6
 

原帖由 Yawness 于 2011-9-25 21:44 发表 还是不行啊…… 按照分析,如果我没有下载应用程序,也没有按强制升级的按键(自己搭的8962板子没有按键),那么Bootloader应该进入Bootloader的Updater函数,然后在while循环里面无限等待下去啊? 可是用TI的 ...

 

LM3SAPP_Bootloader_UART_Note.zip (579.01 KB, 下载次数: 199)

LM3SAPP_Ethernet_Bootloader_Note.zip (596.8 KB, 下载次数: 127)

 
 
 

回复

299

帖子

0

TA的资源

纯净的硅(高级)

7
 

回复 5楼 Yawness 的帖子

您按照TI stellarisware里的boot_seral和boot_demo1例程下载试试,下载工具用lmflash programmer,下载这两个程序前,先把flash擦干净,先通过jtag下载boot_seral,再通过lmflash programmer选择串口下载boot_demo1。
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

8
 
好的,我再试试
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

9
 
好详细,还是中文的!
但是这个地方好像有点不一样,我的Flash Programmer的选项是这样的(见附件红圈),跟笔记中提到不一致……是我的Flash Programmer版本太低了,还是太高了?

LMFP.JPG (46.91 KB, 下载次数: 0)

LMFP.JPG
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

10
 

原帖由 Yawness 于 2011-9-26 14:29 发表 好详细,还是中文的!但是这个地方好像有点不一样,我的Flash Programmer的选项是这样的(见附件红圈),跟笔记中提到不一致……是我的Flash Programmer版本太低了,还是太高了?

 

FTDI和ICDI,这两个东西还真是怪,好像都是用FT2232来转的。

我是这样理解的:

FTDI : FT2232 Debug Interface

ICDI : In Circuit Debug Interface

但是TI官方的板子板载的ICDI用的就是FT2232,所以FTDI == ICDI。

这个仅仅是个人臆想,不足为据,别被误导了。

 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

11
 
哦,我选第一项,就是ICDI是可以通过Flash Programer擦除和下载的(用的是LM Link),但是用JLink就不行,好像奇怪的事情还真不少……

我按照笔记中的步骤(除了把UART0_BASE改成UART1_BASE,GPIO_PORTA_BASE改成GPIO_PORTD_BASE,PA0和PA1改成PD2和PD3)把生成的bin用Flash Programmer下载到8962后,再通过Flash Programmer选择UART下载应用到8962就不行了,显示failed to establish communication with the board,也就是说不能建立通信,一切都跟我之前遇到的情况一模一样……

现在我准备试试通过以太网来升级的例程……
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

12
 
我好像明白原因所在了——我的板子上用的是485,而的485芯片是个半双工的,默认只发不收,而官网上下载的例程显然不包含对我这个485的初始化,所以没有的收,也就没有的发,Flash Programmer也就Ping不通我的8962了……
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

13
 
我好郁闷……以太网升级也不行,下载bootloader后,再加载应用程序点击program,Flash Programmer就一直尝试连接中

难道我悟性不够?
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

14
 
很多地方都不一样,真是……
我推测以太网升级不成功是因为没有配置MAC地址,ZLG的EasyArm8962开发板的网口上贴着MAC地址,我就直接填写了这个地址。

但是,用Flash Programmer获取当前MAC地址却是6个FF,于是我把标签上的MAC地址按照Flash Programmer的提示填写了进去,也勾选了commit MAC Address,也出现了“永久过程,结果不可逆”的提示,但是点确认后再获取,仍然是6个FF。是没有成功,还是本身就被永久写成6个FF了?

我又试着把MAC地址改成6个FF,可是还是无法升级,一直是“attempting to connect...”

还有什么细节我没有考虑到?会是硬件问题吗?
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

15
 

回复 14楼 Yawness 的帖子

我试过直连的情况,没有配置 MAC 地址,FF-FF-FF-FF-FF-FF 也可以升级。
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

16
 
我试过好几种组合了,一直都没有让人惊喜的反应
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

17
 
到底哪里出错了……我已经折腾一个月了,虽然有这么多好心人,可是还是没有解开心中的疑惑
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

18
 
会不会是端口的问题?
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

19
 
LM Flash Programmer用的是哪个端口?
我昨天晚上查原代码看到
#define BOOTP_SERVER_PORT 67
#define BOOTP_CLIENT_PORT 68

#define TFTP_PORT 69

这里面server和tftp的端口是不是就是LM Flash Programmer使用到的端口?
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

20
 

原帖由 Yawness 于 2011-9-27 17:39 发表 我试过好几种组合了,一直都没有让人惊喜的反应

 

我这边有惊喜耶,用EK-LM3S811的串口Bootloader下载成功了,而且操作很简单,不过,都是基于MDK的,而且是UART方式,IAR的ICF文件(旧版本是xcl)不知道怎么弄。

 

步骤:

 

1、到https://bbs.eeworld.com.cn/thread-290441-1-1.html下载并解压光盘文件:G:\Tools\StellarisWare\StellarisWare_for_EK-LM3S811.zip

 

2、打开工程文件StellarisWare_for_EK-LM3S811.zip\StellarisWare_for_EK-LM3S811\boards\ek-lm3s811\boot_serial\boot_serial.uvproj,修改StellarisWare_for_EK-LM3S811.zip\StellarisWare_for_EK-LM3S811\boards\ek-lm3s811\boot_serial\bl_config.h一些注释,根据实际需要的GPIO触发Bootloader的引脚配置,这里使用板载的USER按键S2,连接与PORTC的PIN4,具体如下:

Line243:取消注释#define ENABLE_UPDATE_CHECK

Line257:取消注释并修改为#define FORCED_UPDATE_PERIPH    SYSCTL_RCGC2_GPIOC

Line271:取消注释并修改为#define FORCED_UPDATE_PORT      GPIO_PORTC_BASE

Line282:取消注释#define FORCED_UPDATE_PIN       4

Line294:取消注释#define FORCED_UPDATE_POLARITY  0

部分如图:

 

3、修改后保存并重新编译一下工程,至于编译可能会提示的如下Error:

Build target 'boot_serial'
User command #1: armcc --device DLM -I . -E -o bl_config.inc ..\..\..\boot_loader\bl_config.c
--- Error: User Command terminated, Exit-Code = 1
Target not created

 

解决方法是:双击左侧工程栏的bl_main.c,激活该C文件,不要直接点Rebuild,要点Translate(默认快捷键Ctrl+F7),编译结果会有如下提示:

compiling bl_main.c...
..\..\..\boot_loader\bl_main.c - 0 Error(s), 0 Warning(s).

 

然后,再点Rebuild,就可以编译工程了,编译结果如下所示:

Build target 'boot_serial'
User command #1: armcc --device DLM -I . -E -o bl_config.inc ..\..\..\boot_loader\bl_config.c
compiling bl_autobaud.c...
compiling bl_can.c...
compiling bl_check.c...
compiling bl_decrypt.c...
compiling bl_enet.c...
compiling bl_flash.c...
compiling bl_i2c.c...
compiling bl_main.c...
compiling bl_packet.c...
compiling bl_ssi.c...
assembling bl_startup_rvmdk.S...
compiling bl_uart.c...
compiling bl_usb.c...
compiling bl_usbfuncs.c...
linking...
Program Size: Code=1268 RO-data=4 RW-data=20 ZI-data=272 
User command #1: fromelf --bin --output .\rvmdk\boot_serial.bin .\rvmdk\boot_serial.axf
".\rvmdk\boot_serial.axf" - 0 Error(s), 0 Warning(s).

 

4、编译成功之后,先用LM Flash Programmer 擦除芯片,然后把刚刚修改过的boot_serial\boot_serial.uvproj编译结果给下进去,UART的Bootloader就下载完成了,以后通过串口来更新程序,只需要复位的时候,按下板上的S2键就可以触发Bootloader通过串口来下载了。注意:根据刚刚工程文件的bl_config.h中Line79的#define APP_START_ADDRESS       0x0800可知,我们用户的程序是从0x0800开始的,所以用LM Flash Programmer下载的时候,记得设置偏移地址为0x800,如下图:

 

5、除了设置偏移地址,同样我们自己建立的工程也要修改一下SCT文件,这里以StellarisWare_for_EK-LM3S811.zip\StellarisWare_for_EK-LM3S811\boards\ek-lm3s811\boot_serial\blinky.uvproj为例:截图SCT1中复件 blinky.sct是默认的SCT文件,截图SCT2中blinky.sct是我们使用Bootloader时用的SCT文件,都是修改了由bl_config.h里决定的App偏移地址0x800。通过这样修改的工程,编译出来的程序通过UART下载后复位就可以运行了。

Bootloader对应的SCT文件如下:

LR_IROM 0x00000800 0x0000f800
{
    ;
    ; Specify the Execution Address of the code and the size.
    ;
    ER_IROM 0x00000800 0x0000f800
    {
        *.o (RESET, +First)
        * (InRoot$$Sections, +RO)
    }

    ;
    ; Specify the Execution Address of the data area.
    ;
    RW_IRAM 0x20000000 0x00002000
    {
        ;
        ; Uncomment the following line in order to use IntRegister().
        ;
        ;* (vtable, +First)
        * (+RW, +ZI)
    }
}

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表