从单片机转到嵌入式Linux的跨度大吗?

这是我今天一个同学问我的

6bf70d59de1daddbdd74ba329c3ed06c.png

我再零散的说一些观点,如果大家有这方面的经验,也帮忙在文章下留言,谢谢大家。

先说共同点

单片机和嵌入式他们最终都是要跑硬件的,所以你也会遇到像GPIO口、I2C、串口、SPI、定时器、看门狗这些问题。

所以如果你学了单片机,那么你在这些东西上肯定是有积累的。那么这些就是你的优势,如果你让一个学java的去做嵌入式开发,我觉得并不合适,因为他可能对电子的很多东西不懂,他可能看不懂原理图,也不会用示波器万用表,也不知道什么是中断,中断向量之类的。

但是你如果是单片机开发,这些你都了如指掌,那,这就是优势。

但是从单片机开发到嵌入式Linux,我觉得要先看看多任务。

如果有了多任务的概念,那么不管你是做RTOS还是Linux都是合适的。

那差异点在哪里呢?

嵌入式的特点是软硬件可裁剪,所以从单片机到嵌入式Linux,你作为软件开发,最大的问题就是裁剪,根据不同的硬件配置做不同的裁剪软件。

而且,从单片机到Linux,它的难度可以说是指数级增加。

你可以用单片机来做一个U盘,嗯,你做出来了。

然后你到Linux下去看看USB的架构,嗯,你绝对是懵逼的,因为绝壁是太复杂了,所以你想在没有完全理解的情况下就给这些代码动刀子,你做不到。

我今天和我一个同事聊天,他跟我说,以前他做手机开发的,做那些驱动,也就是供应商给给代码,然后推进下进度就好了。

他说的没有错,很多小厂商就是这么做的,但是难就难在,可能某个修改就一行代码,但是你就是不知道在哪里,要是你没有经验,对架构不熟悉,你绝壁要熟悉上一个星期~,我之前在中兴调一个马达驱动,找驱动文件都找了很久,还要理解马达的电机驱动原理,最后去验证对焦那才是一个让我崩溃的事情。

所以,从单片机到嵌入式Linux,你对架构的掌控是一个很大的挑战。

其次是调试

大的系统,要给它开刀做手术,可不是一刀子下去一刀子出来就完事,还是需要针对性的去做调试,对不同的问题先有理论基础再动刀子。

哦,你以为嵌入式Linux不写代码

你需要写C,有时候因为某些问题,你需要写C++,python,shell~

c5e179a53441579cc8843dbe28d8477e.png

不写长了~就这些~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle如何取uuid,oracle如何取得uuId

是想生成GUID吗?SQL> select sys_guid() from dual;SYS_GUID()--------------------------------F18031C69D8345DEB305D4B2E796A282-------------------------------------------------java取得uuidpackage com.hdsoft.uuid;import java.util.UUID;public class …

有一种豁达叫开源

当人们在讨论开源的时候,第一时间想到的是索取,开源对很多开发者来说是好的事情,但是闭源对很多科技企业是有技术保护作用的。人们对软件的态度是经历过很多次变化的。在现代计算机研发初期,核心问题是硬件,寻找实现记…

JS应用DOM入门:DOM的对象属性

DOM提供了一套属性用于导航、访问和更新文档内容,其中包括只读类型的属性和可读写类型的属性。下表是只读类型的属性: DOM对象属性返 回 值FirstChild返回一个对象(Object),表示第一个孩子节点(child node&…

用O(1)的时间复杂度删除单链表中的某个节点

用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下: struct ListNode {int m_nKey;ListNode* m_pNext; }; 函数的声明如下: void DeleteNode(ListNode* pListHea…

Django之序列化

关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。 1、serializers from django.core import serializersret models.BookType.objects.all()data serializers.serialize("json", ret)2、json…

linux c语言内核函数,2014-1-5_linux内核学习(1)_C语言基础

1、结构体的初始化static struct file_operations fops {.read device_read,.write device_write,.open device_open,.release device_release};以前学习C语言的时候没有见过struct的这种初始化方式。这其实是C语言的新标准。Struct一共有三种初始化的方式:int…

我的备忘录

http://jnesta.blogdriver.com/jnesta/index.html 转载于:https://www.cnblogs.com/oisiv/archive/2006/04/06/368663.html

怎么选工作?

选择offer,一直是很困难的事,工作不是餐桌上的美食,你品尝了这个菜还可以去尝那一道菜,所以大家都害怕因为选错一方而失去了更好的机会。而那句「选择大于努力」,让很多人更看重选择。我会经常遇到同学向我咨询offer选…

Selenium断言的使用,等待

自动化测试常用断言的使用方法(python) 自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断。 这里介…

oracle 表复制操作

如下&#xff0c;表a是数据库中以前存在的表&#xff0c;b是预备依据表a执行复制树立的表&#xff1a; 1、只复制表结构的sql create table b as select * from a where 1<>1 2、即复制表结构又复制表中数据的sql create table b as select * from a 3、复制表的制定字段…

linux系统运行iso,linux可以加载iso镜像文件到启动项吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼主的需求描述不清&#xff0c;不作评述。只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能未读过grub1/2的源码&#xff0c;不太了解其实现原理&#xff0c;但从应用上来说&#xff0c;这个设备不…

ESFramework 可复用的通信框架(序)

自从2004年7月开始&#xff0c;就一直从事N层C/S结构的服务端的开发&#xff0c;从最初的熟悉各种Windows Socket API、熟悉完成端口模型&#xff0c;探索高效稳定的服务端通信模型&#xff0c;时至今日&#xff0c;慢慢的积累了一些C/S服务端开发的经验&#xff0c;ESFramewor…

为了兴趣爱好,我该选嵌入式么?

“绝对不要&#xff01;&#xff01;”“绝对不要&#xff01;&#xff01;”“绝对不要&#xff01;&#xff01;”喜欢听结论的同学们&#xff0c;我说的够清楚了吧&#xff1f;接下来&#xff0c;是为那些喜欢问“为什么”的小好奇们解答疑问的环节。为了让道理变得简单明了…

类中构造函数、析构函数与赋值函数的重写

类中构造函数、析构函数与赋值函数的重写 class String {public:String(const char *str NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~String(void); // 析构函数String & operate(const String &other); // 赋值函数private:char *m_d…

Sublime Text3(mac)一些插件和快捷键

Sublime Text3&#xff08;mac&#xff09;一些插件和快捷键 楚简约 关注 2017.02.24 17:02* 字数 1216 阅读 412评论 0喜欢 2下载地址http://www.sublimetext.com/3一、安装Package Control按Ctrl 调出console&#xff0c;粘贴下列安装代码到底部命令行并回车&#xff1a; 重…

linux+内核+环形缓冲,环形缓冲区-模仿linux kfifo【转】

struct kfifo{uint8_t *buffer;uint32_t in; // 输入指针uint32_t out; // 输出指针uint32_t size; // 缓冲区大小&#xff0c;必须为2的次幂}/*判断n是否为2的幂*/static bool is_power_of_2(unsigned int n){return (n ! && ((n & (n - )) ));}/*将数字a向上取整…

【Project3】技术总结

1.quartz 百分百自己会用 2.转载于:https://www.cnblogs.com/mount/archive/2011/11/09/2243265.html

4-7月份规划

1.准备管理系统中计算机应该实践2.学习高等数学二及英语二3.学习VB.Net(估计公司会用VB.Net)&#xff0c;不过可以尽量争取C#4.和红哲讨论一下测试方法.5.对财务系统的测试,加强财务的能力6.购一本练习会计分录的习题集. 7.今后的发展方向&#xff0c;融投资管理 转载于:https:…

没去公司上班的这两天

这周得到通知是居家办公&#xff0c;但因为项目的事&#xff0c;前两天去了公司&#xff0c;今天情况特殊&#xff0c;我需要去合作的公司调试&#xff0c;就没去公司。早上还是9点起来&#xff0c;因为合作的公司离我家很近&#xff0c;可以多休息一会。但早早就睁开了眼&…

Activity的缓存方法

转载地址:http://blog.csdn.net/zhichu_2025/article/details/52047605 有a、b两个activity&#xff0c;当a进入b之后的一段时间&#xff0c;可能系统就把a回收了&#xff0c;这时候按back键&#xff0c;执行的不是a的onStart()方法&#xff0c;而是onCreate()方法&#xff0c…