网络设备不同于字符设备和块设备,并不对应于/dev目录下的文件,应用程序通过 socket 完成与网络设备的交互,在网络设备上并不体现”一切皆文件”的设计思想。
/*分析DM9000发生数据函数**/ /* * Hardware start transmission. * Send a packet to media from the upper layer. */ static int dm9000_start_xmit(struct sk_buff *skb, struct net_device *dev) { unsigned long flags; board_info_t *db = netdev_priv(dev); dm9000_db
/*分析DM9000收到一个数据包后,应该做何处理?*/ /*当收到一个数据包后,DM9000就会触发一次发送中断,跳到中断处理函数处理*/ static irqreturn_t dm9000_interrupt(int irq, void *dev_id) { /* Received the coming packet */ //当接受到一个数据包后 if (int_status & ISR_PRS) dm9000_rx(dev); } /*处理发送函数*/ /* * Received
我们的DM9000是放在2440的bank4(0X20000000)的片选上面,而DM9000的CMD引脚接在bank4的LADDR2上面。也就是说当0X20000000地址上读写数据时, 此时CMD为低,则读写的便是DM9000C的地址。向0X20000000+4地址上读写数据时,此时CMD为高,则读写的便是DM9000C的数据。
Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。比如在ARM Linux内,一个.dts(device tree source)文件对应一个ARM的machine,一般放置在内核的"arch/arm/boot/dts/"目录内,比如exynos4412参考板的板级设备树文件就是"arch/arm/boot/dts/exynos4412-origen.dts"。这个文件可以通过$make dtbs命令编译成二进制的.dtb文件供内核驱动使用。
移植内核:2.6.30.4 内核根目录下的.config为当前配置内核的且已经配置好的内核配置。make zImage以此为依据 配置内核的过程: cd linux-2.6.30.4(进入Linux根目录) cp arch/arm/configs/s3c2410_defconfig /linux-2.6.30.4(作为配置参考,考到根目录下) mv s3c2410_defconfig .config(改名为.config) make menuconfig ARCH=arm(ARCH=arm不能少) 配置过程 退出时记得选yes保存为.config(确保该配置是你已经配置且保存的配置,就算不改动也要保存。否则不能生成.config) make zImage ARCH=arm CROSS_COMPILE=arm-linux-(ARCH=arm不可少) 或者 Makefile中定于ARCH=arm CROSS_COMPILE=arm-linux- 1,make s3c2410_defconfig(生成.config) 2,make zImage 即可生成压缩内核印象 uboot引导内核,入口点必须为0x30008000 zImage:go 0x30008000 uImage:bootm 0x30008000 busybox下载地址: http://busybox.net/ linux快速修改文件夹及文件下所有文件与文件夹权限 chmod 777 * -R uboot的tftp下载出现如下错误: TFTP error: 'Permission denied' (0) 改正方法就是给待下载的文件加上可执行(chmod 777 文件)权限 uboot的使用:tftp下载内核,直接用交叉网线连接PC(实际上为虚拟机)和开发板即可 uboot启动之后,输入:printenv 查看 serverip是不是你的虚拟机的ip(终端ifconfig即可查看) ipaddr要和serverip在同一个网段,即ip的前三段必须相同 ethaddr:开发板dm9000的MAC物理地址 netmast:子网掩码:255.255.255.0 serverip,ipaddr,ethaddr,netmast不符合要求的话,可以使用命令设置:(示例) setenv serverip 169.254.209.223 setenv ipaddr 169.254.209.113 setenv netmast 255.255.255.0 setenv ethaddr 00:01:02:03:04:05 saveenv //设置完毕记得保存环境变量 uboot启动内核:uboot版本(2009.08) 条件:uboot的机器码和内核的机器码要一样 uboot部分修改: 机器码: #gedit board/samsung/my2440/my2440.c gd->bd->bi_arch_number = MACH_TYPE_SMDK2440 内核部分:内核版本(2.6.30.4) #gedit arch/arm/mach-s3c2440/mach-smdk2440.c MACHINE_START(SMDK2440, "SMDK2440") #gedit arch/arm/kernel/head.S //在ENTRY(stext)下添加如下代码 ENTRY(stext) mov r0, #0 mov r1, #0x3f0 //上面的MACH_TYPE值1008换成十六进制就是0x3f0 ldr r2, =0x30008000 内核中的nand分区一定要和bootloader中的一致: #gedit arch/arm/plat-s3c24xx/common-smdk.c offsize size uboot : 0x00000000 0x00030000 //192kb param : 0x00030000 0x00040000 //这个环境变量的地址范围配置的CONFIG_ENV_OFFSET一致 kernel: 0x00080000 0x00500000 //5mb root : 0x00580000 0x0c800000 //200mb #gedit uboot/include/cofings/mini2440.h 查看:MTDPART_DEFAULT = " " //默认分区 编译得到内核zImage uImage的制作: 先将u-boot下的tools中的mkimage复制到主机的/usr/local/bin目录下,执行以下命令: mkimage -n 'linux-2.
首先uboot已带有dm9000网卡的驱动,位于drivers/net/下的dm9000x.h、dm9000x.c
machid=16a(mach-smdk2440.c)的内核下输入ifconfig,发现该板卡的内核不支持DM9000,如下图所示:
本文介绍了在Linux内核中配置网络设备驱动程序的方法,包括通过make menuconfig直接配置、通过make s3c2410_deconfig自动配置和通过厂家提供的配置文件进行配置。总结内容应简洁明了,具有概括性。
Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。
本文介绍了Linux内核编译原理和过程,包括如何通过make menuconfig配置内核选项,以及通过make s3c2410_deconfig自动配置内核选项。此外,还介绍了如何通过查看.config文件来了解内核配置选项。最后,还探讨了如何通过修改.config文件来定制内核编译过程,并使用make uImage编译内核。
/*分析DM9000网卡驱动之初始化*/ /*找到DM9000.c 文件路径: linux/drivers/net下 找到模块的入口函数处 */ static int __init dm9000_init(void) { printk(KERN_INFO "%s Ethernet Driver, V%s\n", CARDNAME, DRV_VERSION); return platform_driver_register(&dm9000_driver); } /*很明显DM9000
在程序中调用下面这段代码可以读到DM9000的ID号: #define DM9000_BASE 0x20000300 #define DM9000_DATA_OFFSET 4 static U8 dm9000_ior(int reg) { *(volatile U8 *)DM9000_BASE = reg; return *(volatile U8 *)(DM9000_BASE+DM9000_DATA_OFFSET); } static void rd_dm9000_id(void) { 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)); }
公元1951年5月15日的国会听证上,美国陆军五星上将麦克阿瑟建议把朝鲜战争扩大至中国,布莱德利随后发言:“如果我们把战争扩大到共产党中国,那么我们会被卷入到一场错误的时间,错误的地点同错误的对手打的一场错误的战争中。”
说明: 1、我们这里是使用一个网络协议栈管理两个网口。 为了将DM9000驱动做稳定花了很多时间去研究,专门制作了一个符合CMSIS-Driver驱动规范文件。 2、网络性能。 H7双网口性能: (1)DM9000速度99.7Mbps (2)DM9162速度99.8Mbps F429双网口性能: (1)DM9162速度99.9Mbps (2)DM9000速度75Mbps F407双网口性能: (1)DM9162速度99.8Mbps (2)DM9000速度73.7Mb
原文出自:http://blog.csdn.net/ghostyu/article/details/6908805
Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。
通过wind把SD卡格式化为FAT32模式 sudo fdisk -l //查看分区信息
5)电流或电压驱动型的PHY,若为2线共模电感+自耦变压器形式,自耦变压器放在RJ45侧。
SD0~15: 16位数据线,有CMD引脚决定访问类型 CMD: 命令线,当CMD为高,表示SD 传输的是数据,CMD为低表示传输的是地址 INT: 中断引脚,接在2440的GPF7脚上 IOR#: 读引脚,接在2440的nOE脚上 IOW#: 写引脚,接在2440的nWE脚上 CS#: 片选,放在2440的bank4的片选上面
本篇文章主要讲解如何在STM32F103工程里添加移植LWIP协议,最终完成TCP服务器、TCP客户端的通信测试。 网卡采用的是DM9000,工程代码中,采用STM32的FSMC接口来驱动DM900网卡,DM9000是并口网卡,引脚多,但是速度快,也可以采用其他网卡,SPI协议的、UART协议的等。 比如:ENC28J60。 因为主要是讲LWIP协议栈的移植,所以网卡相关的代码就没有细说(需要准备一个网卡可以正常通信的工程,再移植)。
对于嵌入式系统来说,一般都需要一个bootloader来下载和引导操作系统,常用的bootloader有eboot,uboot以及vivi等,对于windowsce来说最理想的bootloader当然是eboot(我也做了利用uboot下载和引导ce,以后我会介绍)。下面我就把自己开发eboot的过程和大家分享。eboot的流程可以如下图所示:
因为ifconfig是命令,代码位于busybox,不过我们在内核的documentation目录下找到了ifconfig介绍,代码介绍文件位于:
烧写内容 : BootLoader, Linux Kernel, File System;
转载请注明文章地址 http://wiki.100ask.org/Linux_devicetree
啊!秋高气爽,朗朗乾坤,晴天霹雳,星汉灿烂!喝下一碗无相汤,吃完半根游离面,不禁心醉神摇,抹了抹嘴,定了定神,心想道:拥此良辰美景,断断不能虚度光阴!说时迟那时快,关老师给我发来一篇实用短文,给嵌入式征途上的兄弟伙伴们,双手奉上!
大家好,今天给大家分享ubuntu里面连网的问题以及搭建tftp服务器进行文件传送,这里面在配置ubuntu连网的问题,之前看到网友遇到过好多次,而且看网上的教程也没有解决了这个问题,在这里我分享一下我在配置网络的时候,出现了网络连不上网的解决方法。
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813
一路摸爬滚打,时至今日,与心爱的TQ2440相伴已有一年,从当初的一无所知到今天的得心应手,其间经历的种种,实在难以言表。想起第一次在串口打出一个字符的时候,那种心情,简直激动得快要爆了,这里先将我学习ARM中的整个过程简单总结一下,以后再详细的针对每个知识点写写东西。希望对刚接触的朋友有个提示作用,也希望高手不吝赐教,给些学习建议,欢迎拍砖^_^。需要说明的是,这仅仅说是ARM,其间涉及到别的知识也是需要很多时间去学习的,这里我就不列举了。
其中,struct subsys_private包含一个设备链表(struct klist klist_devices)和一个驱动链表( struct klist klist_drivers)
通过前两篇文章的介绍,我们已经把linux内核移植到了tiny210上,但是看到的现象都是通过超级终端来观察的,下面了,我们介绍一下led灯的移植,给大家一个更直观的感受。这篇文章主要的内容如下:
Ubuntu:资料光盘Ubuntu 9.10 连接方式:JZ2440用网线直接连接电脑 要解决的问题
往期周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 1、硬核体验自适应滤波
前面通过学习总线、设备、驱动模型知识后,知道了设备和驱动之间都是通过总线进行绑定而匹配的;然后通过设备树的深入探究,知道了设备树的出现大大增加了驱动的通用性;接着我们一起看了 Linux 的启动流程和设备在内核里一层一层的展开。
今天分享一篇经典Linux协议栈文章,主要讲解Linux网络子系统,看完相信大家对协议栈又会加深不少,不光可以了解协议栈处理流程,方便定位问题,还可以学习一下怎么去设计一个可扩展的子系统,屏蔽不同层次的差异。
nginx有一个master进程和很多个worker进程.master进程的主要目的是读取和执行配置文件,维持worker进程.worker进程真正处理请求.nginx基于事件模型和操作系统来分配worker进程,配置文件中的worker进程数一般配置成CPU的内核数.默认的配置文件名是nginx.conf,目录地址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx
本文介绍了如何移植三星S3C2440A和DM9000网卡的驱动程序到树莓派上。首先介绍了S3C2440A芯片的基本特性和引脚定义,然后详细描述了移植过程,包括驱动程序的编写、编译和测试。最后,总结了本文的结论,即成功移植了S3C2440A和DM9000网卡的驱动程序到树莓派上,并可以通过网络通信进行测试。
1、 网口使用的是DM9161/9162(紧挨着9帧串口座的网口),而不是DM9000。
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=104619 第6章 ThreadX NetXDUO网络协议栈移植到STM32F4
**Markdown**是Aaron Swartz[^AS]跟John Gruber于2004年共同设计的排版语言,是一种轻量级的「标记语言」。
编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3
上面的Flash: *** failed *** 是属于uboot第二阶段函数board_init_r()里的代码, 代码如下所示(位于arch/arm/lib/board.c):
分享几个命令,当我们在看一些开源项目,被里面的很多错综复杂的宏包裹,于是想看下这些定义是怎么被定义的,于是用到了一些命令,很是实用,这节整理下来,分享给大家。 今日讲解两个命令 gcc -dM -E - < /dev/null echo "" | gcc - -E -v 我们知道,GCC版本是非常多,每一版更新出来,都会加入一些新的功能,于是你在编译开源源码的时候,就比较关注这个了。有些开源项目,使用了GCC的新特性,你用旧的GCC有可能会编过,但是在运行时却莫名的出现问题,导致编译出来的东
那么第二个就是我们要找的动态地址,动态地址:如果重启或者重新开始游戏地址失效无法再次修改,我们现在双击第二个,拉下来以后对准数值双击修改即可。
大家好,又见面了,我是你们的朋友全栈君。终于搞定sp_executesql包含输出的多参数的调用,网上竟然没有很好的参考 set @sql = N’select @I_ZSL =sum(I_SL), @I_ZYZ = sum(I_YZ), @I_ZZJ = sum(I_LJZJ), @I_ZJZ = (sum(I_YZ) – sum(I_LJZJ)) from V_GZ_SGZ_GZINFO_TYB where V_DW_DM = @V_DW_DM ‘+dbo.F_GetZCLB_WhereStr(@V_ZCLB_DM) execute sp_executesql @sql,N’@I_ZSL numeric(14,2) out,@I_ZYZ numeric(14,2) out,@I_ZZJ numeric(14,2) out,@I_ZJZ numeric(14,2) out,@V_DW_DM varchar(20)’,@I_ZSL out,@I_ZYZ out,@I_ZZJ out,@I_ZJZ out,@V_DW_DM 注意事项: 1. sp_executesql的头两个参数必须是nvarchar类型,如以上@sql 和N’…’ 2. sql语句有多个参数时,sp_executesql第二个参数的格式
电动化和智能化是当下汽车发展的大趋势,随着新能源车的市场占比越来越高,消费者对纯电动车的固有认知也开始转变,认可程度也越来越高。
磁盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是什么呢?它就是逻辑分区(logical partion),况且逻辑分区没有数量上限制。
今天在进行linux系统相关操作的时候,想格式优一下我的u盘,但是遇到了如下错误。
当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况。
今天分享的内容主要分为四个部分,首先会介绍下严选实时数仓的背景、产生的一些问题。然后是针对这些背景和问题对实时数仓的整体设计和具体的实施方案,接着会介绍下在实时数仓的数据质量方面的工作,最后讲一下实时数仓在严选中的应用场景。
领取专属 10元无门槛券
手把手带您无忧上云