嵌入式下的调试都需要将程序烧写到目标芯片中,而芯片一般都支持从多种存储介质启动,由于存储介质的物理区别,烧写到不同的介质所使用策略往往差别很大。今天就来学习一下不同的烧写策略。
目前,几大主流的 IDE 都有自己的 FLASH 和 RAM 的烧写策略,一些可独立使用的仿真器的供应商(例如 SEGGER 的 J-link)也提供了对应的工具自己实现程序烧写。本篇博文主要学习几大主流 IDE 的实现策略,仿真器的策略在后面独立博文开发工具 之五 详解 J-link、OpenOCD 的 FLASH、RAM 烧写原理、配置、自定义学习。
芯片启动
在学习 FLASH 和 RAM 的烧写策略前,我们必须清楚芯片启动方式。现在,多数嵌入式芯片都支持自定义从不同的介质启动,如果启动方式与我们程序下载的后的启动方式不同,则可能出现异常,需要对 IDE 进行额外的配置。
举例来说,我的开发板默认配置的是从 FLASH 启动,当我们使用 Keil 烧写从 RAM 运行的程序后并选择 Run to main()
,由于芯片默认从 FLASH 启动,则 Run to main()
就会默认以 FLASH 地址去执行!
当然,有人可能会说,我的启