linux
文章平均质量分 66
typhoonzb
这个作者很懒,什么都没留下…
展开
-
uboot在引导linux之前要做的事
启动armlinux,bootloader必须提供下面几步: 1. 设置并初始化ram 2. 初始化一个串口 3. 检测处理器类型 4. 设置内核标记列表 5. 调用内核映像 1. 设置并初始化ram bootloader要找到并初始化系统中所有的ram,内核将这些ram用于可变数据的存储。 2. 初始化一个串口 bootloader应该转载 2009-11-29 17:05:00 · 2041 阅读 · 0 评论 -
嵌入式操作系统uClinux下的网络socket编程
二、嵌入式操作系统uClinux下的网络socket编程 网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用;Socket()函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket:SOCK_STREAM和数据报式Socket:S转载 2009-09-11 14:07:00 · 1403 阅读 · 0 评论 -
有关raw socket的一些知识
众所周知,通过socket编程,我们能够实现机器之间的通信.在TCP/IP协议簇(PF_INET)中,可以建立面向连接的SOCK_STREAM类型的socket,非连接的SOCK_DGRAM类型的socket.事实上,在所有的网络程序中,也是这两种socket用的最为广泛.除此之外,还有一些不常用的socket类型,它们却是在某些网络通信中担当重要的角色.这里要讲的就是这么一种socket,转载 2009-09-11 14:00:00 · 646 阅读 · 0 评论 -
由于serverAdd.sin_addr.s_addr 引发的思考
这两天尽忙着看winsock了,玩过它的人都知道正确的填写IP地址是很重要的一个环节。所谓填写IP地址就是指在SOCKADDR_IN结构体中填写IP地址: struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; 在这里已经定义了 #typedef s转载 2009-09-11 10:43:00 · 3631 阅读 · 1 评论 -
htons()用法
htons() 简述: 将主机的无符号短整形数转换成网络字节顺序。 #include u_short PASCAL FAR htons( u_short hostshort); hostshort:主机字节顺序表达的16位数。 注释: 本函数将一个16位数从主机字节顺序转换成网络字节顺序。 返回值: htons()返回一个网络字节顺序的值。 参见: htonl(), n转载 2009-09-11 10:37:00 · 9111 阅读 · 0 评论 -
INADDR_ANY的用法
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。例如MontiVista Linux中在/usr/include/netinet/in.h定义为:/* Address to accept any incoming messages. */#define INADDR_ANY转载 2009-09-11 10:18:00 · 661 阅读 · 0 评论 -
socket bind函数
0.0.0.0应该是代表了本机所有的IP都绑定,有几个绑几个,你可以在绑定的时候指定IP地址的…… 0.0.0.0代表了告诉OS系统,绑定本机的IP地址,如果有两个IP地址,如同楼上说的,那么OS就会根据外界路由的IP来绑定,如果你非要绑定第二个地址,最好的办法就是取出eth0的第二个IP地址绑定转载 2009-09-11 09:53:00 · 984 阅读 · 1 评论 -
调试跟踪
程序里加打印,输出errno,或者调用perror。不想改程序,就用strace执行程序。 抓包用tcpdump或者ethereal或wireshark。转载 2009-09-11 09:48:00 · 415 阅读 · 0 评论 -
socket(3)
一个典型的TCP端口扫描器,通过用connect函数对服务器进行尝试连接来判断该服务器上的端口是否开放。这个扫描器是多线程的,现在的Winsock编程大多数采用多线程技术,这样可以充分利用带宽,如Netants的5个蚂蚁下载,一些FTP软件的多线程上传,等等!//Source Code In C++Builder5Cpp代码 #pragma hdrstop #i转载 2009-09-10 10:19:00 · 493 阅读 · 0 评论 -
socket 学习笔记
相关文章: socket编程 Socket(二) 为什么有些有些类的方法无法在API手册中找到? 推荐圈子: C++语言 更多相关推荐 1.创建套接字:socket() C代码 /* Create a new socket of type TYPE in domain DOMAIN, using protocol PROT转载 2009-09-10 10:16:00 · 487 阅读 · 0 评论 -
内核同步之自旋锁和信号量
3. 自旋锁Linux内核中最常见的锁是自旋锁。一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁"。如果锁可用,则"锁定"位被设置,而代码继续进入临界区;相反,如果锁被其他进程争用,则代码进入忙循环并重复检查这个锁,直到锁可用为止。这个循环就是自旋锁的"自旋"。自旋锁最多只能被一个可执行的线程持有。如果一个执行线程试图获得一个被争用的自旋锁,那么该线程就会一直进行忙循环-旋转-等待转载 2009-09-06 15:38:00 · 524 阅读 · 0 评论 -
pthread_join
pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。转载 2009-09-11 21:08:00 · 845 阅读 · 0 评论 -
linux下设置线程优先级
在linux下我们可以通过int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);来创建线程,但是如何设置线程的优先级呢?在讨论这个问题的时候,我们先要确定当前线程使用的调度策略,posix提供了int pthread_attr_转载 2009-09-11 21:21:00 · 22459 阅读 · 0 评论 -
NOR FLASH挂载jfss2文件系统
前段时间忙着找工作。项目的事情又拖了好一阵子,今天正好趁着ZTE面试的间隙把挂载JFFS2可写文件系统的事情解决一下,其实挺快的,半天时间理清了思路,实践成功了呵呵具体步骤如下:1.内核配置:根据官网上面的两篇帖子http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:mtdhttp://docs.blackfin.原创 2009-11-02 14:24:00 · 6460 阅读 · 2 评论 -
中断的概念
8.6 程序中断控制方式 8.6.1 中断的概念概念:CPU 暂时停下现行程序的执行,转向为临时发生的事件进行处理,处理完后,再返回执行原程序。中断是一种在发生了一个外部的事件时调用相应的处理程序(或称服务程序)的过程。中断服务程序与中断时CPU正在运行的程序是相互独立的,相互不传递数据。 一. 中断的作用:1.实现主机和外设并行工作2.故障的处理3.实时处理基本概念 二.中断原创 2009-10-25 19:09:00 · 12788 阅读 · 1 评论 -
CPU缓存的工作原理
CPU缓存的工作原理 当CPU要读取一个数据时,首先会从缓存(Cache)中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。 通过优化的的读取机制,可以使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要转载 2009-10-25 15:37:00 · 1905 阅读 · 0 评论 -
计算机删除文件的原理
朋友们从开始学习电脑时起就知道了如何删除文件,而且一些细心的朋友刚学电脑时就留意“Del”和“Shift+Del”删除文件的不同,前者只是将文件删除到回收站中,而后者则可实现所谓的“彻底删除”。这个“彻底删除”到底彻底不彻底呢?看看下面笔者的分析后,你就会知道答案了:一. 常见的“彻底删除”并不彻底要想分析这个问题,我们得从硬盘存储文件的原理说起。大家都知道,一块新硬盘在使用前必须要对其进行分区、转载 2009-10-24 12:13:00 · 8912 阅读 · 3 评论 -
轻松控制 uClinux 嵌入式开发过程
uClinux是目前比较普及的嵌入式Linux版本之一,它的功能很多,并且随着低成本、可运行uClinux的32位CPU的激增,以及uClinux首次成为Linux 2.6内核的一部分,uClinux将更加流行(如图1)。下面讨论一下开发者使用uClinux时如何控制开发过程,以及将会遇到的与普通Linux的不同之处。 图1 uClinux运行在Palm上 应用无内存管转载 2009-10-08 21:06:00 · 602 阅读 · 0 评论 -
linux信号处理(软中断)详细
1. 信号概念 信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入kill –l查看信号列表,或者键入man 7 signal查看更详细的说明。信号的生成来自内核,让内核生成信号的请求来自3个地方:l原创 2009-09-30 10:07:00 · 5134 阅读 · 0 评论 -
Linux内核态和用户态的区别
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,转载 2009-09-30 09:45:00 · 882 阅读 · 0 评论 -
信号量的疑惑
通常我们使用信号量用的都是操作系统的,使用的时候要用操作系统提供的函数创建信号量; 当你要进入你的互斥代码之前,你需要尝试阻塞信号量,如果这个时候信号量已经被阻塞,你的代码就必须就此打住,等待别人释放了你才能使用。使用完了就调用函数释放信号量。当你释放之后,别人被阻塞的任务得以调度之后就能够继续执行了,这就是“唤醒”。当然也有可能用户已经杀掉该任务了 上述的应用情况就有两种原创 2009-09-30 09:37:00 · 691 阅读 · 0 评论 -
linux与uclinux 内存管理(1)
应该说uClinux同标准Linux的最大区别就在于内存管理,同时也由于uClinux的内存管理引发了一些标准Linux所不会出现的问题。本文将把uClinux内存管理同标准Linux的那内存管理部分进行比较分析。标准Linux使用的虚拟存储器技术标准Linux使用虚拟存储器技术,这种技术用于提供比计算机系统中实际使用的物理内存大得多的内存空间。使用者将感觉到好像程序可以使用非常大的内存空间,从而转载 2009-09-28 19:36:00 · 639 阅读 · 0 评论 -
linux多线程同步
进行多线程编程,最头疼的就是那些共享的数据。因为你无法知道哪个线程会在哪个时候对它进行操作,你也无法得知那个线程会先运行,哪个线程会后运行。下面介绍一些技术,通过他们,你会合理安排你的线程之间对资源的竞争。l 互斥体Mutexl 信号灯Semophorel 条件变量Conditions先说一下互斥量。什么时候会用上互斥量了?比如你转载 2009-09-11 21:30:00 · 1030 阅读 · 0 评论 -
__init的含义
__init仅仅是个函数或者变量的属性,标识这个函数或者变脸在init段内,此段定义在arch/$(arm)/kernel,一般都是ld.S -叫做链接脚本(我记得不是特别清楚了),当内核初始化完毕后,这个段会被释放,以节约内存。转载 2009-09-06 14:32:00 · 676 阅读 · 0 评论 -
File_operations结构体
File_operations结构体 file_operation就是把系统调用和驱动程序关联起来的关键数据结构。这个结构的每一个成员都对应着一个系统调用。读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了Linux设备驱动程序的工作。 在系统内部,I/O设备的存取操作通过特定的入口点来进行,而这组特定的入口点恰恰是由设备驱动程序提供的。转载 2009-09-05 10:54:00 · 309 阅读 · 0 评论 -
linux线程同步之互斥锁——linux的关键区域
在windows中,为了让多个线程达到同步的目的,在对于全局变量等大家都要用的资源的使用上,通常得保证同时只能由一个线程在用,一个线程没有宣布对它的释放之前,不能够给其他线程使用这个变量。在windows里,我们可以用时EnterCriticalSection()和LeaveCriticalSection()函数.那么在linux里,有什么类似的机制呢? 这里介绍互斥锁。1.申请一转载 2009-09-06 21:07:00 · 1562 阅读 · 1 评论 -
linux 图形界面编程基础
这篇文章是转载的:很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限可能存在错误,请高手指正.一,linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的.图 形界面并不是linu原创 2009-07-25 13:40:00 · 704 阅读 · 0 评论 -
linux环境变量
http://fangfang0717.blog.51cto.com/236466/48703http://fangfang0717.blog.51cto.com/236466/48704转载 2009-07-25 13:33:00 · 305 阅读 · 0 评论 -
Linux shell脚本编写基础
在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入./smartzip就能运行脚本了。。每行命令开头处不用就空格也行。。第1部分. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh 符号#!用来告诉系统它后面的参数是转载 2009-07-25 13:22:00 · 587 阅读 · 0 评论 -
Linux Shell简介
http://www.linuxsir.org/main/?q=node/135转载 2009-07-24 15:55:00 · 320 阅读 · 0 评论 -
linux mount详解
在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。 这个操作可以通过“计算机管理”中的“磁盘管理”来进行。 第三方软件,如磁盘分区管理软件、虚拟磁盘软件等,通常也附带挂载功能。 在linux操作系统中, 挂载是一个非常重要的功能,使用非常频繁。 它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 (这个目录可以不为空,转载 2009-07-23 21:12:00 · 655 阅读 · 0 评论 -
linux下挂载硬盘
linux下挂载硬盘 http://cache.baidu.com/c?m=9d78d513d99d1af31fa7837f7d01a6120e2580743da7c76574c3e54884125d56316cf4ba57356605c4b57c7070a85e2d9be47132690c7af1dd8a9f4baea68f7871d57223706bd91c50c419d89a1b7adc转载 2009-07-23 21:07:00 · 849 阅读 · 0 评论 -
对linux分区的几点认识
对Windows用户来说,操作系统必须装在同一分区里,它是商业软件!所以你没有选择的余地!对Red Hat Linux来说,你有了较大的选择余地,你可以把系统文件分几个区来装(必须要说明载入点),也可以就装在同一个分区中(载入点是“/”)。下面我们看看可以创建哪些分区(仅列常用几种)。/boot分区,它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的,因为目前大多数的转载 2009-07-23 20:57:00 · 395 阅读 · 0 评论 -
busybox
busybox BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。 1、Bu转载 2009-07-23 15:11:00 · 764 阅读 · 0 评论 -
uClinux文件系统及桌面linux的分区
如果你使用的系统存在大量的文件读写,那么必须考虑文件系统对系统性能的影响。 传统的romfs文件系统是一种简单的、紧凑的、只读的文件系统,不支持动态擦写保存,按顺序存放数据,因而支持应用程序以XIP方式运行,在系统运行时,节省RAM空间。uClinux系统通常采用Romfs文件系统。 从整体上讲,只读的文件系统Cramfs和Romfs,在文件读的速度上要比可读写的文件系统J转载 2009-07-23 20:35:00 · 130 阅读 · 0 评论 -
EF561 uClinux内存查看
uClinux启动后:(不存在虚拟内存,即虚拟内存即物理内存) root:~> busybox free total used free shared buffers Mem: 54332 16184 38148 0原创 2009-07-23 20:04:00 · 563 阅读 · 0 评论 -
uClinux 启动过程详细分析
http://www.ibm.com/developerworks/cn/linux/l-cn-uclinuxboot/index.html原创 2009-07-25 15:29:00 · 370 阅读 · 0 评论 -
GTK+图形界面编程
http://book.csdn.net/bookfiles/645/10064520526.shtml转载 2009-07-25 13:59:00 · 494 阅读 · 0 评论 -
linux设备驱动中的阻塞与非阻塞I/O
在linux驱动程序中,可以使用等待队列wait queue来实现阻塞进程的唤醒。wait queue很早就作为一个基本的功能单位出现在linux内核里了,它以队列作为基础数据结构,与进程调度机制紧密结合,能够用于实现内核中的异步事件通知机制。等待队列可以用来同步对系统资源的访问。转载 2009-09-06 20:20:00 · 440 阅读 · 0 评论 -
信号量
信号量(semaphore)是用于保护临界区的一种常用方法,它的使用方式和自旋锁类似。两只都只有得到信号量的进程才能执行临界区代码。但是,两者不同的地方是,当获取不到信号量时,进程不会原地打转而是进入休眠等待状态。 linux自旋锁和信号量所采用的“获取锁--访问临界区--释放锁”的方式存在于几乎所有的多任务操作系统中。 信号量所保护的临界区可包含可能引起阻塞的代码,而自旋锁则绝对原创 2009-09-06 19:22:00 · 788 阅读 · 0 评论