资料介绍
早期的嵌入式程序采用“编程—烧写—修改—烧写”的开发模式,大量的时间消耗在重复烧写芯片上,增加了开发成本和研发周期。之后发展到仿真器阶段,虽然简化了开发模式,但是由于仿真器与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内核和硬件控制器进行编程,因此必须采用汇编语言。
启动代码包括异常向量表的定义、各种模式的堆栈初始化、系统硬件初始化、程序运行环境初始化,最后跳转到用户C语言主程序。当系统上电或复位后首先会从逻辑地址0x0处执行。
ARM处理器有7种运行模式,如表1所列。每一种模式都有独立的堆栈指针寄存器(SP),因此对使用的模式都要给堆栈指针寄存器SP定义堆栈地址。改变状态寄存器(CPSR)内的状态位,使处理器切换到不同模式,然后给SP赋值就可以实现堆栈的初始化。当然,堆栈的大小视需要而定。
程序的固化是软件开发过程中重要的一环,一般可通过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内核和硬件控制器进行编程,因此必须采用汇编语言。
启动代码包括异常向量表的定义、各种模式的堆栈初始化、系统硬件初始化、程序运行环境初始化,最后跳转到用户C语言主程序。当系统上电或复位后首先会从逻辑地址0x0处执行。
ARM处理器有7种运行模式,如表1所列。每一种模式都有独立的堆栈指针寄存器(SP),因此对使用的模式都要给堆栈指针寄存器SP定义堆栈地址。改变状态寄存器(CPSR)内的状态位,使处理器切换到不同模式,然后给SP赋值就可以实现堆栈的初始化。当然,堆栈的大小视需要而定。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 基于STM32单片机串口实验使用库文件设计源代码 2次下载
- 【STM32】基于cubemx+HAL库的串口实验(一)
- (网盘)ARM嵌入式Linux系统开发详解
- 基于FPGA的SDRAM串口实验
- ARM与FPGA的接口实现的解析
- USB-PD取代平板电源接口实现大功率充电的设计资料下载
- STM32串口实现的两个方案资料下载
- STM32串口实现485双机通信的原理资料下载
- 使用NRF51822实现蓝牙串口实验的程序和工程文件免费下载 11次下载
- 使用STM32F103RB单片机实现串口实验的详细资料说明 7次下载
- ADS工程在IAR EWARM 5.3上移植printf的串口实现代码免费下载 0次下载
- 如何使用串口实现AVR单片机的ISP功能详细方法概述 10次下载
- 如何通过STM32的串口实现简易脱机编程器 60次下载
- ARM指令集详解
- 很小的ARM操作系统源代码
- 详解单片机串口高效收发数据的实现方法 1693次阅读
- STM32的串口实验(寄存器操作版本) 1349次阅读
- TI 16C554系列串口扩展芯片实现实现串口扩展和稳定性 7527次阅读
- RS-232接口实现串口数据传输的点对点通信设计 3577次阅读
- 基于rs-485串口实现工控机与变频器之间的通讯设计 5501次阅读
- 无线串口集线器的设计中是如何运用arm处理器的 1319次阅读
- 如何利用usb转串口实现单片机和电脑的通信 1.5w次阅读
- 一文详解ARM7_ARM9和ARM11的区别 4w次阅读
- ARM程序的执行过程详解 7123次阅读
- 蚁群算法即相关代码实现详解—matlab之智能算法 1w次阅读
- 详解LCD技术的光固化3D打印机_SLA(光固化技术)的优缺点 8.6w次阅读
- 一种基于STM32的最小系统及串口通信的实现 3.2w次阅读
- 基于ARM和FPGA的多路电机控制方案 1788次阅读
- 基于FPGA技术实现对嵌入式系统的在线监控 2552次阅读
- 如何用计算机串口实现自动化控制 4601次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多