您的位置 首页 编程

ARM嵌入式体系的在体系编程方案设计

笔者在使用意法半导体的STR730开发产品的过程中,设计了一种通过串口进行ISP(In System Programming,在系统编程)的方案。该方案成本低,生产线使用起来也很方便,而且即使升级过程

应用程序的固化是嵌入式产品开发和出产过程中一个重要环节。依据ARM的嵌入式体系常用的程序固化办法是,用仿真器经过JTAG口将程序烧录到Flash里,在产品的开发阶段,运用仿真器几乎是必定的;但是到了产品的出产阶段,进行应用程序烧录或晋级操作的往往是出产线上的工人,他们不易把握仿真器的运用办法,并且在出产阶段也需求把JTAG调试口封住以防软件被窥探。笔者在运意图法半导体的STR730开发产品的过程中,规划了一种经过串口进行ISP(In System Programming,在体系编程)的计划。该计划成本低,出产线运用起来也很便利,并且即便晋级过程中产生掉电之类的意外也不会影响下一次晋级,安全而牢靠。

1 硬件衔接

ISP计划的硬件衔接如图1所示。RS232转接板用来将RS232电平转换为TTL电平,并经过ISP_EN引脚给ARM开发板供给信号,让其进入ISP状况。PC机上运转用VC言语编写的ISP.exe,该程序把需求烧录到F1ash里的.bin文件加密后发送到ARM开发板,一同把烧录的进展提示显现给用户。图1中的暗影部分具有固定的程序。

2 Flash烧录原理

2.1 存储器分配
STR730是意法半导体出产的依据ARM7TDMI的微控制器芯片,内置16 KB RAM(0xa0000000~Oxa0003fff)和256 KB Flash(Ox80000000~Ox8003ffff)。内置256 KB Flash的分配情况如图2所示。依照图2中存储器的分配编写Scatter文件,在生成可履行文件时链接器会依据Scatter文件的内容把相关代码段定位到特定的地址上。该例中,程序从Flash发动,且没有运用存储器重映射,因而中止向量有必要定位到Flash的开始方位。

扇区O的内容需求事前经过JTAG口烧入,尔后就能够运用扇区O中的烧录程序Programrher.o经过串口进行ISP。在整个ISP过程中扇区0的内容是坚持不变的,这样就能够避免ISP过程中呈现掉电之类的意外,导致初始化代码Startup或烧录程序Programmer遭到损坏而无法再一次进行ISP。

不管对嵌入式产品增加新功能仍是修正原有的软件BUG,触及的都只是用户应用程序的改动,初始化代码Startup.s是无需改动的,所以扇区O的内容在ISP过程中可否坚持不变,关键是能否使初次编译生成的Vector.0一直与今后屡次编译的App.o相匹配。

需求特别指出的是,当用户应用程序产生改动时,实践的中止服务函数(一般是C言语函数)很可能产生了改动,或者是实践的中止服务函数的进口地址产生了改动,怎样经过固定不变的中止向量Vector.o找到改变的中止服务函数的进口呢?只需这个问题处理了,就能够使初次编译生成的Vector.o一直和今后屡次编译的App.o相匹配,这是该计划可行性的关键所在。为处理这个问题,笔者在Flash的固定方位(0x80002000~0x800020ff)做了一个中止映射表,实践上里边寄存的是一条条跳转指令。因为中止映射表INTMap.s和用户应用程序App.c是一同编译、链接的,里边的跳转指令当然能够精确找到实践的中止服务程序进口;而坐落扇区O的中止向量Vector.s尽管不好用户应用程序一同编译,但中止向量里的跳转指令是肯定跳转到固定的中止映射表区域。这样经过2次跳转就能够精确找到中止服务程序的进口。
能够经过图3看出快中止的处理流程(其他的中止处理流程相似)。

2.2 ISP履行的过程

笔者把起到烧录Flash效果的程序独自作为一个工程编译、链接,生成.bin文件;然后把.bin文件转化成一个unsigned char型的数组,并把该数组放在一个独自的文件Programmet.c中;最终运用Scatter文件把Programmer.o定位在固定的地址空间(0x80001000~Ox80001fff,如图2所示)。这样一来,就能够编写汇编程序,把烧录程序Pro—grammer.o复制到RAM中,并让PC指针跳转到RAM中履行烧录。因为STR730没有外部Flash,要烧录Flash程序有必要在RAM中运转,所以复制Programmer.o到RAM中是必需的。以下代码摘取自Startup.s。
CMP r1,#1

烧录程序Programmet的软件流程如图4所示。

需求阐明的是:
①擦除Flash并不是彻底擦除,而是擦除扇区0之外的其他扇区;
②数据缓冲区有限,每次只接纳指定巨细的数据,这样接纳和烧录就能够并行进行,进步了ISP的速度;
③为了进步软件的安全性,原始的.bin文件是经过加密的,在烧录前需求将原始数据解密。

结 语

本文论述的这种经过串口ISP的办法已经在实践的开发出产过程中运用。实践证明,比较其他烧录Flash的办法有许多优势,比方成本低、硬件衔接简略、操作便利、增强软件的安全性等。笔者运用的MCU是STR730,稍做改动也能够把这种ISP办法推行到其他ARM体系结构的MCU上去。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/198884.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部