嵌入式相关问题,可在此提问,各位同行请在这里跟帖提问、交流。
EEWORLD在这里期待与你讨论。
欢迎大家多多说出自己的想法,并帮助坛子里的朋友回答问题~~
老师介绍:
欧文盛:
顶嵌(
www.top-e.org)高级讲师,主要研究和工作领域是嵌入式Linux系统下的平台和应用软件开发。曾就职于摩托罗拉(中国)科技有限公司,任嵌入式高级软件工程师职位。参与开发过多款摩托罗拉手机平台(如EZX, LJ, MOTOMAGAX等)及产品(如A1200, E2, Z6, V8, U9等)。著作有《ARM嵌入式Linux应用实例开发》、《ARM嵌入式Linux应用开发入门》和《ARM嵌入式Linux系统开发从入门到精通》。
李亚锋:
顶嵌(
www.top-e.org)高级讲师,主要研究和工作领域是嵌入式Linux系统下的设备驱动开发以及嵌入式手机系统的驱动和应用软件开发。曾先后就职于威盛电子(中国)有限公司、O2Micro北京分公司,任嵌入式高级软件工程师职位。参与开发过嵌入式网络设备驱动、手机SD卡,LCD,USB等驱动程序。著作有《ARM嵌入式Linux设备驱动实例开发》和《ARM嵌入式Linux系统开发从入门到精通》 。
友情提醒:为快速获得答案,请花两分钟的时间学习
提问秘籍:
https://bbs.eeworld.com.cn/thread-78719-1-1.html
老师您们好!
我想问一个问题:现在我手上有petalinux,我想知道对于petalinux的linux移植都做什么?从u-boot到2.6内核都改了什么内容?应该怎样开始学习linux!
[ 本帖最后由 daicheng 于 2009-7-22 14:22 编辑 ]
嵌入式学习的疑问!
两位老师你们好,
我学嵌入式有四个月左右了,现在心里很迷茫,我想大多数学嵌入式的同学们可能都有和我一样的感觉,那就是越往里面学,感觉不懂的东西越多,心里越是没底,都没有信心去找工作。即使是学过了的东西,甚至是自己做过的东西,估计面试的时候恐怕很多还是说不出来,因为学这些东西的时候很多都是照着资料弄出来的,比如像U BOOT的移植过程中,加入Nand Flash的驱动,在Linux过程中添加Flash分区,移植CS8900a的驱动等等,都是收集很多资料然后按照资料一步一步弄出来的,虽然其中碰到很多问题,也自己解决了,可还是感觉这好像一点技术含量都没有,如果完全要我写一个全新的驱动出来,我估计肯定写不出。两位老师都是这个领域的专家,我们也很好奇老师在刚开始学习这个的时候的过程是怎么样的,是否当时和我们有同样的感觉?还有就是您能不能对我们的这种感觉说说您的看法!!!!在此先谢过了!
引用: 我学嵌入式有四个月左右了,现在心里很迷茫,我想大多数学嵌入式的同学们可能都有和我一样的感觉,那就是越往里面学,感觉不懂的东西越多,心里越是没底,都没有信心去找工作。即使是学过了的东西,甚至是自己做过的东西,估计面试的时候恐怕很多还是说不出来,因为学这些东西的时候很多都是照着资料弄出来的,比如像U BOOT的移植过程中,加入Nand Flash的驱动,在Linux过程中添加Flash分区,移植CS8900a的驱动等等,都是收集很多资料然后按照资料一步一步弄出来的,虽然其中碰到很多问题,也自己解决了,可还是感觉这好像一点技术含量都没有,如果完全要我写一个全新的驱动出来,我估计肯定写不出。两位老师都是这个领域的专家,我们也很好奇老师在刚开始学习这个的时候的过程是怎么样的,是否当时和我们有同样的感觉?还有就是您能不能对我们的这种感觉说说您的看法!!!!在此先谢过了!
riley你的这种疑惑可能在学习嵌入式的同学中比较常见,主要的原因,我估计还是因为没有真正弄懂Bootloader/内核/驱动程序等的工作原理,仅仅依靠网上收集的资料,能把一些东西做出来,但自己的理解还远远不够,很多步骤都只是“知其然而不知其所以然”,这样由于缺乏足够的基础知识,产生这种迷茫的感觉也就很正常了。
嵌入式方向之所以相对要难,门槛要高一些,正是因为它需要非常扎实的计算机基础理论知识,需要对底层知识有很好的掌握,而不是流于表面的一些花俏的技巧。比如你所提到的UBoot移植,内核/驱动移植等过程,基本的要求是,你需要了解Bootloader/内核的工作原理,能够读懂UBoot和Linux 内核的源代码,如果没有这些基本功,你就只能亦步亦趋的依照别人的文档来移植,而且还无法真正理解别人为什么要那么做,就更谈不上自己独立的完成了。
另外,换个角度来看,有这些疑惑,对你来说其实是好事,发现问题解决问题的过程就是你技术实力增长的过程,四个月的学习时间一点都不长,刚开始有一些问题是很正常的,当你经过努力解决这些问题之后,肯定会发现自己技术实力大有增长的。
回复 沙发 daicheng 的帖子
daicheng你好,你提的问题范围是相当广泛的,我们会在后面的文档中逐渐给你解惑,请关注我们后续技术文档...
李亚锋老师:如何成为优秀的嵌入式开发工程师
嵌入式已经成为当今IT界主要分支之一,越来越多的人都会从事该行业的工作。该行业涵盖消费类电子、智能手机、数字家电、多媒体、视频编码解码、图像处理、安防监控、工业应用等领域。那么如何才能成为一个优秀的嵌入式开发工程师呢?
除了具备良好的职业素质和踏实认真地学习态度,笔者认为主要需要有两点软件知识与硬件知识。嵌入式开发不同于常见的PC应用开发,你只需要了解编程语言,实现逻辑等纯软件的知识就可以满足。但嵌入式开发不同,因为它是直接针对硬件操作,并且每个硬件设备的差异化较大,不可能同一个软件直接应用在多个不同的硬件平台上。就拿手机来说,Motorola的每款手机软件只能针对同种产品使用,如果手机型号变了,那么软件就得修改或重新开发。
系统学习内容可参考:
http://www.top-e.org/page/sxkc/index.php
在硬件方面,最基本要会看电路原理图,能明白引脚的接法,能看懂芯片手册等;在软件方面,尽可能多的了解操作系统原理,多进行总结软件设计思路,多写代码进行调试等。详细的学习内容可参考顶嵌公司的就业实训课程体系,如上图,如果能掌握图中所具备的知识点,那么你肯定能成为一个优秀的嵌入式开发工程师。学习嵌入式Linux开发需要掌握的技术点可参考:
http://www.top-e.org/jiaoshi/html/?380.html
总之,嵌入式开发对人才的要求是全方位的,也是最能体现个人价值的职业之一,只有你付出越多,解决问题的经验就越多,那么你的经历就越资深,同时你的回报也就越可观。
[
本帖最后由 topembedded 于 2009-7-23 10:12 编辑 ]
我还有一个问题就是:
在QT中我在串口接收到的东西想在界面中显示,如何将接收到得数据显示到QTextEdit中?
用下面两句:
append(msg);
ensureCursorVisible();
用这两个方法不行?
QTextEdit->append(msg);
QTextEdit->ensureCursorVisible();
问题已经解决:没有使用QT提供的串口函数,在使用时需要设置计时器进行分时显示与采集,现在使用自己写的一个串口线程实现采集,显示与其分开!
第一次做经验不足,希望大家多多指教!
[ 本帖最后由 daicheng 于 2009-8-7 14:47 编辑 ]
在请教一个问题: 我在用petalinux中在配置busybox时不知道下面的含义:
不知道:ASH Enable Posix math suport是做什么 的?
是不是与MMU有关?
[ 本帖最后由 daicheng 于 2009-8-7 16:48 编辑 ]
请问老师一个关于Nandflash的搬运问题?
目前做的一个手机项目:从nandflash启动,例如我们软件一个版本大小为40MB,现手机上电启动时,会把40M版本从nandflash搬运到内存里,目前的问题是由于搬运时间太长,影响手机开机速度。
请问:nandflash是否支持类似于分批搬运的功能。比如我先把必须要执行的10M内容进行搬运,后续在搬运后面内容。不知道是否可以,请问它实现的难点在哪儿?谢谢老师
nandflash可以分批拷贝,但是要取决你软件的设计,你完全可以将这40M的软件分解成几个独立的模块,按执行的先后顺序依次拷贝,这样做的话就在系统启动时调用你必须的要用的子模块,其他的模块可在系统起来之后再加载。
各位老师:
请教一下关于sd卡驱动的问题,我是用写flash的方法对sd卡进行操作,我已经确认打开sd卡成功,但是就是写不进去,请问一般这种情况是由于什么原因造成的?
希望各位老师以你们的经验能给我一些帮助?
谢谢!!
回复 12楼 charlie1982 的帖子
这个一般就是你的驱动代码写得有问题了,如果只是裸机(没有Linux等操作系统)的驱动,可以仔细对照DATA SHEET看看,如果有操作系统,则多检查一下是否符合操作系统的要求
欧文盛老师
两位老师好,我想学习一下arm9
从哪里入门啊???
我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
我在QT下遍了个程序 MAKE出错了
dclock.cpp:3: 错误:expected `)' before ‘*’ token
dclock.cpp: In member function ‘virtual void DigitalClock::timerEvent(QTimerEvent*)’:
dclock.cpp:14: 错误:invalid use of incomplete type ‘struct QTimerEvent’
/usr/include/QtCore/qobject.h:62: 错误:forward declaration of ‘struct QTimerEvent’
dclock.cpp: In member function ‘virtual void DigitalClock::mousePressEvent(QMouseEvent*)’:
dclock.cpp:23: 错误:invalid use of incomplete type ‘struct QMouseEvent’
/usr/include/QtGui/qwidget.h:75: 错误:forward declaration of ‘struct QMouseEvent’
dclock.cpp:23: 错误:嵌套名指定中使用了不完全的类型‘QMouseEvent’
make: *** [dclock.o] 错误 1
回复 15楼 practiceiqx 的帖子
问题解决了么?
dclock.cpp:3: 错误:expected `)' before ‘*’ token
dclock.cpp: In member function ‘virtual void DigitalClock::timerEvent(QTimerEvent*)’:
dclock.cpp:14: 错误:invalid use of incomplete type ‘struct QTimerEvent’
/usr/include/QtCore/qobject.h:62: 错误:forward declaration of ‘struct QTimerEvent’
dclock.cpp: In member function ‘virtual void DigitalClock::mousePressEvent(QMouseEvent*)’:
dclock.cpp:23: 错误:invalid use of incomplete type ‘struct QMouseEvent’
/usr/include/QtGui/qwidget.h:75: 错误:forward declaration of ‘struct QMouseEvent’
dclock.cpp:23: 错误:嵌套名指定中使用了不完全的类型‘QMouseEvent’
make: *** [dclock.o] 错误 1
老师好!
两位老师好!
我是电子信息工程的学生,专业是Liunx嵌入式方向,但我想自学Win CE和ARM,两位老师能不能向我推荐几本教材关于Win CE和ARM的,还有如何将它们结合成一个嵌入式系统的。谢谢! 我有C和一点单片机基础,不知道还学不学习C++?
我需要的教材不需要太深入,只需要学会怎么用Win CE和ARM就行了, 提前谢谢二位老师了!
我想学习跑裸机,但是到现在都还没有跑起来.应该怎么办?
请教老师怎么在linux下把s3c2440的串口波特率设置为250k???
芯片资料上说可以选择PCLK,UEXCLK,FCLK/n作为串口的时钟源,假如用PCL最高可以达到115.2k,假如要更高的波特率就要用外接时钟或者用FCLK/n作为串口的时钟源,但是这个怎么设置呢?我设置了ULCON,UCON,UFCON不行啊,解压linux之后就停在那里了,boot里面也需要做修改吗?还需要修改哪里啊?请老师帮我指点迷津啊,非常感谢!!!!!!