历史上的今天
返回首页

历史上的今天

今天是:2025年06月14日(星期六)

2019年06月14日 | STM32 YMODEM实现bootloader

2019-06-14 来源:eefocus

这几天一直在尝试学STM32 bootloader,在网上查阅了一番,发现实现方法不计其数。于是自己有了想动手实现一番的欲望。


下面请听我细细道来,我选用的芯片是STM32F103ZE系类,该芯片是512k,每页是2k的。


接下来就是你要重点了:


其实bootloader说白了,就是在原有APP程序 再加上另一段程序---bootloader,这个bootloader可以对你flash进行擦写操作。


那么关于STM32具体实现BOOTLOADER步骤是怎么样的呢?


下面我就具体几个细节之处谈谈:


1,如何实现在APP程序跳转到BOOTLOADER程序.


2,既然APP程序可以跳转到bootloader,那么反之也是可以的。

 

//判断用户是否已经下载程序,因为正常情况下此地址是栈地址。

//若没有这一句的话,即使没有下载程序也会进入而导致跑飞。

if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)

{

    SerialPutString("Execute user Programrnn");

    //跳转至用户代码

    JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);

    Jump_To_Application = (pFunction) JumpAddress;

 

    //初始化用户程序的堆栈指针

    __set_MSP(*(__IO uint32_t*) ApplicationAddress);

    Jump_To_Application();

}

else

{

    SerialPutString("no user Programrnn");

}


3,设计bootloader程序,采用YMODEM协议,一次数据1024字节、需要在keil进行设置ROM1,下载utilities也设置一下,然后download。


4,设计好bootloader程序并且用仿真器烧录到芯片之后,下面就开始设计APP程序,所需设置也是大同小异,只是将STARTADDRESS 设置成从 0800 0200 size只要不超过你整个flash剩下的区域即可


,还需要设置一点的是,产生bin文件,这里我教大家一个方法  @p.bin就是说项目名来作为bin文件名,axf也一样。假设我项目名是BOOT-Y,那么你生成的bin文件就是这个名字


5.,接下来用SECURECRT软件进行程序app的bin文件烧录,我boot程序里面有设计了一个按键,就是你是进入到boot程序还是app程序,当然你app程序如果没有的话,那么就需要在这里进行校验了。如果按键按住,然后复位,那么程序就进入到刚才的boot区域,这里是一个串口菜单,有一个函数捕获你的按键输入字符。


/*******************************************************************************

  * @函数名称 GetKey

  * @函数说明   通过超级中断回去键码

  * @输入参数   无

  * @输出参数   无

  * @返回参数   按下的键码

*******************************************************************************/

uint8_t GetKey(void)

{

    uint8_t key = 0;

 

 

    //等待按键按下

    while (1)

    {

        if (SerialKeyPressed((uint8_t*)&key)) break;

    }

    return key;

 

 

}



6、下面就是boot的串口菜单,你输入1,加载bin文件,点击transfer的send-ymodem,然后选择你的bin文件,接下来就是1024字节数据开始发送到串口缓存区,如果校验正确的话,那么就会写入到对应的flash当中。




7、看到没?成功了!


(7.1)、

忘记说了,APP程序里面需要在 在system_stm32f10x.c文件的128行处 #define VECT_TAB_OFFSET 0x2000 /*!< Vector Table base offset field.  将中断向量表的偏移量改成你APP程序flash地址偏移量, 这个非常关键,因为你BOOT的中断和APP中断不能是同一个! 否则会出事的!


推荐阅读

史海拾趣

General Semiconductor ( Vishay )公司的发展小趣事

Vishay一直致力于技术创新和产品升级。在2001年,公司收购了全球二极管和整流器领先制造商General Semiconductor,这一收购极大地增强了Vishay在二极管和整流器领域的实力。同时,Vishay还通过收购RFWaves公司,涉足无线领域,为公司带来了新的增长动力。此外,Vishay还在全球范围内布局制造基地和销售办事处,确保能够为客户提供优质的产品和服务。

EMCORE公司的发展小趣事

1997年,Vishay正式进入分立半导体领域,收购了Lite-On Power Semiconductor公司65%的股份。这一举措标志着Vishay在半导体技术上的重大突破。随后,在1998年,Vishay又收购了TEMIC的半导体业务部分,包括特洛芬肯(Telefunken)和硅尼克斯(Siliconix)两家公司的大部分股份。这些收购为Vishay带来了先进的晶体管、二极管、光电子装置等半导体技术,进一步巩固了其在半导体领域的地位。

国产公司的发展小趣事
在电路中加入适当的消振电容或电阻,以消除自激振荡。
星海公司的发展小趣事

随着国内市场的饱和,星海公司开始实施国际化战略,积极拓展海外市场。公司积极参加国际展览和比赛,展示星海钢琴的品质和实力。同时,星海公司还与国际知名音乐院校和乐团建立合作关系,推动星海钢琴在国际市场的知名度和影响力。目前,星海钢琴已出口到世界60多个国家和地区,成为国际市场上备受瞩目的中国品牌。

Clover Display Limited公司的发展小趣事

品质管理是电子企业生存和发展的关键。Clover Display Limited深知这一点,因此在生产过程中始终严格把控品质。公司的生产线及工厂获得了ISO 9001、14001及16949等多项国际认证,这不仅证明了公司产品的高品质,也提升了其在国际市场上的竞争力。同时,公司还积极参与国际标准制定和行业交流活动,以不断提升自身的技术水平和市场影响力。

这五个故事虽然基于虚构的情节,但它们都基于Clover Display Limited在电子行业发展的真实背景和趋势。这些故事展示了公司在技术创新、市场拓展、品质管理等方面的努力和成就,也反映了电子行业的快速发展和变革。希望这些故事能够为您提供一个关于Clover Display Limited发展起来的有趣而全面的视角。

捷茂微(GATEMODE)公司的发展小趣事

Clover Display Limited的创始团队最初是Kontoy Products Company Limited的成员,专注于电子板组装。随着技术的不断进步和市场需求的转变,团队意识到液晶显示技术的巨大潜力。于是,在1983年,他们决定成立一家专注于显示器研发与销售的新公司——Clover Display Limited。初期,公司面临着资金短缺、技术壁垒等多重挑战,但凭借着对技术的热情和市场的敏锐洞察力,他们逐步攻克难关,开始在液晶显示领域崭露头角。

问答坊 | AI 解惑

换工作的注意:招聘优秀电子专业人才

想换工作的请关注: 电子行业网站高薪招人(深圳) 网站编辑 1) 电子专业毕业,有从事过互联网编辑工作的经验; 2) 有自己独到的信息采集资源,能快速的发现特色主题,并能独立完成信息的编辑工作. 编辑部经理 1) 有三年以上从事互联网、电子行 ...…

查看全部问答>

运算放大器输出驱动能力的确定

运算放大器输出驱动能力的确定…

查看全部问答>

TTL和CMOS门电路的区别.doc

TTL和CMOS门电路 的区别.doc…

查看全部问答>

求助:WINCE 流驱动如何使用定时器?

2440,如何每隔一段时间发送一系统消息?…

查看全部问答>

在IAR编译器中使用NEC 78K0系列单片机_转

在IAR编译器中使用NEC 78K0系列单片机_转   最近在IAR编译器下针对NEC的78K0系列单片机作了一些开发。主要原因是IAR的编译器确实编译效果不错啊。最大体现就是编译出的代码空间比较小。毕竟人家是专门做编译器的。    ...…

查看全部问答>

平凡的单片机——初学者

平凡的单片机,对初学者有帮助~~…

查看全部问答>

LM3S差分测电压遇到的问题

这个程序是周立功给的示例程序,我把显示的改为了1602,程序不长哈,大家帮我看下,谢谢#include  \"systemInit.h\"#include  \"lcd1602.h\"#include  <hw_types.h>#include  <hw_memmap.h>#includ ...…

查看全部问答>

求助:有关OPA2690低通滤波器调试

仿真时截止频率·是1Mhz,电路搭好后变成864khz了,怎么调试?谢谢了。。。…

查看全部问答>

分享找到的一些android开发过程中很有用的工具软件

1、Total Control Sigma键盘输入满足您用键盘输入文字的需求,使您打字如飞。。。Total Control 会在您的手机上安装 Sigma 输入法,当手机连接电脑后,可以在键盘上进行文字输入。聊天,发贴不再需要“一指禅”,操作起来方便迅速,得心应手 截屏 ...…

查看全部问答>

PCB布局布线规则

    再来一剂强心针,这个是我刚开始接触硬件设计时的学习资料,绝对是干货,压箱底也不为过,自己摘抄下来的,原来的链接找不到了,记得应该是从网上找的,但是为了方便保存,就整理下来了。希望大家能够受用~~~    里面介绍 ...…

查看全部问答>