最新日志

发表于:2007-9-17 19:05:22
标签:无标签

1

学习单片机的心理准备(转贴)

学习单片机的心理准备(转贴) #1
                             单片机的秘诀一:学单片机心理课程

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来
再参考别人的提示,你就知道自己和别人思路的差异。

2.别小家子气,买本书几十块都舍不得,你还学个P。为了省钱看电子书,浪费的时间绝对
超过书的价值。当然如果查资料,只能看PDF。

3.学习新的开发软件时,一定要看帮助手册。买的书不够全面。刚接触一个软件,什么都不
懂,就盲目的问东问西,让人看起来很幼稚。

4.不要蜻蜓点水,得过且过,细微之处往往体现实力。

5.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

6.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。
.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍。

7.多实践,去焊板子、调试,去写去调,只用软件模拟,是永远成不了高手的。

8.保存好你做过的所有的源程序、PCB、原理图等----那是你最好的积累之一。

9.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会
自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就 能找到很多相
关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

10 到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就
有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回
的。

11,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你
总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说
法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。

sonix mcu:E-mail:23180306@163.com

什么样的人是浮躁的人?

浮躁的人容易问:我到底该学什么;
----踏踏实实的学点基本的吧?单片机不知道是什么就想去学ARM?
c语言不会想搞LINUX?别老是好高骛远。
浮躁的人容易问:谁有xxx源码?--(你给人家多少钱啊?自己的劳动白送你?)
浮躁的人容易说:跪求xxx ---(就算网络也要点尊严吧?)
浮躁的人容易说:紧急求救---(其实只是个简单的课程设计)
浮躁的人容易说:有没有xxx中文资料?---一个字:懒。别说别的。E文不行?谁不是从
ABC学起的啊?
浮躁的人容易说:求xxx,我的email是xxx@xxx.com,然后消失 ---- 你以为你是大爷啊,人
家请你吃饭,还要喂到你口里不成?
浮躁的人容易问:做单片机有钱途吗----只是为了钱,搞不好技术的,你去抢银行好了。
浮躁的人容易说:哪里有xxx芯片资料?(其实大部分资料网络上都有,但是偏偏来找人
问,懒!)
浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
浮躁的人永远不是一个高手。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(4) | 阅读(427)
发表于:2007-9-11 12:35:24
标签:无标签

1

给青少年十个忠告(转)

如何在涉世之初少走弯路,有一个好的开端,开始一番成功的事业?以下是一些先行者积累
的10条有益的

涉世忠告。好好地遵循、把握这些忠告和建议吧,比起所学的课堂课程来,它毫不逊色!
1. 买个闹钟,以便按时叫醒你。
贪睡和不守时,都将成为你工作和事业上的绊脚石,任何时候都一样。不仅要学会准时,更要学会提前。

就如你坐车去某地,沿途的风景很美,你忍不住下车看一看,后来虽然你还是赶到了某地,却不是准时到达。“闹钟”只是一种简单的标志和提示,真正灵活、实用的时间,掌握在每个人的心中。

2. 如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。
初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞,不带伞又怕淋雨,处处表现出不满的情绪。记住,不做则已,要做就要做好。
3. 每个人都有孤独的时候。
要 学会忍受孤独,这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了,到了一个陌生的环境,面对形形色色的人和事,一下子不知所措起来,有时连一个可以倾心说 话的地方也没有。这时,千万别浮躁,学会静心,学会忍受孤独。在孤独中思考,在思考中成熟,在成熟中升华。不要因为寂寞而乱了
方寸,而去做无聊无益的事情,白白浪费了宝贵的时间。
4. 走运时要做好倒霉的准备。
有 一天,一只狐狸走到一个葡萄园外,看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着,无法进去。于是它一狠心绝食三日,减肥之后,终于钻进葡萄园内饱餐 一顿。当它心满意足地想离开葡萄园时,发觉自己吃得太饱,怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。
饱带干粮,晴带雨伞,点滴积累,水到渠成。有的东西今天似乎一文不值,但有朝一日也许就会身价百倍

5. 不要像玻璃那样脆弱。
有的人眼睛总盯着自己,所以长不高看不远;总是喜欢怨天尤人,也使别人无比厌烦。没有苦中苦,哪来甜中甜?不要像玻璃那样脆弱,而应像水晶一样透明,太阳一样辉煌,腊梅一样坚强。既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒。
6. 管住自己的嘴巴。
不 要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下班后和你的那些同事 朋友喝酒聊天可不是件好事,因为,这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的,尤其是议论别人的短处,这些会降低你的人格。
7. 机会从不会“失掉”,你失掉了,自有别人会得到。
不要凡事在天,守株待兔,更不要寄希望于“机会”。机会只不过是相对于充分准备而又善于创造机会的人而言的。也许,你正为失去一个机会而懊悔、埋怨的时候,机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会,就要创造机会,有了机会,就要巧妙地抓住。
8. 若电话老是不响,你该打出去。
很多时候,电话会给你带来意想不到的收获,它不是花瓶,仅仅成为一种摆设。交了新朋友,别忘了老朋友,朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑,往往助你的事业更上一个台阶。
9. 千万不要因为自己已经到了结婚年龄而草率结婚。
想结婚,就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。

10. 写出你一生要做的事情,把单子放在皮夹里,经常拿出来看。
人生要有目标,要有计划,要有提醒,要有紧迫感。一个又一个小目标串起来,就成了你一个的大目标。

生活富足了,环境改善了,不要忘了皮夹里那张看似薄薄的单子。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(447)
发表于:2007-8-21 15:30:42
标签:无标签

0

LINUX学习(转)

    写给Linux内核新手-关于Linux内核学习的误区 写给Linux内核新手-关于Linux内核学习的误区

         写给Linux内核新手-关于Linux内核学习的误区

  先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^

   常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需:
  1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著,但总要知道分时(time-shared)和实时(real-time)的区别是什么,进程是个什么东西,CPU和系统总线、内存的关系(很粗略即可),等等。
  2, 关于C语言。不需要已经很精通C语言,只要能熟练编写C程序,能看懂链表、散列表等数据结构的C实现,用过gcc编译器,就可以了。当然,如果已经精通C语言显然是大占便宜的。
   3, 关于CPU的知识。这块儿可以在学习内核过程中补,但这样的话你就需要看讲解很详细的书,比方后面将会提到的《情景分析》。你是否熟悉Intel 80386 CPU?尝试着回答这几个问题来判断一下:1)说出80386的中断门和陷阱门的区别;2)说出保护模式与实模式的区别;3)多处理器机器上,普通的读- 改-写回一块内存这样的动作,为什么需要特殊的手段来保护。等等。讲解基于其它CPU的Linux内核的书,目前好象只有一本《IA64Linux内核:设计与实现》──也还是Intel的,其它都是讲解基于IA32的。
  以上算是知识方面吧,如果还要再补充一条,我想就是:动手编译过内核。


  好了,我们接下来走。好多人装上Linux之后,第一件事找到内核源码所在的路径,打开一个C程序文件,开始哗哗哗翻页,看看大名鼎鼎的Linux内核代码到底长啥模样──然后关闭。这是可理解的,但却不是学习的方法。刚开始,必须从读书入手。至少要对内核有一个Overview之后,才有可能带着问题去试图阅读源代码本身。 下面就讲一下我读过的几本书:
  1, 《Linux内核设计与实现》,英文名Linux Kernel Development(所以有人叫它LKD),机械工业出版社,¥35, 美国Robert Love著,陈莉君译者。 评说:
  此书是当今首屈一指的入门最佳图书。作者是为2.6内核加入了抢占的人,对调度部分非常精通,而调度是整个系统的核心,因此本书是很权威的。这本书讲解浅显易懂,全书没有列举一条汇编语句,但是给出了整个Linux操作系统2.6内核的概观,使你能通过阅读迅速获得一个overview。而且对内核中较为混乱的部分(如下半部),它的讲解是最透彻的。对没怎么深入内核的人来说,这是强烈推荐的一本书。
   翻译:翻译水平、负责任程度都不错,但是印刷存在一些错误。买了此书的朋友可以参考我在Linux高级应用版的《Linux内核设计与实现中文版勘误》:
http://bbs.chinaunix.net/forum/viewtopic.php?t=541234
另外,此书2005年有了第二版,目前尚无中译本面世。我就是对照着2nd-en勘误1st-cn的。

  2, 《Linux内核源代码情景分析》上、下。毛德操、胡希明著,浙江大学出版社,上册¥80,下册¥70. 评说:
  本书是基于2.4.0内核的,比较早,也没听说会出第二版。上册讲解内存管理、中断、异常与系统调用、进程控制、文件系统与传统Unix IPC;下册讲解socket、设备驱动、SMP和引导。关于这套书的评价褒贬不一,我个人认为其深度是同类著作中最优秀的。本书基于Intel IA32体系,由于厚度大,很多体系上的知识都捎带讲解了,所以如果你想深入了解内核的工作机制而又不非常熟悉Intel CPU的体系构造,本书是最合适的。缺点是:版本较老,没有TCP/IP协议栈部分(它讲的socket只是Unix域协议的),图表太少,不适合初学者入门。还有就是对学生朋友来说,可能书价偏高,这样的话可以考虑先买上册,因为上册是核心部分,下册一大部分都在讲具体PCI/ISA/USB设备的驱动。
  翻译:没什么翻译,作者是国人,而且行文流畅。本人书桌上诸多计算机经典图书当中,这套是唯一又经典又无阅读障碍的。
   www.linuxforum.net内核版好多朋友已经把这书读到六七遍了,我很惭愧,上册差不多读熟了,下册就SMP部分还看过──但这就花费了整整 1年的时间,还有好多弄不懂的。这里顺便说明另外一个研究内核常见的误区:目标太庞大。要知道Linux内核(最新的2.6.13)bzip2压缩之后 37M,解压缩之后244M,根本不是哪个人能够吃透的。即使是内核的核心开发团队中,恐怕也只Linus Torvalds、Alan Cox、David Miller、Ingo Molnar寥寥数人会有比较全面的了解,其它人都是做自己专门的部分。我自己来说,目前已经决定放弃内存管理的全部(slab层、LRU、rbtree等)、文件系统部分、外设驱动部分,暂时也没打算弄IA32以外的其它体系的部分。

  3, 《深入理解Linux内核》第二版。中国电力出版社。也是陈莉君译。此书是Linux内核黑客在推荐图书时的首选。评说:
  此书C版的converse兄送了我一本第一版,因此就没买第二版,比较后悔。因此只就第一版说一说,第一版基于2.2,第二版2.4 。我见O'Reilly官方主页上说第三版的英文版将于2005年11月出版,也不知咱们何时才能见到。此书图表很多,形象地给出了关键数据结构的定义,与《情景分析》相比,本书内容紧凑,不会一个问题讲解动辄上百页,有提纲挈领的功用,但是深度上要逊于《情景分析》。

  4, 其它的几本书。市面上能见到的其它的Linux内核的图书,象《Linux设备驱动程序》、《Linux内核源代码完全注释》以及新出的《Linux内核分析及编程》等。
  《Linux设备驱动程序》第二版是基于2.4的,中文翻译不错,中国电力出版。这书强调动手实践,但它是讲解“设备驱动”的,不是最核心的东西,而且有些东西没硬件的话无法实践,可能更适合驱动开发的程序员吧,不太适合那些For fun and profit的人。此书有第三版英文版,东南大学出版社影印,讲解2.6的,行文流畅,讲解的面也比第二版更广泛,我读过其中关于同步与互斥、内存分配的部分,感觉很不错。
  《Linux内核源代码完全注释》(机械工业出版社)是同济大学的博士生赵炯的著作,讲解0.1Linux内核,我没买也没看,有看过的朋友说一说。
  《Linux内核分析及编程》(电子工业出版社)是刚刚出版的,国人写的,讲解2.6.11 。很多人说好,但有人说不够系统,我没买,不敢评说。
  还有一本清华出的《Linux内核编程指南(第三版)》,原书应该是好书,但是翻译、排版十分糟烂,脱字跳行,根本没法看,我买了一本又扔掉了。

   5, 其它资源。 TLDP(The Linux Documentation Project)有大量文档,其中不少是关于内核的,有些是在国外出版过的,象《Linux Kernel Interls》《The Linux Kernel》《Linux Kernel Module Programming Guide》等,作者都是亲身参加开发的人,著作较为可信。
Http://www.linuxforum.net
  中国Linux论坛的内核版。该版是研究内核的中文Linux社区中水平最高的,有很多专家级别的牛人,强烈推荐去学习一下(但建议不要问太过分简单的问题,人家脾气再好也会烦的^_^),它的置顶贴简直是一个包罗万象的FAQ,精华区也有很多资料。只可惜太过曲高和寡,人气不是很旺。

   6, 一本不是讲解Linux的书:《现代体系结构上的Unix系统:内核程序员的SMP和Caching技术》,人民邮电出版社2003版,定价¥39. 本书虽然不是讲解Linux,但是对所有Unix内核都是适用的,适合对SMP和CPU的Cache这些组成原理知识不是很熟的朋友,而且是很多国外牛人推荐的书。中文版翻译非常负责。


  还有个很重要的问题:怎样浏览内核源代码。有的朋友喜欢在Windows上工作,用Source Insight;有的在Linux,用Source Navigator;还有专门浏览源代码的软件,象lxr(Linux Cross Reference);还有用ctags/ectags/cscope等,这些都是很优秀的软件。我个人用Vim + ctags浏览(参考了www.linuxforum.net内核版wheelz大侠的文档,)。

  此外,前边已经提到的一个重要的问 题是:你研究内核的目的是什么,开发? 乐趣?如果是开发,而且是国内做开发,把kernel API熟悉一下就差不太多了(你也知道国内的水平有多差),比方说copy_from_user()、kmalloc()函数等,kernel API在Internet上找得到,编译内核时也可以用DocBook生成(具体请参考内核源代码包下的README文件);如果是研究,那就差别很大了,需要下很大的苦功:会用kmalloc()绝不说明你懂得Linux内核的虚存管理子系统,正如同会讲汉语不说明你懂中国文化一样。




  说完了,发现前面讲的太罗嗦了,简化一下:
  1, 动手编译内核
  2, 精读《Linux内核设计与实现》
  3, 上www.linuxforum.net内核版看置顶贴与精华区
  此外就凭自己兴趣选择吧。

下面是一篇没写完的《Linux内核模块编程入门》,不补写了,将就着看吧。

albcamus 2005-10-13 02:41

写给Linux内核新手-关于Linux内核学习的误区

Linux内核模块编程入门
看到昨天有好几个问linux内核编程问题的帖子,不少是卡在了入门问题上,就整理一下入门的初步流程。针对2.6内核的Linux系统,需要你的机器上已经安装了kernel-devel这个包,也就是编译模块所必须的东西:内核的头文件和一些Makefile。

一,Hello World程序:
[code]/*file: hello.c*/
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/init.h>;
#include <linux/module.h>;
#include <linux/kernel.h>;

static int hello_init(void)
{
printk(KERN_ALERT "Hello, The fucking crazy world\n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Bye, The fucking crazy world!\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("albcamus <albcamus@163.com>;");[/code]

2.6内核的kbuild子系统跟2.4相比有本质的改变。我们下面尝试两种方式编译这个程序:
1, 你可以在本目录下这样写一个Makefile
[code]obj-m := hell.o
clean:
rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions[/code]
然后用这样的命令行编译:
make -C /lib/modules/`uname -r`/build M=`pwd` modules
这时ls一下,就能看到生成了很多文件,其中hello.ko就是我们需要的内核模块。
2, 专业点儿,Makefile这样写:
[code]obj-m := hello.o
KERNELBUILD := /lib/modules/`uname -r`/build
default:
make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
rm -rf *.o .*.cmd *.ko *.mod.c .tmp_versions[/code]
然后只要make一下就可以了。

插入模块用insmod命令:
insmod ./hello.ko
这时候大家可能会问:为什么我的屏幕上没有见到输出?这个是console的日志记录级别和你printk消息时指定的级别(本例中指定为 KERN_ALERT,为次高,仅次于KERN_EMERG)决定的。无论如何,你可以tail 或者cat看看系统日志的最后几行,系统日志一般为/var/log/messages,或者直接用dmesg命令,肯定能看到输出了。

二,头文件问题。
C 程序员都知道,要使用某个外部的函数,应当#include某个头文件,这个头文件包含了那个函数的原型(prototype)。内核的头文件在 include/下,其中include/asm是个符号链接,指向你所用内核的具体的体系结构目录,比方说我的系统是i386的,那么 include/asm就指向include/asm-i386 。
内核编程中我们不能链接libc库,不能使用libc库中的函数,所以很有些麻烦。一些重要的函数,象strcpy/strcmp/snprintf等,kernel也为我们实现并导出(export)了,而我们需要 #include相关的头文件,在include/linux和include/asm中,你需要自己寻找你所要使用的函数在哪个头文件中声明,并将其 #include进来。


写给Linux内核新手-关于Linux内核学习的误区

说点别的
1、楼主 4K太屈材了,但是中国现在这个状况没法说。我曾经去清华紫光面试,做AS400的售前/后支持「当时他们说有Unix基础就可以,不需要很了解 400」,底薪4K+提成,提成完全看销售业绩,估计很大一部分工作是配合销售去把产品骗出去,技术性工作估计不多。如果销售情况好的话收入还是很可观的,但是具他们内部人说没有销售挣得多。在国内许多大公司,一群本科是什么杂7杂8专业的,后来混了个“计算机”方面的“研究生”,啥都不懂成天混的人也都随便拿上5K+

2、牛人在中国会是什么下场?牛人就是象老牛一样多干活,还不一定有草吃。去年冬天我出差去昆明部署一个我们的软件,本来我只负责技术支持,职责就是按照文档把整个系统搭建起来。临走前开发人员和测试人员拍胸匍向我发誓程序完全没有问题了,我去到那里只要安装一下即可。结果到了那里,首先是客户系统被入侵而瘫痪,费了好大劲重建了系统恢复了数据库;接着发现程序有很严重bug,花了整整一天时间我给它debug。
知道我最终的下场是什么吗?400块长途手机费不给报销,领导说按照规定每天只给报20。嗯,“按照规定”的话,发现被黑我就应该立刻打110『没必要估计客户的面子』,然后叫合作伙伴的人来装系统(系统原来是他们装的),这样就省下200块打电话请示领导、联络客户领导的手机费;“按照规定”的话,我作为非开发人员和测试人员没义务给程序debug,当我发现程序不能正常运作的时候就应该打道回府,这样就又能省下200块了
我当时所在中国非常有名的一家软件上市公司「比红旗用友什么的大得多」,在这里我就不点名了

3、“到一家实力强劲的公司(如IBM,redflag)给人家打下手”?
IBM内部的中国开发人员,只能从老美那里拿到裁减版的API手册,很多“牛人”的主要工作是汉化、debug、写文档和打包
redflag?以前曾经有一个项目需要邮件系统,看了一下redflag的邮件服务器宣传还不错,联系了一下,跟一个什么产品经理谈了谈,结果是,为了拿到项目,他们完全可以放弃linux平台把它移植到客户指定的Solaris上去,总之就是只要能中标,怎么都行!所以我看redflag需要的不是“打下手”的,需要的是能够拿到单子的sells


中国阿,就这么回事了
PS:我现在在搞linux教育培训工作,收入还凑合,感觉这个环境铜臭味道少一些,可以有一些闲暇时间和精力去搞自给喜欢的研究,而且没人管^_^

点击此处查看原文 >>

系统分类: 汽车电子   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(446)
发表于:2007-8-17 21:23:42
标签:嵌入式  

0

嵌入式基础

(转)

 RISC 和CISC 是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结
构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效
的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有
简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器
上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进
和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因
此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器
操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,
不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设
计相对容易,效率较高。
(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一
条指令执行结束后响应中断。
(5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包
含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技
术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC
微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适
合于专用机;而CISC 机器则更适合于通用机。

 


DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP 算法,编译效率
高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP 算法正在大量进入嵌
式领域,DSP 应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式
DSP 处理器。嵌入式DSP 处理器有两个发展来源,一是DSP 处理器经过单片化、EMC 改
、增加片上外设成为嵌入式DSP 处理器,TI 的TMS320C2000/C5000 等属于此范畴;二
是在通用单片机或片上系统(SOC)中增加DSP 协处理器,例如Intel 的MCS-296。
推动嵌入式DSP 处理器发展的一个重要因素是嵌入式系统的智能化,例如各种带有智
能逻辑的消费类产品,生物信息识别终端,带有加解密算法的键盘,ADSL 接入、实时语
音压解系统,虚拟现实显示等。这类智能化算法一般都是运算量较大,特别是向量运算、
指针线性寻址等较多,而这些正是DSP 处理器的长处所在。
嵌入式DSP 处理器比较有代表性的产品是Texas Instruments 的 TMS320 系列和
Motorola 的DSP56000 系列。TMS320 系列处理器包括用于控制的C2000 系列,移动通信
的C5000 系列,以及性能更高的C6000 和C8000 系列。DSP56000 目前已经发展成为
DSP56000,DSP56100,DSP56200 和DSP56300 等几个不同系列的处理器。
DSP 的设计者们把重点放在了处理连续的数据流上。在嵌入式应用中,如果强调对连
续的数据流的处理及高精度复杂运算,则应该选用DSP 器件。

 

SOC 可以分为通用和专用两类。通用系列包括Motorola 的M-Core,某些ARM 系列器
件,Echelon 和Motorola 联合研制的Neuron 芯片等。专用SOC 一般专用于某个或某类系统
中,不为一般用户所知。一个有代表性的产品是Philips 的Smart XA,它将XA 单片机内核
和支持超过2048 位复杂RSA 算法的CCU 单元制作在一块硅片上,形成一个可加载JAVA
或C 语言的专用的SOC,可用于公众互联网如Internet 安全方面。

 

ROM 中的信息一次写入后只能被读出,而不能被操作者修改或删除,一般由芯片制造
商进行掩膜写入信息,价格便宜,适合于大量的应用。一般用于存放固定的程序,如监控程
序、汇编程序等,以及存放各种表格。EPROM(Erasable Programmable ROM)和一般的ROM
不同点在于它可以用特殊的装置擦除和重写它的内容,一般用于软件的开发过程。


动态RAM 按制造工艺的不同,又可分为动态随机存储器(Dynamic RAM)、扩展数据
输出随机存储器(Extended Data Out RAM)和同步动态随机存储器(Synchromized Dynamic
RAM)。DRAM 需要恒电流以保存信息,一旦断电,信息即丢失。它的刷新频率每秒钟可达
几百次,但由于DRAM 使用同一电路来存取数据,所以DRAM 的存取时间有一定的时间间
隔,这导致了它的存取速度并不是很快。另外,在DRAM 中,由于存储地址空间是按页排
列的,所以当访问某一页面时,切换到另一页面会占用CPU 额外的时钟周期。EDO-RAM
同DRAM 相似,但在把数据发送给CPU 的同时可以去访问下一个页面,故而速度要比普通
DRAM 快15~30%。SDRAM 同DRAM 有很大区别,它使用同一个CPU 时钟周期即可完成
数据的访问和刷新,即以同一个周期、相同的速度、同步的工作,因而可以同系统总线以同
频率工作,可大大提高数据传输率,其速度要比DRAM 和EDO-RAM 快很多(比EDO-RAM
提高近50%)。


液晶显示屏(liquid crystal display:LCD)用于显示GUI(图象用户界面)环境下的文
字和图象数据,适用于低压、微功耗电路。
从选型角度,我们将常见液晶分为以下几类:段式(也称8 字)、字符型和图形点阵。
段式液晶:常见段式液晶的每字为8 段组成,即8 字和一点,只能显示数字和部分字母,
如果必须显示其它少量字符、汉字和其它符号,一般需要从厂家定做,可以将所要显示的字
符、汉字和其它符号固化在指定的位置,比如计算器和电子表所用的液晶。
字符型液晶:顾名思义,字符型液晶是用于显示字符和数字的,对于图形和汉字的显示
方式与段式液晶无异。字符型液晶一般有以下几种分辨率,8×1,16×1、16×2、16×4、20×2、
20×4、40×2、40×4 等,其中8(16、20、40)的意义为一行可显示的字符(数字)数,1(2、
4)的意义是指显示行数。
图形点阵式液晶:我们又将其分为TN、STN(DSTN)、TFT 等几类。这种分类需从液晶
材料和液晶效应讲起,请参考液晶显示原理。
TN 类液晶由于它的局限性,只用于生产字符型液晶模块;而ST(DSTN)类液晶模块一
般为中小型,既有单色的,也有伪彩色的;TFT 类液晶,则从小到大都有,而且几乎清一色
为真彩色显示模块。除了TFT 类液晶外,一般小液晶屏都内置控制器(控制器的概念相当于
显示卡上的主控芯片),直接提供MPU 接口;而大中液晶屏,要想控制其显示,都需要外加
控制器。
从色彩上分,LCD 显示屏分为单色、灰度和彩色三种,价格由低到高,单色LCD 的点
阵只能显示亮和暗,通常只用于低端的不需显示图形的场合;带灰度级的LCD 常用的有2bit
4 级灰度和4bit 16 级灰度,可以显示简单的带有层次的图形或图象;彩色LCD 的色彩以颜
色数为标准。彩色LCD 分为有源(Active)及无源(Passive)型两种,有源型就是常见的
TFT(Thin Film Transistor,薄膜晶体管)LCD,特点是显示清晰、分明、视角大,但价格高。
之所以如此,是因为有源LCD 更新屏幕的频率较快,而且它屏幕上的每个象素,分别是由
一个独立的晶体管控制的(无源的就不是)。这样,也导致了有源矩阵LCD 的一个缺点,就
是这种显示器要使用相当多的晶体管,造价也就高。无源型就是常见的STN(super-twist ed
nematic,超扭曲向列型) LCD,最显著优点是造价低。
按背光将液晶分类,有透射式、反射式、半反半透式液晶三类,因为液晶为被动发光
型显示器,所以必须有外界光源,液晶才会有显示,透射式液晶必须加上背景光,反射式
液晶需要较强的环境光线,半反半透式液晶要求环境光线较强或加背光。
字符类液晶,带背光的一般为LED 背光,以黄颜色(红、绿色调)为主。一般为+5V 驱
动。单色STN 中小点阵液晶,多用LED 或EL 背光,EL 背光以黄绿色(红、绿、白色调)
常见。一般用400—800Hz、70—100V 的交流驱动,常用驱动需要约1W 的功率。中大点阵
STN 液晶和TFT 类液晶,多为冷阴极背光灯管(CCFL/CCFT),背光颜色为白色(红、绿、
蓝色调)。一般用25k—100kHz,300V 以上的交流驱动。

嵌入式系统中的触摸屏分为电阻式、电容式和电感式三种,其中电阻式触摸屏最为常用。


用户不断地要求所用的嵌入式装置更小、更轻便同时又更易于使用,能解决这三方面问
题的一种可行技术就是语音识别。这种技术由于去掉了传统的输入器件,故具有更小和更轻
便的特点。语音识别输入的实现可以在嵌入式处理器功能足够强大时用相应的软件实现,也
可以使用专用芯片增加一个硬件功能模块。前者对嵌入式系统硬件配置的要求较高,如处理
器的速度和存储器的容量等。后者则通过专门的DSP 芯片来完成语音识别输入过程中的所
有运算工作,不会加重系统主处理器的负担。这种专用的语音识别芯片现在已经有多种产品
出现了。如sensory 公司的语音识别芯片系列,内部采用神经网络技术来识别训练过的单词
或短语,准确度高于99%。并且芯片高度集成化,减少了所需外部元器件的数目。可以快
速和方便地嵌入到现存的和新设计的产品中,适用于多种需要语音控制的嵌入式产品。
语音识别技术以识别方法来分,有模板匹配法、随机模型法和概率语法分析法。这三种
方法都属于统计模式识别方法。它的识别过程大致如下:首先选定语音的特征作为识别参数
的模板,然后采用一可以衡量未知模式和参考模式(即模板)的似然度的测量函数,最后选
用一种最佳准则及专家知识作为识别策略,对识别候选者作最后判决,得到最好的识别结果
作为输出。以识别范围来分,分为语音从属(speaker-dependent) 模式和语音独立
(speaker-independent)模式。语音从属意味着必须有培训系统,而且通常它只可识别培训
系统的人所讲的词。语音独立系统则可识别几乎所有讲话人的词。从目前水平来看,语音从
属模式下的模板匹配法用得比较广泛。
语音识别技术在嵌入式系统上的使用,不仅可以通过声音命令来控制设备,还可将
输入的声音转换为文本,使得用户就能用声音口述需要输入的文本。如果再加上语音合成
输出功能,就可以在嵌入式系统中实现书面语言和口头语言的双向转换,从而构成完整的语
音输入输出功能。

 

并口的工作模式主要有如下几种:
(1) SPP 标准工作模式。SPP 数据是半双工单向传输的,传输速率仅为15Kb/s,速度较
慢,但几乎可以支持所有的外设,一般设为默认的工作模式。
(2) EPP 增强型工作模式。EPP 采用双向半双工数据传输,其传输速度比SPP 高,可
达2MB/s。EPP 可细分为EPP1.7 和EPP1.9 两种模式,目前较多外设使用此工作模
式。
(3) ECP 扩充型工作模式。ECP 采用双向全双工数据传输,传输速率比EPP 要高。

 

在嵌入式系统的开发和应用中,经常需要使用上位机实现系统的调试及现场数据的采集
和控制。一般是通过上位机本身配置的串行口,通过串行通讯技术,和嵌入式系统进行连接
通讯。串行口的典型代表是RS-232-C 及其兼容插口,。RS-232-C 标准规定的数据传输速率为每秒50、75、 100、150、
300、600、1200、2400、4800、9600、19200 波特。一般应用情况下,RC232C 的最高传输速率为20 kb/s, 最大
传输线长为30 米.


USB全称Universal Serial Bus(通用串行总线)。USB接口是现在比较流行的接口,用于
将使用USB的外围设备连接到主机。在USB 的网络协议中,每个USB 的系统有且只有一个
host, 它负责管理整个USB系统,包括USB Device 的连接与删除、Host 与USB Device 的
通信、总路线的控制等等。Host端有一个Root Hub,可提供一个或多个USB 下行端口。每
个端口可以连接一个USB Hub或一个USB Device。USB Hub 是用于USB 端口扩展的,即
USB Hub 可以将一个USB端口扩展为多个端口。


由于利用红外线接口进行文件传输不用连线,且速度较快,达4M/s,不失为短距离双
机通讯的一种好方法。进行红外线通讯时需注意:将具有红外线通讯功能的两个系统靠近,
且发送口大致在同一水平线上,注意两系统之间的距离不能相差太远,一般在一到两米,角
度相差不超过30 度。


在现代电子系统中,有为数众多的IC 需要进行相互之间以及与外界的通信。为了提供
硬件的效率和简化电路的设计,PHILIPS 开发了一种用于内部IC 控制的简单的双向两线串
行总线I2C(inter IC 总线)。I2C 总线支持任何一种IC 制造工艺,并且PHILIPS 和其他厂商
提供了种类非常丰富的I2C 兼容芯片。作为一个专利的控制总线,I2C 已经成为世界性的工
业标准。


串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola 公司推出的一
种同步串行接口。Motorola 公司生产的绝大多数MCU(微控制器)都配有SPI 硬件接口,
如68 系列MCU。SPI 总线是一种三线同步总线,因其硬件功能很强,所以,与SPI 有关的
软件就相当简单,使CPU 有更多的时间处理其他事务。


,PC104
是一种专门为嵌入式控制而定义的工业控制总线。
PC104 有两个版本,8 位和16 位,分别与PC 和PC/AT 相对应。PC104PLUS 则与PCI
总线相对应,在PC104 总线的两个版本中,8 位PC104 共有64 个总线管脚,单列双排插
针和插孔,P1:64 针,P2:40 针,合计104 个总线信号,PC104 因此得名。当8 位模块
和16 位模块连接时,16 位模块必须在8 位模块得下面。P2 总线连结在8-位元模块中是可
选的。
PC104PLUS 是专为PCI 总线设计的,可以连接高速外接设备。PC104PLUS 在硬件
上通过一个3×40 即120 孔插座连接,PC104PLUS 包括了PCI 规范2.1 版要求的所有信号。
为了向下兼容,PC104PLUS 保持了PC104 的所有特性。因此PC104PLUS 规范包含了两种
总线标准:ISA 和PCI,可以双总线并存。
PC104PLUS 与PC104 相比有以下3 个特点:
(1) 相对PC/104 连接,增加了第三个连结接口支持PCI 总线
(2) 改变了组件高度的需求,增加模块的柔韧性
(3) 加入了控制逻辑单元,以满足高速总线的需求

 

CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场
总线之一。起先,CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置
ECU 之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪
表装备、电子主干系统中,均嵌入CAN 控制装置。CAN 是一种多主方式的串行通讯总线,
基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当
信号传输距离达到10Km 时,CAN 仍可提供高达50Kbit/s 的数据传输速率。
为促进CAN 以及CAN 协议的发展,1992 在欧洲成立了CiA(CAN in Automation)。在
CiA 的努力推广下,CAN 技术在汽车电控制系统、电梯控制系统、安全监控系统、医疗仪
器、纺织机械、船舶运输等方面均得到了广泛的应用。现已有400 多家公司加入了CiA,
CiA 已经为全球应用CAN 技术的权威。

CAN 的主要特性
(1) 低成本;
(2) 极高的总线利用率;
(3) 很远的数据传输距离(

 RISC 和CISC 是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结
构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效
的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有
简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器
上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进
和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因
此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器
操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,
不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设
计相对容易,效率较高。
(4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一
条指令执行结束后响应中断。
(5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包
含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技
术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC
微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适
合于专用机;而CISC 机器则更适合于通用机。

 


DSP 处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP 算法,编译效率
高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP 算法正在大量进入嵌
式领域,DSP 应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式
DSP 处理器。嵌入式DSP 处理器有两个发展来源,一是DSP 处理器经过单片化、EMC 改
、增加片上外设成为嵌入式DSP 处理器,TI 的TMS320C2000/C5000 等属于此范畴;二
是在通用单片机或片上系统(SOC)中增加DSP 协处理器,例如Intel 的MCS-296。
推动嵌入式DSP 处理器发展的一个重要因素是嵌入式系统的智能化,例如各种带有智
能逻辑的消费类产品,生物信息识别终端,带有加解密算法的键盘,ADSL 接入、实时语
音压解系统,虚拟现实显示等。这类智能化算法一般都是运算量较大,特别是向量运算、
指针线性寻址等较多,而这些正是DSP 处理器的长处所在。
嵌入式DSP 处理器比较有代表性的产品是Texas Instruments 的 TMS320 系列和
Motorola 的DSP56000 系列。TMS320 系列处理器包括用于控制的C2000 系列,移动通信
的C5000 系列,以及性能更高的C6000 和C8000 系列。DSP56000 目前已经发展成为
DSP56000,DSP56100,DSP56200 和DSP56300 等几个不同系列的处理器。
DSP 的设计者们把重点放在了处理连续的数据流上。在嵌入式应用中,如果强调对连
续的数据流的处理及高精度复杂运算,则应该选用DSP 器件。

 

SOC 可以分为通用和专用两类。通用系列包括Motorola 的M-Core,某些ARM 系列器
件,Echelon 和Motorola 联合研制的Neuron 芯片等。专用SOC 一般专用于某个或某类系统
中,不为一般用户所知。一个有代表性的产品是Philips 的Smart XA,它将XA 单片机内核
和支持超过2048 位复杂RSA 算法的CCU 单元制作在一块硅片上,形成一个可加载JAVA
或C 语言的专用的SOC,可用于公众互联网如Internet 安全方面。

 

ROM 中的信息一次写入后只能被读出,而不能被操作者修改或删除,一般由芯片制造
商进行掩膜写入信息,价格便宜,适合于大量的应用。一般用于存放固定的程序,如监控程
序、汇编程序等,以及存放各种表格。EPROM(Erasable Programmable ROM)和一般的ROM
不同点在于它可以用特殊的装置擦除和重写它的内容,一般用于软件的开发过程。


动态RAM 按制造工艺的不同,又可分为动态随机存储器(Dynamic RAM)、扩展数据
输出随机存储器(Extended Data Out RAM)和同步动态随机存储器(Synchromized Dynamic
RAM)。DRAM 需要恒电流以保存信息,一旦断电,信息即丢失。它的刷新频率每秒钟可达
几百次,但由于DRAM 使用同一电路来存取数据,所以DRAM 的存取时间有一定的时间间
隔,这导致了它的存取速度并不是很快。另外,在DRAM 中,由于存储地址空间是按页排
列的,所以当访问某一页面时,切换到另一页面会占用CPU 额外的时钟周期。EDO-RAM
同DRAM 相似,但在把数据发送给CPU 的同时可以去访问下一个页面,故而速度要比普通
DRAM 快15~30%。SDRAM 同DRAM 有很大区别,它使用同一个CPU 时钟周期即可完成
数据的访问和刷新,即以同一个周期、相同的速度、同步的工作,因而可以同系统总线以同
频率工作,可大大提高数据传输率,其速度要比DRAM 和EDO-RAM 快很多(比EDO-RAM
提高近50%)。


液晶显示屏(liquid crystal display:LCD)用于显示GUI(图象用户界面)环境下的文
字和图象数据,适用于低压、微功耗电路。
从选型角度,我们将常见液晶分为以下几类:段式(也称8 字)、字符型和图形点阵。
段式液晶:常见段式液晶的每字为8 段组成,即8 字和一点,只能显示数字和部分字母,
如果必须显示其它少量字符、汉字和其它符号,一般需要从厂家定做,可以将所要显示的字
符、汉字和其它符号固化在指定的位置,比如计算器和电子表所用的液晶。
字符型液晶:顾名思义,字符型液晶是用于显示字符和数字的,对于图形和汉字的显示
方式与段式液晶无异。字符型液晶一般有以下几种分辨率,8×1,16×1、16×2、16×4、20×2、
20×4、40×2、40×4 等,其中8(16、20、40)的意义为一行可显示的字符(数字)数,1(2、
4)的意义是指显示行数。
图形点阵式液晶:我们又将其分为TN、STN(DSTN)、TFT 等几类。这种分类需从液晶
材料和液晶效应讲起,请参考液晶显示原理。
TN 类液晶由于它的局限性,只用于生产字符型液晶模块;而ST(DSTN)类液晶模块一
般为中小型,既有单色的,也有伪彩色的;TFT 类液晶,则从小到大都有,而且几乎清一色
为真彩色显示模块。除了TFT 类液晶外,一般小液晶屏都内置控制器(控制器的概念相当于
显示卡上的主控芯片),直接提供MPU 接口;而大中液晶屏,要想控制其显示,都需要外加
控制器。
从色彩上分,LCD 显示屏分为单色、灰度和彩色三种,价格由低到高,单色LCD 的点
阵只能显示亮和暗,通常只用于低端的不需显示图形的场合;带灰度级的LCD 常用的有2bit
4 级灰度和4bit 16 级灰度,可以显示简单的带有层次的图形或图象;彩色LCD 的色彩以颜
色数为标准。彩色LCD 分为有源(Active)及无源(Passive)型两种,有源型就是常见的
TFT(Thin Film Transistor,薄膜晶体管)LCD,特点是显示清晰、分明、视角大,但价格高。
之所以如此,是因为有源LCD 更新屏幕的频率较快,而且它屏幕上的每个象素,分别是由
一个独立的晶体管控制的(无源的就不是)。这样,也导致了有源矩阵LCD 的一个缺点,就
是这种显示器要使用相当多的晶体管,造价也就高。无源型就是常见的STN(super-twist ed
nematic,超扭曲向列型) LCD,最显著优点是造价低。
按背光将液晶分类,有透射式、反射式、半反半透式液晶三类,因为液晶为被动发光
型显示器,所以必须有外界光源,液晶才会有显示,透射式液晶必须加上背景光,反射式
液晶需要较强的环境光线,半反半透式液晶要求环境光线较强或加背光。
字符类液晶,带背光的一般为LED 背光,以黄颜色(红、绿色调)为主。一般为+5V 驱
动。单色STN 中小点阵液晶,多用LED 或EL 背光,EL 背光以黄绿色(红、绿、白色调)
常见。一般用400—800Hz、70—100V 的交流驱动,常用驱动需要约1W 的功率。中大点阵
STN 液晶和TFT 类液晶,多为冷阴极背光灯管(CCFL/CCFT),背光颜色为白色(红、绿、
蓝色调)。一般用25k—100kHz,300V 以上的交流驱动。

嵌入式系统中的触摸屏分为电阻式、电容式和电感式三种,其中电阻式触摸屏最为常用。


用户不断地要求所用的嵌入式装置更小、更轻便同时又更易于使用,能解决这三方面问
题的一种可行技术就是语音识别。这种技术由于去掉了传统的输入器件,故具有更小和更轻
便的特点。语音识别输入的实现可以在嵌入式处理器功能足够强大时用相应的软件实现,也
可以使用专用芯片增加一个硬件功能模块。前者对嵌入式系统硬件配置的要求较高,如处理
器的速度和存储器的容量等。后者则通过专门的DSP 芯片来完成语音识别输入过程中的所
有运算工作,不会加重系统主处理器的负担。这种专用的语音识别芯片现在已经有多种产品
出现了。如sensory 公司的语音识别芯片系列,内部采用神经网络技术来识别训练过的单词
或短语,准确度高于99%。并且芯片高度集成化,减少了所需外部元器件的数目。可以快
速和方便地嵌入到现存的和新设计的产品中,适用于多种需要语音控制的嵌入式产品。
语音识别技术以识别方法来分,有模板匹配法、随机模型法和概率语法分析法。这三种
方法都属于统计模式识别方法。它的识别过程大致如下:首先选定语音的特征作为识别参数
的模板,然后采用一可以衡量未知模式和参考模式(即模板)的似然度的测量函数,最后选
用一种最佳准则及专家知识作为识别策略,对识别候选者作最后判决,得到最好的识别结果
作为输出。以识别范围来分,分为语音从属(speaker-dependent) 模式和语音独立
(speaker-independent)模式。语音从属意味着必须有培训系统,而且通常它只可识别培训
系统的人所讲的词。语音独立系统则可识别几乎所有讲话人的词。从目前水平来看,语音从
属模式下的模板匹配法用得比较广泛。
语音识别技术在嵌入式系统上的使用,不仅可以通过声音命令来控制设备,还可将
输入的声音转换为文本,使得用户就能用声音口述需要输入的文本。如果再加上语音合成
输出功能,就可以在嵌入式系统中实现书面语言和口头语言的双向转换,从而构成完整的语
音输入输出功能。

 

并口的工作模式主要有如下几种:
(1) SPP 标准工作模式。SPP 数据是半双工单向传输的,传输速率仅为15Kb/s,速度较
慢,但几乎可以支持所有的外设,一般设为默认的工作模式。
(2) EPP 增强型工作模式。EPP 采用双向半双工数据传输,其传输速度比SPP 高,可
达2MB/s。EPP 可细分为EPP1.7 和EPP1.9 两种模式,目前较多外设使用此工作模
式。
(3) ECP 扩充型工作模式。ECP 采用双向全双工数据传输,传输速率比EPP 要高。

 

在嵌入式系统的开发和应用中,经常需要使用上位机实现系统的调试及现场数据的采集
和控制。一般是通过上位机本身配置的串行口,通过串行通讯技术,和嵌入式系统进行连接
通讯。串行口的典型代表是RS-232-C 及其兼容插口,。RS-232-C 标准规定的数据传输速率为每秒50、75、 100、150、
300、600、1200、2400、4800、9600、19200 波特。一般应用情况下,RC232C 的最高传输速率为20 kb/s, 最大
传输线长为30 米.


USB全称Universal Serial Bus(通用串行总线)。USB接口是现在比较流行的接口,用于
将使用USB的外围设备连接到主机。在USB 的网络协议中,每个USB 的系统有且只有一个
host, 它负责管理整个USB系统,包括USB Device 的连接与删除、Host 与USB Device 的
通信、总路线的控制等等。Host端有一个Root Hub,可提供一个或多个USB 下行端口。每
个端口可以连接一个USB Hub或一个USB Device。USB Hub 是用于USB 端口扩展的,即
USB Hub 可以将一个USB端口扩展为多个端口。


由于利用红外线接口进行文件传输不用连线,且速度较快,达4M/s,不失为短距离双
机通讯的一种好方法。进行红外线通讯时需注意:将具有红外线通讯功能的两个系统靠近,
且发送口大致在同一水平线上,注意两系统之间的距离不能相差太远,一般在一到两米,角
度相差不超过30 度。


在现代电子系统中,有为数众多的IC 需要进行相互之间以及与外界的通信。为了提供
硬件的效率和简化电路的设计,PHILIPS 开发了一种用于内部IC 控制的简单的双向两线串
行总线I2C(inter IC 总线)。I2C 总线支持任何一种IC 制造工艺,并且PHILIPS 和其他厂商
提供了种类非常丰富的I2C 兼容芯片。作为一个专利的控制总线,I2C 已经成为世界性的工
业标准。


串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola 公司推出的一
种同步串行接口。Motorola 公司生产的绝大多数MCU(微控制器)都配有SPI 硬件接口,
如68 系列MCU。SPI 总线是一种三线同步总线,因其硬件功能很强,所以,与SPI 有关的
软件就相当简单,使CPU 有更多的时间处理其他事务。


,PC104
是一种专门为嵌入式控制而定义的工业控制总线。
PC104 有两个版本,8 位和16 位,分别与PC 和PC/AT 相对应。PC104PLUS 则与PCI
总线相对应,在PC104 总线的两个版本中,8 位PC104 共有64 个总线管脚,单列双排插
针和插孔,P1:64 针,P2:40 针,合计104 个总线信号,PC104 因此得名。当8 位模块
和16 位模块连接时,16 位模块必须在8 位模块得下面。P2 总线连结在8-位元模块中是可
选的。
PC104PLUS 是专为PCI 总线设计的,可以连接高速外接设备。PC104PLUS 在硬件
上通过一个3×40 即120 孔插座连接,PC104PLUS 包括了PCI 规范2.1 版要求的所有信号。
为了向下兼容,PC104PLUS 保持了PC104 的所有特性。因此PC104PLUS 规范包含了两种
总线标准:ISA 和PCI,可以双总线并存。
PC104PLUS 与PC104 相比有以下3 个特点:
(1) 相对PC/104 连接,增加了第三个连结接口支持PCI 总线
(2) 改变了组件高度的需求,增加模块的柔韧性
(3) 加入了控制逻辑单元,以满足高速总线的需求

 

CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场
总线之一。起先,CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置
ECU 之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪
表装备、电子主干系统中,均嵌入CAN 控制装置。CAN 是一种多主方式的串行通讯总线,
基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当
信号传输距离达到10Km 时,CAN 仍可提供高达50Kbit/s 的数据传输速率。
为促进CAN 以及CAN 协议的发展,1992 在欧洲成立了CiA(CAN in Automation)。在
CiA 的努力推广下,CAN 技术在汽车电控制系统、电梯控制系统、安全监控系统、医疗仪
器、纺织机械、船舶运输等方面均得到了广泛的应用。现已有400 多家公司加入了CiA,
CiA 已经为全球应用CAN 技术的权威。

CAN 的主要特性
(1) 低成本;
(2) 极高的总线利用率;
(3) 很远的数据传输距离(长达10Km);
(4) 高速的数据传输速率(高达1Mbit/s);
(5) 可根据报文的ID 决定接收或屏蔽该报文;
(6) 可靠的错误处理和检错机制;
(7) 发送的信息遭到破坏后,可自动重发;
(8) 节点在错误严重的情况下具有自动退出总线的功能;
(9) 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。


长达10Km);
(4) 高速的数据传输速率(高达1Mbit/s);
(5) 可根据报文的ID 决定接收或屏蔽该报文;
(6) 可靠的错误处理和检错机制;
(7) 发送的信息遭到破坏后,可自动重发;
(8) 节点在错误严重的情况下具有自动退出总线的功能;
(9) 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。


大家看了请随便回个字呀,算是对我的尊重啦

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类: 无分类    |    来源: 转贴

评论(2) | 阅读(680)
发表于:2007-8-17 21:21:20
标签:无标签

0

ARM的开发步骤 (转)

ARM的开发步骤

ARM的开发步骤
1. 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,
把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,
所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。
使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,
如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。

2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:
初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,
连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader会有很多东西,
但是不要被这些复杂的程序所困扰,因为你不是做开发板的,你的任务就是做段小程序,
让你的应用程序能够运行下去

3. 仔细研究你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,
编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,
总想拿别人的示例程序修改,却越改越乱。

4. 多看一些操作系统程序,在ARM的应用开放源代码的程序很多,要想提高自己,
就要多看别人的程序,linux,uc/os-II等等这些都是很好的原码。

6.如果你是作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。先将原理图消化。
这样你以后做设计时,对资源的分配心中有数。器件的DATSHEET一定要好好消化。

7.如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。
但如果是硬件出身的就有点费劲。

问:做最小系统板是2层还是4层好?
答:只有AT91可以用两层板,其他的最少4层;44b0的地和电源处理好也可用两层板;

谈四层板和33欧电阻:
选用四层板不仅是电源和地的问题,高速数字电路对走线的阻抗有要求,二层板不好控制阻抗。
33欧电阻一般加在驱动器端,也是起阻抗匹配作用的;布线时要先布数据地址线,和需要保证的高速线;
在高频的时候,PCB板上的走线都要看成传输线。传输线有其特征阻抗,学过传输线理论的都知道,
当传输线上某处出现阻抗突变(不匹配)时,信号通过就会发生反射,反射对原信号造成干扰,
严重时就会影响电路的正常工作。采用四层板时,通常外层走信号线,中间两层分别为电源和地平面,
这样一方面隔离了两个信号层,更重要的是外层的走线与它们所*近的平面形成称为“微带”(microstrip)
的传输线,它的阻抗比较固定,而且可以计算。对于两层板就比较难以做到这样。
这种传输线阻抗主要于走线的宽度、到参考平面的距离、敷铜的厚度以及介电材料的特性有关,
有许多现成的公式和程序可供计算。

33欧电阻通常串连放在驱动的一端(其实不一定33欧,从几欧到五、六十欧都有,视电路具体情况) ,
其作用是与发送器的输出阻抗串连后与走线的阻抗匹配,使反射回来(假设解收端阻抗没有匹配) 的信号
不会再次反射回去(吸收掉),这样接收端的信号就不会受到影响。接收端也可以作匹配,例如采用电阻并联,
但在数字系统比较少用,因为比较麻烦,而且很多时候是一发多收,如地址总线,不如源端匹配易做。
这里梭说的高频,不一定是时钟频率很高的电路,是不是高频不止看频率,更重要是看信号的上升下降时间。
通常可以用上升(或下降) 时间估计电路的频率,一般取上升时间倒数的一半,比如如果上升时间是1ns,
那么它的倒数是1000MHz,也就是说在设计电路是要按500MHz的频带来考虑。有时候要故意减慢边缘时间,
许多高速IC其驱动器的输出斜率是可调的


构造嵌入式Linux

Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交*运行环境,
并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。

内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在
Linux中也容易得到实现。

强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。
  Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。
它能处理嵌入式任务和用户界面。一个小型的嵌入式Linux系统只需要下面三个基本元素:
  * 引导工具
  * Linux微内核,由内存管理、进程管理和事务处理构成
  * 初始化进程
  如果要让它能干点什么且继续保持小型化,还得加上:
  * 硬件驱动程序
  * 提供所需功能的一个或更多应用程序。
  再增加功能,或许需要这些:
  * 一个文件系统(也许在ROM或RAM)中
  * TCP/IP网络堆栈
  下面我们就从精简内核、系统启动、驱动程序将、X-Window换成MicroWindows四个步骤
介绍嵌入式Linux的实际开发。

  精简内核
  构造内核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、
modules、modules_install。命令说明略。

  现在举个例子说明一下:
  我使用的是 Mandrake内附的 2.2.15。我没有修改任何一行程序码,完全只*修改组态档
得到这些数据。

  首先,使用 make config 把所有可以拿掉的选项都拿得。
不要 floppy;不要SMP、MTRR;不要 Networking、SCSI;
把所有的 block device 移除,只留下 old IDE device;
把所有的 character device 移除;
把所有的 filesystem 移除,只留下 minix;不要 sound 支援。
相信我,我己经把所有的选项都移除了。这样做之后,我得到了一个 188K 的核心。
  还不够小吗? OK,再加上一招,请把下列两个档案中的 -O3,-O2 用 -Os 取代。
  ./Makefile
  ./arch/i386/kernel/
  Makefile
  这样一来,整个核心变小了 9K,成为 179K。
  不过这个核心恐怕很难发挥 Linux 的功能,因此我决定把网络加回去。

把General中的 network support 加回去,重新编译,核心变成 189 K。10K就加上个 TCP/IP stack,
似乎是很上算的生意。

  有stack没有driver也是枉然,所以我把 embedded board常用的RTL8139的driver加回去,195K。
  如果你需要 DOS 档案系统,那大小成为 213K。如果 minix 用 ext2 换代,则大小成长至 222K。
  Linux所需的内存大约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,
因为连载入C程序库都有困难。2MB内存应该就可以做点事了,
但要到 4MB以上才可以执行一个比较完整的系统。

  因为Linux 的filesystem 相当大,大约在 230K 左右,占了 1/3 的体积。内存管理占了80K,
和核心其它部分的总和差不多。TCP/IP stack 占了65K,驱动程序占了120K。SysV IPC占了 21K,
必要的话可以拿掉,核心档应该可以再小个10K左右。

  如果要裁剪核心大小,应该动那里呢? 答案很明显,当然是文件系统。Linux 的 VFS简化了
档案系统的设计,buffer cache, directory cache增加了系统的效率。但这些embedded系统
根本就用处不大。如果可以把它们拿掉,核心可以马上缩小 20K 左右。如果跳过整个 VFS,
直接将文件系统写成一个 driver 的型式,应该可以将 230K缩减至50K左右。整个核心缩到100K左右。

  系统启动
  系统的启动顺序及相关文件仍在核心源码目录下,看以下几个文件:
  ./arch/$ARCH/boot/
  bootsect.s
  ./arch/$ARCH/boot/setup.s
  ./init/main.c
  bootsect.S 及 setup.S
  这个程序是Linux kernel的第一个程序,包括了Linux自己的bootstrap程序,


但是在说明这个程序前,必须先说明一般IBM PC开机时的动作(此处的开机是指“打开PC的电源”)。

  一般PC在电源一开时,是由内存中地址FFFF:0000开始执行(这个地址一定在ROM BIOS中,
ROM BIOS一般是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个
位于ROM BIOS中的位置,开始执行一系列的动作。

  紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROM bootstrap routine)。
这个程序会将磁盘上的第零轨第零扇区读入内存中,至于读到内存的哪里呢?
--绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特性。

而位于Linux开机磁盘的boot sector上的,正是Linux的bootsect程序。

  把大家所熟知的MS DOS 与Linux的开机部分做个粗浅的比较。MS DOS 由位于磁盘上
boot sector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel --MSDOS.SYS
载入内存的重任。而Linux则是由位于boot sector 的bootsect程序负责把setup及Linux的kernel载入内存中,
再将控制权交给setup。


  驱动程序
  在Linux系统里,设备驱动程序所提供的这组入口点由一个结构来向系统进行说明。
  设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行登记,以便系统在适当的时候调用。Linux系统里,通过调用register_chrdev 向系统注册字符型设备驱动程序。
  在Linux里,除了直接修改系统核心的源代码,把设备驱动程序加进核心里以外,还可以把设备驱动程序作为可加载的模块,由系统管理员动态地加载它,使之成为核心的一部分。也可以由系统管理员把已加载的模块动态地卸载下来。Linux中,模块可以用C语言编写,用gcc编译成目标文件(不进行链接,作为*.o文件存在)。为此需要在gcc命令行里加上-c的参数。在成功地向系统注册了设备驱动程序后(调用register_chrdev成功后),就可以用mknod命令来把设备映射为一个特别文件。其它程序使用这个设备的时候,只要对此特别文件进行操作就行了。
  将X-Window换成MicroWindows
  MicroWindows是使用分层结构的设计方法。允许改变不同的层来适应实际的应用。在最底一层,提供了屏幕、鼠标/触摸屏和键盘的驱动,使程序能访问实际的硬件设备和其它用户定制设备。在中间一层,有一个轻巧的图形引擎,提供了绘制线条、区域填充、绘制多边形、裁剪和使用颜色模式的方法。在最上一层,提供了不同的API给图形应用程序使用。这些API可以提供或不提供桌面和窗口外形。目前,MicroWindows支持Windows Win32/WinCE GDI和Nano-X API。这些API提供了Win32和X窗口系统的紧密兼容性,使得别的应用程序可以很容易就能移植到MicroWindows上。
  何谓嵌入式系统
  嵌入式系统被定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可*性、成本、体积、功耗严格要求的专用计算机系统。
  嵌入式系统是面向用户、面向产品、面向应用的,如果独立于应用自行发展,则会失去市场。嵌入式处理器的功耗、体积、成本、可*性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,这些也是各个半导体厂商之间竞争的热点。嵌入式处理器的应用软件是实现嵌入式系统功能的关键。软件要求固化存储,软件代码要求高质量、高可*性,系统软件(OS)的高实时性是基本要求。
  在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。

点击此处查看原文 >>

系统分类: ARM   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(826)
总共 , 当前 /