‘壹’ 嵌入式linux系统开发详解_嵌入式linux系统介绍
嵌入式Linux开发从下到上分为:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。
一、嵌入式硬件开发:熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力。熟练掌握嵌入式硬件知识,熟悉硬件开发模式和设计模式,熟悉ARM32位处理器嵌入式硬件平台开发、并具备产品开发经验。精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般需要有4~8层高速PCB设计经验。
二、嵌入式驱动开发:熟练掌握Linux操作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式ARM开发,至少掌握Linux字符驱动程序开发。具有单片机、ARM嵌入式处理器的移植开发能力,理解硬件原理图,能独立完成相关硬件驱动调试,具有扎实的硬件知识,能够根据芯片手册编写软件驱动程序。
三、嵌入式系统开发:掌握Linux系统配置,精通处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程等方面的内容;掌握Linux文件系统制作,熟悉各种文件系统格式(YAFFS2、JAFFS2、RAMDISK等);熟悉嵌入式Linux启动流程,熟悉Linux配置文件的修改;掌握内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部前胡署Linux系统等整个流程;、熟悉搭建Linux软件开发环境(库文件的交叉编译及环境配置等);
四、嵌入式软件开发:精通Linux操作系统的概念和安装方法、Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和Make项目乎悔败管理工具等知识;精通C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识、数据结构的基础内容,包括链表、队列等;掌握面向对象编程的基本思想,以及C语言的基础内容;精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库;熟悉常用的岁颤图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等。
所以如果你要做嵌入式软件开发的话,上面那些知识基本够用了。
‘贰’ 嵌入式linux系统开发的具体步骤
第一步、建立岩困交叉编译环境
没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般
我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一
台PC机,这台机我们称为目标主机。
我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它
们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发机上再
安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,
是放在目标主机上运行的。
那么或许有初学者会问,直森姿接用原生开发工具为目标主机编译程序不就完了?至少我当
初是这么想的。一般来说,我们的开发机都是X86 平台,原生开发套件开发的工具,也针
对X86 平台,而我们的目标主机可能是PowerPC、IXP、MIPS所以,我们的交叉编此枣绝译
环境是针对某一类具体平台的。
一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的
这三类软件是:
Binutils
G
uClibc
当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择
第二步、编译内核
开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的
工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;
第三步、建立根文件系统
也就是建立我们平常看到的bin、dev、proc这一大堆目录,以及一些必备的文件;
另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig当然,
一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一
是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox来完
成的,包括系统引导软件init;
最后,我们为系统还需要建立初始化的引导文件,如inittab
‘叁’ 我想学嵌入式linux方向 我想请问用学linux下的QT程式设计吗 有必要学吗
嵌入式linux方向 ?? 这还是有很多的方向的啊
嵌入式系统分为4层, 硬体层、驱动层、作业系统层和应用层。
建议你先看这本书 嵌入式资料整合第一辑.pdf
零基础建议先学习C语言。 然后从微控制器MCS51入门,初期可以选择用protues模拟,积累到一定程度可以买普中开发板(MCS51和STM32一体的)。初学MCS51不要过分依靠教科书,汇编视个人情况而定,有困难不要死抠。 C51的一些关键知识点: 二进位制与16进位制换算,KEIL等开发环境,下载等C语言基础就不说了。 流水灯、数码管、独立按键、定时器、16*16键盘、点阵、LCD1602、12864、DS18B20这些都是常用的,开发板也有例子,照着学下来。 如果C51玩的很遛了可以选择完STM32F103C8,熟悉一下ARM核心。C8和MCS51差不多,资源很富一些。需要注意的是STM32采用韧体库程式设做巧薯计,入门以后配置起来比51更容易。 C8差不多了可以玩STM32F103ZET6这类的板子,这时候玩玩像USB、SD、乙太网之类的高阶货。熟悉一下各类协议栈、RTOS之类。 如果ZET6也玩的很遛了嵌入式底端应聘个5k~7k以上的岗位不在话下了。 再纯者想深入一下可以试着玩一下linux、ARM9或A8。这时候就可以往系统的概念走了
在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条
汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话
也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方
法是多写程式多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析
。以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C
、纯数学、纯逻辑的题目,不涉及接口这些东西,创客学院的嵌入式视讯很适合提高
你的程式设计能力。
平台有很多,跟你选择的学习平台有关系,是否具有真实企业案例的学习和实战是一大参照。推荐你可以学习华清创客学院的教程,每个知识点都有对应的案例,理解起来很容易,零基础入门的量身教程。线上问答让你的每天的问题可以得到及时的解答,不留尾巴。课程内容干货多,废话少,互动式让枯燥的课程变得生动有趣,加强你的学习欲望。
如果在北京的话,推荐你去荣新IT培训中心,我有朋友就在那培训的,现在上班了,工资很高呢
嗯,很多学校都学ARM,我们老师文全刚还出了一本书,基于ARM的汇编程式设计,目前唯一一本基于ARM汇编的教材
目前我在联想网路公司实习,我觉得,公司的产品会升级,CPU也可能会换,所以学习以ARM为例,但不要只看ARM,有几门课程我觉得比较重要:linux作业系统、作业系统原理、微机原理、计算机网路(嵌入式离不开网路啊)、资料结构、C语言
我们的课程还有windows CE.程式设计、硬体描述语言、计算机组成原理等
我是在粤嵌-嵌入式学校学习的,他们的教学理念很不一样,他们可以免费试听有兴趣可以去看看。
ubuntu ?用处不大。
其实你主要会用,任何 Linux 都可以用。但你如果连 Linux 都不会,那么任何 Linux 都不够你用。
建议装 Fedora 学习。至少安装开发部分的软体包方便,实在不行可以选择全部安装。
至于嵌入式开发,那么至少 Linux 必须精通。注意是开发精通,而不是用精通。最主要的还是看你嵌入式开发哪方面了。
学习嵌入式linux之前必须要做好心理准备:
第一,要明白学好嵌入式linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期,由于在linux中,使用者许可权很大,做任何事情都很自由,所以,你往往需要知道你做的每一步在干什么,系统做了些什么,这需要时间去掌握,(背命令不是一件好的学习方法,相信我你一定会在你背完之前全部忘光),尽量掌握常用命令;
第二,在学习初期,你一定会遇到很多困难,或者说各种困难,所以你最好先将你linux中的重要内容备份,因为,在你学习的过程中,很可能将系统搞废(eg:源混乱等);
第三,如果你想在以后的生涯中在软体行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他;
第四,如果你只是想应付一下作业系统的课程,劝你最好别学,或者说不要指望能用的怎么样,原因我说了,这很耗时间,而且如果你学不好的话,你在linux中开发的机会就很少,或者说几乎没有,它的优势就消失了,然后随着时间的流逝,你就会全部忘记她。要深入学习,就到华清的星创客高阶班,专案实战丰富+职场老鸟带领。
要学好嵌入式linux需要做些什么:
第一,要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中,你会学到更多的知识,学习linux,更要学习一种geek的精神,python之禅中也说过:以总结分享为荣,以跪*求其解为耻;
第二,要多动手,不要怕什么搞坏了怎么办,你不搞坏,不去动手,就永远不会有收获,既然你在linux中是自由的,那就发挥自己的权利;
第三,学习linux,就意味着更快的开发效率,等更多关于软体本身或者说作业系统本身的理解,(给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它),但是怎么用它提高开发效率,需要你在学习的过程中不断总结。
FPGA硬体Verilog本硬体描述语言虽看写程式码描述电路功能模组连线看硬体语言背对映硬体电路FPGA关键
习FPGA要定定力首先基本数电要写程式码要解模组功能要看数BUG我推荐买发板般发板配套教程配合发板写调FPGA才提高写关键性东西(跨钟域操作状态机亚稳态消除毛刺些理解功夫)
硬体软体同硬体候卡经验现找工作单位要求3-5应届种限制公司接受应届毕业机要握别沟通做写
我觉硬体软体区别硬体越越珍贵软体找合适机转管理层吧3040岁写软体思维能轻比跳跃
我推荐软硬结合板卡设计始画板写程式码(管微控制器ARM,FPGA都)除错我觉才算比较站久远点
意见我做硬体(板微控制器都做)
‘肆’ 嵌入式开发要学哪些课程
嵌入式开发的必学课程:C语言,C++,操作系统,计算机组成原理,linux编程,51单片机,arm,硬件编程语言,模拟电路&数字电路。
嵌入式培训分几个阶段的学习,从基础到实战的练习,一点一点学习和掌握这门技术。学习的课程内容包含:嵌入式高级C语言、嵌入式设备及GUI开发、嵌入式Linux高级程序设计、Linux高级网络程序设计、数据库开发、面向对象高级语言程序设计、物联网、CotexA53 Linux平台驱动开发及真实的企业实战项目。
想要学好嵌入式技术,嵌入式软件开发工程师,从事领域很宽泛,特别是工业控制、消费电子与通信设备三大领域,因为就业面很大,所以人才需求也大。现在智能硬件也比较火,这方面的发展也会大大拓展嵌入式软件开发工程师的就业机会。再者,嵌入式硬件工程师,需求没有嵌入式软件开发工程师大,但因为做硬件门槛会高些,所以这个方向如果做的比较专业,薪资绝对不会低。
‘伍’ 嵌入式开发要学哪些课程
嵌入式软件开发专业主要课程如下:
主干学科:马克思主义理论、大学外语、高等数学、大学物理、物理实验、线性代数、概率论与数理统计、程序设计语言、数据结构、离散数学、操作系统、编译技术、软件工程概论、统一建模语言、软件体系结构、软件需求、软件项目管理
该专业除了学习公共基础课外,还将系统学习离散数学、数据结构、算法分析、面向对象程序设计、现代操作系统、数据库原理与实现技术、编译原理、软件工程、软件项目管理、计算机安全等课程,根据学生的兴趣还可以选修一些其它选修课。
实践环节:毕业实习、课程设计、计算机工程实践、生产实习、毕业设计(论文)。
(5)linux嵌入式课程设计扩展阅读:
嵌入式开发技能及就就业方向:
1、可视化编程掌握程序设计方法及可视化技术,精通一种可视化平台及其软件开发技术。获取Delphi程序员系列、Java初级或VB开发能手认证。 就业方向:企业、政府、社区、各类学校等可视化编程程序员。
2 、WEB应用程序设计 具有美工基础和网页动画设计能力,掌握交互式网页程序的设计技术,能进行网站建设和维护。获取Macromedia多媒体互动设计师或Delphi初级程序员或Delphi快速网络开发工程师认证。 就业方向:企业、政府、社区、各类学校等WEB应用程序员。
3 、软件测试掌握软件测试的基本原理、方法和组织管理,精通软件测试工具。获取ATA软件测试工程师或Delphi初级程序员或Java初级程序员认证。 就业方向:企业、政府、社区、各类学校等软件测试员。
4 、数据库管理 能应用关系范式进行数据库设计,精通SQL语言,胜任数据库服务器管理与应用工作。获取Oracle数据库管理或SQL Server数据库应用或Windows XP应用认证。 就业方向:企业、政府、社区、各类学校等部门的中、大型数据库管理员。
5 、图形图像制作 精通国际上流行的图形/图像制作工具(如CorelDraw、Photoshop、Pagemaker等)。获取平面设计师相关的认证。 就业方向:广告制作公司、建筑设计公司、包装装璜设计公司、居室装修公司、出版印刷公司。
6 、网络构建技术 熟悉网络结构和组网方式,掌握建网方法,能利用工具分析和排除常见网络故障。获取Cisco路由配置或华为网络工程或AMP应用工程师认证。 就业方向:企业、政府、社区、各类学校等网络构建工程师。
7 、网络系统管理 掌握网络系统管理的基本知识与应用技能,能进行网络系统的安全设置。获取Window2000 Server或TurboLinux TLCE或Cisco路由配置专家认证。 就业方向:企业、政府、社区、各类学校等网络系统管理员。
8 、多媒体制作 具有多媒体程序设计与多媒体制作策划的能力。基本掌握面向对象程序设计与建模、造型设计、场景设计、分镜头原理等技能。获取多媒体设计师相关的认证。 就业方向:多媒体设计与制作公司、动画美术制作出版公司、广告制作公司。
9、 计算机办公应用 精通办公自动化应用与管理,熟悉服务器的安装、管理和维护,基于应用服务器的相关服务和软件系统,具备对服务器的网络安全设置、邮件、网页发布、FTP、OA、BBS等系统的应用和维护能力。 就业方向:企业、政府、社区、各类学校等系统管理。