嵌入式Linux中文站

Linux编程之select

阅读(165)

select系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 select 机制的优势 为什么会出现select模型? 先看一下下面的这句代码: int iResult = recv ( s , buffer, 1024 ); 这是用来接收数据的,在默认的阻塞模式下的套接字里,recv会阻塞在那里,直到套接字连接上有数据可读,把数据读到buffer里后recv函数才会返回,不然就会一直阻塞在那里。在单线程的程序里出现这种情况会导致主线程(单线程程序里只有一个默认

Linux编程之UDP SOCKET全攻略

阅读(185)

这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到。尽可能做到,读了一篇文章之后,大家对udp socket有一个比较全面的认识。本文分为两个专题,第一个是常用的upd socket框架,第二个是一些udp socket并不常用但又相当重要的知识点。 一、基本的udp socket编程 1. UDP编程框架 要使用UDP协议进行程序开发,我们必须首先得理解什么是什么是UDP?这里简单概括一下。 UDP(us

理解Linux的平均负载和性能监控

阅读(206)

在本文中,我们将解释 Linux 系统中最关键的管理任务之一关于系统 / CPU 的负载(load)和平均负载(Load average)的性能监控。 首先来看所有的类 UNIX 系统中两个重要的表述: 系统负载 / CPU 负载 衡量 Linux 系统的 CPU 过载或利用率低的指标,即处于运算状态或等待状态

Embeded linux之probe

阅读(231)

一、基于linux-3.18.20、mac驱动 二、启动时机: 所谓的probe,是指在Linux内核中,如果存在相同名称的device和device_driver,内核就会执行device_driver中的probe回调函数,而该函数就是所有driver的入口,可以执行诸如硬件设备初始化、字符设备注册、设备文件操作ops注册等动作(remove是它的反操作,发生在device或者device_driver任何一方从内核注销时。 将struct device类型的变量注册到内核中时自动触发(device_

Embeded linux之ipv6

阅读(185)

一、内核支持配置: [*] Networking support --- Networking options --- * The IPv6 protocol --- [*] IPv6: Router Preference (RFC 4191) support //在多路由的网络中,允许系统能够更有效地计算出该使用哪一个 [*] IPv6: Route Information (RFC 4191) support //处理路由信息的实验性特性启用或禁用 [ ] IPv6: Enable RFC 4429

Embeded linux之网卡驱动

阅读(174)

一、配置菜单 Device Drivers [*] Network device support --- 网络设备驱动、网卡驱动 Bonding driver support 功能:多网卡绑定 具体操作为:将多个以太网通道绑定为一个,也就是两块网卡具有相同的IP地址并且聚合成一个逻辑链路工作,可以用来实现负载均衡或硬件冗余 Dummy net driver support 功能:哑接口网络 使用环境:使用SLIP或PPP传输协议(如ADSL用户)的需要它 具体操作:设置一个虚拟网络。虚拟网络(dummy

Embeded linux之MMC驱动

阅读(112)

一、注册平台设备 platform_device_register(usr_mci_device); 二、填写平台设备结构体 static struct platform_device usr_mci_device= { .name = xxx, .id = 0, .dev = { .release = usr_mci_platdev_release, .dma_mask = usr_mmc_dmamask, .coherent_dma_mask = DMA_BIT_MASK(32), }, .num_r

Embeded linux之地址映射

阅读(150)

一、板级文件 通常会由MACHINE_START到板级文件 MACHINE_START(Chipname, Chipname) .atag_offset = 0x100, .map_io = Chipname_map_io, .init_early = Chipname_init_early, .init_irq = Chipname_gic_init_irq, .handle_irq = gic_handle_irq, .timer = Chipname_sys_timer, .init_machine