您的位置:首页 > 其它

RTEMS 移植到 sbc2440 的简要笔记

2012-12-07 17:48 190 查看
首先安装编译链,还有编译一下 smdk2410 和hello例子,保证编译通过再进行移植。

一, rtems-4.10.2/c/src/lib/libbsp/arm

1,添加 sbc2440目录,将smdk2440的所有文件复制过来。

2,

修改 acinclude.m4

添加 sbc2440

二,rtems-4.10.2/c/src/lib/libbsp/arm/sbc2440/make/custom

将 smdk2440.cfg 改名为 sbc2440

三,可以删除不要的BSP 提高速度

# ./bootstrap -c 清除之前的

# ./bootstrap -p 重新生成哪些编译文件

# ./bootstrap

# mkdir build-rtems

# cd build-rtems

# ../rtems-4.10.2/configure --target=arm-rtems4.10 --disable-posix --disable-itron --disable-cxx

--disable-networking --enable-rtemsbsp=sbc2440

应该能编译通过

四,

rtems-4.10.2\c\src\lib\libbsp\arm\sbc2440 中的 Makefile.am 文件中看到具体哪些文件被连接了。

可以看到,有下面这些文件是引用了 gp32 的,所以这里将gp32中对应的文件复制过来并且修改makefile

include_HEADERS = ../gp32/include/bsp.h

include_HEADERS += ../gp32/smc/smc.h

libbspstart_a_SOURCES = ../gp32/start/start.S

../gp32/startup/bspstart.c

libbsp_a_SOURCES += ../gp32/console/uart.c

libbsp_a_SOURCES += ../gp32/smc/smc.c ../gp32/smc/smc.h

重新 bootstrap configure 和 make,应该能编译通过。

五,修改源代码让代码跑起来。

由于2410的寄存器基本吻合,所以头文件不改也没问题

我主要是修改了时钟(PLL设置)和串口

\c\src\lib\libcpu\arm\s3c24xx\clock\support.c

修改get_FCLK

由于2440 的PLL计算公式不同,在原来的基础上乘以2 就行了。修改为

return((BSP_OSC_FREQ * m * 2) / (p << s));

\c\src\lib\libbsp\arm\sbc2440\start\start.S

修改启动代码,主要工作是

RTEMS 的运行地址是 0x30000100 ,所以需要用bootloader 加载到这个地址然后运行。

如果是用GDB的话,则会根据ELF文件自动下载的

可以使用 uboot加载进来(我没有测试过,暂时不说,之后也要用这个办法的,先搁下)

我是使用自己加载的方式。主要做了(在原来的设置堆栈之后工作)

1,关闭看门狗,关闭所有中断,SVC模式

2,设置PLL,将 FCLK : HCLK : PCLK 设置为 200 : 100 : 50 MHZ

3,根据具体的SDRAM型号参数,设置MEMORY CONTROLER

4,由于SDRAM初始化完毕,开始复制.text 和.data 段(可以看连接脚本)到SDRAM上面。

5,清除 .bss 段的内容。

6,跳转到 SDRAM 上面执行。

7,接着做RTEMS 原来的初始化

\c\src\lib\libbsp\arm\sbc2440\console\uart.c

主要修改 UART0 口的初始化就行了,不用FIFO,主要发送的时候判断

完成之后 make install 安装

然后编译hello world,然后 objcopy -O binary 转化为 bin 格式。烧写到 0 地址的norflash 就可以了。

简要笔记。主要是能通过串口打印hello world,网络还没搞

Etual

2012-12-7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: