Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650213
  • 博文数量: 121
  • 博客积分: 4034
  • 博客等级: 上校
  • 技术积分: 1439
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-28 12:42
文章分类

全部博文(121)

文章存档

2017年(8)

2016年(10)

2013年(2)

2012年(3)

2011年(18)

2010年(80)

分类:

2010-07-22 15:55:11

使用内存方面设置修改

1. hal/arm/arm9/smdk2410/v3_0/include/pkgconf/mlt_arm_arm9_smdk2410_ram.h
不使用ram,只sdram使用,所以要修改为:
CYGMEM_REGION_ram 起始地址还size都改为0

#define CYGMEM_REGION_ram (0)
#define CYGMEM_REGION_ram_SIZE (0)

CYGMEM_REGION_sram 起始地址为:0x30000000,大小:0x4000000(64MB)

#define CYGMEM_REGION_sram (0x30000000)
#define CYGMEM_REGION_sram_SIZE (0x4000000)

2. hal/arm/arm9/smdk2410/v3_0/include/pkgconf/mlt_arm_arm9_smdk2410_ram.ldi
把ram全部改为sdram,地址相应修改为sdram的地址:

MEMORY
{
ram  : ORIGIN = 0, LENGTH = 0
sram : ORIGIN = 0x30000000, LENGTH = 0x4000000
}

SECTIONS
{
SECTIONS_BEGIN
SECTION_fixed_vectors (sram, 0x30000020, LMA_EQ_VMA)
SECTION_rom_vectors (sram, 0x30008000, LMA_EQ_VMA)
SECTION_RELOCS (sram, ALIGN (0x1), LMA_EQ_VMA)
SECTION_text (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fini (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata1 (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_got (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fixup (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_gcc_except_table (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_data (sram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_bss (sram, ALIGN (0x4), LMA_EQ_VMA)
CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
SECTIONS_END
}

修改启动方式:
从ram中启动,目前我是通过configtool的方式修改的,通过这种方式也是为了防止产生冲突。
如果查看修改成功成功了:
随便编译一个应用程序,使用命令arm-eabi-objdump,反汇编,然后看reset_vector的地址是不是你修改的地址。

启动方面的修改

1, 为了方便debug,添加一个控制led的函数。

2, 不需要再初始化sdram和cpu了,只要将hal/arm/arm9/smdk2410/v3_0/include/hal_platform_setup.h中初始化sdram和cpu和cpu的部分去掉就可以了。


现在还存在的问题

现在ecos可以正常跑起来, 看似乎没有问题,就是程序跑的很慢, MMU和cache都已经开启了,但是看起来和没有开一样, 目前一直还没有时间去解这个问题, 有空在看了。

阅读(1818) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

bingdele2012-10-18 10:00:14

有个问题想请教一下,在uboot下跑ecos是用什么命令?是tftp到ram中,然后直接go吗?需要转化文件类型嘛?谢谢