2009年3月31日星期二

getline 函数举例

#include
#include
#include
#include
#include
#include
int main(void)
{
char * line = NULL;
size_t len = 0;
ssize_t read;
printf("here!\n");
while ((read = getline(&line, &len, stdin)) != -1) {
printf("here1!\n");
printf("Retrieved line of length %zu :\n", read);
printf("获取到的字符串是%s\n", line);
printf("len是%d\n", len);
}
if (line)
free(line);
return EXIT_SUCCESS;
}




结果:
here!
mynameisbvcom
here1!
Retrieved line of length 14 :
获取到的字符串是mynameisbvcom

len是120

2009年3月20日星期五

ADF4360---VCO驱动编写

ADF4360特点:ADF4360-8是集成的整数N合成器和压控振荡器(VCO)。ADF4360-8的中心频率由外部电感设置。它允许的频率范围从65MHz400MHz。芯片寄存器通过三线接口控制。设置的工作电源电压的范围是3.0V3.6V,当不使用时可工作于低功耗模式。

  1. 集成了电压控制振荡器(VCO)的宽带时钟合成器,如果和外部环路共同使用来滤除外部参考频率,可以确保分数N和整数N锁相环(PLL)频率合成器的执行。

  2. 其输出频率在1850 MHz 2170 MH之间。

  3. 三线制串行接口

  4. 电压支持3.0 V to 3.6 V

  5. 1.8V逻辑兼容性

  6. 模拟和数字锁定检测

ADF4350应用:
无线基础设施(WCDMATD-SCDMAWiMaxGSMPCSDCSDECT
测试设备 时钟生成
无线LANsCATV设备

VCO:压控振荡器,射频电路的重要组成部分。

RF,设置时钟频率


输出2G时钟代码:

#define TIME 1

#define CLOCK 33

#define DATA 46

#define LE 36


NEXUS_Error rc;


NEXUS_GpioHandle pin;


NEXUS_GpioSettings gpioSettings;


BKNI_EventHandle event;


NEXUS_PlatformSettings platformSettings;


/****************************************************/


/*buf是向寄存器中写入的数据*/


/*len 位长度*/


/****************************************************/


static void


bvcom_vco_write_bit(int v)


{


int b = 0;


int j = 0;




/* prepare enter env */


set_output_gpio(CLOCK, 0);


set_output_gpio(LE,0);


vco_nap();




/* send 24 bits */


for(j = 23; j >= 0; j --){


b = v & (1 <<>


write_bit(b);


printf("\n\n\nthe %d time\n\n\n",j);


}




set_output_gpio(LE,1);


vco_nap(); /*延迟50ns*/


/* end for loop_times */


}




write_bit(b)


{


set_output_gpio(DATA,b);/*set the data*/


printf("bit is 0x%x\n",b);


vco_nap();


set_output_gpio(CLOCK,1);


vco_nap();


set_output_gpio(CLOCK,0);




}






/**************************************************/


/*延迟程序*/


void vco_nap()


{


usleep(TIME);


printf("this is a dalay\n ");


}




/*************************************************/


/*设置gpio*/


/************************************************/


set_output_gpio(int pin_num, int pin_value)


{




gpioSettings.value = pin_value;


pin = NEXUS_Gpio_Open(NEXUS_GpioType_eStandard, pin_num, &gpioSettings);


NEXUS_Gpio_Close(pin);


return(0);


}




main()


{


NEXUS_Platform_GetDefaultSettings(&platformSettings);


platformSettings.openFrontend = false;


NEXUS_Platform_Init(&platformSettings);


BKNI_CreateEvent(&event);




NEXUS_Gpio_GetDefaultSettings(NEXUS_GpioType_eStandard, &gpioSettings);


gpioSettings.mode = NEXUS_GpioMode_eOutputPushPull;


gpioSettings.interruptMode = NEXUS_GpioInterrupt_eDisabled;




/*unsigned char command = 0x55;*/


/* command <<= 5;*/


/* unsigned char *b = 0xaa;*/


set_output_gpio(LE,1);


set_output_gpio(CLOCK,0);


/* while(1){*/


usleep(100);


bvcom_vco_write_bit(0xC9);/*R*/


printf("\n\n**1**\n\n");


usleep(100);


bvcom_vco_write_bit(0x8);/*control*/


printf("\n\n**2**\n\n");


usleep(100);


bvcom_vco_write_bit(0x4E202);/*N*/


printf("\n\n***************starting******************\n\n");


/* }*/




NEXUS_Platform_Uninit();




printf("\n\nmain funcion start\n\n\n");


}








2009年1月12日星期一

Nmon 工具使用说明

Nmon 工具使用说明
Nmon 工具是 IBM 提供的免费的监控 AIX 系统与 Linux 系统资源的工具。该工具可将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用 excel 分析工具进行数据的统计分析,非常利用 UNIX 或者 Linux 系统的性能数据分析。Nmon 工具使用起来非常简单,下面将分步骤介绍如何使用该工具。

一、安装 nmon
首先我们在 IBM 的官方网站上下载 nmon 工具,下载时需注意要下载对应的系统版本。我们这里以 debian31 为例,下载的是 nmon_x86_11f.zip 版本,该版本支持 ubuntu。下载后解压,改名为 nmon 并上传到 Linux 中。在 Linux 的终端中输入 ls 可以看到:
slg@slg-desktop:~/桌面/GVS项目/nmon$ ls
nmon_x86_debian31 nmon_x86_knoppix5 nmon_x86_rhel3 nmon_x86_sles10
nmon_x86_fedora5 nmon_x86_rhel2 nmon_x86_rhel4 nmon_x86_sles9

为了能够正常的使用 nmon 工具,我们需要修改相关文件的权限。我们这里所使用的 Linux 系统是 ubuntu,所以,我们仅修改”nmon_x86_debian31”文件
的权限即可。为了方便,直接改为 777,命令如下:chmod 777 nmon_x86_debian31修改完成后,我们就完成了 nmon 工具的安装,接下来介绍一下该工具的使用。

二、使用 nmon
nmon 工具使用非常简单。首先我们启动该工具,在 nmon 目录下,输入 ./nmon_x86_debian31 打开界面,根据提示信息即可进行操作,
┌nmon─11f─────────────────────Hostname=slg-desktop──Refresh= 2secs ───10:12.08──────────────────────────────────────────────┐
│ │
│ ------------------------------ For help type H or ... │
│ # # # # #### # # nmon -? - hint │
│ ## # ## ## # # ## # nmon -h - full │
│ # # # # ## # # # # # # │
│ # # # # # # # # # # To start the same way every time │
│ # ## # # # # # ## set the NMON ksh variable │
│ # # # # #### # # │
│ ------------------------------ │
│ │
│ Use these keys to toggle statistics on/off: │
│ c = CPU l = CPU Long-term - = Faster screen updates │
│ m = Memory j = Filesystems + = Slower screen updates │
│ d = Disks n = Network V = Virtual Memory │
│ r = Resource N = NFS v = Verbose hints │
│ k = kernel t = Top-processes . = only busy disks/procs │
│ h = more options q = Quit │
│───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│

如输入c显示cpu信息;
CPU Utilisation ──────────────────────────────────────────────────────────────────────────────────────────────────────────│
│ +-------------------------------------------------+ │
│CPU User% Sys% Wait% Idle|0 |25 |50 |75 100| │
│ | Please wait gathering data │
│ +-------------------------------------------------+ │
│──────────────────────────────────────────────────────────────────────────────────────────


三、输出文件


上面所讲的只是在服务器监控,我们真正需要的是如何收集这些数据并处理分析它们。nmon 提供了一个 nmon_analyser 的分析工具,可利用 excel 进行统计结果的分析。在测试的时候,我们可使用下列命令进行数据的输出:
./ nmon_x86_debian31 –fT –s 5 –c 5
上面命令的含义是,-f 输出文件,-T 输出最耗资源的进程,-s 收集数据的时间间隔,-c 收集次数。比如,我们测试场景需要执行 20 分钟,那么我们需要每隔 10 秒监控 Linux系统资源就可以写成:
./ nmon_x86_debian31 –fT –s 10 –c 120
120 是次数,也就是 20 分钟/10 秒=120 次。完成后会在当前目录生成一个.nmon 的文
件。如图:
slg@slg-desktop:~/桌面/GVS项目/nmon$ ls
nmon_x86_debian31 nmon_x86_knoppix5 nmon_x86_rhel3 nmon_x86_sles10 slg-desktop_090113_1024.nmon
nmon_x86_fedora5 nmon_x86_rhel2 nmon_x86_rhel4 nmon_x86_sles9
nmon 输出文件的命名方式是服务器名_日期时间.nmon,我们在测试结束后,可到相应的目录下提取这些文件。


四、分析数据

打开nmon analyser v334
设置宏的安全级别是低 ,之后点击 Analyser NMON data 按钮 输入文件 保存成excel格式即可。



2009年1月6日星期二

Flash存储芯片的工作原理简介(转)

Flash芯片并不是像光盘那样把信息刻上去的。为了更加清楚地说明,我首先让你知道计算机的 信息是怎样储存的。计算机用的是二进制,也就是0与1。在二进制中,0与1可以组成任何数。而电脑的器件都有两种状态,可以表示0与1。比如三极管的断电 与通电,磁性物质的已被磁化与未被磁化,物质平面的凹与凸,都可以表示0与1。硬盘就是采用磁性物质记录信息的,磁盘上的磁性物质被磁化了就表示1,未被 磁化就表示0,因为磁性在断电后不会丧失,所以磁盘断电后依然能保存数据。而内存的储存形式则不同,内存不是用磁性物质,而是用RAM芯片。现在请你在一 张纸上画一个“田”,就是画一个正方形再平均分成四份,这个“田”字就是一个内存,这样,“田”里面的四个空格就是内存的储存空间了,这个储存空间极小极 小,只能储存电子。好,内存现在开始工作。内存通电后,如果我要把“1010”这个信息保存在内存(现在画的“田”字)中,那么电子就会进入内存的储存空 间里。“田”字的第一个空格你画一点东西表示电子,第二个空格不用画东西,第三个空格又画东西表示电子,第四个格不画东西。这样,“田”的第一格有电子, 表示1,第二格没有,表示0,第三格有电子,表示1,第四格没有,表示0,内存就是这样把“1010”这个数据保存好了。电子是运动没有规律的物质,必须 有一个电源才能规则地运动,内存通电时它很安守地在内存的储存空间里,一旦内存断电,电子失去了电源,就会露出它乱杂无章的本分,逃离出内存的空间去,所 以,内存断电就不能保存数据了。再看看U盘,U盘里的储存芯片是Flash芯片,它与RAM芯片的工作原理相似但不同。现在你在纸上再画一个“田”字,这 次要在四个空格中各画一个顶格的圆圈,这个圆圈不是表示电子,而是表示一种物质。好,Flash芯片工作通电了,这次也是保存“1010”这个数据。电子 进入了“田”的第一个空格,也就是芯片的储存空间。电子把里面的物质改变了性质,为了表示这个物质改变了性质,你可以把“田”内的第一个圆圈涂上颜色。由 于数据“1010”的第二位数是0,所以Flash芯片的第二个空间没有电子,自然里面那个物质就不会改变了。第三位数是1,所以“田”的第三个空格通 电,第四个不通电。现在你画的“田”字,第一个空格的物质涂上了颜色,表示这个物质改变了性质,表示1,第二个没有涂颜色,表示0,以此类推。当 Flash芯片断电后,物质的性质不会改变了,除非你通电擦除。当Flash芯片通电查看储存的信息时,电子就会进入储存空间再反馈信息,电脑就知道芯片 里面的物质有没有改变。就是这样,RAM芯片断电后数据会丢失,Flash芯片断电后数据不会丢失,但是RAM的读取数据速度远远快于Flash芯 片。(文摘)

VI中如何去掉DOS文件中的换行符^M(转)

习惯在windows上浏览网页并保存一些脚本文件,如果通过samba方式传递到Ubuntu下,用vi查看编辑此类文件时候,总会有^M出现在行尾(如:echo $contents ^M),这是因为windows下的换行符与unix上的不同。

如何快速去掉^M呢,采取以下步骤就行了:
1. vi dosfilename
2. Press Esc
3. Enter this string: %s/^M//g (^M = Ctrl v + Ctrl m)
4. Press enter (the ^M cleared!)
5. :wq! (save the file)

2009年1月5日星期一

Ubuntu8.04下安装飞鸽传书

Ubuntu8.04下安装飞鸽传书

1.下载源文件:

wget http://www.ipmsg.org/archive/g2ipmsg-0.9.5.tar.gz

2.解压缩:

tar xvf g2ipmsg-0.9.5.tar.gz

3.编译安装:

cd g2ipmsg-0.9.5

修改配置文件sudo gedit configure,用编辑器查找CP932全部替换修改为CP936,否则安装完成之后收发信息和主机名是乱码

./configure

make

make install

4.运行:

应用程序-附件-GNOME2飞鸽

标签:g2ipmsg, Ubuntu8.04, 飞鸽传书

快速链接:http://gloomy.yo2.cn/go/627948.html

vim 快捷键

vim 快捷键

★ 命令模式下
CTRL-]
跳至当前单词对应的标签处。
[count] CTRL-A
将光标所在处或光标后的第一个数字增大 count,如果没有指定 count,默认为 1。
CTRL-G
显示当前文件信息和当前光标位置信息。

[count] CTRL-O
跳到光标之前所处的第 count 个位置。如果没有指定 count,默认为 1。
CTRL-T
返回至调用标签前的位置,与 CTRL-] 对应。
CTRL-W CTRL-^
分隔出一个窗口来编辑前一个文件(# 代表的文件)。
CTRL-W CTRL-C
关闭当前窗口。
[count] CTRL-X
将光标所在处或光标后的第一个数字减小 count,如果没有指定 count,默认为 1。

★ 插入模式下
CTRL-[
同 CTRL-C。
CTRL-C
退出插入模式,回到命令模式,相当于 Esc。
CTRL-D
减小缩进。

CTRL-E
复制光标下一行当前列的字符到光标处。
CTRL-T
增大缩进。
CTRL-U
删除光标所在行。
CTRL-W
删除光标之前的整个单词。
CTRL-Y
复制光标上一行当前列的字符到光标处。
★ 命令行模式下
CTRL-C
退出插入模式,回到命令模式,相当于 Esc。
注意:老式的 vi 中命令行模式下 Esc 的作用是执行命令而不是退出,
但在 vim 中命令行模式下 Esc 已经被设为退出键。
CTRL-D
显示所有可能的选择。
CTRL-R CTRL-regname
取寄存器 regname 的内容到命令行光标处。
CTRL-R CTRL-W
取光标处的单词到命令行光标处。