| 标题 |
作者 |
阅读数 |
发布时间 |
|
|
mermaid |
2727 |
2008-6-3 |
|
MSP430F149开发板(含仿真器等) 这款开发板价格比较低(详细请见http://auction1.taobao.com/auction/item_detail-0db1-2c540e193d56cb0dd67bdf3216a1093f.jhtml)开发板资源:1 4位数码管显示器;2 1601液晶屏;3 RS232串口;4 4按键;5 24C16 EEPROM 存储器;6 普通语音芯片;7 电流传感器;8 霍尔传感器;9 DB18B20温度测量(选件);10 四个发光指示灯;11 双色放光管;12 蜂鸣器13 PWM信号输出;14 电压采样输入;芯片资源:1 16位超低功耗CPU2 32K-60K FLASH存储器3 512-2K字节RAM4 8通道12位ADC5 自带参考源6 定时器TB7 定时器TA8 定时器BT9 串口2个10 看门狗11 模拟比较器 http://store.taobao.com/shop/view_shop-31a78adcbc34a085e6f9d9191c311778.htm
>> 阅读全文
|
|
洲_仔 |
575 |
2008-3-14 |
|
#if 0 栈的所有基本函数。 既然写了链表,那就干脆把严蔚敏C语言数据结构里的函数都写光吧,不过得慢慢积累起来,呵呵,有头有尾看起来舒服一点,#endif#include #include #define type int#define status int#define MAX_SIZE 10#define OK 0#define ERROR 1typedef struct{ type *base; type *top; int stack_size;}stack;status InitStack( stack &s ){ s.base = ( type * )malloc(MAX_SIZE * sizeof(type)); s.top = s.base; s.stac...
>> 阅读全文
|
|
洲_仔 |
2198 |
2008-6-19 |
|
ARM汇编部分:A. 条件执行 CMP R0,#5 BEQ BYPASS ADD R1,R1,R0 SUB R1,R1,R2 BYPASS ......可以替代为: CMP R0,#5 ADDNE R1,R1,R0 SUBNE R1,R1,R2 ...... 如果被跳过的指令序列并不进行复杂的操作,使用条件执行都要比使用转移好,因为ARM转义指令一般要用3个周期来执行。 对于以下的条件执行可以这样来写汇编...
>> 阅读全文
|
|
linuxkaka |
1118 |
2007-10-31 |
|
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无...
>> 阅读全文
|
|
jasson |
686 |
2007-12-20 |
|
当今,谁在使用Linux?这是一个需要弄明白的问题。根据《Linux基金会》近期所完成的一项全球调查结果显示,今年全球的Linux用户相群体,相对于去年而言,明显地更加普及了。Linux用户是一些什么人?他们在干什么? 《Linux基金会》全球调查显示:69.4%的Linux用户在为“小企业”(员工总数在100人以下)工作,其中43.3%的人是IT专业人员(含软件开发者)。他们使用Linux,大都得到了“上司”(“Boss”)认可,这就是说,他们中间的64.1%已经把Linux计算机搬到了自己的办公室里面,堂而皇之地干起了自己的工作。那些使用Linux的企业,并不拒绝Windows,其中40.6%的企业有一半以上部署了Linux工作岗位,但是,其中有57.5%的企业大部分(一半以上)仍然在使用Windows作为工作平台。 《Linux基金会》调查发现,53.3%的企业使用Linux都是用于软件开发工作环境,但是,几乎2/3(66.1%)的企业已经把它作为一般性的“工作台”(“Client desktop”)来使用。这就是说,Linux已经不再单纯地当作一种“操作系统”来看待(使用)。Linux软件包里面办公套件业已登上“历史舞台”。 《Linux基金会》调查发现,Linux,作为一种操作系统,它的...
>> 阅读全文
|
|
jasson |
10911 |
2008-3-17 |
|
最近,常有新入行的网友在论坛或QQ群里问,如果学习嵌入式linux开发,现在就基于本人的一点体验和大家分享,我不会花大量时间进行长篇大论,必竞现在工作时间太紧张,只简单写四点思路。学习嵌入式linux,主要做的就是四点:第一点,写bootloader,并移植到到nand flash上;第二点,编译kernel(内核),并通过bootloader下载到nand flash上;第三点,在基于nand flash上建立文件系统;第四点,把写好的应用程序下载到target上。呵呵,可能对大家没什么实际的作用。关于这四点的操作及经验,我相信大家可以在网上找到一大把文章。
>> 阅读全文
|
|
jasson |
659 |
2007-12-20 |
|
2007年,基于Linux的技术创新,层出不穷,可谓令人“目不暇接”。比如,OpenMoko(被称为真正的Linux电话)、Ubuntu电脑(Dell)、绿色电脑(Everex的gPC)、Eee PC(华硕)、各种新颖的Linux发行版和桌面系统、谷歌的电子地球和网络办公桌面、Linux游戏(Quake Wars)、虚拟机(KVM)、3D桌面、ATI/AMD Linux v2.0和快速启动技术(SplashTop),等等。 大家知道,美国Phoronix公司是一个办事非常认真的“书呆子”(公司),做什么事情都得依据“实验数据”来说话。它的研究报告,几乎全是实验数据,似乎不会使用文字表述。今年,它发表了325篇研究报告(包括700多项原创数据)。值得我们注意的是,这个书呆子把那项“快速启动技术”(即DeviceVM公司的SplashTop)称为“2007年Linux生态系统中的“纯粹发明”(“Pure Innovation”),甚至称为“2007年Linux的最伟大的发明”(“The greatest Linux innovation of 2007”)。这是为什么呢? SplashTop是一项涉及嵌入式Linux和节能(绿色)技术的创新成果,比如,华硕的Eee Pc计算机主板就包含(集成)了这种技术,计算机加电之后,在数秒钟之内便可完成“快速启动”,关机过程也是一样(甚至更快)...
>> 阅读全文
|
|
linuxkaka |
1095 |
2007-10-31 |
|
1 嵌入式系统中对内存分配的要求 ①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VRTX中采用多个固定尺寸的binning方案。 ②可靠性。也就是内存分配的请求必须得到满足,如果分配失败可能会带来灾难性的后果。嵌入式系统应用的环境千变万化,其中有一些是对可靠性要求极高的。比如,汽车的自动驾驶系统中,系统检测到即将撞车,如果因为内存分配失败而不能相应的操作,就会发生车毁人亡的事故,这是不能容忍的。 ③高效性。内存分配要尽可能地少浪费。不可能为了保证满足所有的内存分配请求而将内存配置得无限大。一方面,嵌入式系统对成本的要求使得内存在其中只是一种很有限的资源;另一方面,即使不考虑成本的因素,系统有限的空间和有限的板面积决定了可配置的内存容量是很限的。 2 静态分配与动态分配 究竟应用使用静态分配还是动态分配,一直是嵌入式系统设计中一个争论不休的总是。 当然,最合适的答案是对于不同的系统采用...
>> 阅读全文
|
|
湛蓝思微 |
1793 |
2007-11-8 |
|
在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有利于增强读者对读写规则的感性认识,同时也提供了应用范例。1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。 1.2管道的创建...
>> 阅读全文
|
|
洲_仔 |
2599 |
2008-3-26 |
|
#if 0这段时间在做论文,忙着就没有来更新博客了。看着博客冷清了些真是心疼,快快写些程序来充实下我的家园吧,哈哈 程序测试过没有问题,只是要注意有些算法我把第0个元素空间作为暂时存储区,而其它算法里作为正常的数据存储区,这是为了算法更高效代码更紧凑。 这些是内部排序的各种算法,即是待排序的记录存放在内存里的。 插入排序:直接插入排序、折半插入排序、希尔排序交换排序:冒泡排序、快速排序选择排序:简单选择排序、堆排序归并排序:2-路归并排序#endif #include #include #define type int#if 0直接插入排序平均时间复杂度为O(n^2),如果待排数据基本有序,或者数据量较小时,时间复杂度可以提高到接近O(n)的水平。 #endifvoid InserSort( type a[], int length ) { // a[0]作为暂存单元 int i,j; for(i=2; i { >> 阅读全文
|
|
linuxkaka |
4933 |
2007-10-31 |
|
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux下的文件系统结构如下: 498)this.style.width=498;">Linux下的文件系统结构Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。1. 基于FLASH的文件系统Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区间,这种擦除是以...
>> 阅读全文
|
|
湛蓝思微 |
5407 |
2007-11-5 |
|
信号的阻塞就是让系统暂时保留信号留待以后发送。由于另外有办法让系统忽略信号,所以一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。* 当你需要修改某些全局变量时,你可以通过sigprocmask()函数阻塞处理函数中也使用该变量的信号。* 在某些信号处理函数中,为了阻止同类信号的到来,可以使用sigaction()函数的sa_mask阻塞特定的信号。11.7.1 阻塞信号的作用 使用函数sigprocmask()阻塞信号的传递,只是延迟信号的到达。信号会在解除阻塞后继续传递。这种情况往往需要在信号程序和其它程序共享全局变量时,如果全局变量的类型不是sig_atomic_t类型,当一部分程序恰好读、写到变量的一半发生信号,而信号程序里会改变该信号,那么就会产生混乱。为了避免这种混乱,提供程序的可靠性,你必须在操作这类变量前阻塞信号,操作完成后恢复信号的传递。 信号阻塞也用来处理必须保证连续操作的完整性方面。比如,你需要检测一个标志(可以是sig_atomic_t类型),该标志在信号程序中设置,当标志没有设置时可以执行某个操作。假如恰好在检测标志后发生信号,那么信号返回后,程序也会执行这个操作,即使...
>> 阅读全文
|
|
linuxkaka |
1057 |
2007-10-31 |
|
底层软件开发人员,及所有的程序员,若想作好软件设计(良好的结构和移植性),能适应新项目的变化,就要遵循下面的原则: ·最重要的是要理解基本概念 ( 如操作系统 ),掌握设计原则 ( 如接口分层 )。 ·第二是经验的积累。实践经验比书本知识更可贵,可极大提高后续工作和学习效率。 ·第三是关注新的软件技术,提高自己对软件设计的理解。 需要注意的是,一个完整固定的学习路线是很难确定的,原因一是因人而异,二是技术进步很快。 这是从todaygood的blog上面摘下来的,todaygood的学习效率比我高,可能工作的环境更能锻炼人吧。就嵌入式系统软件开发的学习思路而言,我们的观点还是一致的。现在这三个方面我还都是注意的,基本上是白天在导师公司的时间里,就根据项目积累经验,总结和改进学习方法,晚上进行软件设计基础和理论基础的学习。中间穿插的休息时间就可以泡论坛,看blog,关注新的软件技术,先知道有这种技术,技术的发展状况如何。 当然,这些工作的前提是确定一个基本的知识体系框架,在校期间把框架的基础打好,尽量多扩展填充。工作之后,继续深入细化,形成专长。这是我的学习思路。 补充的一点是,要学会写文档。有两个原因,一是锻炼自己...
>> 阅读全文
|
|
linuxkaka |
820 |
2007-10-31 |
|
在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。 字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU时间用来等待。网络设备可以通过BSD套接口访问数据。 每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问驱动程序。 系统调用时操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口。设备驱动程序是内核的一部分,它完成以下功能: ◆对设备初始化和释放 ◆把数据从内核传送到硬件和从硬件读取数据 ◆读取应用程序传送给设备文件的数据和回...
>> 阅读全文
|
|
湛蓝思微 |
3516 |
2007-11-14 |
|
linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。读者可以先读一下信号应用实例(在信号(下)中),这样可以对信号发送直到相应的处理函数执行完毕这一过程有个大致的印象。本文尽量给出了较新函数的应用实例,着重说明这些的功能。一、信号及信号来源信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。信号来源 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。二、信号的种类可以从两个不同的分类角度对信号进行分类:(1)可靠性方面:可靠信号与不可靠信号;(2)与时间的关系上:实时信号与非实时信...
>> 阅读全文
|