tag 标签: 索漫科技

相关博文
  • 热度 63
    2012-10-8 21:21
    9140 次阅读|
    42 个评论
    作者:下家山        嵌入式从2002年之后就成为很热门的职业,这其中以ARM的商用分不开。Samsung,Philiphs,Atmel这些公司纷纷推出性价比非常高的arm核的cpu(soc),而且这些soc非常适合作为手机,数码相机, mp3,mp4(还包括汽车电子,医疗电子等行业)的cpu。因此,很多做此类产品的公司对熟悉ARM架构cpu的人才需求很大,再加之大学课程与社会需求脱节,造成人才紧缺。 Arm,除了网路处理器不能抗衡之外,其他领域都有用武之地,它不但会像51单片机一样经久不衰而且会更加辉煌,所以在电子产品整个领域,arm将是工程师必须掌握的技术。 怎样的人适合学习嵌入式 学习嵌入式需要有一定的基础,这些基础大概包括下面两点: 学过c语言,汇编; 对微控制器有一定了解。 一般理工类(计算机,自动化,电子类专业)的学生大三学比较合适。因为到了大三,一般学过了c语言及汇编,虽然大部分学生没有独立写过一个程序,但至少上过这门课,自己也看过相关知识点;而且上过8051等微控制器原理的课程,也看过类似的教课书。 具备以上基础的人,也不是谁都可以学。因为嵌入式学习门槛比较高,难度比较大,不但要有一定的毅力,而且要触类旁通,如果太死板也很难学会。 概括的说学习嵌入式还必备下列性格: 热爱研发! 切忌浮躁! 执着,顽强,自信! 举一反三! 热爱研发,不仅仅是“喜欢搞技术”;我永远记得我第一次在EM78P156EL(仪隆8位单片机)上点亮第一个LED灯的感觉,可以用“欣喜若狂”来形容。这就是一种热爱。被问题困扰时的着急,无助,绞尽脑汁,到最后通过自己的努力问题得到解决的无比自豪和快感,这一过程是很多人热爱研发的原动力。 切忌浮躁,最近网络总结出了中国人所患的一种通病”丧失了慢能力”!此话不假!改革开发以来,中国翻天覆地的变化,物质的发达,网络的普及,文化的西化,贫富差距的加大造成了我们静不下心来读书,写作,学习。 《电子工程专辑》有一网友博文: 《从通用诉奇瑞间谍案反思技术发展之殇》 我一直在思考着为什么我国的产业结构调整一直推行得较为缓慢?为什么大多数毕业生从事制造业的5年计划就是转向管理层?为什么我国较为成功的企业不多... 此文从工程师浮躁的心理阐述了中国工程师和企业的知识技术积累不够,不能产生有价值的发明及有核心技术的企业。因嵌入式开发一时成为了热门职业,工资高,好找工作,很多人决定投入这一行业,可是嵌入式开发需要软硬件知识。 单从软件工程师来说: 需要c语言(要精),汇编语言(要懂),c++(如果是上次应用程序需要精);还有各种通信协议(最基本的有串口通信,I2C,SPI;复杂一点的有tcp/ip,bluetooth等待);还有更重要的中断原理,dma原理,定时器等等!还要看得懂原理图,要根据原理图和datasheet就能把代码写出来,这些都是一个搞嵌入式必须掌握的技术!如果是linux驱动要掌握的知识远不如这些! 所以学习嵌入式要“慢慢来”切忌“浮躁”! 执着、顽强、自信,在产品开发过程中,当你做的比较深的时候,你出现的问题已经太依赖你现在的环境,如果要找人来帮你,你还要花很长时间给他解释你问题产生的原因,他也要花时间从头跟进去,一般是找不到这种人来帮你的。像这种问题在网上也找不到类似的答案,图书馆也查不到有价值的资料。此时,只能靠自己了。虽然没人能帮你,但是你还是要想办法请教人,通过跟别人的讨论或许能给你启发;虽然在网上找不到类似的答案,但你还是需要到网上去找相关信息;虽然图书馆也查不到有价值的资料,但你有时还是需要跑跑图书馆;结合,别人的指导,网络的信息,图书馆的知识,自己的分析,以前的经验,各种实验的排除,如果能坚持做到这些是没有解决不了的问题的。 但是很多人做不到这些;他除了网上找答案,论坛发贴问别人一筹莫展,坚持不了几天就把问题搁置了,如果参加工作,只会让老板认为你能力不够,下次也不会委以重任;如果是学习,你将不能深入进去,做不到精通。 在你嵌入式职业生涯中,如果第一个棘手的问题凭你的不懈努力解决了,那么,接下来的问题都会得到解决,因为第一次解决问题不但让你学会了如何分析问题,解决问题,更重要的是增强了你的自信。其实,我们做研发工作不是搞发明,所有的问题都难不到哪里去!我有个同事,这位同事是我招募进公司的应届毕业生,嵌入式是中的问题对一个应届毕业生来说确实比较难,比如说通过IO脚来模拟I2C总线读写EEPROM。我记得这位同事说过一句话,他说“别人能发明,至少我能会用!”。 我从这句话中感受到了他的自信,事实确是如此,我们仅仅是应用,不是发明,我们都应该有能力去把这些原理性的东西搞懂,这位同事在后续的工作中,一直是出类拔萃,工资也越来越高! 举一反三,或者说模仿。在驱动开发中这种能力尤其重要,比如在Rtems,Linux这种OS中,支持各种BSP,但不一定支持你所用的BSP。现在学习嵌入式比较流行的开发板是s3c2410,如果OS是用rtems那么你找不到现成的BSP,但幸运的是rtems支持2400,我们就可以很容易的模仿它做一个2410的BSP,如果你的网卡是cs8900,那么你很不幸,2400中没有cs8900的网卡驱动,怎么办,如果够心细,你会发现edp7312的BSP中有cs8900的驱动,那么你就可以搬过来,虽然有很多改动的地方,但是比重新写一个符合rtems的驱动要来得容易的多。  写于上海松江 作者:下家山 ,有什么问题可与我联系: ximenpiaoxue4016@sina.com
  • 热度 16
    2012-10-8 21:19
    1411 次阅读|
    0 个评论
    Ubuntu FCITX 小企鹅后面出现乱码/方块问题      作者:下家山 这里关于怎么在ubuntu下安装中文支持包,安装Fcitx,就不多说了,网上介绍比较多了,我这里只对网上资料遗漏的地方做些补充。 本人原来一直用的SCIM,但是发现有时候输入某些汉字时造成程序(MSNQQ)死掉,于是一气之下把SCIM给删了,然后装了fcitx,第一次看到真正的Linux输入法(有个小企鹅),但是发现怎么按ctrl+space都没反应,根据网上的说法试了很多,最后发现是要在/etc/X11/Xsession.d/下面建立一个文件95xinput 内容如下: export XMODIFIERS=@im=fcitx export GTK_TM_MODULE=fcitx export XIM=fcitx export XIM_PROGRAM=fcitx fcitx 但是,当我写这篇tip时,发现/etc/X11/Xsession.d/下还有个95input文件,我不知是我捣鼓出来的,还是原来有的,我记不清了,如果95xinput不行,就补上这个吧,其内容如下:        XMODIFIERS=@im=fcitx export GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx Fcitx 这样,ctrl+space可以激活了,但是却看不到切换的内容,也就是FCITX 小企鹅后面出现乱码/方块问题。 大家都说在 .fcitx/config文件里 显示字体(中)= 显示字体(英)=Sans 显示字体大小=14 主窗口字体大小=12 字体区域=zh_CN.UTF-8 是否使用AA字体=1 是否使用粗体=1 数字后跟半角符号=1 Enter键行为=2 分号键行为=2 大写字母输入英文=1 转换英文中的标点=1 联想方式禁止翻页=1 的“显示字体(中)=”后面加上某种字体,有的说是加”STHeiti”,,有的说是加”AR PL ShanHeiSun Uni”,但按照别人说的就是不行。那么这些字体是从哪里来的呢? 原来有个命令fc-list,这个命令就会列出系统所支持的输入法,我发现我的列表里有 WenQuanYi Zen Hei,文泉驿正黑,文泉驛正黑:style=Medium,中等 这么一行,于是在“显示字体(中)=”后面加上WenQuanYi Zen Hei,果然ctrl+space后可以看到智能拼音,ctrl+shift可以看到五笔字型等其他的输入法了。        我高兴的太早了。        在我兴奋之余,发现不能翻页。        #gedit .fcitx/config        查看        发现 下面有        上一页=- ,        下一页== .        但是,我怎么组合都没用。        改来改去,最后改成     上一页=,        下一页=.        成功了,其实要翻页只要按键盘上的”点号”就行了,下翻到底自然会上翻。        其实,.fcitx下面还有其他的比较有用的设置,比如去掉打字速率,版本等!    2008-10-28   下家山     写于上海。松江                                      ,有什么问题可以给我邮件ximenpiaoxue4016@sina.com或加我群198204885             
  • 热度 25
    2012-6-18 22:02
    1743 次阅读|
    1 个评论
     作者:征途中的人(转载,请注明作者,请尊重原创)   一、一位数组的初始化 1、在定义数组时对数组元素赋予初值 int a ={1,2,3}; 2、只给部分元素赋值 Int a ={1,2}; 3、在对数组全部元素赋初值,由于数组个数已经确定,因此可以不指定数组长度 int a ={1,2,3}; 或 int a ={0,0,0}; 或 Int a ={0};   二、字符数组的一般初始化 1、最容易理解的方式是在定义时候,逐个字符赋给数组中的各个元素,进行初始化 Char c ={‘a’,’b’,’c’}; 2、如果对在定义字符数组不初始化,则数组中各个元素的值是不可预料的。 字符个数大于数组长度则按语法错误处理。 Char c ={‘a’,’b’,’c’}; 字符个数小于数组长度则其余元素自动定为空字符。Char c ={‘a’,’b’,’c’}; 如下图:   C C C C a b c \0           3、如果字符个数与数组长度相同,在定义时可以省去数组长度,系统会自动根据数组字符个数确定数组长度。 Char c ={‘a’,’b’,’c’};  //长度为3 三、对字符串常量的一些认识 编译系统对字符串常量会自动加个’\0’作为结束标志。   用过以下语句输出一个字符串。 Printf(“how do you do?\n”);   在执行此语句时系统怎么知道应该输出哪里为止呢? 实际上,在内存中存放时,系统自动在最后一个字符’\n’的后面加个’\0’作为字符串结束标志。在执行printf函数时,每输出一个字符检查一次,看一个字符是否’\0’,遇到’\0’就停止输出。   四、用字符串常量使字符数组初始化 1、在定义字符数组的时候用字符串进行初始化 Char c ={“abc”}   需要说明的是:字符数组并不要求它的最后一个字符为’\0’,甚至可以不包含’\0’,像一下的写法是合法的 Char c ={“abc”}; 或 Char c ={‘a’,’b’,’c’};   是否要加’\0’,完全根据需要决定,但是由于系统对字符串常量自动加’\0’,因此为了使处理方法一致,便于测定字符串的实际长度,以及在程序中作为相应的处理。在字符处理上也会人为的加上一个’\0’.例如: Char c ={‘a’,’b’,’c’,’\0’}; 这样便于引用字符数组中的字符串。     char c ={“hello”}; 和char c ={“hello”};有什么区别呢 在字符串存储中最后都会自动加个一个结束符’\0’.所以存储5个字符需要6个空间。 所以char c ={“hello”};缺少结束符,但是调用c ,c ,c ,c ,c ,是可以使用的,但是使用strlen(c),strcpy()等函数就会出现错误,因为找不到结束标志。   char c ={“hello”};可以正常使用,因为有结束标志’\0’,c =’\0’;   2、可以部分赋值 Char c ={“abc”}; 前三个元素为a,b,c,第四个元素为’\0’,后两个元素为空字符   a b c \0 \0 \0   3、可以省略数组长度 Char c =”abc”  //数组长度为4 等价于 Char c ={‘a’,’b’,’c’};     【上海索漫科技】提供  
  • 热度 23
    2012-6-6 22:55
    1602 次阅读|
    0 个评论
    以设置timer0的中断IRQ为例: VICIntSelect =0x00;中断选择寄存器 VICVectCntl0=0x24;向量控制寄存器 VICVectAddr0=(Uint32)IRQ_Timer0;向量地址寄存器 VICIntEnable=0x00000010;中断使能寄存器   1、VICIntSelect   中断选择寄存器     中断选择寄存器总共有22个有效位,每个位代表一个中断源。 中断选择寄存器的中断源位号来至于中断源的编号,一个位号对应一个中断源编号。 每个位有两种状态,0和1,分别代表IRQ和FIRQ。 总结:一个16进制的位代表四个二进制的位 赋值: VICIntSelect=0x00000000;IRQ VICIntSelect=0xFFFFFFFF;FIRQ   2、VICVectCntl0 向量控制寄存器     向量控制寄存器,有6个有效位,0-4位代表中断源标号(可以代表0-31个数,实际中断源编号是0-21),5位代表 当是1时,IRQ使能,当是0时,FIRQ使能。   赋值方式:两种 宏定义:VICVectCntl0 = (第5位使能+中断源编号)= 二进制(15)(0-21)十进制=得出十六进制0x2x(x代表中断源编号) 直接赋值:VICVectCntl0 =0x24; 3、VICVectAddr0 向量地址寄存器           向量控制寄存器和向量地址寄存器是一对。   4、VICIntEnable 中断使能寄存器         中断使能寄存器,总共有22个位,每个位代表一个中断源。 中断使能寄存器位号来至于中断源的编号,每个位号对应一个中断源编号。 每个位有0和1两种状态,分别代表FIRQ使能和IRQ使能。   赋值:有两种方式   通过宏定义方式:VICIntEnble =(14);4为中断位号(或中断源编号) 直接赋值方式:VICIntEnable = 0x0000 0001; 总结:中断选择寄存器VICIntSelect 和中断使能寄存器VICIntEnable 赋值方式相同。