- 博客(85)
- 资源 (5)
- 收藏
- 关注
转载 Linux线程实现机制分析
<br /> 内容: <br /><br /> ·基础知识:线程和进程 <br /><br /> ·Linux 2.4内核中的轻量进程实现 <br /><br /> ·LinuxThread的线程机制 <br /><br /> ·其他的线程实现机制 <br /><br /> ·参考资料 <br /><br /> ·关于作者 <br /><br /> 自从多线程编程的概念出现在 Linux 中以来,Linux多线应用的发展总是与两个问题
2010-06-25 18:22:00 184
转载 内存基础知识汇总指南
什么是内存序论今天,不管你的计算机有多少内存,内存总像是不太够用。不久前,个人计算机能够拥有超过1或2MB的内存还是闻所未闻的,而今天,大多数的系统需要64MB以执行基本的应用程式,且需要至少256MB或更多内存才能流畅地执行图像动画及多媒体应用等其他效能。想要理解过去二十年内存科技的转变,可以参考1981年比尔.盖兹在提到计算机内存时所说的: “640K(大约
2011-11-24 13:49:44 1687
转载 注意fread和fwrite的参数顺序
首先这个问题捆扰了我好长一段时间,但每次都很模糊的看下参数的区别,今天终于弄懂了这个区别 C标准库提供的文件函数fread和fwrite的原型为: #include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const
2011-10-24 18:12:11 581 1
转载 ucgui的字库
1、在UCGUI中有两种类型字体, 一种是等宽字体(Monospaced Font),即字体当中所有字都是同一宽度,它在UCGUI中的相应结构体是GUI_FONT_MONO, 一种是均衡字体(Proportional font), 这种字体中的字都有自己独立的宽度, 字体内的每个
2011-08-15 18:49:12 521
转载 S3C2440 - LCD驱动原理及代码分析(转自百度空间)
1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都
2011-08-11 16:46:17 246
转载 ARM9硬件接口学习专题
ARM9硬件接口学习专题http://blog.chinaunix.net/u2/60011/showart_471534.html/root/u-boot-1.1.4/board/smdk2410.c代码:#define FCLK_SPEED 1#if FCLK_SPEED==0 /* Fout = 203MHz, F
2011-06-23 14:08:00 277
转载 armcc和armlink
<br />armlink<br />在介绍armlink的使用方法之前,先介绍要涉及到的一些术语。<br />映像文件(image):是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是ELF(Executable and linking format)格式的。<br />段(Section):描述映像文件的代码或数据块。<br />—RO:是Read-only的简写形式。<br />—RW:是Read-write.的简写形式。<br />—ZI:是Zero-initialize
2011-05-28 09:50:00 466
原创 常用的宏
<br />1、定义个带参数的宏,使两个参数的值交换,并写出程序,输入两个数作为调用宏时的参数,输出交换后的两个 <br />#define T(a,b) {int c;c=a;a=b;b=c;} <br />2、写出一个宏定义MYALPHA(c),用以判断c是否为字母字符。若是,结果为1,否则结果为0.<br />#define MYALPHA(c) (c>='a'&&c<='z'||c>='A'&& c<='Z')?1:0 <br />----------------------------------
2011-05-17 08:53:00 218
原创 三谈内存对齐
<br />内存对齐(三谈) 收藏 <br /> 第一谈<br />在最近的项目中,我们涉及到了“内存对齐”技术。对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该
2011-03-18 13:50:00 201
转载 C语言宏定义技巧(常用宏定义)
<br />view plaincopy to clipboardprint?<br />1,防止一个头文件被重复包含 <br /> <br />#ifndef COMDEF_H <br /> <br />#define COMDEF_H <br /> <br /> //头文件内容 <br /> <br />#endif <br /> <br />2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 <br /> <br />typ
2011-03-18 13:41:00 184
转载 函数指针的用法
什么是函数指针?<br />函数指针指向的是特殊的数据类型,函数的类型是由其返回的数据类型和其参数列表共同决定的,而函数的名称则不是其类型的一部分。<br /> <br />一个具体函数的名字,如果后面不跟调用符号(即括号),则该名字就是该函数的指针。<br /> <br />函数指针的声明方法<br />// 定义函数指针pf<br />int (*pf)(constint&, constint&); (
2010-09-12 13:16:00 214
转载 C指针应用常见缪误
<br />前言:<br /> 一、文章中所说的C指的是ANSI C,是由ANSI/ISO 9899-1990[ANSI 90]进行定义并由[KERN 89]进行描述的。<br /> 所有代码的执行环境如下:<br /> 操作系统:中文版WindowsXP Professional+SP2<br /> 编辑器:VC6或VC7<br /> 文章中所举的例子在上述环境中编译通过,我也会尽量把问题表述清楚,但由于是第一次写东西,再加上本人也是一个初学者水平有限,文中难免有不清或错误的地方
2010-09-02 11:34:00 174
转载 C语言内存管理
<br />程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 <br />7.1内存分配方式 <br />内存分配方式有三种: <br />(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 <br />(2) 在栈上创建。
2010-09-02 10:43:00 162
转载 指针悬挂
<br />下面我们再通过浅显易懂一个小例子来说明什么情况下容易出现指针悬挂。<br /> #include "stdafx.h"<br /> #include "iostream.h"<br /> void main()<br /> {<br /> int *p1 = new int(8); //在内存中分配一个整型数据的空间,并将首地址给P1<br /> int *p2 = new int(9); //在内存中再
2010-08-27 17:55:00 370 2
转载 linux内核input子系统解析
Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。<br /> 因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。<br />一、input输入子系统框架<br /> 下图是input输入子系统框架,输入子系统由输入子系统核心
2010-08-27 16:10:00 266
转载 嵌入式Linux之我行——S3C2440上看门狗(Watchdog)驱动开发实例讲解
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn<br />一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2<br />二、相关概念<br />1、平台设备及平台设备驱动:<br /
2010-08-25 12:11:00 834
转载 总线
<br />总线<br />总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。<br />在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 <linux/device.h> : <br />struct bus_type {<br /> const char * name;/*总线类型名称*/<br /> str
2010-08-25 12:10:00 256
转载 介绍struct bus_type非常好的
<br />总线<br />总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。<br />在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 <linux/device.h> : <br />struct bus_type {<br /> const char * name;/*总线类型名称*/<br /> str
2010-08-23 16:26:00 1308
转载 C语言中可变参数的用法
<br />我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() <br />这个函数,它的定义是这样的: <br />int printf( const char* format, ...); <br />它除了有一个参数format固定以外,后面跟的参数的个数和类型是 <br />可变的,例如我们可以有以下不同的调用方法: <br />printf("%d",i); <br />printf("%s",s); <br />printf("the numbe
2010-08-22 19:51:00 190
转载 Linux VSFTPD乱码问题
<br />Linux VSFTPD乱码问题<br />最近项目在客户那边搭建FTP,是为了能够下载程序生成的<br />文件,但是文件生成之后,文件名有汉字,乱码的问题出来了。<br />环境是:<br />Redhat Linux AS4<br />系统编码ja_JP.UTF-8<br />Java程序是在Windows下编译并且打包之后放到Linux server上的,<br />程序运行之后生成的文件名在telnet下看全部都是乱码,<br />修改当前用户的LC_A
2010-08-22 12:18:00 1410
转载 Linux实用技巧篇-Redhat 5 配置Samba服务器
<br /> 为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两中不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大的方便,本章将以Redhat5为例,简要介绍如何在Linux操作系统上搭建Samba服务器,本章只对Samba的安装及配置过程进行简要讲解。<br />1. 服务查询<br /> 默认情况下,Linux系统在默认安装中已经安装了Sa
2010-08-21 19:57:00 246
转载 关于环链表的处理方法
<br />题目:怎么判断链表是否有环!(环有6形和0形) <br />回答:定义两个指针,同时指向头,然后一个指针向后移一步,一个移二步,经过n次后,如果2个指针又指向同一个节点,则有环<br />1、如何判断一个链表是不是这类链表?<br /> 2、如果链表为存在环,如果找到环的入口点?<br />解答:<br />一、判断链表是否存在环,办法为:<br />设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环
2010-08-21 19:42:00 164
转载 笔试常见链表题
view plaincopy to clipboardprint?#include <iostream> using namespace std; struct Node { int data; Node* next; }; //检测给定链表是否有环 bool CheckList(const Node* MyNode ) { if (MyNode == NULL) { return false; } const No
2010-08-18 10:23:00 172
转载 嵌入式面试
16那种排序方法最快? (华为面试题)17写出两个排序算法,问哪个好?(威盛)18编一个简单的求n!的程序 (Infineon笔试试题)19用一种编程语言写n!的算法(威盛VIA 2003.11.06 上海笔试试题)20用C语言写一个递归算法求N!;(华为面试题)21给一个C的函数,关于字符串和数组,找出错误;(华为面试题)22防火墙是怎么实现的? (华为面试题)23你对哪方面编程熟悉?(华为面试题)24冒泡排序的原理(新太硬件面题)25操作系统的功能(新太硬件面题)
2010-08-16 19:37:00 294
转载 使用automake 生成 Makefile 文件
<br />在 Unix 上写程式的人大概都碰过 Makefile,尤其是用 C 来开发程式的 <br />人。用 make 来开发和编译程式的确很方便,可是要写出一个 Makefile <br />就不简单了。偏偏介绍 Makefile 的文件不多,GNU Make 那份印出来要几 <br />百页的文件,光看完 Overview 就快阵亡了,难怪许多人闻 Unix 色变。 <br />本文将介绍如何利用 GNU Autoconf 及 Automake 这两套软体来协助我们 <br />『自动』产生 Ma
2010-08-16 19:22:00 178
转载 u-boot之start.S小结
<br />1、关于加载地址和运行地址<br />加载地址就是代码在FLASH上存储的地址,也叫加载域,或者存储地址,或者LMA(load address),就bin文件的存储地址<br />运行地址就是代码在RAM上运行时地址,也叫运行时域,或者VMA(virtual address),若在NOR flash中运行,这个运行应该和加载地址是一样的.<br />运行地址在连接文件u-boot.lds中指定,这个文件其实同时指定了加载地址,那就是默认和运行地址一样,除非用AT命令显式指定加载地址<br />另
2010-08-16 18:53:00 269
转载 struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head i_sb_list;struct list_head i_dentry;unsigned long
2010-08-16 14:31:00 1204
转载 群集技术:三款主流服务器集群软件
<br />1、ROSE HA 服务器集群软件<br /><br /> 在双机热备的架构中,除了要考虑切换时间外,要根据每个系统的作业环境,包括网路系统是单网或是双网,数据库的安装和作业内容及用户端的设备是经由广域网路、区域网路接入不同用户有不同的需求,而要求有不同的切换模式,所以选择不同的切换模式,可以使用户端的改变达到最少的程度。<br /> ROSE HA根据不同的行业及各行业不同的需求设计多种备援模式以弹性的调适用户的最佳组合及选择。<br /><br />ROSE HA系统运作方式
2010-08-15 13:18:00 374
转载 群集技术:三款主流服务器集群软件
<br />1、ROSE HA 服务器集群软件<br /><br /> 在双机热备的架构中,除了要考虑切换时间外,要根据每个系统的作业环境,包括网路系统是单网或是双网,数据库的安装和作业内容及用户端的设备是经由广域网路、区域网路接入不同用户有不同的需求,而要求有不同的切换模式,所以选择不同的切换模式,可以使用户端的改变达到最少的程度。<br /> ROSE HA根据不同的行业及各行业不同的需求设计多种备援模式以弹性的调适用户的最佳组合及选择。<br /><br />ROSE HA系统运作方式
2010-08-15 13:06:00 1259
转载 深入讲解服务器集群技术
<br />在发展初期,一路处理器便可为一台服务器及其所有应用提供动力。接着就发展到了多处理时代,这时两路或多路处理器共享一个存储池,并能处理更多更大的应用。然后出现了服务器网络,该网络中的每台服务器都专门处理不同的应用集。现在,发展到了服务器集群,两台或多台服务器像一台服务器一样工作,提供更高的可用性和性能,这已经远远超出了您的想像。应用可从一台服务器转移到另一台服务器,或同时运行在若干台服务器上――所有这一切对用户都是透明的。 <br /><br /> 集群并不是新事物,但在软件和硬件
2010-08-15 12:59:00 244
转载 linux ulimit的用法
文章分类:操作系统1,说明:<br />ulimit用于shell启动进程所占用的资源.<br />2,类别:<br />shell内建命令<br />3,语法格式:<br />ulimit [-acdfHlmnpsStvw] [size]<br />4,参数介绍:<br />-H 设置硬件资源限制.<br />-S 设置软件资源限制.<br />-a 显示当前所有的资源限制.<br />-c size:设置core文件的最大值.单位:blocks<br />-d
2010-08-14 16:22:00 233
转载 POSIX信号量和SYSTEM V信号量(2)
<br />POSIX信号量<br />与POSIX信号量比较System V信号量潜在的学习曲线要高得多,当阅读完这个部分并和上面System V的部分对比,你就会更加的这么认为。<br />首先,POSIX使用简单的语义去创建、初始化和对信号量进行操作。它们提供了一个有效的方式来处理进程间通讯。POSIX有两种类型的信号量,有名信号量和无名信号量。<br />有名信号量<br />如果你看man手册,你将会看到一个有名信号量像systemv信号量一样由一个名字标识,并且类似的这个
2010-08-14 15:58:00 1883
转载 信号量
<br />信号量分有名和无名信号量。它们的区别和管道及命名管道的区别类似。有名信号量要求创建一个文件,而无名信号量则直接保存在内存中。<br /><br />一,Posix信号量<br />Posex信号量接口总结(见下图):<br />上面一行是有名信号量,可于fifo相类比,其值保存在文件中,可用于进程和线程同步;<br />下面一行是无名信号量,可与pipe相类比,其值保存在内存中,可用于进程和线程同步;<br />中间部分,是两者的公用接口。<br /><br />sem_
2010-08-14 15:54:00 398
转载 ssh服务配置
[root@sample ~]# vi /etc/ssh/sshd_config ← 用vi打开SSH的配置文件#Port 22 ← 找到此行将行头“#”删除,再将行末的“22”改成其他端口,默认22不安全#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接Protocol 2 ← 修改后变为此状态,仅使用SSH2#ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024ServerKeyBits 1024 ← 修
2010-08-14 15:09:00 355
转载 内核驱动开发笔记
<br />2.6内核驱动i注册设备号要用:<br />(1)如果主设备号事先知道,要用:<br />int register_chrdev_region( dev_t first, unsigned int count, char *name );<br />(2)如果主设备号为0,则要用动态分配:<br />int alloc_chrdev_region( dev_t *dev, unsigned int firstminor,<br /> unsigned i
2010-08-14 11:23:00 171
转载 求文件大小的方法
<br />在我们学习生活中经常会遇到问题和困难,就比如说我们在学习Linux时,比如怎样Linux获取文件大小的方法。前几天在工作中需要写一段代码,获取一些视频文件的大小,心想:这还不简单吗?直接用标准C的文件操作函数就OK了。于是写了下面的一段代码来实现:<br /> unsigned long get_file_size(const char *filename) <br /> { <br /> unsigned long size; <br /> FILE* fp = fo
2010-08-14 11:13:00 357
原创 arm linux kernel 从入口到start_kernel 的代码分析
<br />摘自:http://www.chinaunix.net/jh/4/1021226.html<br /> <br />最近研究了一下arm linux的入口部分的代码, code不是太多,所以写了个笔记,详细的分析了每一条语句. <br /><br />大家看看, 交流一下. <br /><br /><br />下面使正文. 由于内容比较多,分几层楼发吧 <br /><br />______________________________________________________
2010-08-14 10:06:00 152
原创 内核char设备的注册
<br />内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下:<br /><br /> static struct char_device_struct {<br /> struct char_device_struct *next; // 指向散列冲突链表中的下一个元素的指针<br /> unsigned int major;
2010-08-14 09:59:00 167
原创 利用arm 汇编实现strcpy函数
<br />首先是arm汇编代码:p1.s文件:<br />.global strcopy<br />strcopy:<br /> ldrb r2,[r1],#1<br /> strb r2,[r0],#1<br /> cmp r2,#0<br /> bne strcopy<br /> mov pc,lr<br /><br />下面是c文件:p2.c<br /> #include <stdio.h><br />extern
2010-08-11 19:51:00 807
转载 ldr和adr在使用标号表达式作为操作数的区别
<br /> ARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。<br /> ldr r0, _start<br /> adr r0, _start<br /> ldr r0, =_start<br />_start:<br /> b _start<br /> <br />编译的时候设置 RO 为 0x30000000,下面是反汇编的结果:<b
2010-08-11 15:14:00 294
C语言精彩100例。。。。。。。。。。。。。。。。。。。。。。。。。。。
2010-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人