资料介绍
早期的嵌入式程序采用“编程—烧写—修改—烧写”的开发模式,大量的时间消耗在重复烧写芯片上,增加了开发成本和研发周期。之后发展到仿真器阶段,虽然简化了开发模式,但是由于仿真器与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次阅读
下载排行
本周
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 137次下载 | 1 积分
- 2PCB布线和布局电路设计规则
- 0.40 MB | 4次下载 | 免费
- 3TPS6287B25降压转换器评估模块
- 3.46MB | 1次下载 | 免费
- 4INA226EVM用户指南
- 4.7MB | 1次下载 | 免费
- 5INA226EVM修订版A模型用户指南和软件教程
- 2.28MB | 1次下载 | 免费
- 6Altium Designer印刷电路板设计与制作PDF电子书免费下载
- 14.11 MB | 0次下载 | 3 积分
- 7DLPC3470和DLPC3478软件编程人员指南
- 1.68MB | 次下载 | 免费
- 8TPS1213-Q1智能高侧驱动器评估模块
- 1.63MB | 次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 137次下载 | 1 积分
- 2新概念模拟电路第四册信号处理电路电子书免费下载
- 10.69 MB | 60次下载 | 免费
- 3800VA纯正弦波逆变器的参考设计
- 2.96MB | 34次下载 | 免费
- 4纯电动汽⻋的主要部件及⼯作原理
- 5.76 MB | 15次下载 | 5 积分
- 5JESD79-5C_v1.30-2024 内存技术规范
- 2.71 MB | 10次下载 | 免费
- 6elmo直线电机驱动调试细则
- 4.76 MB | 9次下载 | 6 积分
- 7明伟电源模块RSP-3000图纸
- 0.30 MB | 8次下载 | 免费
- 8使用BQ76PL102系列电量计进行BQ78PL114的快速入门指南
- 4.04MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191366次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183329次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73805次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多