二、具体介绍
1、这个例程仿照了 enet_io 例程的过程,不过我在这里主要是讲述一下我自己的学习经验,以及如何进行类似的操作:
例程中同样采用了直接给 ulUser0=0x5555aaaa;ulUser1=0x5555aaaa; 赋值的办法
它的赋值规则在 Luminary Micro?Flash Programmer-Build 776 中也有介绍:
如果 MAC 地址是:00-1A-B6-00-02-74 话,则 ulUser0=0x00B61A00 ; ulUser1=0x00740200;
例程中: lwIPInit(pucMACArray, 0xC0A80164, 0xffffff00, 0xC0A80101, IPADDR_USE_STATIC);
这条语句是设置 MAC 地址、子网掩码的、网关地址。其中网关地址 可设置为 0 也不会影响正常的网络通讯。关于电脑的本地连接上的设置,大家可以参考前面我写的《基于LM3S8962以太网的简单TFTP的服务器学习系列一》PDF 文档。
2、这里我具体分析一下 lmi_fs.c 这个C文件:
struct fs_file *
fs_open(char *name)
{
char *data;
int i;
const struct fsdata_file *ptTree;
struct fs_file *ptFile = NULL;
/*分派内存给文件系统 */
ptFile = mem_malloc(sizeof(struct fs_file));
if(NULL == ptFile)
{
return(NULL);
}
/* 19代表字符串长度*/
if(strncmp(name, "/cgi-bin/toggle_led", 19) == 0)
{
io_set_led(!io_is_led_on());
ptFile->data = NULL;
ptFile->len = 0;
ptFile->index = 0;
ptFile->pextension = NULL;
return(ptFile);
}
// 处理PWM ON/OFF状态的请求
if(strncmp(name, "/cgi-bin/pwm_onoff", 18) == 0)
{
io_set_pwm(!io_is_pwm_on());
ptFile->data = NULL;
ptFile->len = 0;
ptFile->index = 0;
ptFile->pextension = NULL;
return(ptFile); } |