在arm linux mini2440上移植ntp服务,RTEMS 4.9.5 在 QEMU MINI2440 上的移植发布啦……

(本文原创,转载请注明出处,谢谢)

这两天抽了个空,在rickleaf移植的 qemu mini2440 的rtems 4.9.5 bsp 上做了一些修改:

1.原来mini2440的 bsp是基于 gp32的bsp修改,复用了部分的gp32代码。cpu类型实际上使用的是s3c2410。这不利于对mini2440的修改。所以,增加了新cpu型号s3c2440,并将mini2440修改成独立的bsp。

如果有朋友在bootstrap -p 和 bootstrap 时,嫌生成configure 的时间太长,建议将libbsp下和libcpu下不使用的bsp和cpu型号删除。以增加开发效率。

2.s3c2410 cpu的PLL部分和s3c2440的 PLL 还是有些许差别,造成rtems的tick不准,已经修改。

3.支持dm9000的网络。

代码请安装版本管理工具 git,使用命令:

git clone git://emboslab.git.sourceforge.net/gitroot/emboslab/rtems-4.9.5-emboslab

下载最新的 rtems 4.9.5 在 qemu mini2440 上的移植。

请键入以下命令编译rtems 4.9.5 关于 qemu mini2440 bsp:

cd rtems-4.9.5-emboslab

mkdir mini2440

cd mini2440

../configure --target=arm-rtems4.9 --disable-posix --enable-networking --enable-rtemsbsp=mini2440 --prefix=/opt/rtems-4.9

make all install

编译一下hello_world_c 和ticker等示例吧,运行这些示例的方法请参考其本博的他关于mini2440的博文。

从官方下载network-demos-4.9.4.tar.bz2

tar  xjvf network-demos-4.9.4.tar.bz2

cd network-demos-4.9.4

gedit networkconfig.h (需要修改一下改文件,下面有列出)

export RTEMS_MAKEFILE_PATH=/opt/rtems-4.9/arm-rtems4.9/mini2440/

cd http

make

arm-rtems4.9-objcopy -O binary o-optimize/http.exe /tftproot/image.bin

进入qemu文件夹:

./mini2440/mini2440_start.sh

启动qemu,

在 mini2440# 提示符下输入:

tftp 30000100 image.bin

go 30000100

---------------------------------------------------------------

下面是有图有真相: qemu 下输入的命令

0_13010589705pz0.gif

http.exe 完全启动

0_1301059060LER5.gif

ping 10.0.0.100 -s 1000

0_1301059281ZeqW.gif

使用浏览器查看网页

0_1301059409R40c.gif

查看CPU使用率(第一个超文本链接)

0_1301059530zwNC.gif

最后,贴上networkconfig.h文件内容:

/* * Network configuration -- LOOPBACK ONLY!!! * * See one of the other networkconfig.h files for an * example of a system that includes a real NIC and * the loopback interface. * ************************************************************ * EDIT THIS FILE TO REFLECT YOUR NETWORK CONFIGURATION * * BEFORE RUNNING ANY RTEMS PROGRAMS WHICH USE THE NETWORK! * ************************************************************ * * $Id: networkconfig.h,v 1.14 2008/08/20 22:16:28 joel Exp $ */ #ifndef _RTEMS_NETWORKCONFIG_H_ #define _RTEMS_NETWORKCONFIG_H_ /* #define RTEMS_USE_BOOTP */ #include #include #define RTEMS_USE_BOOTP /* * Loopback interface */ extern int rtems_bsdnet_loopattach(); static struct rtems_bsdnet_ifconfig netdriver_config1 = { RTEMS_BSP_NETWORK_DRIVER_NAME, /* name */ RTEMS_BSP_NETWORK_DRIVER_ATTACH, /* attach function */ NULL, /* No more interfaces */ "10.0.0.100", /* IP address */ "255.255.255.0", /* IP net mask */ NULL, /* Driver supplies hardware address */ 0, /* Use default driver parameters */ 0, /* default efficiency multiplier */ 0, /* default udp TX socket buffer size */ 0, /* default udp RX socket buffer size */ 0, /* default tcp TX socket buffer size */ 0, /* default tcp RX socket buffer size */ }; /* * Default network interface */ static struct rtems_bsdnet_ifconfig netdriver_config = { "lo0", /* name */ rtems_bsdnet_loopattach, /* attach function */ &netdriver_config1, /* No more interfaces */ "127.0.0.1", /* IP address */ "255.0.0.0", /* IP net mask */ NULL, /* Driver supplies hardware address */ 0, /* Use default driver parameters */ 0, /* default efficiency multiplier */ 0, /* default udp TX socket buffer size */ 0, /* default udp RX socket buffer size */ 0, /* default tcp TX socket buffer size */ 0, /* default tcp RX socket buffer size */ }; /* * Network configuration */ struct rtems_bsdnet_config rtems_bsdnet_config = { &netdriver_config, NULL, /* do not use bootp */ 0, /* Default network task priority */ 1024 * 1024, /* Default mbuf capacity */ 1024 * 1024, /* Default mbuf cluster capacity */ "rtems", /* Host name */ "nodomain.com", /* Domain name */ "127.0.0.1", /* Gateway */ "127.0.0.1", /* Log host */ {"127.0.0.1" }, /* Name server(s) */ {"127.0.0.1" }, /* NTP server(s) */ 0, /* sb_efficiency */ 0, /* udp_tx_buf_size */ 0, /* udp_rx_buf_size */ 0, /* tcp_tx_buf_size */ 0 /* tcp_rx_buf_size */ }; /* * For TFTP test application */ #if (defined (RTEMS_USE_BOOTP)) #define RTEMS_TFTP_TEST_HOST_NAME "BOOTP_HOST" #define RTEMS_TFTP_TEST_FILE_NAME "BOOTP_FILE" #else #define RTEMS_TFTP_TEST_HOST_NAME "XXX.YYY.ZZZ.XYZ" #define RTEMS_TFTP_TEST_FILE_NAME "tftptest" #endif /* * For NFS test application * * NFS server/path to mount and a directory to ls once mounted */ #define RTEMS_NFS_SERVER "192.168.1.210" #define RTEMS_NFS_SERVER_PATH "/home" #define RTEMS_NFS_LS_PATH "/mnt/nfstest" #endif /* _RTEMS_NETWORKCONFIG_H_ */

enjoy it!

(本文原创,转载请注明出处,谢谢)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值