资源简介
linux mdio 读写phy 寄存器工具
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifndef __GLIBC__
#include
#include
#endif
#include
#include
#include
/* This data structure is used for all the MII ioctl‘s */
static struct ifreq ifr;
static int mdio_read(int skfd int location)
{
struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
mii->reg_num = location;
if (ioctl(skfd SIOCGMIIREG &ifr) < 0) {
fprintf(stderr “SIOCGMIIREG on %s failed: %s\n“ ifr.ifr_name
strerror(errno));
return -1;
}
return mii->val_out;
}
static void mdio_write(int skfd int location int value)
{
struct mii_ioctl_data *mii = (struct mii_ioctl_data *)&ifr.ifr_data;
mii->reg_num = location;
mii->val_in = value;
if (ioctl(skfd SIOCSMIIREG &ifr) < 0) {
fprintf(stderr “SIOCSMIIREG on %s failed: %s\n“ ifr.ifr_name
strerror(errno));
}
}
int main(int argc char *argv[])
{
int skfd;
if((argc < 2) || (!strcmp(argv[1] “-h“))){
printf(“%s eth0 reg [val]\n“ argv[0]);
return 0;
}
if ((skfd = socket(AF_INET SOCK_DGRAM0)) < 0) {
perror(“socket“);
exit(-1);
}
strncpy(ifr.ifr_name argv[1] IFNAMSIZ);
if (ioctl(skfd SIOCGMIIPHY &ifr) < 0) {
fprintf(stderr “SIOCGMIIPHY on ‘%s‘ failed: %s\n“
argv[1] strerror(errno));
return -1;
}
if(!strcasecmp(argv[2] “dump“)){
int i = 0;
printf(“%s dump:\n“ argv[1]);
printf(“ “);
for(i = 0; i < 16; i++){
printf(“%4x “ i);
}
printf(“\n“);
for(i = 0; i < 32; i++){
if((i % 16) == 0){
printf(“%04x: “ i);
}
printf(“%04x “ mdio_read(skfd i));
if((i % 16) == 15){
printf(“\n“);
}
}
}else{
if (argc == 3) {
printf(“%03x ==> %08x\n“ strtoul(argv[2] NULL 0) mdio_read(skfd strtoul(argv[2] NULL 0)));
} else if(argc == 4) {
mdio_write(skfd strtoul(argv[2] NULL 0) strtoul(argv[3] NULL 0));
}
}
close(skfd);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
....... 182 2014-06-20 12:39 mdio\Makefile
....... 2419 2014-07-24 15:06 mdio\mdio.c
目录 0 2015-08-04 16:22 mdio
----------- --------- ---------- ----- ----
2601 3
- 上一篇:grbl-0.8_src
- 下一篇:EDA关于排队器的设计
相关资源
- 简单ping程序的实现
- OV5648摄像头linux驱动代码
- Linux C聊天室源码
- windows系统运行的scp,实现从Linux系统
- linux下实现即时通讯的毕业论文
- linux 嵌入式实习报告
- linux 串口数据接收 发送
- CUDA 9.1+cuDNN v7 for Ubuntu 16.04
- Linux 下实现的聊天系统,TCP实现
- linux0.12源码+linux源码剖析0.12PDF+linux源
- Linux增加字符设备驱动实验
- linux tcp udp 调试工具
- linux 下c实现简单的网络嗅探器
- rm.bat 在win下模拟linux rm命令的bat文件
- Linux下串口读写例程
- 《嵌入式Linux应用程序开发标准教程》
- linux的arpSpoof源代码加编译好的程序
- linux和win32下通用的互斥锁Mutex封装
- 在Linux下添加系统调用
- ARM&linux嵌入式系统教程每章答案-马忠
- Vsftp2.3.4 for linux
- intel_parallel_studio_xe_2013_update2_intel64_
- 最新 socks5-v1.0r11.tar.gz linux代理配置源
- linux ftp服务器安装包vsftpd-1.1.3-8.i386
- Linux常用Shell脚本珍藏
- Linux运维工程师成长必经之路.pdf
- 基于linux下用c编写的socket通信传输文
- linux rootkit源码
- linux下shell编程实验报告-考勤系统
- Linux网络编程 第2版带详细目录
评论
共有 条评论