一切只是开始
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/index.php?blogid=11160&pg=4&cat= 存档链接: https://web.archive.org/web/20050120011219id_/http://www.blogbus.com:80/blogbus/blog/index.php?blogid=11160&pg=4&cat=
一切只是开始 现征用为 loveunix 临时信息发布站 首页 默认分类 (7) 嵌入式技术 (11) Linux (15) 软件工程及其他 (15) 工作日志 (24) 编程积累 (9) PALM (9) 网络开发 (2) 2005 年 1 月 Sun Mon Tue Wen Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 最后更新 新的旧的 快到年底了 这几天和接下来要做的事情 水王聚会贴 loveunix 征集好的blog方案 什么是google的pagerank 不是好消息 loveunix 开放通告 没有 loveunix 的日子怎么过 loveunix 之 开也心痛,关也心痛 最新评论 zhou : 努力!奋斗!向星. carol : ? 什么书啊? 怕怕. 李秋水 : 偶也在看书啊?一. saccer_ho : 在多年前,我和朋. carol : 不认识!!! 你去C. soccer_hou007 : 我抄袭的。还有。. carol : :P 你居然在我的p. soccer_hou007 : 我想在将来拍一部. carol : ???・¥%・―. 李秋水 : 俺在哩~~~吼吼。. 存档 2004/03/25/-2004/05/01 2004/05/02/-2004/10/15 附加功能 我的链接 ・ ・ ・ ・ ・电子工程专辑 ・写新日志
blog link ・polyrandom ・我行我素 ・刀锋战士 ・刀枪blue ・天使的blog ・someok ・屋顶上的木帷幕mvm ・横戈.home ・ mono ・Combee on PalmOS : [1] [2] [3] [4] [5] Linux 下创建临时文件 - 04/04/26 22:27 Carol noted from << Beginning Linux Programming >> Chap 4 有时候程序需要一些文件形式的临时存储,来保留一些中间过程的操作。如果按照一般方式创建临时文件,可能会面临重名的问题,导致一些冲突。可以使用 tmpname() 函数来生成一个文件名,避免这种情况。 #include < stdio.h
char *tmpnam(char *s); tmpnam 返回一个不与已有文件重复的文件名。 如果临时文件创建以后马上使用,可以使用 tmpfile 函数来同时完成命名和打开。 #include < stdio.h
FILE *tmpfile(void); Tmpfile 函数返回文件流指针( FILE * ) , 指向生成的临时文件。文件可读可写(使用 fopen, w+ )而且在所有引用结束的时候自动删除。 例程: #include <stdio.h> int main() { char tmpname[L_tmpnam]; char *filename; FILE tmpfp; filename = tmpnam(tmpname); printf("Temporary file name is: %s\n", filename); tmpfp = tmpfile(); if(tmpfp) printf("Opened a temporary file OK\n"); else perror("tmpfile"); exit(0); } When we compile and run this program, tmpnam.c, we can see the unique file name generated by tmpnam: $ ./tmpnam Temporary file name is: /tmp/filedm9aZK Opened a temporary file OK 更多关于创建临时文件的讨论 英文原文 。。。。。。 carol 发表于 22:27 | 阅读全文 | 评论(3) | 引用trackback(0) | 编辑 对于 sizeof 的一些理解 - 04/04/26 20:13 初学者容易把 sizeof 和 strlen 搞糊涂,这是偶自己的一些理解: 偶用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度 看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚: char str[20]="0123456789"; int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。 int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。 偶这样理解对吧 上面是对静态数组处理的结果,如果是对指针,结果就不一样了 char ss = "0123456789"; sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是长整型的,所以是4 sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占了 1 位 strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen 相关的讨论,可以到LU看, http://www.loveunix.net/index.php?showtopic=26953 附带两篇文章,写的更加详细。。。 carol 发表于 20:13 | 阅读全文 | 评论(2) | 引用trackback(0) | 编辑 Linux 无线网络技术 - 04/04/21 18:53 Linux 上的 WLAN、Bluetooth、GPRS、GSM 和 Infrared Data 一览 Sreekrishnan Venkateswaran ( s_krishna@in.ibm.com ) 专职软件工程师,IBM India 2004 年 4 月 当今,不考虑 Linux 和无线网络技术的话,就无法谈到计算机和网络。在这篇文章中,Sreekrishnan Venkateswaran 用 Linux 观点阐释了通过 WLAN、Bluetooth、GPRS、GSM 以及 IrDA 实现无线联网。他使用各种不同的无线设备和相应的内核层,以及用户空间工具来示范它们在 Linux 下如何工作。 无线技术,例如 WLAN (Wireless Local Area Network)、Bluetooth、GPRS (General Packet Radio Service)、GSM (Global System for Mobile communications) 以及 IrDa (Infrared Data),在不同的环境下提供服务。虽然 WLAN 支持比 Bluetooth 更高的速度和更长的传播距离,但是它也需要更多的费用并且耗电量更大。GPRS 虽然比 Bluetooth 和 WLAN 慢,但是可用于移动技术。尽管它们存在差异,或者是其他原因,但是具有多种无线功能的设备可以综合利用它们。例如,根据 GPS 模块的定位输入,设备可以透明地将网络连接从路上的 GPRS 切换到网吧中更便宜的 WLAN。移动电话可以通过 Bluetooth 与心律监视器通信,当病人心律超出某个极限时,就可以通过 GSM 向医生发送警报。 目前,无线技术已经以 PCMCIA、Compact Flash (CF) 卡的形式广泛应用,或者用于 USB 设备。大多数计算机系统,包括嵌入式设备,都有 PCMCIA、CF 或者 USB 接口,即使不含对无线技术的内置支持,也能够立刻使用这些技术。这篇文章分析了无线设备的一些示例,并且研究了设备驱动程序的 Linux 实现、总线技术以及各种协议。 首先,通过跟踪 WLAN 样卡的代码流,您将了解到 WLAN 设备是如何在 Linux 下工作的,然后还可以看到几个 Bluetooth 设备如何与 Linux Bluetooth 栈和其他内核层连接。接下来,您将了解到如何使 GPRS 和 GSM 设备在 Linux 下工作。文章最后分析了 Linux 上的 IrDa 支持并简要介绍了有关无线网络设备的性能问题。 注意: 本文涉及到的内核数据结构和文件名是当前 Linux 版本中所使用的。文件名相对于 Linux 内核源程序树的根。 carol 发表于 18:53 | 阅读全文 | 评论(3) | 引用trackback(0) | 编辑 用prc-tool构造PALM的静态库 - 04/04/20 12:24 就这么几句命令行,累得我个半死,请 google 全球搜了一遍, 可是codewarrior的还没搞定,选项乱七八糟的
- compile but no link *.c file m68k-palmos-gcc -g -O2 -c file.c -o file.o
- group *.o file into a static library,(named foo for example) m68k-palmos-ar rcs libfoo.a file.o file2.o file3.o ... libfoo.a 里的前缀 lib 和 后缀 .a 都是强制必须的
- using the static library: put the -lfoo at the end of the command m68k-palmos-gcc mainprog.o -o mainprog -L -lfoo carol 发表于 12:24 | 阅读全文 | 评论(3) | 引用trackback(0) | 编辑 用消息序列图描述实时系统与环境的交互作用[转贴] - 04/04/19 08:43 用消息序列图描述实时系统与环境的交互作用 设计专栏, 嵌入式系统 上网时间:2003年09月27日 以图示方法来表示嵌入式系统内部各部件与环境的交互作用,是一种描述和理解嵌入式系统所常用的方法,本文从如何制作一个简洁、明了、直观、图示的标准化注释系统入手,说明如何确定嵌入实时系统的交互作用过程,重点介绍了基于消息序列图(Message Sequence Charts,MSCs)的注释系统的基础知识以及采用这种系统的好处。 描述实时系统的方法之一是列举其与环境的交互作用。消息序列图组是专门用于描述这一交互作用的简洁、严格和图示的直观注释。由于MSCs类似于UML,MSCs在电信行业中得到了普遍的应用,并且它在其它领域中的应用也日益广泛。 以图表形式来表示嵌入式系统内部各部件与环境的交互作用,是一种描述和理解嵌入式系统所常用的方法,这样的图表不仅在进行系统设计时很有用,而且在后期分析问题的过程中也发挥着作用。但是如何制作出一个有效的图表呢?工程师们需要的是一个简洁、明了、直观、图示意的标准化的注释系统,用以确定嵌入实时系统的交互过程。本文将介绍称为消息序列图的注释系统的基础知识以及采用这种系统的原因。 MSC是一种运算严格,表示方法简洁的图示技术。它在电信领域的应用十分普及,在实时安全和重要任务系统中的应用日益增加。序列图和在UML中的应用实例过程图都是直观的,并且语义上类似于MSC注释。 see more ... carol 发表于 08:43 | 阅读全文 | 评论(0) | 引用trackback(0) | 编辑 Record - 15th, April - 04/04/15 22:14 串口传输程序今天交给他们测试了,后来发现,在只传一条数据的时候,PC接受端收不到 OVER 命令,只能再改了一下程序。明天在试试看。 今天终于搞清楚了怎么做 palm 的静态库,不过是在 prc-tool 的环境下的,codewarrior 还没有搞定。为了查那么一点点的资料,又用google把整个互联网转悠了一遍,收获颇多,提供了两篇教程到 tompda 上,居然还得了两个精华~~~ 嘿嘿!~ carol 出手,必属精品阿~ 有感于网上丰富细致的英文教程,不禁要为中文资料的匮乏汗颜了。―― 很少有人愿意做这类中文化的工作 ―― 新手练笔的翻译,过不了技术关;有了一定技术,能说点名堂出来的,又不屑于做这样的工作了。 另外,就国内高手的原创而言,似乎又不足够简单,认真的写了,新手却还是看不懂 ―― 高手的技术高得忘记自己初学时的理解过程了?这倒真的有可能是个表达能力的问题,中国的教育方式,不要说学不好英语,连国语都要成问题了 carol 发表于 22:14 | 阅读全文 | 评论(0) | 引用trackback(0) | 编辑 Record - 14th, April - 04/04/14 23:10 今天从 uClinux 向 PC 传纪录的程序做好了 ―― 用了三天,多亏利用了原来现成的代码,要全让我重新做,不知道猴年马月呢。修改bug 花掉好多时间啊,心疼。。。 明天又要重拾 PALM, 把代码做成 api,静态库,给开发者调用。想到这个事情,郁闷就从心中升起, Ardio 和我讲了一大堆 静态库 的概念,可好像在palm 上实现不完全和 vc 一样,只能求助论坛的朋友了。 今天带了一堆串口编程的资料回来,想在把 Linux Serial Programming how-to 翻译成中文简体版的基础上,补充另外几份资料的内容,增加整理,做一个 FAQ。但现在觉得好像事情做起来不简单,我虽然对基本的串口编程比较熟悉了,但是涉及到很多底层的原理,就捉襟见肘了。英翻中应该难度不大,但是加上我自己的理解补充,就显得底气不足了。―― 甚至开始犹豫要不要花那么多时间来做这件事情。 carol 发表于 23:10 | 阅读全文 | 评论(0) | 引用trackback(0) | 编辑 WinCVS简明操作指南 - 04/04/14 12:44 WinCVS简明操作指南 作者:陈先波 邮件:turbochen@163.com 日期:2003-5-10 本文以WinCVS (ver 1.3.6.1 beta 6)为例来说明cvs的使用方法。 。。。 。。。 // 有图,我喜欢 carol 发表于 12:44 | 阅读全文 | 评论(17) | 引用trackback(0) | 编辑 C语言中可变参数的用法(转贴) - 04/04/13 12:37 C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如 printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s", i, s); 究竟如何写可变参数的C函数以及这些可变参数的函数编译器是如何实现的呢?本文就这个问题进行一些探讨,希望能对大家有些帮助.会C++的网友知道这些问题在C++里不存在,因为C++具有多态性.但C++是C的一个超集,以下的技术也可以用于C++的程序中.限于本人的水平,文中如果有不当之处,请大家指正. (一)写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的 C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr ); va在这里是variable-argument(可变参数)的意思. 这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值. void simple_va_fun(int i, ...) { va_list arg_ptr; int j=0; va_start(arg_ptr, i); j=va_arg(arg_ptr, int); va_end(arg_ptr); printf("%d %d\n", i, j); return; } 我们可以在我们的头文件中这样声明我们的函数: extern void simple_va_fun(int i, ...); 我们在程序中可以这样调用: simple_va_fun(100); simple_va_fun(100,200); 从这个函数的实现可以看到,我们使用可变参数应该有以下 步骤 : 1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变量是指向参数的指针. 2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数. 3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个参数是你要返回的参数的类型,这里是int型. 4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获取各个参数. carol 发表于 12:37 | 阅读全文 | 评论(0) | 引用trackback(0) | 编辑 在堆上分配内存――摘自《编程修养》 - 04/04/12 22:04 在堆上分配内存 ――――――――― 可能许多人对内存分配上的“ 栈 stack ”和“ 堆 heap ”还不是很明白。包括一些科班出身的人也不明白这两个概念。我不想过多的说这两个东西。简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。 stack一般是静态分配内存,heap上一般是动态分配内存 。 由malloc系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用free释放,不然就是术语――“ 内存泄露 ”(或是“内存漏洞”)―― Memory Leak。于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和“堆内存”的差别吧。 栈内存分配 ――――― char* AllocStrFromStack() { char pstr[100]; return pstr; } 堆内存分配 ――――― char* AllocStrFromHeap(int len) { char pstr; if ( len <= 0 ) return NULL; return ( char ) malloc( len ); } carol 发表于 22:04 | 阅读全文 | 评论(8) | 引用trackback(0) | 编辑 轻而易举多接了个硬盘 - 04/04/12 21:02 之前一直想把 6。4 G的旧硬盘做成移动硬盘,最近发现只要把接光驱的几个接口插到旧硬盘,就可以正常访问了。今天试了下,超 easy ^_^ 。 于是整理很多觉得有价值的东西到旧硬盘,这才发现,机器上没有保留必要的东西还真多。当然也有一些,主要是以前自己写的东西,非常害怕会丢失,保留了好几份――我注定还是很怀旧的那种人。那些尘封的往事,其实已经再也不想看了。 越说越超出技术范围了,不谈也罢。 carol 发表于 21:02 | 阅读全文 | 评论(0) | 引用trackback(0) | 编辑 瞻前顾后 - 04/04/11 17:28 ............. 总结: 1. 流程图很管用。可以在编写代码之前,对整个程序的框架,结构做一个很清晰的分析。――看别人画的流程图效果还不够好,要按照自己的理解做一张出来,把输入,输出,需求都在脑海中形成一个框架,把工作任务模块化。虽然我要做的程序不算大,但还是被分解成两三个小模块。真正写代码的时候,集中精力各个击破就可以了。 2. 不要局限于简单的重复劳动。这次写代码的任务,应该说是我前段工作的重复和扩充。―― 人生最大的悲哀就是重复了。不过我是新手嘛 ~ 在重复中总结,也属于“温故而知新”。我至少可以做以下几件事情:修改不良代码,对于逻辑不清的,重复的,都可以通过在为原来的代码画流程图时候发现――《重构》;进一步巩固串口的控制知识,串口,包括终端,把其内部的工作搞得更明白一点;这次的工作,涉及到了对数据库的读写,顺标学习一下存储方面的知识。 carol 发表于 17:28 | 阅读全文 | 评论(2) | 引用trackback(0) | 编辑 Linux 下 C 编程从零开始 - 04/04/07 21:13 for www.loveunix.net by Carol see more discussion at: http://www.loveunix.net/index.php?showtopic=25570
这里向大家介绍一下在 Linux/UNIX 的机器上,进行 C/C++ 编程的一些入门级知识。 ・ 所需具备的背景知识 ・ 开发所需的基本环境 ・ 获得帮助的途径 ・ 通过一个实例了解基本步骤 carol 发表于 21:13 | 阅读全文 | 评论(2) | 引用trackback(0) | 编辑 Record, 6th, April - 04/04/06 21:52 嘻嘻,今天有点沾沾自喜哦
解决了一个莫名其妙的终端问题,偶们的工作可以继续进行下去了。
问题描述:
pc
上打开一终端通过
rs232
远程登陆
uClinux
的设备。可是在一切看似成功的情况下,我们发现
字母
’s’
无法在终端显示出来。这件事情非常痛苦,导致很多的
shell
命令,凡是包括
s
的,都无法正常执行。
Karl
甚至打算将所有的
s
都替换掉,这当然是下下之策。
昨天偶就做了很多排查工作,按照
karl
安排的步骤,确定问题到底出在哪里。
最后焦点集中在了
agetty 上,下午Karl给我指出了s显示不正常的地方,是经过了一段终端设置函数之后出现的。Karl试图删除设置函数,但是这样做导致了agetty执行失败。
还是多亏了我的 linux程序设计 这本宝书――简直就是偶linux变成的红宝书啦。很多事情就是踏破铁鞋无觅处的,最后找到得很轻松,我对着那一大堆 termios structure 的设置参数,一个个排查,哼哼,bug 浮出水面!
。。。。。。
carol
发表于
21:52
|
阅读全文
|
评论(4)
|
引用trackback(0)
|
编辑
Wikipedia - 维基百科 -
04/04/06 15:07
刀枪blue 的blog真是个好地方,每次去都能看到很多新奇的内容。
http://www.newseum.org/
就很棒
刚刚进入的维基百科也很不错,不,是很好
英文版入口:
http://en.wikipedia.org/wiki/Main_Page
中文版入口:
http://zh.wikipedia.org/wiki/
明显的,中文版的内容还很少,需要很多国人的共同努力,不断补充。
carol
发表于
15:07
|
阅读全文
|
评论(0)
|
引用trackback(0)
|
编辑
三大技术影响嵌入式应用 -
04/04/05 15:33
嵌入式系统是硬件与软件结合而构成的一个专门的计算装置,完成特定的功能或任务。它是一个大系统或重大电子设备中的一部分,工作在一个与外界发生交互并受到时间约束的环境中,在没有人干预的情况下进行实时控制。
目前,嵌入式技术在嵌入式应用中占主导地位,主要涉及三种技术:
嵌入式系统设计即软件与硬件相协同验证技术;
与基于
UML
的实时软件、实时操作系统应用开发等密切相关的嵌入式软件开发技术;
目前嵌入式应用亟待解决的嵌入式软件测试技术。
上述工具的灵活应用为嵌入式软件开发提供了完整的解决方案。但我国目前嵌入式应用的基础和水平还达不到这个要求,国内自主研发的产品还很少,甚至还是空白。因此,无论是对嵌入式软件开发人员,还是对国内厂商来说,任重道远。
carol
发表于
15:33
|
阅读全文
|
评论(0)
|
引用trackback(0)
|
编辑
用消息序列图描述实时系统与环境的交互作用 -
04/04/03 23:35
以图示方法来表示嵌入式系统内部各部件与环境的交互作用,是一种描述和理解嵌入式系统所常用的方法,本文从如何制作一个简洁、明了、直观、图示的标准化注释系统入手,说明如何确定嵌入实时系统的交互作用过程,重点介绍了基于消息序列图(Message Sequence Charts,MSCs)的注释系统的基础知识以及采用这种系统的好处
carol
发表于
23:35
|
阅读全文
|
评论(0)
|
引用trackback(0)
|
编辑
Unix Socket FAQ -
04/04/03 22:36
Unix Socket FAQ
1 - General Information and Concepts
2 - Questions regarding both Clients and Servers (TCP/SOCK_STREAM)
3 - Writing Client Applications (TCP/SOCK_STREAM)
4 - Writing Server Applications (TCP/SOCK_STREAM)
5 - Writing UDP/SOCK_DGRAM applications
6 - Advanced Socket Programming
7 - Sample Source Code
carol
发表于
22:36
|
阅读全文
|
评论(0)
|
引用trackback(0)
|
编辑
嵌入式系统 的相关学科和学习 -
04/04/03 16:43
general computer science and engineering, real-time computing, systems architecture, control and signal processing, security and privacy, networking, mathematics, electronics.
常规的计算机科学和工程,
实时计算,系统结构,控制和信号处理,安全和保密,网络,数学,电子。
to know more...
carol
发表于
16:43
|
阅读全文
|
评论(1)
|
引用trackback(0)
|
编辑
美国国家半导体推出Bluetooth1.2新品(图) -
04/04/02 09:25
今天,美国国家半导体公司 (National Semiconductor Corporation)宣布该公司最新推出的蓝牙 (Bluetooth) 产品系列可支持最新修订的 1.2 版蓝牙技术规格。
carol
发表于
09:25
|
阅读全文
|
评论(0)
|
引用trackback(0)
|
编辑
:
[1]
[2]
[3]
[4]
[5]