对于编写程序而言,程序的运行地址很重要。默认情况下都是直接按照软件的模块进行设置即可,此前并没有太过于关心,最近在研究iap的时候需要做到这个方面的改进。
以NXP官方提供的IAR例程为例,IAR既可以做flash的调试还支持SRAM的调试,那这是如何做到的呢?在程序中,有以下的一段切换代码:
在FLASH模式下:
在RAM模式下:
翻译以后,可以得到以下内容:
当FLASH调试时,设置向量地址为:0x00000000;
当RAM 调试时, 设置向量地址为:0x10000000;
LPC1768的为512K的flash和32K的sram,其地址如下图所示:
因此答案很清除,当要在flash调试时,将向量地址指向flash,当要在ram中调试时,将向量地址指向ram。
以上是程序内容的变化,然后还有链接文件的变化,分别对应以下两个文件:
通过ultra-edit打开,发现两份链接文件的区别主要是向量地址,ROM地址,RAM地址发生了变化。由于链接文件是给程序编译、链接用的,因此一旦链接文件确定,程序就必须按照链接文件中规定的地址存储。这里的链接地址也认为是存储地址。
由于bin文件格式本身是不带程序运行地址信息的,因此在用J-LINK烧写时,必须指定BIN文件的烧写地址。如程序从0x00000000运行,则从0x00000000开始烧写,如从0x00001000运行,则从0x00001000开始烧写。
程序运行,MCU上电后,总是从0x00000000地址开始运行程序。
关键字:LPC1768 存储地址 运行地址 向量地址
引用地址:
关于LPC1768的存储地址、运行地址、向量地址
推荐阅读最新更新时间:2024-03-16 16:18
lpc1768usb使用-配置
#ifndef __USBCFG_H__ #define __USBCFG_H__ //#define USB_IF_NUM 1 #define USB_MAX_PACKET0 64 #define USB_DMA_EP 0x00000000 //尽量不要是能太多时间 //这里每一个事件都代表着一个回调函数,使能了该事件就需要实现相应的回调函数 #define USB_EP_EVENT 0x0003 //哪些端点需要实现中断处理函数,一位代表一个端点 #define USB_CONFIGURE_EVENT 1 //usb配置事件 #define USB_HID_IF_NUM
[单片机]
基于LPC1768的俄罗斯方块源代码,配合3.2寸TFT屏幕
程序运行后,用板子上的五向按键控制。 单片机源程序如下: #include stdlib.h #include stdint.h #include lcd_api.h #include ili_lcd_general.h #include LPC17xx.h typedef struct //方块结构体,包括类型,状态,坐标,颜色 { uint8_t type; //方块的类型(LJITOSZ) uint8_t state; //方块的状态(0、90、180、270°旋转) in
[单片机]
Cortex M3存储器映射图 & EWARM地址配置
在程序下载起始地址,范围,RAM的地址,范围,堆栈的配置有两种方法。其实本质是一样的。 方法1:在EWARM中利用编译化境配置,如下图 方法2:修改stm32f10x_flash.icf文件(其实就是方法1) define symbol __ICFEDIT_intvec_start__ = 0x08004000; define symbol __ICFEDIT_SYS_FUNC_start__ = 0x08004200; //functab define symbol __ICFEDIT_region_ROM_start__ = 0x08004000; define symbol __ICFEDIT_regio
[单片机]
LPC1768的USB驱动(三)----LPC1768的USB模块
(图一)USB设备控制器框图 模块简介: AHB:主要用于高性能模块(CPU、DMA和DSP等)间的连接; USB ATX:USB 设备控制器内置的模拟收发器,用来收发USB总线上的D+和D-信号; SIE(SERIAL INTERFACE ENGINE),负责处理USB协议,完全使用硬件来处理以提升速度。使用寄存器命令控制功能; EP_RAM:为endpoint保留的、FIFO形式的SRAM,相当于缓冲区,其大小由使用的端点数、端点的最大包大小和是否使用双缓冲区决定; EP_RAM access control:有三种方式可以访问EP_RAM:CPU通过寄存器、SIE和DMA引擎, EP_RAM access contro
[单片机]
Cortex-M3学习LPC1768 - TFT实验
自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。 我的开发板上的液晶屏的用的是SPI接口,当然你也可以把它设计成并行口,其接口电路如下所示: 话说这个液晶屏的驱动芯片是ILI9325,在网上下载了该芯片的数据手册,好家伙有111页,全是E文呀,没办法,谁让咱是小电工呢,就慢慢啃吧。ILI9325这个芯片的寄存器比较多,不过没关系,我们暂时用到的不是太多,这里只要简要的总结,剩下的还是日后用到了再好好研究吧。 1、寄存器03H(Entry Mode),该寄存器主要设置图像的显示模式,包括屏幕的扫描方式(水平扫描或垂直扫描),
[单片机]