/*分析DM9000收到一个数据包后,应该做何处理?...*/ /*当收到一个数据包后,DM9000就会触发一次发送中断,跳到中断处理函数处理*/ static irqreturn_t dm9000_interrupt(int irq, void *dev_id...dev_dbg(db->dev, "length error\n"); dev->stats.rx_length_errors++; } } /* Move data from DM9000
/*分析DM9000发生数据函数**/ /* * Hardware start transmission....->tx_pkt_cnt > 1) return NETDEV_TX_BUSY; spin_lock_irqsave(&db->lock, flags); /* Move data to DM9000...TX RAM */ //写数据到DM9000 Tx RAM中, 写地址自动增加 writeb(DM9000_MWCMD, db->io_addr); /*将skb中的数据写入寄存器,然后发送字节改变...io_addr); //存储以前的地址 /* Disable all interrupts */ //屏蔽所有中断 iow(db, DM9000_IMR, IMR_PAR); /* Got DM9000
我这里用`Linux4.8.5源码自带的dm9000网卡为例来分析设备树的使用和移植。...在下面的这个dm9000的例子中,我们在相应的板级dts中找到了这样的代码块: 然后我们取内核源码中找到dm9000的网卡驱动,从中可以发现这个驱动是使用的设备树描述的设备信息(这不废话么,显然用设备树好处多多...chip,这样,系统中至少有两个中断控制器了,另外,在硬件上,随着系统复杂度加大,外设中断数据增加,实际上系统可以需要多个中断控制器进行级联,形成事实上的硬件中断处理结构: 在这种趋势下,内核中原本的中断源直接到中断号的方式已经很难继续发展了...0x2>" 最终的配置结果是: 勾选相应的选项将dm9000的驱动编译进内核。...ARM设备树专题 设备树(上) Linux ARM设备树专题 设备树(下)
/*分析DM9000网卡驱动之初始化*/ /*找到DM9000.c 文件路径: linux/drivers/net下 找到模块的入口函数处 */ static int __init dm9000...获得DM9000的资源。包括DM9000的内存和中断资源 * 4. 地址映射 * 5. 初始化net_device的基地址和中断号 * 6. 重启DM9000设备 * 7....获取DM9000的版本 * 8....获得DM9000的资源。包括DM9000的内存和中断资源 * 4. 地址映射 * 5. 初始化net_device的基地址和中断号 * 6. 重启DM9000设备 * 7....获取DM9000的版本 * 8. 注册net_device结构 * 9. 硬件相关的初始化 * 10. 注册Dm9000中断 * 11. 启动发送队列 */
我这里用Linux4.8.5源码自带的dm9000网卡为例来分析设备树的使用和移植。...在下面的这个dm9000的例子中,我们在相应的板级dts中找到了这样的代码块: 然后我们取内核源码中找到dm9000的网卡驱动,从中可以发现这个驱动是使用的设备树描述的设备信息(这不废话么,显然用设备树好处多多...chip,这样,系统中至少有两个中断控制器了,另外,在硬件上,随着系统复杂度加大,外设中断数据增加,实际上系统可以需要多个中断控制器进行级联,形成事实上的硬件中断处理结构: 在这种趋势下,内核中原本的中断源直接到中断号的方式已经很难继续发展了...,为了解决这些问题,linux kernel的大牛们就创造了irq domain(中断域)这个概念。...最终的配置结果是: 勾选相应的选项将dm9000的驱动编译进内核。
裸奔程序和uCOS读取DM9000 ID的方法 在程序中调用下面这段代码可以读到DM9000的ID号: #define DM9000_BASE 0x20000300...) { U16 id; id = dm9000_ior(0x28) | (dm9000_ior(0x29)<<8); printf(“read dm9000...vid = 0x%x\n”, id); id = dm9000_ior(0x2a) | (dm9000_ior(0x2b)<<8); printf(“read dm9000...pid = 0x%x\n”, id); id = dm9000_ior(0x8) | (dm9000_ior(0x9)<<8); printf(“read dm9000...reg(0x09,0x08) = 0x%x\n”, id); printf(“dm9000 isr = 0x%x\n”, dm9000_ior(0xfe)); } 转载于:https
"平台驱动,而再注册个"dm9000"平台设备时,内核便会调用上面的probe函数来注册dm9000驱动. 2)然后再来看看mach-mini2440.c单板文件,是如何支持dm9000的,代码如下:...网卡驱动) 1)添加头文件 #include 2)添加全局变量: #define MACH_SMDK2440_DM9K_BASE (S3C2410_CS4 +...= { .platform_data = &SMDK2440_dm9k_pdata, }, }; 3)在smdk2440_devices[]数组下添加...&s3c_device_iis, &smdk2440_device_eth, //添加该句 }; 2.3 然后编译烧写 在uboot下输入...2)然后测试下使用nfs文件系统 在uboot设置bootargs参数: set bootargs root=/dev/nfs console=ttySAC0,115200 nfsroot=192.168.2.106
s3c2410_deconfig 命令在默认的配置上进行自动修改.config文件 (3)使用厂家提供的配置config_ok文件覆盖.config文件 所以,所有的配置结果都是配置.config文件 1 在linux...下通过vi指令查看.config内核配置文件 ?.../autoconf.h中定义宏DM9000 include/linux/autoconf.h:129:#define CONFIG_DM9000 1 然后通过vi include/linux/autoconf.h...(2)在C源码里通过判断autoconf.h的宏DM9000 arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined.../drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中. drivers/net/Makefile
,进入到Linux版的RabbitMQ下载页面中 7、找到Download下的 rabbitmq-server-generic-unix-3.7.16.tar.xz下载链接并点击,开始进行下载RabbitMQ...三、把下载好的RabbitMQ 和 Erlang上传到Linux服务器上 1、打开WinSCP,把我们下载好的RabbitMQ 和 Erlang安装包,上传到Linux的 /mnt/ 文件目录下...2、使用putty连接到我们的Linux服务器,进入到/mnt/ 文件目录中,并解压上传的RabbitMQ 和 Erlang安装包 [root@localhost ~]# cd /mnt/ //...PID file not written; -detached was passed. 5、在浏览器的地址栏中输入你 服务器的ip地址:15672,即可访问RabbitMQ的管理登录界面,例如我的Linux...(3)策略制定者(policymaker):可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。
Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...*/ 根据平台设备的平台数据,DM9000 配置在了 16bit 的模式下,所以这一部分设置只有dm9000_set_io(db, 2);是成功的。...接收数据包的流程 NAPI 方式接收介绍 通常情况下,网络驱动以中断方式接收数据,但是当数据量大的时候会频繁产生中断,CPU 要频繁去处理中断导致效率低下而不如纯轮询模式。
一、安装At 取决于不同的发行版,at在你的 Linux 系统中可能有,也可能没有。 如果at没有被安装,你可以很容易地使用你发行版的软件包来安装它。...例如,想要创建一个任务,运行脚本: /home/linuxize/script.sh: at 09:00 -f /home/linuxize/script.sh 默认情况下,这个命令会产生输出,一旦任务完成...at 09:00 -m 三、batch命令 batch或者它的关联at -b预定任务并且在系统负载允许的情况下,批量执行任务。默认情况下,当系统平均负载在1.5以下的时候,任务将会被执行。...下面是一个例子: at -t 202005111321.32 五、指定队列 默认情况下,由at创建的任务被计划在命名为a的队列,并且由batch创建的任务被计划在b队列。...默认情况下,仅仅/etc/at.deny文件存在,并且是空的,这意味着所有用户可以使用at命令。如果你想禁止某一个用户的权限,将他的用户名添加到这个文件中。
[查找标准] [查找到以后的处理动作] 查找路径,默认为当前目录 查找标准,默认为指定路径下的所有文件 -name 'filename' //对文件名作精确匹配...-gid //根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID -nouser //查找没有属主的文件.用户被删除的情况下产生的文件...,只有uid没有属主 -nogroup //查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组 -type //根据文件类型来查找...文件并且删除 find / -name "abc.txt" -ok cp -r {} /home/canxun/ \; //查找abc.txt文件并且确认复制到/home/canxun/下...find / -name "abc.txt" -exec mv {} /home/canxun/ \; //查找abc.txt文件并且不需要确认移动到/home/canxun/下
_BASE 0x19000300 #define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */ #else #define...CONFIG_DRIVER_DM9000 /*DM9000*/ #endif 编译报错 ?...have a CS8900 on-board */ #define CONFIG_CS8900_BASE 0x19000300 #define CONFIG_CS8900_BUS16 /* the Linux...是放在2440的bank4(0X20000000)的片选上面,而DM9000的CMD引脚接在bank4的LADDR2上面。...然后试验,来ping下PC机,输入: set ipaddr 192.168.159.120 ping 192.168.159.100 打印如下图所示: ?
/u-boot.bin of=/dev/sdb seek=1 启动时按下空格键 二、从Nand启动 三、从USB启动,资源下载https://download.csdn.net/download/jerrygou.../10475100 3.1、加载模块到Linux内核 将secbulk源程序在Ubuntu下重新编译 #insmod secbulk.ko (注意要在root权限下) # dmesg...insmod: ERROR: could not insert module secbulk.ko: Invalid module format 解决方法:需要将secbulk源程序在Ubuntu下重新编译...需要吧拨码开关拨对) 3.4、烧写uboot 当执行sudo dnw -a 0x23e00000 uboot.bin成功后,开发板会启动(仅限于本文件中的uboot.bin会启动),这是快速在CRT上面按下空格键...OK dm9000 i/o: 0x88000000, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 1a:2a:3a:4a:5a:6a operating
,又多了那个.使用命令taskkill可将这些进程一下子所有杀光: C:\Users\NR>taskkill /F /im fron … Linux下强制杀死进程的方法 常规篇: 首先,用ps查看进程,...批量杀死包含关键字“php-fpm”的进程. kill … linux下查看当前进程以及杀死进程 ###linux下查看当前进程以及杀死进程 查看进程 ps命令查找与进程相关的PID号: ps a :显示现行终端机下的所有程序...,包括其他用户的程序. ps -A :显示所有程序. ps c :列出程 … Linux下批量管理工具pssh安装和使用 Linux下批量管理工具pssh安装和使用 pssh工具包 安装:yum -y...下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的serv … Linux下查看某个进程打开的文件数...-losf工具常用参数介绍 Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!
ls指令,作用是罗列出当前路径下的文件名,当然如果未创建则什么都没有。 mkdir指令,作用是在当前路径下,创建一个“文件夹”(目录)。 cd指令,作用是进入指定的”文件夹“(目录)。...补: whoami作用是查看当前正在使用Linux系统的人是谁(用户)。在表述的时候,我们通常会说我们在XXX路径下,此处我们就是指whoami的结果。...Linux下指定的用户也有自己的家目录!且任何一个用户,首次登陆,所处的路径都是自己的家目录!!...解释一下,面手册分为8章(即上图中前8个) : 1 是普通的命令(可执行程序,指令); 2 是系统调用(即是由操作系统内核(Linux系统)提供的接口),如fork,open,write之类的(通过这个...系统下常用的命令,经常用来备份文件或者目录。
Linux理念:Linux中一切皆文件。 那么Linux可以以统一的方式来进行文件/设备访问! 基于此理念,普通文件和显示器有什么区别吗?...Linux下find命令在目录结构中搜索文件,并执行指定的操作。 Linux下find命令提供了相当多的查找条件,功能很强大。...由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。...sz指令,作用是将压缩包传到windows上;rz则是将windows上的压缩包传到Linux的当前路径下。...(windows Linux) scp XXX.tgz 用户名@另一台Linux机器的ip:你要拷贝到的路径。
make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-...zImage:go 0x30008000 uImage:bootm 0x30008000 busybox下载地址: http://busybox.net/ linux快速修改文件夹及文件下所有文件与文件夹权限...启动之后,输入:printenv 查看 serverip是不是你的虚拟机的ip(终端ifconfig即可查看) ipaddr要和serverip在同一个网段,即ip的前三段必须相同 ethaddr:开发板dm9000...tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.6.30.4' -A arm -O linux -T kernel -...i/o: 0x20000300, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 08:00:3e:26:0a:5b operating at
原文出自:http://blog.csdn.net/ghostyu/article/details/6908805 一个现实的linux设备和驱动通常要挂接在一种总线上,像pci,usb,iic,spi...基于这个背景,linux发明了一种虚拟总线:platform总线,相应的设备称为platform_device,而驱动成为platform_driver。...mychar”, .id = -1,};这样就表示,开发板上有一个devie,名字叫mychar,因为mychar是内存中虚拟出来的,所以这里并不需要设置别的,只要设置一下与...例如dm9000的resource部分: [cpp] view plain copy print ?...mach-s3c2440.c中,但关键的驱动源码在 drvier/mtd/nand/文件夹下 这样的结构就是linux驱动的分层思想,设备驱动的核心层与例化。
领取专属 10元无门槛券
手把手带您无忧上云