首页 2ARM系统代码固化的串口实现

2ARM系统代码固化的串口实现

举报
开通vip

2ARM系统代码固化的串口实现 资料来源 电子下载网 下载时间 2010-7-24 18:45:22 本文地址 http://3ujj.com/sheji/qianrushi/2/1882.html ARM系统代码固化的串口实现   早期的嵌入式程序采用“编程―烧写―修改―烧写”的开发模式,大量的时间消耗在重复烧写芯片上,增加了开发成本和研发周期。之后发展到仿真器阶段,虽然简化了开发模式,但是由于仿真器与ARM芯片的兼容性等因素,经常会发生程序在仿真器上能正确运行,但是固化之后运行却出现问题的情况。   程序的固化是软件开发过程...

2ARM系统代码固化的串口实现
资料来源 电子下载网 下载时间 2010-7-24 18:45:22 本文地址 http://3ujj.com/sheji/qianrushi/2/1882.html ARM系统代码固化的串口实现   早期的嵌入式程序采用“编程―烧写―修改―烧写”的开发模式,大量的时间消耗在重复烧写芯片上,增加了开发成本和研发周期。之后发展到仿真器阶段,虽然简化了开发模式,但是由于仿真器与ARM芯片的兼容性等因素,经常会发生程序在仿真器上能正确运行,但是固化之后运行却出现问题的情况。   程序的固化是软件开发过程中重要的一环,一般可通过JATG口、网口及串口等进行烧写。相比之下,串口实现更为便捷,更值得推广。笔者在开发1C1T小灵通中继站的过程中,通过编制烧写程序,利用串口将编译后的目标代码发送给ARM处理器;由ARM处理器内部的监控程序将目标代码写入片外Flash,实现程序的在线烧写。这样不仅简化了电路设计,而且降低了开发成本,缩短了开发时间。 1  烧写原理及过程   硬件连接如图1所示,ARM开发板一方面通过串口与PC机连接,另一方面通过20针IDC宽带线与仿真器相连,再由仿真器通过25针并口插座与PC机的LPT口相连。开发板通电后即可进行烧写工作。   如图2所示,代码固化分2个步骤进行。第1步,如虚线一所示,监控程序的映像通过仿真器下载到ARM的内部RAM中运行,用户可以在主机端用超级终端或者其他串口调试工具与开发板通信。第2步,将应用程序的可执行代码通过串口发送,如虚线二所示,此时内部RAM里的监控程序就会接收并把它烧写到Flash中。 图1  ARM开发板与PC机的连接 图2  代码烧写原理 2  监控程序的设计 2.1  启动代码设计   实现串口烧写的监控程序包括ARM启动代码、串口通信代码和Flash烧写代码3部分。ARM启动代码是整个程序运行的入口点,完成ARM系统正常运行所必需的简单初始化,然后把系统控制权交给操作系统或者高级语言编写的监控程序。由于启动代码直接对SoC内核和硬件控制器进行编程,因此必须采用汇编语言。   启动代码包括异常向量 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的定义、各种模式的堆栈初始化、系统硬件初始化、程序运行环境初始化,最后跳转到用户C语言主程序。当系统上电或复位后首先会从逻辑地址0x0处执行。   ARM处理器有7种运行模式,如表1所列。每一种模式都有独立的堆栈指针寄存器(SP),因此对使用的模式都要给堆栈指针寄存器SP定义堆栈地址。改变状态寄存器(CPSR)内的状态位,使处理器切换到不同模式,然后给SP赋值就可以实现堆栈的初始化。当然,堆栈的大小视需要而定。 表1  ARM处理器的7种运行模式   堆栈初始化程序如下: InitStack   MOVr0,lr;保存返回地址   MOV r1,#Mode_SVC:OR:I_Bit:OR:F_Bit;设置管理模式堆栈   MSRcpsr_c, r1   LDRr13, =SVC_STACK   MOVpc,r0;子程序返回   系统硬件初始化包括设置外部存储器的类型、数据位宽度等,完成之后即可通过“B Main”语句跳转到C语言主程序。与LDR指令相比,虽然跳转范围小,但是32 MB的地址空间跳转足以满足程序需要,而且运行得更快。 2.2  烧写主程序设计   Main函数功能主要包括接收串口数据、解析映像文件及写入外部Flash,如图3所示。串口函数主要由init_sio()、init_val()和send_data()组成。函数init_sio()用于对串口通信参数的设置:波特率,57 600 b/s;奇偶校验,无;数据位,8位;停止位,1位。init_val()是对接收到的数据进行转存,为了提高接收速率,把接收到的数据先暂存到外部SRAM中。如果程序量较小也可以选择暂存到芯片内部的RAM(64 KB)中,等接收完毕后再对其进行解析。send_data()用于向串口回送烧写工作的信息。 图3  Main函数 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计   下一步就是要对映像文件进行解析并正确地写入外部Flash中。嵌入式程序通过编译器生成的映像文件是elf格式的axf文件,里面有文件头、段信息等信息,不能直接烧录,一般将它转化为bin或者hex文件。这里将嵌入式程序编译成SRecord十六进制文件。这是一种Motorola公司推出的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 文件格式,用来将数据从PC机传送到目标平台Flash,在嵌入式开发中广为应用。SRecord文件格式如下:   其中,SID表示当前记录的类型,常见的有S0、S1、S5和S9等,各个类型代表的意义不同,如S9所在语句表示文件的结束;数据长度代表本句后面数据的长度;地址的字节数会因不同的S记录而异,一般为2字节,表示的是后面的数据在存储器中的地址。   一个S记录的长度不会超过78字节,所以每次读数据的长度设为78字节,通过判断文件类型(如S3为0x5333)的标志位来确定一个S记录的开始。解析过程就是根据SID确定数据长度,截取数据部分,传递要写入Flash中的地址。   最后一步就是如何将数据写入Flash。不同类型Flash存储器的编程与擦除指令也不太一样。本系统使用的是Hyundai公司生产的HY29LV160。   向Flash存储器的特定寄存器写入地址和数据命令,就可对Flash存储器进行烧写、擦除等操作。编程指令只能使“1”变为“0”,而擦除命令则可使“0”变为“1”,因此正确的操作顺序是先擦除、后编程。当Flash被擦除后读出的数据应为0xff。写指令编程如下:   *((volatile uint16 *)start_addr + addr_unlock1)=data_unlock1;     start_add为Flash起始地址,addr_unlock1为0x555,//data_unlock1为0xaaaa   *((volatile uint16 *)start_addr +addr_unlock2)= data_unlock2;     //addr_unlock2为0x2aa,data_unlock2为0x5555   *((volatile uint16 *)start_addr +addr_unlock1)= setup_write;     //setup_write为0xa0a0   *to_add=data_pra;//写入数据   应在每个单元烧写命令发出后进行检测,以保证前一个单元烧写结束后再进行下一个存储单元的烧写,当然也可采用延时等待的方法进行连续的烧写。 2.3  编译与执行   由于日本OKI公司的小灵通芯片ml7338是基于ARM7TDMI核,所以系统采用ARM集成开发调试环境ADS1.2,使用TechorICE仿真器。具体编译语句如下:   armlink Startup.o main.o   -rw-base 0x10000000   -first Startup.o(vectors)//中断向量表位于映像头部   -o loader.axf   -info totals   其中,0x10000000是ml7338内部RAM的起始地址,编译完成后生成loader.axf文件。   需要注意的是,要固化的代码应转化为SRecord文件。可在编译器下ARM fromELF�Output format中选择Motorola 32 bit Hex,或者使用以下编译语句处理:   >fromelfnodebug filename.axfm32 filename.txt   以上两种方式都将产生SRecord文件。通过仿真器把烧写程序下载到ml7338的内部RAM中,运行后即可固化PC端通过串口工具发送过来的应用程序代码。固化完成后拔掉仿真器,当系统复位或上电后Flash存储器被映射到起始地址0x0处,装入的可执行映像文件即可得到执行。 结语   本文所写的烧写程序虽然是针对小灵通芯片ml7338的,但是已经把它拓展到了基于ARM的32位嵌入式系统,开发人员只需对框架略做修改即可编写自己的烧写程序。整个系统采用ARM汇编语言和C语言开发,因此可以方便地移植,而且对编写基于网口的监控程序也具有重要的参考价值。 参考文献 [1]  杜春雷. ARM体系结构和编程[M].北京:清华大学出版社,2003. [2]  OKI.ML733801 Baseband LSI for PHS,2006-05-29. [3]  孙昊,曹玉强,杜秀芳.ARM处理器启动代码的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 与编程[J]. 工业控制计算机,2005(11): 54-55. [4]  李驹光. ARM应用系统开发详解[M].北京:清华大学出版社,2004. 陈建明(研究生),主要研究方向为多媒体通信与技术; 章坚武(博士后、教授),主要研究方向为移动通信与个人通信 唐兵(研究生),主要研究方向为通信网络与终端技术。 (收稿日期:2007-09-24) 推荐阅读:(按住 Ctrl 鼠标左键点击标题可以打开详细 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ) 1、IC检测方法 2、什么是遥感技术 3、什么是无线网址 4、制冷设备维修技巧 5、什么是色温 6、手机RF设计问答 7、微波简史 8、微波小知识 9、卫星导航知识 10、卫星与遥感技术
本文档为【2ARM系统代码固化的串口实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_874292
暂无简介~
格式:doc
大小:8KB
软件:Word
页数:0
分类:互联网
上传时间:2018-09-04
浏览量:4