历史上的今天
返回首页

历史上的今天

今天是:2025年08月19日(星期二)

正在发生

2018年08月19日 | STM32 YMODEM实现bootloader

2018-08-19 来源: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 Program\r\n\n");

    //跳转至用户代码

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

    Jump_To_Application = (pFunction) JumpAddress;

 

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

    __set_MSP(*(__IO uint32_t*) ApplicationAddress);

    Jump_To_Application();

}

else

{

    SerialPutString("no user Program\r\n\n");

}

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中断不能是同一个! 否则会出事的!





推荐阅读

史海拾趣

三环(CCTC)公司的发展小趣事

面对全球化的市场趋势和竞争压力,三环(CCTC)公司制定了国际化战略和全球布局计划。公司将继续加大研发投入力度,提升自主创新能力;同时积极拓展国际市场,加强与国际知名企业的合作与交流;此外还将加强人才培养和引进工作,打造一支高素质、专业化的国际化团队。通过这些措施的实施,三环(CCTC)公司将不断提升自身实力和市场竞争力,为成为全球领先的电子企业而不懈努力。

American Power Devices Inc公司的发展小趣事

在激烈的市场竞争中,APD公司始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都严格把关。凭借卓越的产品品质和良好的售后服务,APD赢得了众多客户的信赖和支持。

D3 Semiconductor公司的发展小趣事

在全球化的大背景下,D3 Semiconductor积极拓展国际市场。除了与贸泽电子的合作外,公司还与多家国际知名的电子企业建立了合作关系,将产品推向全球各地。同时,D3 Semiconductor还加强了在国际市场的营销和品牌建设,提高了公司的知名度和美誉度。这一系列的努力使D3 Semiconductor在国际市场上取得了显著的成绩,也为公司的未来发展奠定了坚实的基础。

Hama公司的发展小趣事

在获得多轮融资后,H&D Wireless加快了全球化战略的步伐。公司计划利用融资资金进行全球业务扩张,并发布物联网云服务平台,以支持更多应用程序实现非现金支付和位置追踪服务。此外,H&D Wireless还透露了上市计划,考虑在斯德哥尔摩纳斯达克北欧交易所(Nasdaq First North)寻求上市。这一计划将为公司带来更多的资金支持和市场关注,进一步推动其全球化发展。

Display Engineering Services公司的发展小趣事

为了提升产品的市场竞争力,H&D Wireless积极寻求技术合作。20XX年,公司与全球领先的微控制器解决方案提供商爱特梅尔(Atmel)携手,共同推出了基于AVR®微控制器的IEEE802.11b+g Wi-Fi解决方案。这一合作不仅提升了H&D Wireless产品的功耗效率和连接稳定性,还显著缩短了客户的产品开发周期。通过不断优化产品性能,H&D Wireless的Wi-Fi解决方案在市场上获得了广泛认可。

圣邦微电子(Fangtek)公司的发展小趣事

H&D Wireless始终将产品创新和客户服务放在首位。公司不断推出新的物联网解决方案,以满足不同行业客户的需求。同时,H&D Wireless还建立了完善的客户服务体系,为客户提供全方位的技术支持和解决方案咨询。这种以客户为中心的经营理念赢得了广大客户的信赖和支持,也为公司的持续发展奠定了坚实基础。

以上五个故事展示了H&D Wireless公司在电子行业中的发展历程和成就,体现了其在物联网领域的创新能力和市场竞争力。

问答坊 | AI 解惑

汽车电子之新秀--GPS导航

由后泠战所导致的一切军事上的科技发展,全球卫星定位系统也许可以算是对我们每天的生活造成正面的冲击. 我们可以想象一下,21世纪的世界, 被一组扩大的卫星网路系统所覆盖,而且各种飞行器与车辆间经由这些网路彼此连结着进行着行动间的数据通讯, ...…

查看全部问答>

替Richifang发表观点:台企不值得去

不知道Richifang原有的想法是什么,谈谈我见过的台企吧。基本上是一个模子刻出来的,工资很低,工作强度很大,而且你会觉得中国人(台湾的头头)管中国人真的很可怕,有时会让我想起来当初的汉奸的那股坏劲儿和狠劲儿。所以你会发现富士康血汗工厂 ...…

查看全部问答>

高速浮点除法子程序,比标准库要快得多

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 //============================================================================================== // ----Function: float Float_DIV(float Data_A,float Data_B); // -Description: 浮点除法运 ...…

查看全部问答>

软件启用内部上拉电阻的问题

从PIC16F73单片机的资料中看到,有些I/O口可以使用软件启动内部上拉电阻。 请问: 为什么要启动内部上拉电阻? 使用C语言如何启动? 如果不启动会有什么后果? …

查看全部问答>

成都名企招聘驱动开发工程师

主要是从事文件系统驱动的开发: 1.熟悉windows驱动开发或熟悉linux驱动开发 2.扎实的C/C++基础(笔试主要内容,比较难) 3.有过文件系统开发经验者优先. 4.熟悉汇编者优先. 5.富有竞争力的福利和薪筹 有意者可发邮件到:RealBackup@163.com QQ:2 ...…

查看全部问答>

高深的问题

如下这个函数是在WINCE的BSP里面的,pTOC是ROMHDR结构,/* Routine to copy the flashed NK image to RAM */ int EverythingRelocate(void) {     LONG len;     ROMHDR *ptoc;     ULONG pc, *toc, offset, dest ...…

查看全部问答>

信号处理资源的个人评述(转载)

信号处理资源的个人评述(转载) 2010-09-28 11:23     转载自: http://blog.ednchina.com/yrwusignal/1770462/message.aspx 信号处理是一门理论性与实践性都非常强的学科。比如DSP这个所写,既可以是指偏理论性的数字 ...…

查看全部问答>

两种可提高LED光效的芯片发光层结构设计

LDE的芯片结构设计是一项非常复杂的系统工程,其内容涉及以提高注入效率和光效为目的电致发光结构设计、以提高学出光效率为目的的光引出结构设计和与光效密相关的电极设计等。 随着MOCVD外延生长技术和多量子阱结构的发展,人们在精确控制外延、掺杂 ...…

查看全部问答>

大家鉴定一下这个电容

最近在学校仓库淘到一堆电容,但不知道他上面的参数啥意思,大家帮忙看看 上面写有HEC字样,还有56uf 400MV  这个400MV啥意思?现在没相机,中午上图啊,呵呵…

查看全部问答>

汽车LED灯刚兴起即遇汽车市场低迷

今年汽车市场的不景气让刚刚兴起的汽车LED灯(LED车灯)兜头一盆冷水,LED灯厂家真是太悲剧了啊。   从2008年开始,国家陆续出台的一系列刺激汽车消费政策迅速拉动了汽车需求释放,2009年、2010年中国汽车销量增速分别达到46%和32 %。   根据 ...…

查看全部问答>