技术开发 频道

自己动手编写嵌入式Bootloader之二

  【IT168 技术文档】要实现通过网口下载文件的功能,从底层到上层需要做的工作包括:开发板上的网卡芯片的驱动程序;TCP/IP协议栈的实现;TFTP客户端应用程序的实现。我们使用的OK2440开发板配备CS8900A网卡芯片。 为了简单起见,网络数据包的发送和接收都使用轮询方式,不使用中断;协议栈只使用ARP/IP/UDP协议,不涉及TCP及其他协议;应用程序只实现最简单的TFTP客户端。

  1. 全局配置信息

  发送和接收的数据缓冲区,使用全局静态缓冲区,不使用动态内存分配。第一阶段运行结束之后,CPU内部4KB的SteppingStone可以用作其它用途,我们就用它做网络数据接收、发送的缓冲区。亦可用作标准输入输出的缓冲区。

  unsigned char *TxBuf = (unsigned char *)0;

  unsigned char *RxBuf = (unsigned char *)1024;

  使用若干个全局变量来保存网络配置信息:

  unsigned char NetOurEther[6] = /* Our ethernet address */

  {0x00, 0x09, 0x58, 0xD8, 0x11, 0x22};

  开发板的MAC地址,这个是任意设置的。

  unsigned char NetServerEther[6] = /* Boot server enet address */

  {0x00, 0x14, 0x2A, 0xA5, 0x50, 0x97};

  服务器也就是主机的MAC地址,这个要跟主机MAC一致,可以在主机上运行ifconfig命令查到。

  unsigned long NetOurIP = 0xC0A801FC; /* Our IP addr 192.168.1.252 */

  unsigned long NetServerIP = 0xC0A801F9; /* Server IP 192.168.1.249 */

  网络协议中IP地址一般是用一个4字节整型数表示的。

0
相关文章