DM9051_SPI网卡驱动于EC200T 4G模块有线网口驱动添加指导 目录 前言…………………………………………………………………………………………………3 应用简介…………………………………………………………………………………………… 4 1.方案介绍 1–1.4G模块介绍 ……………………………………………………………………………………5 1-2. DM9051NP网卡芯片介绍…………………………………………………………………… 5 2.实验环境 2-1. 应用:Cat.4 ,4G监控摄像头……………………………………………………………… 6 2-2. Cat.1 +有线以太网口应用 …………………………………………………………………6 3.硬件部分 3-1 .硬件环境……………………………………………………………………………………… 7 4.软件部分 ………………………………………………………………………………………… 8 4-1.引言 4-2.DM9051NP驱动部分…………………………………………………………………………… 8 4-2-1. DM9051NP驱动源代码参考 ……………………………………………………………… 10 4-3设备树DTS (Device tree source) …………………………………………………………11 4-3-1.DTS实作 …………………………………………………………………………………… 12 4-4. DMA模式 ………………………………………………………………………………………13 5.固件烧入 ………………………………………………………………………………………… 16 6.测试 6-1局域网测试……………………………………………………………………………………… 18 6-2访问公网测试…………………………………………………………………………………… 19 6-3视频测试………………………………………………………………………………………… 20 前言 本文档介绍在M2M通信的应用-4G监控摄像头,于Cat4模块上,如何添加DM9051 SPI网卡驱动。而当红的Cat.1模块亦可依照本文操作方式加入。 应用简介 A:4G监控摄像头:此作法使用ASR1802的SPI接口来接收摄像头的录像数据,DM9051NP在这个应用上,相当于一个转接芯片,架构为:监控摄像头 DM9051NP—SPI接口–移远EC200T(ASR1802)。 B:由于4G模块的应用普及,不仅是Cat4,当前火热的Cat1在各行业的应用,如CPE、POS机、智能监控、环境管理或充电桩等,相关应用需要有线以太网口,将数据上传到远程后台,进行远程控制等,都可以采用此相同作法。
1.方案介绍 此4G模块是上海移远通信EC200T,是一款LTE Cat 4 通信模块,支持最大下行速率150 Mbps和最大上行速率 50 Mbps,EC200T内置丰富的网络协议,集成多个工业标准接口,拓展了其在M2M(机器对机器)通信的应用范围,如安防监控摄像头、 OTT、CPE、路由器、数据卡、平板电脑以及工业级 PDA 等。 上海移远通信EC200T使用到上海翱捷科技ASR1802,ASR1802为所有竞品中系统最小,采用RTOS与Linux操作系统,采用ASR1802芯片的宽带MiFi终端已经销售到全球各运营商,并获得运营商认证,如中国CMCC,韩国SKK,日本,东南亚,印度Airtel,俄罗斯Beeline,非洲MTN等。 DM9051NP SPI接口网卡芯片是为了方便互联网行业进行以太网通信而开发出的解决方案。DM9051NP芯片是带有行业标准串列外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器。DM9051NP符合IEEE 802.3 规范,它还支持以DMA 模式來传输,以实现资料传送快速。DM9051NP通过1个中断引脚和SPI接口來进行与主控制器/MCU单片机的通信,资料传输规格为10/100 M。 •Package:32支接脚封装,QFN. •IEEE 802.3az Energy Efficient Ethernet (EEE) •Built-in integrated 3.3V to 1.8V regulator •远程唤醒 (WOL) •并行线/交叉线自动切换 (HP Auto-MDIX) •Support 光口界面 •EMI (Class B) and HBM ESD Rating 8KV • 工业温度规范: –40℃ to +85℃ • 连续工作温度<60℃ 2.实验环境 2-1. 应用:Cat.4 ,4G监控摄像头: 硬件架构:摄像头ß à DM9051NP—SPI接口—移远EC200T(ASR1802) ß à 4G 2-2. Cat.1 +有线以太网口应用: 其他应用DM9051NP—SPI接口—ASR3601/春藤8910DM
3.硬件部分 DM9051NP通过SPI接口控制内部寄存器,并有中断输出接口。EC200T(ASR1802)通过SPI1和DM9051NP相连。具体接口如下: DM9051NP EC200T (ASR1802) SPI_CS Pin17 Pin37 SPI_MOSI Pin19 Pin38 SPI_MISO Pin20 Pin39 CPI_CLK Pin18 Pin40 INT Pin24 Pin18
图一:EC200T(ASR1802)与DM9051NP SPI硬件设计 SPI信号线说明,通常SPI通过4个引脚与外部器件相连: 4-1.引言 以DM9051在ASR1802 Linux上导入为例,在Linux核心添加 DM9051驱动,DM9051为SPI接口,需具体实现SPI传输功能,DM9051网络数据包送收程序,及依据SPI master特性而扩增的DMA传输模式设置。 因为要采用DTS与DMA模式,除了要进行DTS相关的设置之外,也对DM9051驱动加入DMA的相关参数,然后,再来挂载驱动。当驱动跑起来时,通过DTS取得组态设置参数,然后,让芯片正常运行。 将DM9051NP驱动压缩文件解压,然后将整个包放到ql-ol-sdk/ql-ol-crosstool/package目录下,然后在ql-ol-sdk/ql-ol-crosstool目录下make menuconfig; 图 3 menuconfig 路径:Kernel modules à SPI Support à kmod-ql_spi_net 以上步骤做完后,在ql-ol–sdk下make –j6 V=99,会在ql-ol-sdk/target目录下生成版本包,将版本包烧进模块,使用insmod /lib/modules/3.10.33/dm9051.ko 加载驱动即可。 加载成功后可看到如下所示
图 4 网卡驱动加载LOG
图 5 成功显示网卡 4-2-1. DM9051NP驱动源代码参考: 查看dm9051_init_dm9051函数, 相关内容如下: >>> 欢迎交流! 4-3设备树DTS (Device tree source) #define DM_CONF_APPSRC #define DM_CONF_DBGSRC #define DM_CONF_PHYPOLL #define DTS_CONF_YES 说明:在你的DTS描述符中,请定义 1.)最高SPI时钟速度。 2.)中断模式与中断IRQ号。 3.)中断主动极性。 4.)SPI bus_num以及 SPI片选(有需要才设置) *因为不使用DTS,请定义你的SPI时钟速度: #define DM_CONF_MAX_SPEED_HZ 15600000 *因为不使用DTS,当使用中断模式时,亦需中断IRQ数字以及主动极性: #define DM_CONF_INTERRUPT /*设定的中断号*/ #define DM_CONF_INTERRUPT_IRQ 26 #define DM_CONF_INTERRUPT_LOW_ACTIVE *由于不使用DTS,请依照下列函数来定义SPI bus number。 如果没有定义的话,SPI bus number将为0。 #define DM_CONF_SPI_BUS_NUMBER 0 *由于不使用DTS,请依照下列函数来定义SPI片选。 如果没有定义的话,SPI bus number将为0。 #define DM_CONF_SPI_CHIP_SELECT 1 4-3-1.DTS实作 看完了DM9051NP 驱动的DTS参数设置指南之后,让我们来实作一下: 1.)配置SPI CLK: 在ql-ol-sdk/ql-ol-uboot/board/Marvell/nezas_p201/nezas_p201.c文件中配置SPI时钟,增加如下代码: #ifdef CONFIG_ASR_SPI #define APBC_PHYS_BASE (0xd4000000 + 0x015000) #define APBC_SSP0 (APBC_PHYS_BASE + 0x01c) #endif 图 1 SPI CLK配置 在ql-ol-sdk/ql-ol-uboot/board/Marvell/nezas_p201/nezas_p201.c文件中配置SPI时钟,增加如下代码: 代码如下: #ifdef CONFIG_ASR_SPI __raw_writel(0x17, APBC_SSP0); mdelay(1); __raw_writel(0x13, APBC_SSP0); //ssp0 @13M /* bit[6:4] of APBC_SSP0 * 0x0 = 6.5MHz * 0x1 = 13MHz * 0x2 = 26MHz */ #endif
图 2 SPI CLK配置 注意: __raw_writel(0x17, APBC_SSP0); 和 __raw_writel(0x13, APBC_SSP0);中当前配置的SPI时钟是13M,如果要设置成26M,则将其中的0x17、0x13改成0x27和0x23。这里如不添加,则默认6.5M。 4-4. DMA模式 这是依据SPI master特性而扩增的应用,各家SOC芯片供货商的实现方式可能略有不同.如何开启DM9051 DMA模式来接收与发送数据? 请先在CPU开启DMA模式,然后DM9051驱动做对应的设置。 5.固件烧入 当完成驱动挂载后,即完成一个固件,接下来介绍刻录固件的过程: 1.)硬件环境
2) USB烧录即可。 6-1局域网测试 使用iperf测试即可:如下图所示 6-2访问公网测试 图 8 公网测试 6-3视频测试 1080P 20帧: 需要相关资料请联系我:qq 441635295 1–1. 4G模块介绍
1-2. DM9051NP网卡芯片介绍
3-1 .硬件环境
3-2. SPI硬件接线部分
4.软件部分
4-2.DM9051NP驱动部分
iow(db, DM9051_GPCR, GPCR_GEP_CNTL); /* 让GPIO0输出*/ phy4= dm9051_phy_read(dev, 0, MII_ADVERTISE); dm9051_phy_write(dev, 0, MII_ADVERTISE, phy4 | ADVERTISE_PAUSE_CAP); /* dm95 flow-control RX! */ dm9051_phy_read(dev, 0, MII_ADVERTISE); /* Program operating register */ iow(db, DM9051_TCR, 0); /* TX Polling clear清除TX轮询*/ iow(db, DM9051_BPTR, 0x3f); /* Less 3Kb, 200us */ iow(db, DM9051_SMCR, 0); /* Special Mode */ /* clear TX status清除TX状态 */ iow(db, DM9051_NSR, NSR_WAKEST | NSR_TX2END | NSR_TX1END); iow(db, DM9051_ISR, ISR_CLR_STATUS); /* Clear interrupt status清除中断状态 */ /* Init Driver variable */ db->imr_all = IMR_PAR | IMR_PRM; /* "| IMR_PTM" */ #ifdef JABBER_PACKET_SUPPORT db->rcr_all= RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN | RCR_DIS_WATCHDOG_TIMER; #else db->rcr_all= RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN; #endif /* * (Set address filter table) * After.call.ndo_open * "kernel_call.ndo_set_multicast_list.later". */ dm9051_fifo_reset(1, NULL, db); // 'NULL' for reset FIFO, and no increase the RST counter int_reg_stop(db); ……
1.)请查看dm9051_probe函数, 内容如下: SubNetwork_SPI_Init(db, 1); 2.)再查看SubNetwork_SPI_Init函数, 内容如下: SPI_GPIO_SetupPwrOn(db); SPI_GPIO_Setup(db); //mt_dm9051_pinctrl_init(db->spidev); //or, SPI_GPIO_Set(1); SPI_SPI_Setup(db); 3.)再查看SPI_SPI_Setup函数, 内容如下: SPI_PARAM_Set(db); #if DM_DM_CONF_RARE_PROJECTS_DTS_USAGE /*当处于DTS模式时,请在DTS文件中定义SPI最高速度是多少*/ #else db->spidev->max_speed_hz= dm9051_spi_board_devs[0].max_speed_hz; #endif #if DM_DM_CONF_RARE_PROJECTS_DTS_USAGE /*当处于DTS模式时,请在DTS文件中定义SPI最高速度是多少*/ #else db->spidev->mode = SPI_MODE_0; db->spidev->bits_per_word = 8; printk("%s Driver spi_setup()n", CARDNAME_9051); if(spi_setup(db->spidev)){ printk("[dm95_spi] spi_setup failn"); return; } #endif 4.)再查看SPI_PARAM_Set函数, 内容如下: struct mt_chip_conf *spi_par = (struct mt_chip_conf *) db->spidev->controller_data; if(!spi_par){ printk("[dm95_spi] spi config fail"); return; } spi_par->setuptime = 15; spi_par->holdtime = 15; spi_par->high_time = 10; spi_par->low_time = 10; spi_par->cs_idletime = 20; spi_par->rx_mlsb = 1; spi_par->tx_mlsb = 1; spi_par->tx_endian = 0; spi_par->rx_endian = 0; spi_par->cpol = 0; spi_par->cpha = 0; #if DMA3_P2_MSEL_MOD spi_par->com_mod = DMA_TRANSFER; #else spi_par->com_mod = FIFO_TRANSFER; #endif spi_par->pause = 0; spi_par->finish_intr = 1; spi_par->deassert = 0; …… >>>欢迎交流!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算