星期二,04月15日, 2008 – 11:31:43
最近开始研究TI的DSP。初步接触,对CMD文件很有些头疼,经过多方学习,也和TI的一些第三方支持如北京瑞泰等接触学习了一下,终于弄明白的CMD文件的相关信息,特此共享之。
CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件。从其名称可以看出,该文件的作用是指明如何链接程序的。
那么我们知道,在编写TI DSP程序时,是可以将程序分为很多段,比如text、bss等,各段的作用均不相同。实际在片中运行时,所处的位置也不相同。比如text代码一般应该放在flash内,而bss的变量应该放在ram内。等等。但是对于不同的芯片,其各存储器的起止地址都是不一样的,而且,用户希望将某一段,尤其是自定义段,放在什么存储器的什么位置,这也是链接器不知道的。为了告诉链接器,即将使用的芯片其内部存储空间的分配和程序各段的具体存放位置,这就需要编写一个配置文件,即CMD文件了。
所以,CMD文件里面最重要的就是两段,即由MEMORY和SECTIONS两个伪指令指定的两段配置。简单的说,MEMORY就是用来建立目标存储器的模型,而SECTIONS指令就是根据这个模型来安排各个段的位置。
MEMORY指令可以定义目标系统的各种类型的存储器,及容量。MEMORY的语法如下:
MEMORY { PAGE 0 : name1[(attr)] : origin = constant,length = constant name1n[(attr)] : origin = constant,length = constant PAGE 1 : name2[(attr)] : origin = constant,length = constant name2n[(attr)] : origin = constant,length = constant PAGE n : namen[(attr)] : origin = constant,length = constant namenn[(attr)] : origin = constant,length = constant }
其中。PAGE关键词对独立的存储空间进行标记,页号n的最大值为255,实际应用中一般分为三页,PAGE [...]
星期四,04月3日, 2008 – 16:33:42
前几天一个同学说参加IDF的志愿者面试,我才知道了Intel这一年度盛事。作为CPU制造业的龙头,英老大的一举一动对业界都很有分量。这次IDF,英老大更是带来了一个伟大的小东西,应用ATOM凌动的MID设备以及台式机。
首先说下ATOM凌动。Intel于3月3日正式宣布推出迅驰凌动处理器技术“Centrino Atom”,该种处理器有两种,一种是应用在MID产品上的,其研发代号为Silverthorne;另一种是应用在华硕Eee PC与后续台式互联网终端这样的产品,其研发代号为Diamondville。貌似刚结束的IDF08上,是正式发布ATOM处理器,并同时发布其中文名凌动。
此次发布的凌动处理器包括5种SKU,其功耗规格在0.6瓦至2.5瓦之间,速度可以达到1.8GHz,相比之下,当今主流的移动酷睿2双核处理器的功耗在35瓦左右;其尺寸不到25平方毫米,11个处理器芯片也只有人民币一角钱硬币的大小,这使它成为英特尔历史上有史以来最小的、功耗最低的处理器。
英特尔同时还宣布推出针对MID平台的英特尔迅驰凌动处理器技术,该处理器技术的开发代码为“Menlow”,它包括英特尔凌动处理器、一个包含集成显卡的低功耗同伴芯片、无线通讯部件,以及更轻更薄的产品设计。
这些新型的芯片(设计代码为“Silverthorne”和“Dia-mondville”)将采用英特尔45纳米Hi-k金属栅极技术生产,每个细长的英特尔凌动处理器芯片的硅晶片中封装了4700万个晶体管。
“这是我们采用全球最小的晶体管生产出来的最小的处理器,”英特尔执行副总裁兼首席营销官SeanMaloney 说,“这一小小的奇迹是设计领域一次新的重要飞跃,它体积虽小却功能强大,足以在这些新设备上实现丰富庞杂的互联网体验。我们相信它将给业界开创新一轮的创新。”
恩。根据ImpressWatch的这篇文章来看,这个小东西真的很强悍。以2.4w的功耗,可以做到1.83GHz的主频,并且有16级双流水线,性能极为强悍,而这一切仅有25个平方毫米,并且成本极低。某网站更是打出了 26元的处理器 的标题。恩。很好很强大。
这个小东西出来,智能手机必然又要地震一下,看来智能手机的摩尔定律也快要生效了。事实上,据说Intel的演讲中也提到现有的400MHz的智能手机应用并不是很能满足用户体验。相信装备了ATOM的手机全面上市后,智能手机的性能将会提升很大一个层次。
不过,也许智能手机这个概念在Atom大面积铺开后就将不复存在,因为Intel还在推动另一项技术 MID。
MID,全称Mobile Internet Device,移动互联网设备。是去年春季IDF宣布的新产品。相较于英特尔先前推动的超级移动计算机(UMPC)强调是全功能的小型随身电脑,锁定移动专业人士;MID则诉求的让一般消费者也能随时随地上网汲取信息。作为介于手机和笔记本之间的一个手持设备,MID不仅具备低端笔记本的运算性能以及手机的便携性,同时还可以直接连接互联网,这将很好的满足用户在任何时间、任何地点进行自由的沟通需求。
而今年,Intel发布了Atom这个MID很重要的核心,同时,包括联想、华硕、明基、富士通、松下、爱国者,以及国内外好几家知名OEM、ODM厂商,均同台发布了基于英特尔凌动(Atom)处理器技术的MID产品。具体的介绍可以看网易IDF08专题的这篇文章。各家的产品各有特色,但是看体积都并不大,功能却都很强悍,真的推广起来,智能手机只能载入史册,MID一统天下了~
这一次的IDF还真是惊喜连连,也许因为我刚入行,听见这些消息还是很振奋的,就好像去年TI峰会上听说Da Vinci架构。新技术真的很强大,应用起来前景不可限量。未来生活多美好啊……呵呵。
另外,貌似此次IDF08,Intel还提到了USB3.0,看来USB的又一次提速指日可待。而腾讯更是和Intel联合推出了基于MID的移动QQ,看来MID产品化指日可待了。恩。
下面是Intel Atom的LOGO,也许某天,买的手机或者电脑上,就贴着这个LOGO呢。那时候,数码生活将是怎么样的强悍哪……呵呵……
星期四,01月3日, 2008 – 21:34:40
前几天在做这个项目,将PIC和Neuron芯片通过SCI连接起来。不得不说ECHELON公司的文档有点不清晰。尽管文档很多,但是仅仅增加了开发者查询资料的困难程度而已。恩。
至于Neuron芯片是什么,呵呵,百度一下你就知道。大致的说就是应用于LonWorks现场总线的专用通讯芯片,内部封装了LonTalk协议的低下全部六层,用户仅需要实现第七层就可以。很方便,另一方面,也意味着不开源、封闭……呵呵,当然,这个不是我们关心的方面了。
从ECHELON的文档看来,好像最近才加入了SCI模块,这样就可以实现一个硬件的UART。之前的Neuron芯片虽然也提供了串行接口,但是好像是软件实现的,所以速度较慢。有硬件的移位器当然还是硬件的好。
然后,实际使用的话,UART仅可以进行异步通信。从名字也可以看出来么。使用IO8作为接收,IO10作为发送。在Neuron C中声明一个SCI口很简单,语法是
IO_8 sci [baud (const-expr)] [twostopbits] io-object-name;
其中,baud参数是用来指定波特率的,使用其中的const-expr参数来指定通讯时使用的波特率。这个const-expr是一个enum,包括SCI_300, SCI_600, SCI_1200, SCI_2400, SCI_4800, SCI_9600, SCI_19200, SCI_38400, SCI_57600, and SCI_115200这些可用的值。twostopbits如果也出现在声明句中,那么就指定通信时停止位是两位。
当然,程序中也可以更改波特率,使用 io_set_baud(io-obj-name, rate) 函数就可以。io-obj-name就是你定义的SCI的端口名称,rate就是列举出来的那些可用值的其中一个。要说明的是:如果在声明SCI端口时并没有指定波特率,即没有使用baud参数,那么在使用串行通信前,必须用io_set_baud来指定一个有效的波特率。
还有就是,这个enum是在一个默认不被包含的一个头文件里面被定义的,所以编译时可能会出现SCI_19200未被定义的错误。这时在程序的common.h或者别的头文件里面包含该头文件即可。(头文件名字忘了。。明天到公司查一下再补上……)
然后……这个波特率定义还真麻烦……为了能够自定义波特率,程序中一定要有这么一行参数定义
#pragma specify_io_clock clock-rate
其中clock-rate是你Neuron芯片外接的晶振的频率,必须是”10 MHz”,”6.5536 MHz”,”5 MHz”或者”2.5 MHz”中的一个,包括引号。
那么定义完成后,就可以使用SCI来进行通讯了。但是,SCI的通讯和普通IO通讯不同,熟悉的io_in和io_out是不可用的。可用的函数如下:
unsigned short buffer-size;unsigned short buffer[buffer-size];unsigned short io_in_request(io-object-name, buffer, buffer-size);unsigned short io_out_request(io-object-name, buffer, buffer-size);unsigned short io_in_ready(io-object-name);unsigned short io_out_ready(io-object-name);unsigned short sci_get_error(io-object-name);void sci_abort(io-object-name);
其中开始两个是buff的定义。io_in_request和io_out_request用以初始化和开始一个输入和一个输出。输入的值放在buffer里面或者输出buffer里面的值,输入或者输出的字符个数由buffer-size定义。比如,SCI接口名sciport,定义了一个unsigned short buff[20],然后准备接收8个字符,那么就
io_in_request(sciport,buff,8);
至于发送方面,本人项目中没有用到,不敢乱说。呵呵。仔细研究文档+自己好好试验,肯定都能出来的。恩。
那么,如何判定其接收完成以进行处理动作呢?看了看文档,只是说了SCI是使用中断模式、以及提供了两个启用、禁用中断的函数,然后说在接收完buffer-size这么多数据后接收就完成。但是没有说接收完成会怎么样。好在还有一个io_in_ready。这个函数在其他情况下,返回值是指示接收是否成功完成的。不过在SCI里面,有点特殊,这个函数的返回的是当前通过SCI接收到的字符数。有了这个,就比较方便了。比如刚才的例子,我们希望每接收到8个字节就处理一下,那么就可以
when(io_in_ready(sciport)==8){…}
呵呵。接收部分我就发现这么多,高手也请多多指教。
另外,在这里也共享一段我项目里面SCI接收的代码。
//定义段#pragma specify_io_clock "10 MHz"IO_8 sci baud (SCI_19200) SCIPort;unsigned short [...]
星期三,01月2日, 2008 – 15:43:04
IEEE对于嵌入式系统的定义是:An Embedded system is the devices used to control, monitor, or assist the operation of equipment, machinery or plants.嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”。
在中国嵌入式系统领域,比较认同的嵌入式系统概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点:
1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。
2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。
4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。
嵌入式计算机系统同通用型计算机系统相比具有以下特点:
1、嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。
2、嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
3、嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
4、嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
5、为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
6、嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。
星期日,12月16日, 2007 – 01:24:57
恩,NND。睡不着了,咋回事呢。
最近躺下之后心就跳的厉害,很难受,加上今天不知咋啦,有点兴奋,目前暂时睡不着了~
最近其实挺心烦的,项目停滞将近半个月,周五主管和我谈了谈工作,准备先行开始做网络部分。下周可以继续开始搞,而且还是搞我一直最想搞的部分。不过一段时间的停滞,我现在反倒没有劲头了……
而且,主管说的话也很有意思,话里有话的感觉。好像像是为了避免我被那边裁员掉、给我找个活干似的感觉。颇有一种被郁闷感。然后公然说出了:如果那边待遇不好,那就再走么~这样的话。。感觉很有意思……我着实有点怀疑若干事情了……
恩。自从被收购以后,不确定感就让我的精神很紧张的感觉,也不能算是紧张,应该是敏感吧~
不过,抛开这些不谈,手头的事情还是挺多的。下周向主管申请KEY,把系统弄好,开始做网络部分,好好的写个计划,按步骤一步一步来,把这个先做做好。真的出去了,也好说:我做完了一个完整项目!
发现某些经验不足和某些不良习惯让我很有一些吃亏,以后在办公室为人处事要更注意才好,我的这个小小的公司的研发团队不是很舒适,难怪另一个软件MM会说:这里的人很有心计。
……恩,上一句话不应该出现的,因为这些都是我通过非常手段获得的信息。。。在这里也先说声抱歉~实在是太无聊了才会做这些事~恩~
另外也想对软件MM说一点就是:世事不尽如人意,凡事要往好的方面想,而且,不要总是幻想环境改变,自己需要改变来适应适应环境,并且,现实社会了,有时很冷血的,冷血到残酷的地步,请做好心理准备。。。
反正她也不会看见,自己写出来自己心里舒服就好了……
自己感觉自己目前的地位很尴尬,但是我要厚着脸皮混下去,因为我要攒经验,这个项目是个高EXP的项目。并且,如果做好了,可能继续做下去,可以再拿一些EXP。而且,我的自尊心要求我:只在自己不想留在这个公司有了更好的发展,才会主动提出辞职。决不能因为实在呆不下去了被迫辞职或者干脆被扫地出门。可恨的自尊心。但是还要满足它……
不过,也许这些都是我的猜测,也许这一切都不存在的,也许都是我的想象而已……
好了,说点好事情吧。工作总是要继续的,好做不好做,做下去就是了。
最近开始踅摸数码相机。恶补了一下数码相机知识,现在对于什么1/1.8英寸CCD、长焦广角、ISO、快门等专业术语俨然很熟悉了。左挑右选,选定CANON A570 IS。该机目前报价1550左右。优点在于:IS光学防抖镜头,DIGIT III图像处理引擎,带有脸部识别功能,canon的一贯的好画质,镜头焦距35mm-140mm,而且,最重要的是,本机带有全手动功能,可以用来学习摄影,以后出去逢人就说:我这个相片是ISO多少多少,光圈多少多少,快门多少多少什么什么情况下拍的,混充专业人士……
不过价格的确还是有点高,其实本来想买A560的,但是又希望有光学防抖,NIKON的L15看着也不错,不过不是全手动不爽,而且,镜头焦距和微距也没有A570好。其他的卡片机基本被无视了。不过某理光R5的确不错,28mm-200mm的BT镜头,很勾引我。但是最终还是被脸部识别吸引……
但是据说A570的电池会误报,这个。。到时看吧,实在不行上SANYO电池。。
不过,鉴于价格还是有一点高,加上马上又要过年,可能会有促销降价或者套装之类出现,决定再等等再出手。反正现在也不急用~
所以,PSP计划基本搁浅了。没有半年估计不会买了~恩~赞,或者如果涨工资了,就可以继续考虑。
然后,最近在研究某本友会的帖子,发现ACER的机友们,很BT的有DIY精神,看的心痒痒的,准备先给本子加装一个蓝牙。本子上的蓝牙按钮不能用太不爽了。加之!看看教程也不难,只是要完全拆机,有点难度,顺便学习一下本子的拆卸过程。恩~
以后有了钱,给本子升级CPU换好显卡……原来本子也可以这样DIY,爽啊,爽到了,哇哈哈哈哈……
还是不困……NND,今晚要是不睡,下周一周都不舒服,下周可是很关键啊!NND。。。
可惜今天出去溜达一圈,却被某网站晃点,没有找到某路车,导致没去买配件,原定的明天镶牙计划看来要顺延至下周了。其实真要做也方便,有原料的话,有个两小时就完成了,所以也许明天我一冲动就跑出去买原料回来做了……我这个人说不准的……
依然不困……
NND……
耗着吧~先就这样……