电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

ARM学习规划

来源:盘古文库作者:开心麻花2025-09-131

ARM学习规划(精选6篇)

ARM学习规划 第1篇

ARM学习心得,ARM入门,ARM基础,什么是ARM 一个电子工程师的ARM学习心得 目录:

一 首先说说ARM的发展 二 ARM是硬件还是软件 三 要不要买开发板 买哪家

四 要不要有51 AVR等单片机基础 五 开发都需要学习哪些软件

七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 八 学习要用多长时间

九 ARM都玩什么 十 我用的什么板子 十一 开发流程

十二 关于JTAG访真器 十三 哪个公司的ARM 我的笔记刚公布就有很多朋友来找我,把我当高手,问我“ARM怎么入门”。我不是高手,仍然是菜鸟。

但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。

首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。

所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵 以下问题常被问到,我就想到哪说到哪吧。一 首先说说ARM的发展

可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么

51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。

客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。

FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。

而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!很佩服他们的战略眼光!

值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。

写的多的是什么?“嵌入式LINUX”

到这相信大家看出来了吧,需要的是硬件中的软件。二 ARM是硬件还是软件

很难说,ARM是硬件,LINUX是软件。

ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。

实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家

我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。1 买

买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。

另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。

总体下来 元件+LCD屏+PCB=11XX块!够2410的了。

再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。2 做

自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。

当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。

再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。

网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖 的人。买哪家

个人感觉分3类吧

1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!在这里被ZLG的务实*感动!你看人家那代码写的。

2)感觉硅谷芯微的2440不错

硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的

好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。四 要不要有51 AVR等单片机基础

有更好,但没有也无所谓。

两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写 五 开发都需要学习哪些软件 总结起来最主要的有以下几个吧 ADS调试用

确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。

有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。2 PLASHPGM FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。

同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)

调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。

调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。

需要注意的是,没种调试代理安装方法虽然都简单 但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。4 ARM-ELF-TOOLS工具链

里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。5 U-BOOT 大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了 有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)最新版本是1.1.4 具体使用方法看我另一篇笔记吧。6 UCLINUX包

UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。7 VMWARE

老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS,安装方法在我另一篇笔记里。七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板500-1500吧。但是还是推荐选ARM9+LINUX 3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵 VXWORKS 学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。5 当单片机用

不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)

有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程

序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵 哈哈。这个是必须做的,但一带而过。目标放的远一点。

八 学习要用多长时间

我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。

再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”

我相信良好的态度+合适的方法+及时的总结=成绩 九 ARM都玩什么 就几点 1 硬件设计 2 系统移植 3 驱动开发 4 应用开发

没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。十 我用的什么板子

很多人问我这个问题,我特意写过一个的。再说一次吧。

我是自己做的,RAM、ROM、8019等比较麻烦而当时的自己不理解的都按照龚俊的做的。保持其他不便的情况下做了如下改动。1 加了串口通信的GPS模块、GPRS模块

一个UART0,一个UART1,当与要用超级终端时用跳线切换。2 SD卡,和7843触摸屏

同时挂在SPI总线上,因为SPI只能挂一个设备,同时还做了I/O模拟的准备,把两个设备又通过跳线挂在4个IO上。3 扩了个IIC的35个键子的键盘

用的ZLG的7290,不占用CPU,最大支持64个键子,只上了35个,其他留接口。4 把LCD接口按照买的LCD改装了,可以用FPC线直接连接。

所以改动虽然多,但真正很移植了,初期调试有关的并没动,就是为了现在不那么菜的时候做准备:)十一 开发流程

这里是我的开发流程 设计原理图(含WIGGLER的JTAG访真器)2 设计PCB(含WIGGLER的JTAG访真器)3 制版 焊接电压,确定电压没问题 焊接44B0+JTAG电路+WIGGLER的JTAG访真器+周边电路,用BANYANT+仿真器连接,BANYANT提示错误,但可以显示44B0编号,好象是0X0F0F0F0F只类的,说明44B0没问题 焊接晶体+RAM+ROM+周边电路,用BANYANT+仿真器连接,可以显示正确的44B0了 7 用BANYANT+仿真器连接,开AXD,在命令行窗口操作RAM,看可不可以修改,可以的话(用内存窗口看RAM地址)RAM就没问题 可以用这个命令“setmem 0xc000000,0xffffffff,32”

我的RAM挂在BANK6上 所以地址是0XC000000,你要是改了就也得改。8 用我写的《自己写了个C工程模板又写了个使用说明 》里的方法调试程序吧,写个简单的,我当时写个LED闪烁的。看好使不。把程序按照《FLASH烧写总结 》里的烧到FLASH里,测试一下 10 按照《UBOOT 移植操作》移植UBOOT 11 按照《UCLINUX下载简单说明》下个UCLINUX 12 看看驱动开发的方法,自己写个驱动看看 13 还有很多事东西着你玩 呵呵

十二 关于JTAG访真器

JTAG访真器现在用的多是简板的,一个244那种,用的没什么不好。

按照并口定义不同分几种,建议选WIFFLER定义的,因为支持的软件多。这个网上多的是,不多说了。

值得提的是有的JTAG访真器原理图上有跳线用来使能复位信号,这个一般不跳上。就是不用复位信号,因为JTAG协议里本身也可以控制44B0复位。当然,板子上的复位信号跳线也不用跳。十三 哪个公司的ARM 这个是问题比较简单。1 ARM7主要就几个公司的

三星,PHILIP,ATMEL的

ATMEL的有比较便宜的AT91SAM7S32 和AT91SAM7S64 专为8位应用产品量身定做,价格很便宜好象《3刀吧。和PHILIP的21XX差不多,资料太少,项目中选还不错。其他两家上面说了的不多说了吧 ARM9 这个玩2410和2440的多吧,现在2440还比较火啊 可以考虑买个了 但是2410就比较便宜了,作为学习来说反到和不错,推荐整一个:)

其实ARM9用的最多的领域应该是消费电子,比如手机PDA,而这上面用的多的应该是INTEL的和TI的吧。

但是INTEL的TI的入门材料少,价格高,自己看情况定吧。

硅谷芯微技术中心: 芯片级IT教育第一品牌 开设课程:单片机、嵌入式、ARM、Linux、Android、iphone、PCB设计 硅谷芯微推荐:嵌入式ARM9驱动实战开发班

本文由JACK转载与网络,如有版权问题,请通知本人删除

ARM学习规划 第2篇

一步一步学习uCOS和ARM体系结构的心得

学习必备条件:

1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);

2、学习必备书籍

《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位)

《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者)

《μC/OS-Ⅱ标准教程》--杨宗德

对于英文不好的朋友可以购买《ARM体系结构与编程》--杜春蕾(该书其实还是有很多翻译错误的,大家在看的时候要注意一下,但是不可否认的是这本书到目前为止算得上是我见过最好的讲解关于ARM体系结构的书籍了)

对于英文过关的兄弟姐妹可以直接看

《ARM+Architecture+Reference+Manual(2nd+Edition)》

3、有条件的兄弟姐妹可以选购一个仿真器 JLINK V8全功能版(这个的感谢中国的优秀工程师,是他们把原价1999多的JLINK变成了几十元钱的东西

4、开发环境--MDK350或者IARARM

如果要熟悉这些开发环境,就需要好好读一些这些开发环境的手册资料,不好意思,这个就只有英文的了。

以上4个条件具备下来,可能也不会超过500元钱。

下面来讲讲我的学习经历:

我刚开始学习的时候,自己走了不少弯路,这里就省略不说了。

第一步:在开发板上跑跑简单程序

因为你有开发板,所以你就先在网上找一下对应开发板上的ARM芯片的datasheet,你都不先搞懂芯片的手册,又谈何让自己实现很多功能呢。

熟读数据手册后,就尽可能的在开发板上实现芯片对应的每个功能,像GPIO实验,UART通讯,I2C,ADC,DAC,PWM,RTC,SPI等等。自己写自己的程序,然后在开发板上好好实践一下。

当每个功能模块都实现以后,建议你让你的开发板实验一下多个功能复合使用,比如用UART打印出ADC的值什么的。

第二步:学习uCOS

鉴于你已经购买了《嵌入式实时操作系统μCOS-II(第二版)》,除开以下三个文件:

1、OS_CPU_C.c2、OS_CPU.H,3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编)

这三个文件的处理机制暂时可以不用先了解怎么做的,怎么移植的,以后再说

第一次读这本书时,搞清楚什么是任务,什么是前后台,为什么要在系统中加入嵌入式操作系统。

第二次读这本书时,详细了解他的TCB(Task Control Block)和ECB(Event Control

Block)的数据结构,搞清楚整个uCOS的实现机制(这里不要先就去看uCOS的移植,这样只会让你云里雾里的)

第三次读这本书是,详细了解信号量,互斥信号量、消息队列、邮箱和时间标志组

鉴于你又购买了《μC/OS-Ⅱ标准教程》,你 可以想在VC++ 6.0开发环境下实现对信号量,互斥信号量、消息队列、邮箱和事件标志组的上机实验代码。

如果还是不能了解uCOS怎么工作的,建议你多看几遍(我可是足足看了6、7遍了,书都翻得脱页了。汗说明我很笨,希望各位看官都比我聪明,呵呵)

第三步:建立对uCOS的初步认识

在网上下载对应你的开发板ARM芯片移植好了文件OS_CPU_C.c,OS_CPU.H,OS_CPU_A.asm(当然有的开发板已经提供了这样的基础实验)

在你的开发板上跑跑uCOS,建立起自己对于uCOS在ARM7开发板上的认识。

在你所购买的ARM7开发板上编写一个自己跑uCOS得任务(这里先不要去搞中断,初学者对于uCOS下的中断程序设计根本就搞不清楚)

第四步:熟悉ARM体系结构

因为是基于ARM7的移植,建议英文不好的去看看这本书《ARM体系结构与编程》(虽然这本书的作者在翻译时有很多操作,但是还是建议初学者去购买来好好看看),对于英文好的直接在网上下载《ARM+Architecture+Reference+Manual(2nd+Edition)》看就可以了

在看这个《ARM体系结构与编程》或

《ARM+Architecture+Reference+Manual(2nd+Edition)》时,务必注意多看几次,了解以下几个方面的知识:

1、ARM模式下的指令集

2、Thumd模式下的指令集

3、异常模式及进入异常时ARM如何处理

4、一定能熟悉ARM中的汇编指令

5、熟悉CPSR,R0-R7,R8-R14,R15及在各个模式下,这些寄存器的映射。熟悉以后,再来自己做uCOS的移植了。

第五步:uCOS移植

当然在自己编写代码做移植uCOS之前,有必要看看别人的移植代码。

其实对于uCOS的移植,我们只需要编写关键的三个文件,文件如下:

1、OS_CPU_C.c(堆栈初始化操作OSTaskStkInit函数)

2、OS_CPU.H:完成在该芯片下的数据定义,比如什么unsigned char 之类的,注意一下OS_STK和OS_CPU_SR的定义,定义下关中断和开中断的方式,有三个只能选择1个,ARM芯片一般是定义为第三种方式

3、OS_CPU_A.asm(这个是MDK环境下的汇编文件)或OS_CPU_A.a(这个是IAR开发环境下的汇编),这个文件的内容就多了,要做以下几个函数的重写:

1、OSStartHighRdy函数

2、任务级的任务切换函数OSCtxSw,3、中断级的任务切换OSIntCtxSw,其实只要写好了OSCtxSw,OSIntCtxSw自然就copy一下就完了(copy的时候记者要把保存当前任务的寄存器去掉就可以了。第六步:测试自己的uCOS移植代码

第七步:在自己写的uCOS移植代码中跑跑任务。

[分享]ARM初学者学习ARM的步骤

很多人学完单片机就想学arm,但不知如何去学~现在列出一下学习这方面的步骤-----基于linux系统的学习步骤如下:(一步步来哦:)

其实这也只是个基础,以后实际做项目了还要去学很多

1、Linux 基础

安装Linux操作系统

Linux文件系统

Linux常用命令

Linux启动过程详解

熟悉Linux服务 能够独立安装Linux操作系统

能够熟练使用Linux系统的基本命令

认识Linux系统的常用服务 安装Linux操作系统

Linux基本命令实践

设置Linux环境变量

定制Linux的服务 Shell 编程基础使用vi编辑文件

使用Emacs编辑文件

使用其他编辑器

2、Shell 编程基础

Shell简介

认识后台程序

Bash编程熟悉Linux系统下的编辑环境

熟悉Linux下的各种Shell

熟练进行shell编程熟悉vi基本操作

熟悉Emacs的基本操作

比较不同shell的区别

编写一个测试服务器是否连通的shell脚本程序

编写一个查看进程是否存在的shell脚本程序

编写一个带有循环语句的shell脚本程序

3、Linux 下的 C 编程基础

linux C语言环境概述

Gcc使用方法

Gdb调试技术

Autoconf

Automake

Makefile

代码优化 熟悉Linux系统下的开发环境

熟悉Gcc编译器

熟悉Makefile规则编写Hello,World程序

使用 make命令编译程序

编写带有一个循环的程序

调试一个有问题的程序

4、嵌入式系统开发基础

嵌入式系统概述

交叉编译

配置TFTP服务

配置NFS服务

下载Bootloader和内核

嵌入式Linux应用软件开发流程

熟悉嵌入式系统概念以及开发流程

建立嵌入式系统开发环境制作cross_gcc工具链

编译并下载U-boot

编译并下载Linux内核

编译并下载Linux应用程序

4、嵌入式系统移植

Linux内核代码

平台相关代码分析

ARM平台介绍

平台移植的关键技术

移植Linux内核到 ARM平台 了解移植的概念

能够移植Linux内核移植Linux2.6内核到 ARM9开发板

5、嵌入式 Linux 下串口通信

串行I/O的基本概念

嵌入式Linux应用软件开发流程

Linux系统的文件和设备

与文件相关的系统调用

配置超级终端和MiniCOM 能够熟悉进行串口通信熟悉文件I/O 编写串口通信程序

编写多串口通信程序

6、嵌入式系统中多进程程序设计

Linux系统进程概述

嵌入式系统的进程特点

进程操作

守护进程

相关的系统调用了解Linux系统中进程的概念

能够编写多进程程序编写多进程程序

编写一个守护进程程序

sleep系统调用任务管理、同步与通信 Linux任务概述 任务调度

管道

信号

共享内存

任务管理 API 了解Linux系统任务管理机制

熟悉进程间通信的几种方式

熟悉嵌入式Linux中的任务间同步与通信

编写一个简单的管道程序实现文件传输

编写一个使用共享内存的程序

7、嵌入式系统中多线程程序设计

线程的基础知识

多线程编程方法

线程应用中的同步问题了解线程的概念

能够编写简单的多线程程序编写一个多线程程序

8、嵌入式 Linux 网络编程

网络基础知识

嵌入式Linux中TCP/IP网络结构

socket 编程

常用 API函数

分析Ping命令的实现

基本UDP套接口编程

许可证管理

PPP协议

GPRS 了解嵌入式Linux网络体系结构

能够进行嵌入式Linux环境下的socket 编程

熟悉UDP协议、PPP协议

熟悉GPRS 使用socket 编写代理服务器

使用socket 编写路由器

编写许可证服务器

指出TCP和UDP的优缺点

编写一个web服务器

编写一个运行在 ARM平台的网络播放器

9、GUI 程序开发

GUI基础

嵌入式系统GUI类型

编译QT

进行QT开发熟悉嵌入式系统常用的GUI

能够进行QT编程使用QT编写“Hello,World”程序调试一个加入信号/槽的实例

通过重载QWidget 类方法处理事件

10、Linux 字符设备驱动程序

设备驱动程序基础知识

Linux系统的模块

字符设备驱动分析

fs_operation结构

加载驱动程序了解设备驱动程序的概念

了解Linux字符设备驱动程序结构

能够编写字符设备驱动程序编写Skull驱动

编写键盘驱动

编写I/O驱动

分析一个看门狗驱动程序

对比Linux2.6内核与2.4内核中字符设备驱动的不同 Linux 块设备驱动程序块设备驱动程序工作原理

典型的块设备驱动程序分析

块设备的读写请求队列了解Linux块设备驱动程序结构

能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写MMC卡驱动程序

分析一个文件系统

对比Linux2.6内核与2.4内核中块设备驱动的不同

11、文件系统

虚拟文件系统

文件系统的建立

ramfs内存文件系统

proc文件系统

devfs 文件系统

MTD技术简介

MTD块设备初始化

MTD块设备的读写操作了解Linux系统的文件系统了解嵌入式Linux的文件系统

了解MTD技术

能够编写简单的文件系统为 ARM9开发板添加 MTD支持移植JFFS2文件系统

通过proc文件系统修改操作系统参数

分析romfs 文件系统源代码

ARM学习规划 第3篇

一、构建硕士生职业生涯规划ARM模式

硕士生职业生涯规划具有其自身的特殊性:这是基于硕士生既有早期的基础积淀, 也有对社会需求与自身面临的困境的深刻认识。

ARM模式 (即飞机攀升模式 Airplane Rising Model) , 是以飞机起飞前的准备工作到升空过程中的高度提升, 最终达到所预期飞行航道的一系列客观形象去阐释硕士生职业生涯规划的模式。构建硕士生职业生涯规划ARM模式是一个系统工程, 主要是通过高校合理科学的指导, 个人将前期积淀的各种资源做好整合, 准确地进行自我定位, 认清自身优势与不足, 进行针对性的能力提升, 最终顺利完成职业对接, 形成适合我国硕士生职业生涯规划的模式体系。ARM模式通过个体与高校两个方面, 将硕士生的职业生涯规划划分为意识培养、能力提升和职业对接三个阶段。通过硕士生职业生涯规划的意识培养阶段, 可以提高其对职业生涯规划的重视程度和实施规划时的坚持程度。而能力提升阶段主要是针对环境变化、政策调整和需求更新等现实的动态变化, 进行针对个人能力提升的训练活动。职业对接阶段则是在前两个阶段的基础上, 再结合职业期望所进行择业、就业的过程。

1.硕士职业生涯规划的意识培养阶段。

正如飞机起飞前需要进行维护、明确目的地和计划航线一样, 职业生涯规划也需要这样前期的准备工作。高校通过转变观念将“就业指导中心”转变为“职业生涯中心”, 在提供物质保障的同时, 建立专业化与职业化的职业生涯指导队伍, 提升指导老师的综合素质。高校应从研一就开始为硕士生创建职业发展成长档案, 以个体的发展过程为根本目的, 注重跟踪评价, 指导其通过循序渐进的方式逐步实现自己的职业理想。这样的“前期维护”可以帮助硕士生理解职业生涯规划, 并为其在认知自我, 调整预期后, 动态地修正职业生涯规划提供依据。硕士生可以通过高校提供的职业测评和性格测验等权威的测评来了解自己的性格、兴趣和职业价值观等。在做好客观评价的基础上, 给自己一个合理的期望值, 避免从众行为, 摆脱精英教育所导致的贵族心理、特权意识, 以冷静和坦然的态度面对现实, 加深对自身与环境的认识, 调整心态[1] 。据此确定自己的职业锚, 清晰自己选择未来职业时所坚持的动机与需要。只有认清了方向, 计划好合理的航线, 才能为顺利到达满意的高度做好准备。同时, 硕士生不能忽略在研一时学习专业方向的前沿理论, 要打好扎实的专业知识基础, 挖掘自身潜力, 从宏观层面分析职业, 逐步形成对有意向发展职业的敏锐洞察力。这些都将为进入ARM模式的第二阶段的发展做好积累。

2.硕士职业生涯规划的能力提升阶段:

飞机的攀升阶段决定了飞机达到的最终持续飞行高度。能力提升阶段从一定程度上也决定了硕士生阶段性职业发展的高度与未来很长一段时间内的职业发展质量。硕士生的学习更倾向于某一方向上的研究, 不能进行完全非职业化的专业学习, 而是应该更多地考虑如何以本专业研究为基础, 在职业中将自身的研究成果转化为职业优势, 根据现实环境及自身的变化不断调整, 自身要努力做到个人理想与现实的最优化, 构建出具有个性化的发展蓝图。硕士生进入二年级后, 应当改变传统就业观念, 努力培养自身的创新精神、事业心和责任心。积极参与教学中的实践环节, 了解职业分类、性质和组织的活动内容与情况, 针对性地去锻炼、提升自己的职业能力。高校在这个过程中应当积极宣传各级政府和学校有关就业工作方面的政策, 帮助硕士生全面认识与理解政策与就业形势, 培养其求职能力、掌握求职的技巧。硕士生通过这些活动及时评估和调整自己职业生涯规划, 制定出更切合自身实际的职业生涯规划, 对自己所欠缺的知识和能力及时进行补充和完善。这一时期硕士生课业压力小, 与社会对接时间还有缓冲, 是预见外界的各种现实因素的压力、要求并提升自身“性能”冲刺到期望高度的最佳时期。这一阶段做得越好, 就能让自己攀升得越高越稳。

3.硕士职业生涯规划的就业对接阶段:

硕士生从步入三年级时, 就要开始对职业进行微观层面的分析, 寻找合适的就业单位和岗位。这一阶段看似压力很大, 实际上在做好意识培养与能力提升后, 已经像飞机飞行在自己的航道一样, 需要做的就是秉持之前的努力, 积极保持好自身的平稳状态, 找到专属的航线信号。高校要加强协调研究生教育与社会发展的关系, 提高与社会产业结构、劳动力结构之间衔接的力度, 力求灵活地满足社会多样化需求, 这对于解决我国研究生教育发展问题具有重要的指导意义 (孙健, 2011) 。高校可以组织在校硕士生到相关专业对口的单位去实习, 使其融入环境, 了解不同企业的具体情况和要求, 对自己的职业能力和职业兴趣有更清醒的认识。到毕业阶段最为需要的就是信息的掌握。学校之间、学校与人才需求单位、社会人才机构、政府有关部门之间的信息网络, 相互协作, 利用长期以来累积的工作经验、研究和服务成果, 结合用人单位和毕业生的信息收集和反馈, 及时将收集到的最新信息整理分类, 借助科学的方法进行定量和定性分析, 形成统一的就业服务与就业信息网络, 使得毕业生面对海量的就业信息, 结合个人的职业期望, 社会的现实需求, 从中获得真正准确、有价值的信息。之前所说的航线信号也就是各种的就业信息, 而每个人就像每架飞机一样最终接受的信号只有一个, 该信号所给予的航线是否合适, 也就是个人硕士生阶段职业生涯规划是否成功的衡量标准。

二、硕士职业生涯规划ARM模式实践效果

笔者通过对某校部分2009级硕士生连续三年的职业生涯规划ARM模式培养, 分别对比分析接受和未接受ARM模式培养的硕士生, 建立了一个全面反映各方面影响的评价指标体系, 较为真实地反映了职业生涯规划ARM模式的效果。

1.样本概况:

从2000名经过职业生涯规划ARM模式培养的硕士生 (简称A类生) 和未经过模式培养的硕士生 (简称B类生) 中各随机选取800名进行问卷调查, 收回有效问卷1480份, 有效率92.5%, 其中男生占61%, 女生占39%。专业分布中理工科占62%, 经管文法占34%, 其它占4%。

2.职业生涯规划意识培养情况:

关于是否应从研一开始进行自己的职业发展计划, 81%的A类生通过表格或者图表的方式详细列举了职业目标的实现计划, 同时制定出了灵活的职业发展动态反馈办法, 包括职业风险预测、应对方案和备选方案, 16%的A类生依短期、中期、长期分类制定了职业发展计划;B类生只有25%有明确的职业目标, 并能为此努力, 75%的学生不知道如何制定职业生涯规划, 只是完成学业, 对将来的发展没有想法。A类生职业成就感的期望值比较高, 因此在职业选择上, 他们倾向性明确, 更加强调以职业发展前景、个人价值的实现情况来评价和选择职业。

3.职业生涯规划能力提升情况:

被调查者中, 绝大多数A类生在校三年中都参加了模拟或实践活动, 提升自身职业发展能力;而B类生中绝大部分没有职业生涯规划意识和经验。在职业生涯规划能力上, A类生对自我定位能力、自适应能力、扮演新角色的能力、控制与综合的能力等都达到较高的认可程度;B类硕士生更局限于某一种能力认可, 缺乏对整体能力的认知。

4.职业生涯规划ARM模式效果分析:

就第一阶段的毕业生就业统计来看, 已经与单位达成就业意向的A类生占70%, 而B类生仅有35%, 其中已经与单位签署毕业生就业协议的A类生有85%, 而B类仅有40%。而对单位进行访问调查发现, 单位不论在职业能力和职业素养上, 对A类生的满意程度都远远超过了B类生。

这些数据反映出经三年连续培养, 硕士生对职业生涯规划接受程度非常高, 知识素养的广度和深度进一步加强, 自身能力也得到较大提高, 说明职业生涯规划ARM模式对其培养具有重要意义。

摘要:文章提出了适合我国硕士生职业生涯教育的ARM模式, 以引导个人与高校做好硕士生职业生涯规划, 并通过问卷调查, 检测了硕士生职业生涯规划ARM模式的实践效果, 证明该模式是一种较理想的教育模式。

关键词:硕士研究生,职业生涯,ARM模式

参考文献

合理规划高三学习 第4篇

树立信心进入轨道

良好的心态是高三学习的前提和基础,应逐渐进入高考所需要的正常心态轨道。

学生应增强信心,明确目标,树立理想,并为之奋斗,包括上什么批次的大学,选择什么专业,目标要具体化。从学习上看,要改变高一高二那种略显松散的学习状态和处事状态,不仅在学习态度方面,也包括起居饮食的每一个方面。

制订详细复习计划

高三总复习其实是一个夯实基础知识、查漏补缺、冲刺训练的过程。从复习进度看,各个学科有所不同。一般情况是,第一轮的复习到明年2月底或3月初结束,从现在到明年3月之前,是打好基础、掌握基本技能的关键时期。这阶段老师复习得比较细致,学生要争取基础知识上的“一步到位”,要全面阅读教材,查漏补缺,使知识系统化。倘若在这个阶段不努力不积累,后面要有大的突破比较困难,后面的路程即便你比别人迈得更辛苦,收获也不一定比别人多。3到5月份算第二轮复习。如果说第一轮复习强调的是稳步提高、循序渐进的话,第二轮复习则是对原有知识的强化、深化、拓展和应用的训练,是综合能力突破的阶段。倘若前期复习知识归类越有序,应用起来就会越顺手,解题的速度越快,准确度也越高。而在5月之后进入最后冲刺的关键时期,着重应试技巧的训练以及考场心理的调适,检验复习,强化记忆,进入考试状态。

抓住基础查漏补缺

高考所考查的是学生对知识的整体把握和驾驭,所以有牢固的知识基础是非常必要的。这个基础就是基本知识和基本技能,这是高三总复习的“基石”。高三的学生事实上是从知识的接受者转变成知识的梳理者,所以,要把自己所学的知识尽可能全部整理一次,即把知识网络化、系统化,从中发现自己的薄弱之处,及时有针对性地补漏补缺,强化自己的知识储备。

着手解决偏科现象

复习是一个潜移默化、厚积薄发的过程,衡量复习效率的高低也不是以看书多少做题多少为标准。精做一道题胜过泛做十道题,精透一页知识胜过粗翻一本书。

对于高三学生而言,对任何一门学科的逃避都有可能是致命的,应该争取每一门学科的平衡发展,挤出来的时间,则可以考虑加强薄弱学科。成绩的提高也是有规律可循的,注意各科记忆知识的梳理成网,分类解题收获的总结积累,偏科现象往往得到“修复”。

不惧失败勇于竞争

ARM学习规划 第5篇

● 第一阶段 嵌入式Linux开发基础

◆ 开学典礼、职业素养:自我介绍;

◆ Linux基础知识和系统安装;

◆ Linux常用命令,文本编辑器vi,shell脚本编程;

◆ Linux开发环境基础:Gcc,Ddb,Maker和Makefile;

◆ 软件版本管理;

◆ 嵌入式软件开发环境搭建与使用

● 第二阶段 嵌入式C语言编程

◆ 复习C语言基础知识,强化指针和数组概念,学习数据结构和一些基本算法; ◆ 全面了解C语言标准库提供的功能;

◆ 深入介绍C程序在编译时与运行时的基本原理;

◆ GNU C的拓展知识;

◆ 从宏观和微观的角度讨论高质量C语言编程;

◆ 详细介绍嵌入式C的特性及应用;

◆ 职业素养:推销自己。

● 第三阶段 Linux系统程序设计

◆ 深入学习操作系统基础知识;

◆ Linux系统程序设计:系统编程环境、常用调试工具,创建中止进程,进程间通讯;

◆ Linux网络编程;

◆ 职业素养:礼仪沟通、语言沟通;

● 第四阶段 ARM原理与应用

◆ 嵌入式系统基础:嵌入式系统 定义、发展,嵌入式实时操作系统; ◆ ARM的基本概念及体系结构;

◆ ARM的编程模型;

◆ ADS集成开发环境;

◆ ARM汇编指令集;

◆ 嵌入式系统及接口设计;

◆ ARM协处理器。

● 第五阶段 u-boot和Linux移植

◆ Linux内核基础;

◆ Kernel的定制和编译;

◆ 内核移植;

◆ 内核调试。

欢迎下载该文档

● 第六阶段 嵌入式Linux驱动开发

◆ 驱动程序概述;

◆ 字符设备驱动程序开发; ◆ 设备驱动总的重要概念和机制;

◆ 块设备驱动程序开发; ◆ 块设备驱动程序开发实例; ◆ 网络设备驱动程序开发及实例; ◆ 音频和显示设备驱动程序开发; ◆ 素质培训:如何写简历。

● 第七阶段 项目实践

◆ 学习工程项目开发流程:项目需求、项目设计、程序编码、程序调试与测试、版本发布;

◆ 以团队方式分解项目,协作开发、各学员扮演不同角色; ◆ 项目开发:个人移动终端实时通讯图形管理系统; ◆ 素质培训:面试训练、职业前引导。

Arm学习

课程大纲

◆ 帮助学员了解ARM体系结构及工作原理,掌握

第一天

ARM指令集,学会操作ARM处理器基本方法。◆ 课程实验:

◆为提高系统的综合性能,“ARM和Thumb交互”是工程师在实际编程常用的一种方式。通过本天课程的学习,学员可以了解Thumb指令的特点,掌握

第二天

ARM和Thumb指令交互方法。“异常”作为处理器的一种特殊工作方式在系统工作中扮演着重要的角色,本期课程也将帮助学员掌握ARM平台异常产生的过程和处理方法。◆ 课程实验:

◆虽然汇编指令可以完成我们所需要的所有功能,但相对C语言来说,汇编语言存在编写复杂、可读

第三天

性差等缺点,所以在实际的项目开发中,工程师通常会使用C或C++等高级语言来编写主程序部分。通过第三天课程的学习,学员可以掌握汇编、c、欢迎下载该文档

c++混合编程的方法,完成对目标平台的软件编程,更好的熟悉嵌入式软件的开发流程。◆ 课程实验:

◆在学习完了理论知识后,该进入实践环节了。嵌入式编程最终目标还是对接口设备的操作。通过第第四天

四天课程的学习,学员可以掌握基于ARM的嵌入式硬件平台接口设计以及各种常用接口的开发; ◆ 课程实验:

◆单个接口的操作最终还是要为一个综合的软件项目服务,bootloader在嵌入式操作系统中占用重要地位,其编写、移植是一项常见而复杂的工作。通过第五天课程的学习,学员即能够通过这个综合第五天的软件项目将前面的主要内容融会贯通,还可以掌握 bootloader原理及开发过程,掌握和bootloader相关的接口开发,了解嵌入式操作系统的结构及启动流程等。◆ 课程实验:

三个月

◆ 企业项目实践(自行操作,专家答疑)(三个月)

ARM学习规划 第6篇

当前垃圾短信层出不穷,严重干扰了人们的生活,甚至给用户带来严重的财产损失。电信运行商由于利益牵涉其中,在治理短信方面注定不会有大的作为,于是在用户的手机端进行垃圾短信的处理就变得十分有意义。

目前已经有相当多的此类软件产品被开发出来,但它们都存在这样或那样的问题,如不够智能、操作繁琐、功能繁杂、速度慢、准确率低等问题,而且绝大多数软件都是安装在智能机上的,不能惠及最大众的手机用户。而且那些声称智能的产品并不能做到真正的智能,不能对垃圾短信的各种变形做到有效的识别,也不能根据用户的习惯作出准确的判别,因此都不能够令用户满意。在这种情况下,我们在ARM9平台上开发了这个自主学习式垃圾短信判别分拣系统,采用人工智能领域的机器学习技术对垃圾短信的特征进行自主学习,完美地实现了在用户手机端对垃圾短信作出个性化准确识别。

1 系统开发的软硬件环境

系统采用博创科技UP-NETARM 2410-S开发板作为硬件平台,开发板的CPU为ARM920T内核的三星S3c2410芯片,微处理器202MHz,64MRAM。在开发板上插入一个北京博创科技公司的GPRS模块,接上天线、插入手机卡,结合开发板上的LCD显示屏模拟一个中低端的手机终端。系统在嵌入式Linux系统下使用C编程,界面部分使用Qt 4.4.0 for Embedded Linux。

2 系统的整体设计

该系统在手机原有SMS软件的基础上,设置一个垃圾箱,系统会对收到的短信息进行自动判别,判别为正常的短信发出提醒后放入收件箱,判别为垃圾短信则放入垃圾箱,显示垃圾短信的条数,不发出声音或震动提醒。除了设置垃圾箱,在针对短信内容操作的菜单中,增加一个菜单项“设为垃圾短信”或“设为正常短信”,当系统判别错误时,只需点击这个菜单项,系统就会自动对该短信内容进行学习,提取特征,并采用增量学习技术自动调整特征库中特征的权值,当后面再收到类似短信时,系统就会作出正确的判断。经过一段时间的使用,系统就可以完全按照个人的意愿进行准确的判断识别,几乎不出现误判。

系统以连续滑动的方式提取短信的二进制特征,因此能够应对垃圾短信的各种变形,并能够胜任各个国家的语言,甚至对图片、彩信的判别。操作简单,用户无需手动设置“关键词”、“过滤规则”、“黑白名单”等。当前的低端手机都已经主要采用ARM11芯片了,而我们的系统计算复杂度低,在ARM9平台下都可以运行流畅,完全可以满足从低端到高端的手机应用需求。

垃圾短信的判别分拣和垃圾邮件的过滤一样都属于短文本的分类,且都有着内容短小、特征字变形众多等共同特征,可以互相借鉴。判别模型、特征提取、训练方法是其中最核心的技术[1]。

3 判别学习模型的选择

判别模型的选择直接影响到垃圾短信的判别精度和处理速度。传统的文本分类模型有生成模型和判别学习模型两大类。生成模型如贝叶斯分类法采用极大似然估计来求解参数,它需要足够大的训练数据时才能达到最优,更关键是它不具备主动学习的能力,而目前垃圾短信形式不断变化的实际情况使它不能满足应用要求。于是我们采用了判别学习模型。判别学习模型主要有逻辑回归模型和SVM模型[2],都具有良好的性能,但逻辑回归模型具有更低的时间复杂度和空间复杂度,判别速度也要比SVM快很多,更加适合在通信终端实现在线学习。逻辑回归模型也是目前垃圾邮件过滤中的主流模型之一[3,4]。我们的系统采用逻辑回归模型,结合n-gram特征提取方法,取得了非常好的性能。

根据该短信中的特征,应用逻辑回归模型,根据短信的特征判断该短信是垃圾短信的概率(即得分)如式(1)所示:

Ρ(y=Spam|t¯)=exp(w¯t¯)1+exp(w¯t¯) (1)

其中:t¯是该封短信的所有特征组成的0-1向量,即(1,0,…,0,1);

w¯是该封短信的所有特征相对应的特征权重向量。

某条短信为非垃圾短信的概率如式(2)所示:Ρ(y=Ηam|t¯)=1-Ρ(y=Spam|t¯)=1-exp(w¯t¯)1+exp(w¯t¯)(2)

然后定义一个分界值threshold,就可以判断该封短信是垃圾短信还是非垃圾短信。

因此,短信过滤的函数为:

其中最重要的是计算出各个特征对应的特征权重w¯,也就是通过训练器建立和完善特征库。

4 增量学习的训练方法

本文参考了Joshua Goodman提出的垃圾邮件的训练方法TONE[1,5],并在训练中采用梯度下降的方法更新特征库中特征的权重。使用梯度下降方法时,采用一个特征学习速率来避免某一封短信对特征库中特征的权重影响过大,避免出现由一次权重调整导致的大面积误判。

TONE(Train On/Near Error) 是一种主动学习的方法,由TOE(Train ON Error)方法改进而来。TOE方法仅当短信被误判时才进行训练。但是仅对误判的短信进行训练导致过滤器数据不足,不能快速提高系统的准确率。TONE(Train On/Near Error)在TOE基础上加以改进,预设一个分数界限,当短信的得分与判断阀值之差的绝对值在界限之内时,即使正确判断也进行训练。

对于本文采用的逻辑回归模型,当短信的得分(即计算得到的概率值)大于等于0.5时,就判断成垃圾短信;反之,当短信的得分小于等于0.5时,就判断成正常短信。采用TONE训练方法,将在下述两种情况下进行训练:(1)过滤器分类错误;(2)如果设定阈值为0.1,则得分介于0.4到0.6之间的短信都需要进行训练。

训练时采用梯度下降的方法,通过选取适当的特征学习速率来更新特征库中特征的权重。采用梯度下降的权重更新算法如下:

这种根据不断收到的短信息进行不断学习的方式,本质上属于一种反馈技术[6]。陆续收到的短信息构成了反馈数据集,分类器通过从反馈数据中实现增量学习,获取最新特征子集,并修正已经训练完成的分类特征库,最大程度地不断优化分类器的性能[7]。增量学习的训练流程如图1所示。

系统的这种在线训练方法和权重调整方法,使系统实现了对垃圾短信的自主学习、合理判别和准确度极高的个性化分拣。而且它的工作方式使它具备使用越久越准确的特性。

5 特征提取及特征库的建立

垃圾短信的判断的依据是垃圾短信的特征。目前声称智能的垃圾短信过滤软件大多以词作为特征的基本单元,需要配合编码识别和分词,有的还需要用户手工编辑关键词。这种以词为过滤单元的方式,对未录入关键词库的特征无能为力,对文字变形方式的垃圾短信也无能为力。

由于目前垃圾短信普遍采用文字变形:如英文短信在单词中间插入空格、或字母重叠,中文短信如“发*/票”、“fa *票”、“【发】【票】”等夹杂拼音、特殊符号等方式,还有的垃圾短信要求你竖着看……,传统的以词为过滤单元的方法已经无法满足应用的要求。针对这种情况,我们采用了统计分析的方法来进行短信特征提取:该方法将短信看成一个字节序列,以滑动窗口的方式依次提取长度为n的字节片段(n-gram),即连续的n个字节,作为分析特征。例如,message,当n=4时,抽取的特征为mess、essa、ssag、sage 4个4-gram,当文字变形为mess-age时,抽取到的特征则为mess、ess-、ss-a、s-ag、-age,这种不正常的变形往往出现在垃圾短信中,表明了短信的性质。其他国家的语言也是一样,例如中文使用至少2个字节表示一个字(如GB2312使用两个字节表示1个汉字,GB18030使用两个字节或四个字节表示1个汉字)。这样抽取到的特征虽然很多不是一个完整的汉字,但是词语变形方式的垃圾短信特征却能够被有效提取,夹杂的各种符号恰好表明了短信的性质。这种特征提取方式应用在垃圾短信的识别领域还是第一次。

特征项定义好后,按特征项定义进行特征抽取,然后对全部gram 的出现频率进行统计,按照事先设定的阈值进行过滤形成关键的gram 列表,即为该文本内容的特征向量空间,列表中的每一种gram 均为一个特征向量的维度。如果短信中包含了某个n-gram,其值就为1,否则为0[1]。

同时,这种n-gram特征提取方式,提取的是短信内容的二进制特征,避免了繁杂的短信解析、汉字编码转换等工作,无需任何字典的支持、无需分词,不但可以有效处理变形短信,还可以满足包括中文以内的所有国家文字的处理能力,也可以胜任彩信、图片等的特征提取。而且,对于短信过滤,n-gram还有一个优势,就是能够容忍无线通信过程中的错码(一个字节的错误,会导致随后的整篇错误)。n-gram方式的特征提取将使人为插入错码的垃圾短信方式无处藏身。

对于中文特征提取,我们在近年SEWM垃圾邮件评测中的测试结果表明,在特征提取中取n=4可以获得最理想判别效果[1]。因此,在本系统中同样取n=4。通常短信的长度限制是140个字符,汉字则通常为70个,若GB2312编码方式137个4-gram正好70个字。这种n-gram方法建立的特征库不会遗漏特征,也不会占用太多系统资源。而且系统在短信转变成文字显示给用户查看时在内存中已进行过特征提取和判别,保证了最小程度的影响通信终端的性能,绝不会使用户感觉到手机速度变慢,从而影响手机用户的使用。

6 实验结果

判别分拣系统从本质上来说是一个分类过滤器,它的性能可以从正确率和错误率两方面来评价。正确率,就是无论垃圾短信(spam)还是正常短信(ham),所有正确识别的短信的数量与参与判别的短信总数的比值。错误率则由两个主要方面组成:正常短信被放入正常短信文件夹的程度和垃圾短信被放入垃圾短信文件夹的程度。过滤器的错误由两个指标评价:正常短信误判率ham%是正常短信被放入垃圾短信文件夹的几率,垃圾短信误判率spam%是垃圾短信被放入正常短信文件夹的几率。在这两个指标上都达到最小程度的过滤器被认为是高性能的[8]。

在正常短信和垃圾短信的误判之间有一个自然的趋势,就是减少其中一方面的错误,通常会使另一方面错误增加,因此单纯强调任何一方面的评价方式都是不科学的。而逻辑平均误判率lam%则可以兼顾两方面,它同时也是垃圾邮件领域国际上通用的评价指标[9]。其定义为:

lam%=logit-1logit(ham%)+logit(spam%)2 (4)

其中

logit(x)=logx100%-x (5)

在2011年3月至6月期间,发动学生积累收集了8019条短信,构成实验语料数据集(见表1)。并将收集到的短信进行人工标注,垃圾短信标注为0,正常短信标注为1,所有测试用数据的标注全部由一个人完成,以保证原始判断的准确性和个性化判断。

先使用这些短信息对系统进行离线训练,也就是离线学习,编写程序将垃圾短信集合文件生成供训练用垃圾短信数据集,调用系统的分类程序生成离线特征库。然后通过在线学习的方式,在特征项提取n=4,即4-gram、逻辑回归分类法分界值为0.5的情况下(应用本系统原理实现的高性能垃圾邮件过滤器在中国计算机学会主办SEWM 2010 垃圾邮件过滤评测中曾取得5项第一的好成绩,我们直接利用当时实验获得参数作为系统的初始参数[1]),随机发送新的短信息,根据系统的判断情况,微调训练器参数TONE和TRAIN_RATE。

实验结果(见表2)显示:本系统对收集到的训练语料离线学习之后,对测试集中的短信判别,其逻辑平均误判率已经达到1%以下。通过在线学习方式实时调整权重之后可以看到,对样本中短信的判别正确率始终在99.99%以上,对于样本中出现的特征,几乎不出现误判。其中TONE阈值为0.1,学习速率rate为0.005时,获得了最佳的判别效果。

在202MHz、64MRAM的ARM9平台环境下实际测试,对于不超过140个字符长度的短信息,平均判别时间小于0.01s。对收集的8 000余条短信训练之后得到的特征库大小低于9KB,判别分拣系统内存消耗低于1.5MB,CPU峰值低于1%。由于无需词典和分词,对系统的资源需求大大降低,同时相比基于分词技术的方法,判别速度提高了230倍,判别时间只为它的0.4%[10],且无国别限制。

7 结 语

由上可以得出我们的系统具有操作简单、自主学习、智能化、个性化判断、准确度高、运行速度快、满足国际化应用、对系统性能要求低等全面的优点和突出的优势。如果手机生产商有意,它完全可以替换手机中的短信程序,使垃圾短信的判断识别成为手机SMS程序中的内置功能,让垃圾短信的判别分拣成为手机中的系统调用。目前,高性能手机越来越普及,2GRAM+1G主频、甚至双核的智能手机已经开始走入人们的生活,高性能手机将逐渐地成为主流,而我们在相当于低端手机环境下取得的测试结果充分显示了我们的系统完全可以在由低端到高端的手机系统中流畅运行,也即表明这项技术可以应用在世界上绝大多数手机当中,相比于现在绝大多数的此类软件都是安装在智能手机上的应用程序,我们的系统无疑拥有着更广阔的市场应用前景,一经采用将使世界上广大的手机用户受益。

参考文献

[1]齐浩亮,程晓龙.高性能中文垃圾短信过滤器[J].中文信息学报,2010,24(2):76-83.

[2]李凡,林爱武,陈国社.一种基于VSM文本分类系统的设计与实现[J].华中科技大学学报:自然科学版,2005,33(3):53-55.

[3]姜远,周志华.基于词频分类器集成的文本分类方法[J].计算机研究与发展,2006,43(10):1681-1687.

[4]苏金树,张博锋,徐昕.基于机器学习的文本分类技术研究进展[J].软件学报,2006,17(9):1848-1859.

[5]Goodman J,Yih W.Online Discriminative Spam Filter Training[C/OL].Third Conference on Email and Anti-Spam(CEAS 2006).2006:113-115.http://www.ceas.cc/2006/22.pdf.

[6]Lee J H.Combining the evidence of different relevance feedback meth-ods for information retrieval[J].Information Processing&Manage-ment,1998,34(6):681-691.

[7]陈瑞芬.一种结合反馈方法的中文文本分类算法[J].计算机应用,2005,25(12):2862-2864.

[8]Cormack G V,Jose Maria Gomez Hidalgo,Enrique Puertas Sanz.Fea-ture engineering for mobile(SMS)spam filtering[C]//Proceedings ofthe 30th Annual International ACM SIGIR Conference on Research andDevelopment in Information Retrieval[s.n.],2007:871-872.

[9]Jose Maria Gomez Hidalgo,Guillermo Cajigas Bringas,Enrique PuertasSanz,et al.Content based SMS spam filtering[C]//Proceedings of the2006 ACM Symposium on Document Engineering[s.n.],2006:107-114.

ARM学习规划

ARM学习规划(精选6篇)ARM学习规划 第1篇ARM学习心得,ARM入门,ARM基础,什么是ARM 一个电子工程师的ARM学习心得 目录:一 首先说说A...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部