电脑知识
该不该学嵌入式编程呢学生(嵌入式需要学编译原理吗)
2023-04-12 09:27

#科技V计划# 从事嵌入式开发的你,多久没有看书了?

2019年科技类就业环境其实不算太好,裁员风声四起,烟火不断。好在大多数公司都给予充足而合理的赔偿,例如三星,甲骨文。

嵌入式行业是科技行业的一个分支,也是软硬件密切关联的一个行业。我从事嵌入式软件开发十多年,体会到这个行业其实很讲究功力,不仅需要丰富的基础知识,还需要经过多个项目的磨练以及岁月的沉淀,很符合一万小时理论。

看书,是一个最直接的学习或温故而知新的简单有效途径。我每年都会看一些技术类的电子书或纸质书。我不卖书,但推荐以下两本,如果你从事嵌入式软件开发,我建议你看一看。写得真不错,至少我是这么认为的。

《程序员的自我修养---链接、装载与库》,《怎样识读电子电路图》。

如果您曾经读过,或者有其他好书推荐,欢迎评论留言,大家共同进步呗。

今年秋招太难了,我女儿给几百家公司投了简历,没有收到任何offer,我女儿在学校里的学生干部,党员,学的电子信息工程专业。又自学了嵌入式软件开发!怎么就是找不到工作呢!是那个环节出问题了?

机械专业一点都不差,差的是老旧的课程设置

为什么不学ROS(robotics operation system)?

为什么不学Linux嵌入式开发?

为什么不学深度强化学习?

机器人学妥妥的六大人工智能子领域之一,代表着运动智能。

而国内的机械,都在画图,画变速箱,画钣金件。我大学八个学期做了六个学期的课程设计,全特么在画图。

用过//@工控教练:好眼光//@嵌入式编程爱好者:倍福的earthcat模块,的确是工业控制的好东西!

汇梦信息科技 电气工程师

听说这个是好东西,大家觉得呢?

#科技V计划# 【嵌入式开发中的锂电池充电注意事项分享】

在嵌入式产品尤其是智能穿戴类、玩具类的产品开发中,一般使用锂电池供电,这里指的是锂离子电池,即可充电电池。以4.2Ⅴ为满电电压为例,充电过程软件要注意哪些事项呢?

1.从电压方面考虑,使充电更满载。

首先应该检测电压,如果小于3V,则应使用小电流充电,一般不超过0.1C电流,如果小于电池的保护电压例如2.8V,则应该使用更小的电流充电,一般不超过0.05C。这个小电流充电过程称为预电充,或补偿性充电。然后当电池电大于3Ⅴ后,可以使用更大的电流进行慢充,一般使用0.2C电流进行恒流充电,充电过一段时间后,例如15分钟后可使用更大的电流,例如0.5-1.0C恒流充电,这个过程称为恒流充电。当电池电压达到4.1V后,应该使用4.2V恒压充电,直到电池达到充饱状态,这个过程电流应该使用0.05C并且会逐渐减小,称为恒压充电,也称涓流充电,当电压达到4.2Ⅴ(+/-1%)或电流非常小比如0.01/0.05C时,可判定电池已充饱。

2.从温度方面考虑,使充电更安全。

为了使得充电安全,一般辅以NTC或PTC检测温度,低于0摄氏度或高于某个高温温度(例如45摄氏度),应该使用小电流充电,一般不超过0.1C,高温时应该控制充饱电压上限,一般不超过4.1V。

以上是我在嵌入式锂离子产品中,电池充电的控制过程及注意事项,所提数字阀值仅供参考,具体的以电池供应商提供的Spec.为准。

如有不同看法,欢迎留言评论。

#科技V计划# 【嵌入式开发中的系统负载过重问题,如何解决?】

在嵌入式开发中,常常会遇到系统负载过重的问题,比如某个任务一直没有被调度到,某个模块一直没有响应,某个函数执行时间突然变得很慢?

以我的认知和经验来看,可以从以下几个方面去考虑解决负载过重的问题:

1.硬件优先级是否合理?

主要指的是挂在总线上的各个硬件IP,它们的总线优先级是否合理分配,有没有可能长时间占据总线,CPU,RAM资源?适当调整,均衡分配是一个解决的方向。

2.硬件中断响应是否及时?

主要指的是中断响应函数,做的事情千万不能超过一个中断周期,否则很容易造成堰塞现象。

3.任务优先级是否合理?

重要的事情,紧急的事情应该分配高优先级。时效性不急的事情,可以分配低优先级。同等优先级可采用先进先出或时间片轮转调度策略。如果高优先级的任务始终在执行,低优先级的任务一直没有机会执行,可以考虑动态调整优先级。

4.函数执行突然变慢?

主要是看这个函数所做的事情,所在的任务优先级,所需要的资源。对所做的事情看看能否进行事务拆分,算法优化,代码重构或优化。对所在的任务优先级分配是否合理,能否进行静态或动态调整。对所需的资源能否进行获取和使用,可以考虑互斥保护机制。

5.执行频率是否最优?

主要是指CPU频率,总线频率,模块频率(如LCD刷新频率,SDCard工作频率,CMOS MIPI频率等等),频率的代价是功耗,所以最优的频率是:跑得快,但适合就好,不求最快。

主要是从以上五个方面考虑,抛砖引玉,欢迎留言评论,谢谢。

#科技V计划# 【嵌入式高级软件工程师应该具备哪些硬件技能?】

有些同学从事嵌入式开发好几年,也许升到了高级工程师的位置,但其实除了敲代码的软技能之外,根本没有硬件技能,一旦遇到板子无法实现代码功能之类的问题,无从下手,只能请求别人支援。

我认为高级软件工程师至少应该具备一些硬件技能:

1.首先也是最基本的,看懂原理图,并且可以分析原理图。换句话说,既能知道它是什么,也要能知道为什么是它。

2.然后熟练使用检测仪器,最常见的要求是示波器和万用表,测量波型,信号,电压,电流等等。这些技能对分析硬件问题起到了关键而准确的作用。

3.最后应该有拆焊技能,比如拆焊一个非精密IC,电容,电阻等元器件。拆焊技能能够及时地修改板子,方便解决和验证问题。如果连换个电阻,飞一条线都要找硬件同事帮忙,那就大大降低了效率。

很多公司可能没有强制性要求软件同事具备相关硬件技能,但如果有条件,我还是建议大家多多练手,掌握这些基本的硬件技能。

以前我想拆换一个贴片电阻都无从下手,现在拿起镊子和烙铁,一瞬间一次性就能拆换,其实没有多大技巧,就是练出来的。

如果你认为软件高工还需要有其他硬件技能,欢迎留言评论。

本科机械电子专业隶属于机械学院,虽然有电子二字,但是基本上跟电子专业关系不大。当然了,跟电子也沾了一点边。模电数电学了,但是别人是48个课时,我们可能只有32个课时,别人电子电气学院学的深,我们可能学的比较浅,考的也比较简单。[捂脸][捂脸]

我们四大力学学得较深,就是理论力学,材料力学,流体力学,工程热力学这四大力学学得好可以研究生阶段考虑进入所谓的航空航天专业,首先我对航空航天是非常关注的,尤其是马斯克的space X公司对我的触动非常大。[灵光一闪][灵光一闪]

我简谈三个点吧:

①:前段时间马斯克公司SPACE X带头研发的龙飞船携带了4个非专业人员,就是4个有钱人,肯定是经过了一段时间训练的,但是他们绝对不是专门职业的人员,这点大家懂的都懂,把他们带上了太空,应该是去了所谓的国际空间站,然后再准时溅落到大西洋。[锦鲤到来][锦鲤到来][锦鲤到来]

②:我觉得溅落非常的好,图片中龙飞船返回舱,当时上面挂的是4个降落伞。[灵光一闪][灵光一闪]

为什么说溅落比较好呢?因为学物理的我们都知道冲量,F=I÷△t,当冲量一定的情况下,缓冲时间越长,所受到的冲击力冲击波应该也最小.[害羞]

这样我们就可以想象,当飞船溅落到海上的时候,海面犹如海绵,起到了极大的缓冲作用,然后返回舱的下部分沉入到海平面以下,然后在以海洋的浮力向上,把它弹出海平面,这一个瞬间吸收了大量的冲击波以及冲击力。[锦鲤到来][锦鲤到来][锦鲤到来]

将四位旅行者们所受到的冲击力降到最小,然后冲击波以圆环的方式向四面散开,如果是以俯视图看的话,它是以一种环状波的形式,举个例子,就是把一个小石子扔到池塘里,它会产生一圈圈的涟漪,所以说溅落完美地稀释了大量的冲击。[大笑][大笑][大笑]

③:航空航天专业确实跟力学的关系很大, 未来任重而道远。实在不行,我往电子方向靠靠。我觉得搞搞PLC嵌入式开发之类的也不是不行,毕竟有四大力学的底子摆在这。[害羞][害羞]

只要有学四大力学的恒心与毅力,其他课程基本上问题不大。[大笑][大笑]

34、以下关于嵌入式软件开发的叙述中,适确的是(34)。

A.宿主机与目标机之间只需要建立逻辑连接即可

B.调试器与被调试程序一般位贵同一台机器上

C.嵌入式系统开发通常采用的是交叉编译器

D.宿主机与目标机之间的通信方式只有串口和并口两种

#福大大架构师每日一题#

人生能有几个十年?就这个月,部门有两位工作超过十年的老员工离职了。一个回了老家发展,一个跳槽换了个公司。我们做的嵌入式软件开发,说句实话,三年入行,五年发展,十年才刚刚到深水区,十五年才炉火纯青,二十年登峰造极。

很多人以为调调函数,配置一下寄存器,测量一下信号,改改方案,编写一些模块,重构一下代码,就觉得自己精通嵌入式软件开发了。其实不能这么简单的考量,大到行业标准与方案,小到代码架构和细节,自己有没有了解和熟悉,是否前瞻性和独创性,是否具备成本意识和发展理念,是否有产品匠心和市场嗅觉......恐怕很多人都没有深入思考和钻研过,有的人甚至都没有接触过。

十多年的从业经验,我觉得水真的太深了。看山不是山,看水不是水;看山还是山,看水还是水。

发表评论
0评