历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2019年01月07日 | IAP在stm32f103c8t6上的实现

2019-01-07 来源:eefocus

       手上的单片机是STM32F103C8T6,ROM容量是64KB,起始地址为 0x0800 0000;RAM容量是16KB,起始地址为0x0200 0000。开发环境是Keil5,用到的工具还有串口助手。我将待下载的程序生成为bin文件,再通过串口助手发送给单片机接收。

       

在设计IAP程序时,要考虑ROM和RAM的大小。一方面,APP程序下载到单片机时是存放在ROM中的,如果你想下载多个APP程序,肯定需要ROM大些;另一方面,在串口接收数据时,APP代码首先存在一个数组变量中,这需要占用很大的RAM。我的APP程序是一个简单的灯闪烁程序,仅为验证IAP可行。


       首先要完成bin文件的生成:


       第一步:配置程序到底写在flash的哪个区域。APP代码首先从0x0800 C000 开始写,字长为0x4000,表示给APP代码预留16K的空间,另外48KB全部留给Bootloader程序。RAM不作修改,因为我是写进ROM(即flash)里的呀。由此还可知地址偏移量为0xC000(从0x0800 0000偏到0x0800 C000)


       第二步:在代码初始化阶段添加一条代码: SCB->VTOR = FLASH_BASE | 0xC000;//flash偏移量为0xc000,这是对中断向量表的重定向。


       第三步:配置程序如何生成bin文件。在Option(即配置单片机型号、下载器那个窗口)里找到User,在.....After Build\Rebuild 里 勾选Run#1,并黏贴如下内容:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o "$L@L.bin" "#L"(其中\Keil_v5之前为安装路径)


       第四步:编译程序。在工程文件夹搜索有没有bin格式的文件,应该只有唯一的一个,它就是所谓的APP代码,类似于HEX。

      

       之后就是编写Bootloader程序:


       主要就是两个函数,将APP代码写入flash,和跳转函数。其实不用太深究,会用就好。



推荐阅读

史海拾趣

Arduino公司的发展小趣事

2005年,意大利Ivrea交互设计学院的副教授Massimo Banzi面临了一个问题:他的学生们无法负担市面上昂贵的微控制器。为了解决这个问题,Banzi与他的同事David Cuartielles开始着手制造一个更便宜、更易于使用的电子平台。他们基于学生Hernando Barragá的Wiring平台,通过拆解和重新设计,最终推出了价格仅为30美元的Arduino电路板。Arduino的名字来源于他们常去的酒吧“di Re Arduino”,以此纪念这个创新的起点。

Grande Electronics Ltd公司的发展小趣事
观察遥控器上的指示灯是否在按键时正常闪亮,若指示灯不亮或闪烁异常,则可能是发射电路存在问题。
Cypress Industries公司的发展小趣事

Cypress在半导体制造领域一直处于技术革新的前沿。公司不断引入新的工艺技术,从早期的0.8微米CMOS技术到后来的0.21微米工艺,不断推动产品性能的提升。这种对技术的持续投入和追求,使Cypress在行业内树立了良好的技术形象,并赢得了客户的广泛认可。

启珑(CHIPLON)公司的发展小趣事

Cypress在半导体制造领域一直处于技术革新的前沿。公司不断引入新的工艺技术,从早期的0.8微米CMOS技术到后来的0.21微米工艺,不断推动产品性能的提升。这种对技术的持续投入和追求,使Cypress在行业内树立了良好的技术形象,并赢得了客户的广泛认可。

华润华晶公司的发展小趣事

Cypress不仅仅局限于某一特定的市场领域,而是积极开拓多元化的市场布局。除了传统的数据通信和消费类电子市场外,公司还涉足了汽车、工业和太阳能等领域。这种多元化的市场策略使Cypress能够抵御单一市场波动的影响,保持稳定的业务增长。

Horn公司的发展小趣事

面对电子行业日益复杂的加工需求和激烈的市场竞争,Horn公司不断进行自我调整和转型。公司加大了对自动化生产线的投入,提高了生产效率和产品质量。同时,Horn公司还加强了与下游客户的沟通与合作,深入了解市场需求变化,为客户提供更加个性化的解决方案。这些举措帮助Horn公司在电子行业中保持了竞争优势。

问答坊 | AI 解惑

研祥做客嵌入式在线

研祥做客嵌入式在线——嵌入式带来工业控制的新变革             ·2008年7月25日上午10:00--11:30             ·访谈嘉宾:朱 军              ·嘉宾简介:国家工控机专委会常委、研祥智能科技股份有 ...…

查看全部问答>

关于光耦

好不容易找到一篇比较全面介绍光耦的文章(不过也说不说大全,选型还是介绍的不够.呵呵!), 跟大家分享一下. 光耦的基本原理 光电耦合器的主要特点 光耦的主要参数 光耦的转换率(CTR) 光耦的检测方法 光电耦合器的应用 光耦选型与设计实例 光 ...…

查看全部问答>

AT89C52中文资料

AT89C52中文资料,希望对大家有用…

查看全部问答>

FPGA与单片机通信

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 大家FPGA与单片机用的什么通信模式呢?串口和并口哪个好做啊?不知哪里有相关资料可供下载阿……  …

查看全部问答>

【藏书阁】电子元件应用笔记 156篇

[ 本帖最后由 wzt 于 2010-2-26 18:36 编辑 ]…

查看全部问答>

高分求助!EVC4.0环境,就一个.c文件(demo.c),为什么不包含 dshow.h 时编译通过,包含时就出一大堆错误呢?

用的是EVC4.0开发环境,就一个.c文件(demo.c),文件内容非常简单,为什么不包含 dshow.h 时编译通过,包含时就出一大堆错误呢? #include //#include     // 不包含 dshow.h 编译通过,包含时就出一大堆错误,见后面。 int W ...…

查看全部问答>

求救(摄像头背景偏暗且带有明显的红横条)

各位高手:      小弟使用美光的MT9D111摄像头,使用中发现LCD显示屏背景偏暗(LCD使用其它功能正常),同时横向布满密集的红色的线条,导致拍摄时图像不清晰。      不知道该怎么调节,高手们救我啊! ...…

查看全部问答>

求救

你哪位大侠有关于stm32的TFT屏资料,给我发一个:405838540@qq.com 谢了…

查看全部问答>

FLASH写的问题

请问各位大哥,F149要对FLASH写时。是不是把430程序停了就可以进行 ,请各位详细指点一下,小弟谢谢。 程序的要求是第一次程序用JTAG口烧到430里。然后程序进行到一定时间时要对FLASH里的几个数进行修改,下次RESET时CPU程序直接用新的参数。 ...…

查看全部问答>

ucos的时间片轮转算法实现

求高手,ucos2是一个多任务但是不是多进程的操作系统,但是我在一篇论文中看到,在经过几个函数的修改后,ucos可以完成多任务多进程来跑起来,最突出的实验是建立多个相同优先级的任务时,ucos可以按照时间片轮转法来执行在相同优先级的多个任务, ...…

查看全部问答>