手机开发实战185——Scatter file介绍6
来源:互联网 发布:网络视频服务器的作用 编辑:程序博客网 时间:2024/05/29 17:17
加载文件示例一:
起始地址 大小
ROM: 0x00000000 256K ;0x1fc 保留为加密字,程序在ROM中运行;
RAM 0x40000000 16K ;用于全局变量及任务堆栈;
SRAM 0x80000000 512K ;SRAM速度慢,主要用于存放大的数据表;
LOAD_ROM1 0x00000000 0x1f8 ; 指定该加载区域首地址、大小
{
EXEC_ROM1 +0 0x1f8 ; 没有前一加载区域,所以该执行区域首地址为加载去首地址
; 并指定该区域长度
{
Startup.o (vectors, +FIRST) ; 目标文件的“vectors”段放在该执行区域的第一段
irq.o (+RO) ; 目标文件的所有“RO”段放在该执行区域
}
}
LOAD_ROM2 0x00000200 ; 第二个加载区域
{
EXEC_ROM2 +0 0x3e600
{
* (+RO) ; 所有目标文件和库文件中的“RO”段存放在该区域
}
RAM1 0x40000000 0x4000
{
* (+RW, +ZI); 所有目标文件和库文件的“RW”和“ZI”段存放在该区域
}
SRAM2 0x80000000 0x80000
{
* (sram) ; 所有目标文件中的“sram”段存放在该区域
}
}
示例二:
“iap.o”定义在“Exec_RAM1”中运行,所以设置“PI”属性;
在调用“iap.c”中函数之前应该将其从“Load$Exec_IAP$Base”复制到指定的“Exec_RAM1”区域;
Load_region1 0x00000000 0x1fc
{
EXEC_ROM1 +0
{
Startup.o (vectors, +FIRST)
irq.o (+RO)
}
}
Load_region2 0x00000200 0x3e600
{
EXEC_ROM2 +0
{
* (+RO)
}
Exec_IAP +0 PI // 可能引起链接器未使用该属性警告,忽略
{
iap.o (+RO)
}
Exec_RAM1 0x40000000 0x4000
{
* (+RW, +ZI)
}
Exec_Sram 0x80000000 0x40000
{
* (SRAM)
}
}
移动“IAP.o”中的所有函数到“ImageExecIAPBase”加载区,调用其中的函数
extern unsigned char Load$Exec_IAP$Base;
extern unsigned char Image$Exec_IAP$Length;
#define ImageExecIAPBase (0x40000000+0x1000) // 加载区首址
void MoveIAPRO(void)
{
unsigned char * psrc, *pdst;
unsigned int count;
count = (unsigned int) &Image$Exec_IAP$Length;
psrc = (unsigned char *)&Load$Exec_IAP$Base;
pdst = (unsigned char *)ImageExecIAPBase;
while (count--) {
*pdst++ = *psrc++;
}
}
// 调用“IAP.O”中的某函数
{
void (* pfnIAPWrite)(unsigned long, int);
pfnIAPWrite = (void (*)(unsigned long, int))
(ImageExecIAPBase +
(unsigned int)IAPWrite - // 被调用函数名
(unsigned int)&Load$Exec_IAP$Base);
pfnIAPWrite((int)((CUPDATA *)CODESTARTADDR)->data,
((CUPDATA *)CODESTARTADDR)->length);
}
- 手机开发实战185——Scatter file介绍6
- 手机开发实战180——Scatter file介绍1
- 手机开发实战181——Scatter file介绍2
- 手机开发实战182——Scatter file介绍3
- 手机开发实战183——Scatter file介绍4
- 手机开发实战184——Scatter file介绍5
- 手机开发实战99——MMS介绍6
- 手机开发实战112——EMAIL介绍6
- 手机开发实战122——蓝牙介绍6
- Scatter file 介绍
- scatter file介绍
- scatter file介绍
- scatter file介绍
- scatter file 全功能介绍
- 手机开发实战45——手机字库介绍
- 手机开发实战46——手机显示介绍
- 手机开发实战47——手机编辑器介绍
- 手机开发实战48——手机输入法介绍1
- 解决Hive installation issues: Hive metastore database is not initialized
- LinkedList简介
- 阅读GFS论文
- java的mysql api封装
- bean的生命周期方法
- 手机开发实战185——Scatter file介绍6
- centos tomcat
- 手机开发实战186——软件开发模式
- 手机开发实战187——手机软件开发注意事项1
- 17乐学成语
- iOS开发——XML/JSON数据解析
- CentOS安装并设置MariaDB
- Excel Notes
- 手机开发实战188——手机软件开发注意事项2