RT-Thread在S3C2410下的移植(1)

由于上班时间,不介绍RT-Thread了,大家可以去http://www.rt-thread.org/了解。

以前在ADS移植了ucos+lwip1.1,不是很稳定。

RT-Thread对lwip的优化不错,rt-thread0.3.1的bsp中包含了mini2440开发板的移植包。

2410和2440区别不大。

于是开始移植。

1.将rt-thread0.3.1从svn上下载下来,也可以http://www.rt-thread.org/下载。

2.解压后,新建一个工作目录,拷贝:

  RT-Thread-0.3.1/include

  RT-Thread-0.3.1/libcpu/arm/s3c24x0(我使用keil,若IAR,则是libcpu下ia32)

  RT-Thread-0.3.1/src

  RT-Thread-0.3.1/bsp/mini2440下

   board.h,board.c,application.c,startup.c,console.c

3.建立Keil工程如下图:

 

Scatter File:

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
; Run in RAM

LR_ROM1 0x30000000         {    ; load region
  ER_ROM1 0x30000000 0x02000000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_RAM1 0x30200000 0x3E00000  {  ; RW data
   .ANY (+RW +ZI)
  }
   RW_IRAM1 0x40000000 0x00001000  {
   .ANY (+RW +ZI)
  }
}
RAM调试初始化文件

//*** <<<  Use Configuration !disalbe! Wizard in Context Menu >>>  ***

FUNC void Setup (void)
{
    // <o> Program Entry Point

_WDWORD(0x53000000, 0x00000000);
_WDWORD(0x4A000008, 0xFFFFFFFF);
_WDWORD(0x4A00001C, 0x000007FF);
_WDWORD(0x4C000014, 0x00000003);
_WDWORD(0x4C000004, 0x0005c042);
_WDWORD(0x56000070, 0x00280000);
_WDWORD(0x56000078, 0x00000000);
_WDWORD(0x48000000, 0x22111110);
_WDWORD(0x48000004, 0x00000700);
_WDWORD(0x48000008, 0x00000700);
_WDWORD(0x4800000C, 0x00000700);
_WDWORD(0x48000010, 0x00000700);
_WDWORD(0x48000014, 0x00000700);
_WDWORD(0x48000018, 0x00000700);
_WDWORD(0x4800001c, 0x00018005);
_WDWORD(0x48000020, 0x00000700);
_WDWORD(0x48000024, 0x008e0459);
_WDWORD(0x48000028, 0x000000B2);
_WDWORD(0x4800002c, 0x00000030);
_WDWORD(0x48000030, 0x00000030);
_WDWORD(0x56000014, 0x00000001);
_WDWORD(0x56000020, 0xAAAA55AA);
_WDWORD(0x56000028, 0x0000FFFF);
_WDWORD(0x56000024, 0x00000000);

 

}   
Setup(); // Setup for Init
LOAD obj/uart_test.axf INCREMENTAL // Download
PC = 0x30000000; // <o> Program Entry Point
g, main // Run to main function


Setup();                             // Setup for Running

、、、、、、、、、、、、、、、、、、、、、、、、、、、

ps:LED终于闪起来了,原来我禁用了MMU,SDRAM的起始地址没有映射到地址0,最后看到启动代码里有个RAM_INTVEC,在option中声明此宏后,中断向量表拷贝到地址0,就好了

"多谢关注realboard,请访问慧至科技官方网站www.hugacy.com" 感谢大家关注realboard,再三感谢,尤其是众多发email过来询问的网友。 鉴于有网友怀疑realboad速度比qemu慢,事实胜于雄辩,提供测试方法如下: 测试方法: 分别运行两个batch程序,用秒表或PC时钟计时(大概1分钟左右结束) 计时方法: 程序启动开始计时; 出现UI画面结束计时. 测试代码(rt-thread 0.4.0 relese): 如果对测试代码有疑问,请联系rt-thread咨询 bsp/mini2440/sdcard.c rt_uint8_t sd_init(void) { //-- SD controller & card initialize int i; sd_delay(1000000); //此处增加一行对ARM仿真性能进行压力测试 /* Important notice for MMC test condition */ /* Cmd & Data lines must be enabled by pull up resister */ SDIPRE = PCLK/(INICLK)-1; SDICON = (0<<4) | 1; // Type A, clk enable SDIFSTA = SDIFSTA | (1<<16); SDIBSIZE = 0x200; /* 512byte per one block */ SDIDTIMER=0x7fffff; /* timeout count */ /* Wait 74SDCLK for MMC card */ for(i=0; i<0x1000; i++); sd_cmd0(); 参考配置: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 2.69GHz, 3.46GB of RAM 参考结果: qemu为47秒, realboard为28秒 realboard之所有没有达到23秒以内,是因为Timer处理和外设IO还有专门优化。 早期曾经对realboard核心指令集模拟器做过多媒体解码测试,综合性能是qemu的2倍。 详情请参考我的优快云 blog realboard -- 继续挑战ARM高性能软件仿真极限 <** 任何个人或团体学习者,教育培训机构,自由项目开发组织,在非商业赢利前提下,均可以无偿体验和使用realboard,商业使用请联系作者获得授权, email : lxzhg@hotmail.com **> 测试包中所含其它资源为自由软件开发组织所有,请参考各自许可协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值