时间:2022年5月26号!这几年嵌入式开发的发展前景可以说是非常的香!从工资和找工作的难易程度上说都是!
按老师傅的说法就是:“加班不严重,注重积累,越往底层越有趣,没有35岁被炒的说法,但是要沉得住,要真的对底层技术感兴趣,我工作三年半,现在找到的新工作27k算上公积金。”

#include<stdio.h> int main() { /*在双引号中间输入Hello World*/ printf("Hello World"); return 0; }
①相对来说门槛比较高。
②人才需求量还是挺大的,像物联网网应用的普及、5G的普及等,都会增加嵌入式开发岗位的需求。嵌入式就业范围很广,有嵌入式linux c/c++开发,驱动开发,单片机应用开发,FPGA,DSP,各种工控相关开发等。
如果面向就业去学习,建议学应用层相关的嵌入式知识,比如嵌入式linux软件开发相关的。
因为应用层的工作更多,薪资相对较高,主要面向业务开发。而单片机开发,驱动开发,会涉及到一些硬件交互,与芯片绑定度更高,相对来说就业面窄一些,不过能够学习底层知识,学好了不可替代性强。
我整理了一些嵌入式、物联网开发的面经+笔试面试题和一些项目教程,想要的可以四信我。
基础
1. linux基本操作:
需要掌握的知识如下:
环境的搭建;
Linux目录结构;
文件类型;
基本目录操作,文件操作,vim,ifconfig,ping,cd,cp,mv,mkdir等,最关键是gcc命令要会用;
一些简单的shell脚本;
Makefile的编写。
2. c语言:
不会写代码,就建议不要学Linux,否则职业后期全是瓶颈。那些和你说学Linux不需要懂编程的都是再耍LM。
学习C语言一定要学习Linux下C编程,
3. 数据结构:
数据结构很重要,但是在这个上面花太多时间,也是没必要的。个人建议只要掌握几个基本的排序和查找算法即可,没必要把所有算法都研究一遍。
能掌握常见的算法比如:冒泡排序、直接插入排序、快速排序、二叉树等。
链表操作,创建、增删改查。
4. 基础阶段项目
基础阶段,个人强烈建议一定要做一个综合性项目,从0开始写。
用链表实现一个简单的《电话本管理软件》,包括增、删、改、查、排序等操作,把所有的知识点融会贯通起来。
进阶-Linux编程
1. 文件IO
掌握posix的一套api,open、read、write、lseek,close等。
熟练写出文件拷贝的功能模块输出。
理解缓冲的概念。
2. 进程线程
掌握常用的函数fork、exec族函数、pthread 等api;
进程创建、回收,一个.c源文件变成可执行程序的过程;
crontab、at命令;
进程间通信:信号量、消息队列、共享内存、管道、信号;
线程创建,同步互斥,互斥锁;
守护进程;
库的概念,什么是动态库和静态库,如何自己制作动态库和静态库。
3. 网络编程
TCP/IP协议分层以及每一层的功能;不要看OSI,只要知道即可;
socket api的使用,tcp、udp;
套接字属性的设置;
C/S架构;
多进程、多线程服务器模型;
抓包工具使用;
常见的网络协议分析:ping、 tftp、 ftp 等;
进阶阶段知识点很重要,即使以后你不做linux c开发,有了这些基础,你再去学java、c++你的视野一定会不一样。
4. 进阶项目
该阶段可以选择综合项目《多线程聊天室》,实现公聊、私聊、注册登录,互相发送文件等功能。
5. 高阶
该阶段学习需要开发板配合,建议新手先把之前内容打扎实,再进入这个阶段学习。
开发板的选择,最重要的是资料!
1. ARM
arm架构、arm的模式、arm指令,寻址,异常,中断,异常向量表,
伪指令、C语言和汇编代码的互相调用、内联汇编;
常见的外设的裸机驱动开发,led、key、adc、pwm、rtc、看门狗、i2c、spi等
这个阶段的内容,对于了解整个计算机软件的工作原理非常重要,Linux内核的很多机制都要依赖汇编指令,尤其ARM工作模式、寻址、异常,中断,异常向量表这些概念。
2. 系统移植
uboot移植、rootfs制作、内核剪裁移植,
usb、网卡驱动移植,
uboot、linux启动流程,
自己添加uboot命令
这一阶段的内容对于嵌入式工程师来说,在做实际项目的时候,会经常用到,各个厂家的移植步骤会有所差异,但原理基本相同,熟练掌握这些操作,非常必要。
3. Linux驱动
字符设备架构、inode、cdev、file_operations、file之间关系;
platform总线、设备树;
同步互斥机制,自旋锁、信号量、互斥体,原子操作;
中断、中断底半部;
等待队列,poll的实现;
常见设备的驱动的编写,key,led,gpio,adc、pwm、i2c、mpu6050;
网络设备:网卡驱动分析、netfilter使用;
usb架构。
驱动的学习,主要在于多捋架构,多了解计算机的实现原理,每天抱着内核看,像泡女人一样泡她,迟早你会成为大师。
终极
我想如果能学到这个份上,后面如何发展,已经不需要多费唇舌了,可以继续学习安卓、QT,也可以深挖物联网、算法,或者钻研linux内核优化内核等,每个领域独当一面,收入都不会低。
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1. 创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1. 创建SpringBoot项目 打开IDEA,选择NewProject创建项目。 填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。 选择springboot版本以及需要的包,此处只选择了springweb。 此处需特别注意,若你使用的是jdk1
这是两个脚本的故事,与previousquestion有关.这两个脚本位于http://gist.github.com/50692.ansi.rb脚本在所有256种背景颜色上显示所有256种颜色。ncurses.rb脚本显示所有256种前景颜色,但背景显示基本的16种颜色,然后似乎循环显示各种属性,如闪烁和反向视频。那么是什么给了?这是ncurses中的错误,它使用带符号的整数来表示颜色对吗?(即'tputcolors'表示256但'tputpairs'表示32767而不是65536)似乎如果是这种情况,颜色对的前半部分会正确显示但后半部分会重复或进入属性作为int包裹。
我有这个可以为我生成一个超链接:我希望它显示在td标签中,所以我想使用这个content_tag来帮助我:"example")%>我想要我的td中的超链接,所以我有这样的东西:,:class=>"example")%>但是我收到语法错误,我该怎么办? 最佳答案 内联:'example')%>或block形式:'example')do%> 关于ruby-on-rails-如何在RoR中使用content_tag嵌入标签?,我们在StackOverflow上找到一个类似的问题:
文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐
代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为
https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入
我需要快速可靠的Ruby键值存储。有没有类似的东西?要求它完全在Ruby进程内运行,不需要任何外部进程。它可能在显式磁盘刷新的内存中。它需要具有最小的键值检索时间,写入时间可能不太好。存储的数据量不会很糟糕,大约几十万个键,每个键都有~1kb的文本值。 最佳答案 事实证明,对我来说最好的选择是使用纯Hash和Marshal将其序列化到磁盘。对于那么多的对象,YAML肯定太慢了。感谢@ian-armit加强了我对核心Ruby库的信任。 关于ruby-Ruby是否有任何可嵌入的键值存储?,我
给定一个任意的mongoid文档,我如何将其转换为JSON并包含任何嵌入式结构,而不是在我的to_json语句中特别包含这些结构。例如:#!/usr/bin/envrubyrequire'mongoid'require'json'require'pp'classDocincludeMongoid::DocumentincludeMongoid::Timestampsfield:doc_specific_info,type:Stringembeds_many:personsendclassPersonincludeMongoid::Documentfield:role,type:Stri
我需要将嵌入式文档转换成它自己的集合,以便它可以从另一个集合中引用。假设我有一个Parent嵌入了许多Child。我在想一些事情:Parent.all.eachdo|p|p.childs.all.eachdo|c|c.raw_attributes['parent_id']=p.idendp.save!#willsaveparentandcascadepersistallchildsontotheirowncollend这是一个选项吗?理想情况下,我会在控制台中运行它,我只会将mongoid映射从embed_*更改为has_*,因此我不需要更改其余代码或使用另一个集合作为暂存。