我把雪松的帖子也转过来。
鼓励大家看他的原帖子,他是这个专家。
http://blog.csdn.net/coolbacon/archive/2011/03/22/6269551.aspx
这两天抽了个空,在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!
(本文原创,转载请注明出处,谢谢)