你好,请教一个有关port ucLinux 到ARM芯片的问题, 可能比较啰唆,还请耐心看。
我有一块ARM的板子(Evaluator-7t),SRAM 514KB,FLASH ROM 514KB, 在BootStrap下,SRAM的使用情况如下: Address Range Description 0x00000000 to 0x0000003F Exception vector table and address constants 0x00000040 to 0x00000FFF unused 0x00001000 to 0x00007FFF Read-write data space for BSL 0x00008000 to 0x00077FFF Available as download area for user code and data, this is the space (448KB) should be used for linux kernel 0x00078000 to 0x0007FFFF System and user stacks Flash memory usage 如下: Address range description 0x01800000 to 0x01806FFF Bootstrap loader 0x01807000 to 0x01807FFF Production test 0x01808000 to 0x0180FFFF Reserved 0x01810000 to 0x0181FFFF Agnel ( a debug tool) 0X01820000 to 0x0187FFFF Available for programs and data ( this is the space can be used to load the kernel 384KB ) 我编译了一下内核image.bin (使用ucLinux 2.4.x 版本),总共有480KB 并且明显小于384KB
image.bin是后面三个文件之和.
roomfs.img(文件系统)
linux.data(分配的数据区)
linux.text(执行代码)
我的问题是,不知道用什么方法可以加载到arm上,我的kernel 估计是没有希望编译到小于384KB,但是有可能小于448KB。 我想有两种内核的加载方式,比如两个内核文件:image.ram和image.rom,其中,可将image.rom烧写入ROM/SRAM/FLASH Bank0对应的Flash存储器中,当系统复位或上电时,内核自解压到SDRAM,并开始运行。 image.ram可直接在系统的SDRAM中运行,使用ADS(或SDT)集成开发环境将系统的SDRAM映射到起始地址为0x0处,并将image.ram载入从0x8000开始的SDRAM中,加载完毕后,修改PC指针寄存器的值为0x8000并执行。 是不是用第二种方法可以解决我的问题? 还望指教。 谢谢。