上篇文章,是基于4.10.3-rc2 代码编译的network-demo. rtems5.3 新版本,network-demo并没有随之更新,network-demos-4.10.2.tar.bz2 + rtems5.3 会编译报错,作者时间有限,直接使用rtems5.3 中的网络示例修改,
文件位置:
/root/rtems-5.3/testsuites/libtests/mghttpd01/init.c
修改方法与前文类似,如下:
//wx
static char ethernet_address[6] = { 0x52, 0x54, 0x00, 0x38, 0xFE, 0x22 };
#define RTEMS_BSP_NETWORK_DRIVER_NAME BSP_NE2000_NETWORK_DRIVER_NAME
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH BSP_NE2000_NETWORK_DRIVER_ATTACH
//wx
/*
* Default network interface
*/
static struct rtems_bsdnet_ifconfig netdriver_config = {
RTEMS_BSP_NETWORK_DRIVER_NAME, /* name */
RTEMS_BSP_NETWORK_DRIVER_ATTACH, /* attach function */
NULL, /* No more interfaces */
"192.168.137.2", /* IP address */
"255.255.255.0", /* IP net mask */
ethernet_address, /* Driver supplies hardware address */
0, /* ignore broadcast */
0, /* mtu */
0, /* rbuf_count */
0, /* xbuf_count */
0x300, /* port */
9, /* irq */
0, /* bpar */
NULL /* driver control pointer */
};
/*
* Network configuration
*/
struct rtems_bsdnet_config rtems_bsdnet_config = {
&netdriver_config,
NULL, /* do not use bootp */
8, /* Default network task priority */
256 * 1024, /* Default mbuf capacity */
256 * 1024, /* Default mbuf cluster capacity */
"leo", /* Host name */
"leo", /* Domain name */
"192.168.137.1", /* Gateway */
"192.168.137.2", /* Log host */
{"192.168.137.1" }, /* Name server(s) */
{"192.168.137.1" }, /* NTP server(s) */
0, /* efficiency */
0, /* udp TX buffer */
0, /* udp RX buffer */
0, /* tcp TX buffer */
0, /* tcp RX buffer */
};
//===
因为我们要实现一简单的WEBSERVER, 原例子是LOOPBACK方式测试,修改如下
static void test_mongoose(void)
{
const struct mg_callbacks callbacks = {
.begin_request = callback,
.websocket_data = callback_websocket
};
const char *options[] = {
"listening_ports", "80",
"document_root", "/www",
"num_threads", "1",
"thread_stack_size", "16384",
"thread_priority", "250",
"thread_policy", "o",
NULL};
const struct mg_callbacks callbacks2 = {
NULL
};
const char *options2[] = {
"listening_ports", "8080",
"document_root", "/www2",
"num_threads", "1",
"thread_stack_size", "16384",
NULL};
struct mg_context *mg1 = mg_start(&callbacks, NULL, options);
struct mg_context *mg2 = mg_start(&callbacks2, NULL, options2);
test_mg_index_html();
// test_mg_callback();
// test_mg_websocket();
// mg_stop(mg1);
// mg_stop(mg2);
}
static void Init(rtems_task_argument arg)
{
int rv = 0;
TEST_BEGIN();
rv = rtems_bsdnet_initialize_network();
rtems_test_assert(rv == 0);
test_tarfs_load();
test_mongoose();
// TEST_END();
while (1);
rtems_test_exit(0);
}
编译后得到mghttpd01.exe
在QEMU TAP 网络环境中
qemu-system-i386.exe -m 128 -vga cirrus -kernel p:\mghttpd01.exe -netdev tap,id=n2,ifname=tap-nic -device ne2k_isa,netdev=n2,mac=52:54:00:38:fe:22
HOST上输入浏览器地址,效果如下:


被折叠的 条评论
为什么被折叠?



