查看: 13883|回复: 24

[原创] AN2295 bootloader文档解析(三)

[复制链接]

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-28 10:45:04 | 显示全部楼层 |阅读模式
 
[size=34.54545211791992px]AN2295 bootloader
[size=34.54545211791992px]文档解析

上周笔者已经向大家介绍了FRDM-KE02例程包中的boot loader例程的相关代码组成和程序流程关系,而这次的内容则紧跟上一次,介绍KE02通过boot loader例程实现User code升级的步骤。 闲话少叙,立即开整!
1.  Boot loader例程烧录
    运行平台
Ø FRDM-KE02

Ø IAR ARM IDE

    运行例程(IAR)
1)    使用USB cable连接FRDM-KE02开发板Min-B USB连接器(J6);

2)    加载GPIO工程后,选择【FLASH_128KB】,点击 11.jpg

进行编译;

3)    编译成功后,点击 12.jpg

进入调试界面;

            4)    进入调试界面后,点击 13.jpg

            运行例程。                                                           

 
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-28 10:54:34 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

 1.  Boot loader上位机使用手册
1)    解压AN2295代码包后,在\an2295sw\masters\debug路径下,打开“win_hc08sprg.exe”

14.jpg

1

       1)    生成User code的S19文件

 

Ø                 修改User code工程的linker file文件(以IAR ICF file为例)
            /*###ICF### Section handled by ICF editor, don't touch! ****/
            /*-Editor annotation file-*/
            /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
            /*-Memory Regions-*/
            //define symbol __ICFEDIT_region_ROM_start__ = 0;                                                           //修改前
            define symbol __ICFEDIT_region_ROM_start__ = 0x00001000;                                           //修改后
            define symbol __ICFEDIT_region_ROM_end__   = (64*1024) -1;//********
            define symbol __ICFEDIT_region_RAM_end__   = 0x20000000;
            define symbol __ICFEDIT_region_RAM_start__ =__ICFEDIT_region_RAM_end__ - (4*1024)/4 + 0x410;//********
            define symbol __region_EEPROM_start__      = 0x10003100;
            define symbol __region_EEPROM_end__        = __region_EEPROM_start__ -1 + 256; // 256 bytes
             
            /*-Specials-*/
            define symbol __ICFEDIT_intvec_start__     = __ICFEDIT_region_ROM_start__;
             
            /*-Sizes-*/
            define symbol __ICFEDIT_size_cstack__ = (1*1024);//********
            define symbol __ICFEDIT_size_heap__   = (1*1024);//********
            /**** End of ICF editor section. ###ICF###*/
             
            define symbol __region_RAM2_start__        = 0x20000000;
            define symbol __region_RAM2_end__          = __region_RAM2_start__ + ((4*1024)*3)/4;//********
             
            //define exported symbol __VECTOR_TABLE      = 0x00000000;                           //修改前
            define exported symbol __VECTOR_TABLE      = 0x00001000;                             //修改后
            define exported symbol __VECTOR_RAM        = __ICFEDIT_region_RAM_start__ - 0x410;
             
            define exported symbol __BOOT_STACK_ADDRESS = __region_RAM2_end__ - 8;
             
            define symbol __code_start__ = __ICFEDIT_region_ROM_start__ + 0x410;//********
             
            define memory mem with size = 4G;
            define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__] | mem:[from __region_EEPROM_start__ to __region_EEPROM_end__];//********
            define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __region_RAM2_end__] | mem:[from __region_RAM2_start__ to __region_RAM2_end__];
             
            define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
            define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };
             
            initialize manually { readwrite };
            initialize manually { section .data};
            initialize manually { section .textrw };
            do not initialize  { section .noinit };
             
            define block CodeRelocate { section .textrw_init };
            define block CodeRelocateRam { section .textrw };
            place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
            place at address mem:__code_start__ { readonly section .noinit };
            place in ROM_region   { readonly, block CodeRelocate};
            place in RAM_region   { readwrite, block CodeRelocateRam,
                                      block CSTACK, block HEAP };
Ø                    生成S19文件设置
 
l  选中工程后,右击后并单击【Options】,图2所示;
15.jpg

2


l  勾选【Generate additional output】,并选择【Motorola】作为Output format,如图3所示;
16.jpg

3


 
 

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-28 11:08:17 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

 l  勾选【Override default】,可修改生成文件的文件名,最后单击【OK】,如图4所示;
17.jpg

4


 
1)    上位机与FRDM-KE02建立连接
18.jpg
5

Ø  1】:选择合适的COM;
Ø  2】 :  选择协定好的波特率;
Ø  3】:选择User code工程生成的S19文件;
Ø  4】:点击Connect,接着复位Target,使得Boot loader例程重新运行。
4)    User code更新
 
       经上述3步骤后,上位机的Identification框中会显示Boot loader的相关属性信息(如图6所示),同时主窗口还显示了MCU的封装形式、Flash特性、中断向量表重定向地址、User code所占Flash空间等信息,表明了上位机与Target连接建立成功,接着点击【Program】,即可实现User code更新,如图7所示。
19.jpg

6

 




回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-28 11:09:25 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

  20.jpg

7

AN2295 bootloader文档解析(三)文档下载:

AN2295—Developer’s Serial Bootloader 解析(三).pdf (571.83 KB, 下载次数: 563)
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-28 11:10:26 | 显示全部楼层

RE:AN2295 bootloader文档解析(三)

AN2295 bootloader文档解析系列已完结,如有什么不足,或者不充分,疑问的地方,请在后面跟帖,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

273

帖子

0

高级会员

Rank: 4

积分
718
最后登录
1970-1-1
发表于 2014-7-28 11:49:50 | 显示全部楼层

RE:AN2295 bootloader文档解析(三)

bootloader三部曲,谢谢斑竹的精彩分享,辛苦啊!
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

67

帖子

0

中级会员

Rank: 3Rank: 3

积分
218
最后登录
2021-12-12
发表于 2014-7-30 10:46:11 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

楼主:你好,很感谢你提供的三篇文章,我已全部看完,有几个问题想咨询一下。
1 没有找到你说的例程在哪个地方(是在KEEXX_DRIVERS_V1.2.1_DEVD的哪个地方)
2 我的理解是第一步把生成的BOOTLOADER的S19文件先下载到MCU中也就是固化好了BOOTLOADER,第二部就是下载用户自己的程序,通过一条串口线连接到MCU的UART(0-2)的任一条串口线上面,当然和固件初始化的通讯口一致,然后再用win_hc08sprg.exe软件烧录程序,不知道理解的对不对
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-30 11:01:52 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

回复第 7 楼 于2014-07-30 10:46:11发表:
楼主:你好,很感谢你提供的三篇文章,我已全部看完,有几个问题想咨询一下。
1 没有找到你说的例程在哪个地方(是在KEEXX_DRIVERS_V1.2.1_DEVD的哪个地方)
2 我的理解是第一步把生成的BOOTLOADER的S19文件先下载到MCU中也就是固化好了BOOTLOADER,第二部就是下载用户自己的程序,通过一条串口线连接到MCU的UART(0-2)的任一条串口线上面,当然和固件初始化的通讯口一致,然后再用win_hc08sprg.exe软件烧录程序,不知道理解的对不对
 
针对你的问题:
1.你说的应该是文档介绍的Bootloader例程吧,你从官网下载,并安装成功后,在\KE02-SC\ke02-sc\build\iar\Bootloader_sci路径下即可找到bootloader例程。
2. 你的理解是正确的。
3. 如还有问题,请在下面跟帖交流。
 
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

67

帖子

0

中级会员

Rank: 3Rank: 3

积分
218
最后登录
2021-12-12
发表于 2014-7-30 11:25:04 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

楼主:方便给个下载链接吗,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-30 12:53:21 | 显示全部楼层

回复:AN2295 bootloader文档解析(三)

本帖最后由 FSL_TICS_ZP 于 2015-3-2 18:37 编辑

回复第 9 楼 于2014-07-30 11:25:04发表:
楼主:方便给个下载链接吗,谢谢

链接:
[url=https://www.freescale.co
m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=FRDM-KE02Z&fpsp=1&tab=Design_Tools_Tab&uc=true&lang_cd=zh-Hans]https://www.freescale.co
m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=FRDM-KE02Z&fpsp=1&tab=Design_Tools_Tab&uc=true&lang_cd=zh-Hans[/url]

1.jpg
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-2 16:45 , Processed in 0.141329 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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