{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如何学习嵌入式?

未东兴未东兴 回答0 收藏2
问题描述:嵌入式linux学习方法步骤有哪些,大家有哪些建议?
收藏问题

10条回答

Ververica

Ververica

回答于2022-06-28 15:43

嵌入式系统的定义为:以应用为中心,以计算机技术为基础、软硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的计算机系统。



bootloader

了解Bootloader的结构和启动过程,在大多数的嵌入式系统中,Bootloader是上电后执行的第一个程序。了解UBoot的配置、编译、连接过程,了解常用命令如下载文件到内存,擦除、读写Flash、运行内存、NOR Flash、NAND Flash中的程序等等。



kernel

内核管理的核心代码,了解内核的启动过程,一般分为两部分:架构/开发板相关的引导过程、后续的通用启动过程。了解内核源码结构及Makefile分析。编译烧写启动内核。

rootfs

根文件系统,了解根文件系统下各目录的作用,掌握构建根文件系统的方法,移植Busy box,构造各个目录文件等。掌握制作yaffs.jffs2文件系统映像文件的方法。

app

了解几种嵌入式GUI得特点,学习C语言,C++语言,学习简单开发自己的QT GUI程序的编写方法,掌握x86主机上模拟、调试嵌入式GUI程序。

综上所述,嵌入式入门很难,需要学会改造Bootloader,钻研内核,为新硬件编写驱动程序,看得懂电路原理图,看的懂芯片数据手册,上层应用会绘制GUI。

推荐韦东山老师的嵌入式Linux应用开发书,适合嵌入式Linux的初学者学习。

评论0 赞同0
  •  加载中...
EscapedDog

EscapedDog

回答于2022-06-28 15:43

随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学?

想要学习好嵌入式,想成为嵌入式软件工程师。那么当前企业需要哪些技术呢

1.嵌入式上层的软件应用开发

需要:精通嵌入式Linux C语言编程、嵌入式Linux C语言数据结构、嵌入式Linux项目开发流程、嵌入式 Linux并发程序设计、嵌入式 Linux应用编程、嵌入式 Linux网络编程、嵌入式数据库开发;若是Android设备的应用开发,那就必须要了解java编程,Android应用编程。

2.嵌入式底层开发

当前底层90%的企业都采用ARM处理器,低功耗、成本低倍受关注。因此你必须要会:ARM处理器编程、ARM硬件接口开发、嵌入式Linux系统开发、嵌入式Linux内核开发、嵌入式Linux驱动开发。其次Android设备越来越多,同样你得了解嵌入式Linux在移动开发的典型应用、ndroid底层系统开发。

学习嵌入式需要学的课程内容很多,如果你是零基础学习的话,我建议还是选择一家不错的培训机构学习会更靠谱一些,毕竟现没有基础自学的话,想要精通需要很长时间,还不一定能学会,所以培训机构专业系统的学习会少走一些弯路,更快的学习好嵌入式开发。

大纲也先分享给大家参考吧,合不合适你自己说了算。

1、入式高级C语言

2、嵌入式设备及GUI开发

3、嵌入式Linux高级程序设计

4、Linux高级网络程序设计

5、数据库开发

6、C++面向对象高级语言程序设计

7、物联网

8、CotexA53 Linux平台驱动开发

9、企业实战项目

评论0 赞同0
  •  加载中...
546669204

546669204

回答于2022-06-28 15:43

我来发表一下我的观点。说下我的方法,适合在校大学生,大家有什么见解欢迎纠正讨论。


为什么说适合在校大学生呢,因为在校大学生时间充裕。而参加工作的人,时间就是金钱,与其花费太长时间自学,还不如报个培训班速成,但是培训班的缺点可能就是基础不牢(这个是个人见解,如有不同意见也可以看看我写的自学经历,根据自己的基础跳过相应的步骤即可)。


我认为学习任何东西都是需要分模块的。各个模块熟悉了最后串起来(个人经验)


提醒!!

提醒!!

提醒!!


玩嵌入式是有点费钱的。但是有舍有得,这个看你们自己把握了。



下面我说下我的方法

一、嵌入式分为几个模块(给自己学的勇气

二、起步学什么(打基础)

三、进阶学什么(给自己坚持下去的动力)


一、嵌入式分几个模块

嵌入式分为软件、硬件(简单吧)。软件,其实可以分的更详细,但是我们不需要分这么详细,后面学习的过程中你就明白了。


二 、起步学什么


首先,你最好是计算机、电子、电气、微电子、电子信息、通信、自动化、信息工程等相关专业。


可能有人会问为什么必须这些专业。因为这些专业要么编程能力强,要么硬件基础很熟悉,学习嵌入式是天然的优势。比如自动化专业,他们学习过电路,模电,数电,电力电子这些课能让你们有牢固的硬件基础;还有C++,51单片机,微机让你们有一定的软件基础。特别是51单片机,一旦学会了,后面学习嵌入式会更容易。


接下来仔细说说如何起步(基础不劳,地动山摇

第一步,你要懂得硬件的基本知识,这些硬件知识能帮你更好的理解51单片机的内部原理,硬件的管脚配置,引脚功能,更重要的是帮你理解放大电路,滤波电路等。(第三步推荐一本我认为比价好的关于51的书,里面有51的内部原理)这些懂了,在用51C语言写程序的时候就会发现so easy。至于为什么先学51呢,因为大学大部分还是开设51的课,再者51容易理解,教学视频丰富。


第二步,你要懂C/C++,c语言是学习嵌入式的灵魂。因为大学都开设有C课程,所以大家从C开始学会相对方便和节约时间。


第三步,有了相关基础后开始看51单片机系列的书(见下图),网上各种各样的视频多的很,对着网络上的视频学习,效果会更好。但是不能只学不练,买个开发板(当初我们是自己焊的),自己对着视频练习。理论和实际结合效果最好。

当然需要用到相应的烧录软件,和编程软件。我在这里统一说一下。

烧录软件就用STC-ISP(好用),编程的用KEIL c51(keil3也能用),后面玩32了再用KEIL5。


三、进阶学什么


第一步、51单片机玩差不多半个学期就行啦,半个学期够你掌握了,太长浪费时间。我们已经玩过51了,已经是大孩子了,哈哈哈。但是我们没有玩过32位的,直接上arm是不行的。

所以我们要开始学习32,其实32比51 简单的多,因为他们有丰富的库,各种库。市面上的教学资源非常非常的丰富,产品也比较成熟,某宝上面各种开发板(价格300以内),自己选一个买就行了。

其实你也可以跳过51学32,毕竟51太老了,太陈旧了,但是我觉得你学习51会帮你牢固知识,帮你形成写程序的习惯等。

学习32 的周期,根据自己情况安排,一般一个到一个半学期。


第二步、现在咱们对32比较了解了,轮到学习嵌入式系统了,对,没错就是系统,是不是很兴奋。。

想学习嵌入式系统Linux/WIN等 ,首先你需要买个arm学习版,在淘宝上面买的话,不太贵S3C2440,500+元。资料非常多,建议买arm9,因为ram11的资料太少,不适于自学。或者你们预算非常充足,可以考虑Cortex-A8/A9的开发板。

我相信你们学到这里已经有了自己的想法和见解了。到这个过程的时候,知乎上的大佬回答的很详细和网上的资源也非常丰富,多看看大家写的共同学习。


最后,做下总结


看懂电路图、看懂芯片手册(更牛皮的要求是会自己绘制PCB板,会器件选型,会自己调试自己设计板子,直至可以量产)

有编写,移植驱动的能力

懂内核的实现机制

懂C语言,C++等

下面列有详细的要求,你们自己把握下。


等到找工作的时候,有嵌入式硬件,嵌入式软件,嵌入式等,甚至可以触类旁通,要看你们的学习水平了, 哈哈哈。


嵌入式硬件要求:

1、熟练使用Allegro Cadence等EDA工具进行硬件原理图及PCB的设计,精通PCB布线流程、具备多层板布线经验规范及信号完整性分析,熟悉至少一种高速通信接口,如PCIE、SRIO、10GBE等。

2、精通嵌入式处理器设计,具有大型CPU或者DSP的板级硬件设计调试经验,例如P系列或者T系列PowerPC,C6678、C6655等DSP,以及FPGA设计经验者等。

3、负责硬件产品的需求调研、方案设计,熟练使用各类电子仪器仪表进行测试。

。。。。。。


嵌入式软件要求

1、熟悉Linux操作系统内核,有Linux内核和驱动开发经验。

2、精通C/C++开发语言,shell脚本。

3、精通C语言,能独立编写、调试硬件驱动程序和功能程序。

4、熟悉多线程的开发,精通ucosII嵌入式系统移植、驱动和应用开发。

。。。。。。


嵌入式硬件的工作:

嵌入式软件的工作:

嵌入式的工作:

那你可以以“低端单片机-高端单片机-低端ARM-高端ARM”来学。我现在就是工作中用STM32,晚上回去自学ARM9。

评论0 赞同0
  •  加载中...
loostudy

loostudy

回答于2022-06-28 15:43

学习嵌入式Linux一般有两个方向一个是应用层,另一个是底层。

应用层是在嵌入式设备上实现一些功能(此时设备已经将系统跑起来),像网络通信,人机交互界面,设备管理和监控等等。

底层要做的是将系统在设备上跑起来,我们需要移植bootloader、Linux内核、文件系统,编写外设驱动等。

学习嵌入式Linux的话,以我个人经历来说的话,我觉得你最好有单片机开发的经历这样你对于底层的知识有更容易理解。

首先选择一款Linux系统的发行版作为平台来学习基本的系统操作和一些应用层知识,进程间通信,时间编程,网络编程等,平台可以选择redhat,Ubuntu,debian等。此时我们就可以做一些系统应用层的练习,玩一些开源项目。

之后就看你的意愿了,喜欢做应用层就继续做应用层,学习一门高级语言,了解下内核机制就可以,可以不用更深入的了解底层。

如果要做底层,可以选择一个一款arm板来学习底层,推荐经典的s3c2440,资料丰富,容易入门。可以先从bootloader、内核、文件系统的移植开始,然后再学习驱动的编写。

评论0 赞同0
  •  加载中...
beita

beita

回答于2022-06-28 15:43

自学吗?有点难哦。需要学的知识比较多。

当年大学里的时候也折腾过。

首先要了解计算机底层硬件的工作原理、bootloader、操作系统及其裁剪和移植、汇编和c、交叉编译。然后还要学习平台相关的知识,比如arm、mips之类。挺多的知识点。

我当年也没折腾出来,工作也没走这条路。讲不太多,希望能对你有帮助。

评论0 赞同0
  •  加载中...
Charlie_Jade

Charlie_Jade

回答于2022-06-28 15:43

1)先选择一个主流的平台,比如NXP I.MX6UL,买一块好的厂家(用户多,资料多、技术支持好)的开发板。

2)对照着提供的实验动手操作

建议

i) 初学者先做应用层,以完成某个应用功能为导向。不要过早的陷入到某个具体的不懂的知识点中,因为Linux太复杂深奥了,你想完全的搞明白一个知识点太难了。

ii) 随着逐步的熟悉,可以慢慢的去了解和学习驱动、移植、裁剪等相关内容

评论0 赞同0
  •  加载中...
khs1994

khs1994

回答于2022-06-28 15:43

简要回答下学习嵌入式的方法与步骤。

1、学习STM32肯定需要理论结合实践,只是纸上谈兵肯定不行,因此需要拥有一块STM32学习板和下载器,方便实践,顺便在淘宝上买就行,目前价格也挺便宜的,商家和网上都有很多学习资料,足够大家入门,学习STM32可以说是嵌入式开发行业的入门,工作中低端项目使用到STM32芯片的机会还是挺多的,比较高端的项目使用ZYNQ系列芯片比较多;

2、安装开发环境,如MDK5,下载驱动,Cubemx等;

3、推荐原子学习资料按照各个功能模块逐个学习,推荐资料芯片手册和中文参考手册,建议使用HAL库上手更快,比如学习串口、定时器、IIC、SPI、CAN、ADC、DAC、网口、输入捕获、PWM、FLASH等;

4、不断终结所学内容,形成文档,找机会将所学用于实际项目,多交流和实践,理解工作原理,比如串口,学习查询、中断、DMA模式发送和接收数据,熟悉各个寄存器功能;

5、目标是硬件原理图,PBC,软件设计都可以独立承担。

评论0 赞同0
  •  加载中...
mcterry

mcterry

回答于2022-06-28 15:43

入门看视频,精通需要沉下心来看经典书籍,再结合实践。 一定要理论结合实际。

评论0 赞同0
  •  加载中...
codercao

codercao

回答于2022-06-28 15:43

树莓派和python就可以了

评论0 赞同0
  •  加载中...
wums

wums

回答于2022-06-28 15:43

物联网越来越火热,随着人工智能的发展,物联网行业将是接下来高薪就业的趋势,物联网技术培训课程学哪些内容呢?接下来让你全方面了解物联网,学到时下新潮的技术。

一、嵌入式高级C语言

linux系统,恰如是C语言高级编程,数据结构及算法

二、嵌入式设备及GUI开发

嵌入式环境配置与开发工具学习,GUI图形界面开发

三、嵌入式linux高级程序设计

嵌入式linux系统编程

四、linux高级网络程序设计

linux高级网络编程

五、数据库开发

数据库开发

六、C++面向对象高级语言程序设计

C++语言高级语言开发

七、物联网

物联网开发

八、CotexA53linux平台驱动开发

物联网开发

物联网开发学科实战项目内容包括:

1、智能家居项目

2、智能人脸识别项目

3、RFID智能门禁项目

4、多媒体播放项目

5、智能手机设计项目

6、智慧教室项目

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<