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 下输入的命令

 

 

 

  • http.exe 完全启动

 

 

  • ping 10.0.0.100 -s 1000

 

 

 

  • 使用浏览器查看网页

 

 

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

 

  • 最后,贴上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 <bsp.h> #include <rtems/dhcp.h> #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!

 

 

 

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

你可能感兴趣的:(socket,server,application,buffer,Parameters,NetWork)