⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 web_init.c

📁 裸板的tftp客户端
💻 C
字号:
#include "./include/web_init.h"#include "./include/myout.h"U16 get_reg_init_bus (U32 regno){	// force 16 bit busmode 	char c;	c = CS8900_BUS16_0;	c = CS8900_BUS16_1;	c = CS8900_BUS16_0;	c = CS8900_BUS16_1;	c = CS8900_BUS16_0;	CS8900_PPTR = regno;	return (U16) CS8900_PDATA;}U16 get_reg (U32 regno){	CS8900_PPTR = regno;	return (U16) CS8900_PDATA;}void put_reg (U32 regno, U16 val){	CS8900_PPTR = regno;	CS8900_PDATA = val;}void eth_reset (void){		// reset NIC 	put_reg (PP_SelfCTL, get_reg (PP_SelfCTL) | PP_SelfCTL_Reset);	// Wait until the chip is reset 	while ((( get_reg(PP_SelfSTAT)) & PP_SelfSTAT_InitD) !=  PP_SelfSTAT_InitD);}void eth_reginit (void){	// receive only error free packets addressed to this card 	put_reg (PP_RxCTL, PP_RxCTL_IA | PP_RxCTL_Broadcast | PP_RxCTL_RxOK | PP_RxCTL_Promiscuous);	// do not generate any interrupts on receive operations 	put_reg (PP_RxCFG, 0);	// do not generate any interrupts on transmit operations 	put_reg (PP_TxCFG, 0);	// do not generate any interrupts on buffer operations 	put_reg (PP_BufCFG, 0);	// enable transmitter/receiver mode 	put_reg (PP_LineCTL, PP_LineCTL_Rx | PP_LineCTL_Tx);	put_reg (PP_BusCtl, 0);}U32 eth_init (U8 *Mac){	// verify chip id 	if (get_reg_init_bus (PP_ChipID) != 0x630e) {		MyOut("%s","CS8900 Ethernet chip not found?!");		return 0;	}	eth_reset ();	// set the ethernet address 	put_reg (PP_IA + 0, Mac[0] | (Mac[1] << 8));	put_reg (PP_IA + 2, Mac[2] | (Mac[3] << 8));	put_reg (PP_IA + 4, Mac[4] | (Mac[5] << 8));	eth_reginit ();	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -