网友回答:
1. 编译、链接加载编译与体系相关:程序员的自我修养 (豆瓣)
Computer Systems (豆瓣)、计算机组成与设计 (豆瓣)
The Definitive Guide to GCC (豆瓣)
GNU Make项目管理(第三版) (豆瓣)
2.驱动与环境构建:
嵌入式Linux基础教程(第2版) (豆瓣)
Linux Device Drivers (豆瓣)
深入Linux设备驱动程序内核机制 (豆瓣)
3. C语言(autotools……, 有比较多的重复)
Linux C编程一站式学习 (豆瓣)
C语言程序设计 (豆瓣)
21st Century C, 2nd Edition - O'Reilly Media
4. 操作系统(μC/OS linux):
专业嵌入式软件开发 (豆瓣)
基于嵌入式实时操作系统的程序设计技术 (豆瓣)
深入理解LINUX内核 (豆瓣)
5. 实践开发的基本科普:
嵌入式系统开发之道 (豆瓣)
6. 数据结构与算法:
算法(第4版) (豆瓣): 接地气,倒数章节有lzw数据压缩算法的讲解,太实用了。
有很多书本会相互包含和重复但是并不影响阅读与学习进度,如果是电气专业方面的可以先看看μC/OS,再继续Linux。当然直接上也可以,但是最好先学习OS课程。很多书籍可以先不学习,需要的时候参考用或者再完整学习,例如GNU Make。
20150601更新:
画了一张图,表示技能树,没有软件工程部分:
http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
补充:近期,邹欣老师应邀给广州致远电子做了三个小时的技术培训讲座(视频)。
讲座的摘要和问答汇总 :邹欣讲座:现代软件工程--构建之法
在讲座中,邹老师谈到了如下项目经理可能会关心的问题:
邹欣:如何合理的使用全新的技术?老版本平台还是新平台,全部升级?老朋友熟悉,新朋友有坑! 谨慎升级,开发环境版本的一致性。
开发决策。用户需求、 工程质量、开发时间评估——每一个开发阶段不能仅仅只考虑增加功能,包括过程的改进工作,也需要计划进去。
邹欣:微软如何考核软件工程师——最开始,半年一次,然后一年一次。这都是一维体系,后面觉得这不够全面,引入二维体系。一,完成任务,没有比例划分 二,贡献,有严格的比例划分。后面,觉得比例不好,又改回一维。有很多约束情况下,如何激发把工作做的更好?一维是按照领导安排任务情况,好中差,不设名额。二维是按照对项目的贡献评估,按名额划分贡献程度。
邹欣:评估体系如何建立?技术和管理。技术等级和管理等级薪资明确是一样,消除员工专心做技术的顾虑。员工对上级有年度评估,大数据,横向与纵向,多维度比较。经理面对反馈报告,和平级,和其他国家团队,横向和纵向比较。
评估体系中的挑战:*对贡献度按比例有区分度。* 用归并排序做绩效考核。过程的纠结,有时是零和。 囚徒困境。
评估体系如何建立?技术和管理。技术等级和管理等级薪资明确是一样,消除员工专心做技术的顾虑。员工对上级有年度评估,大数据,横向与纵向,多维度比较。经理面对反馈报告,和平级,和其他国家团队,横向和纵向比较。
@刘鑫 去广州听了邹老师的讲座,并写了系列专栏回顾讲座内容:
人才选拔——履历完美的人,可能会缺少开拓进取精神
初创团队,需要借鉴和学习的,不是现在的微软,而是初创阶段的微软
==下面是原来的回答。
有一本书,3年前尚未出版,就被广州周立功单片机公司创始人周立功先生预定了300本,他要让他们的研发人员人手一本:
对,就是我在有哪些可以提高程序员技术档次的书或博客?中重点推荐的好书:
构建之法 ——现代软件工程 (作者:邹欣老师)(多看版《构建之法》已上线)
今早,读到了这篇由一位嵌入式开发工程师写的读后感:
《构建之法》读后感
他写到:
我是网络工程专业毕业的,业余时间喜欢研究Linux内核中的面向对象思想和设计模式,喜欢玩硬件,还有不能自拔的“工匠情怀”,所以毕业后,工作在嵌入式领域,希望能“软硬兼施”。
这位读者朋友在读后感中提到的“主治医生模式”,是《构建之法 ——现代软件工程》中的“第5章 团队和流程”的内容,如图:
这一章还介绍了“社区模式”、“业余剧团模式”、“秘密团队”、“特工团队”、“交响乐团模式”、“爵士乐模式”、“功能团队模式”,以及“官僚模式”。
读后感中提到的“分而治之”的办法,来自《构建之法 ——现代软件工程》中的“第8章 需求分析”:
==================================================
来自华中科技大学GET创新团队的技术总监陈冰博士在第一时间就购买并阅读了《构建之法 ——现代软件工程》,他写了这样的书评:
构建之法,超越软件 (评论: 构建之法)
==========
更多关于构建之法 的内容主题介绍,请参看这些回答:
1有哪些可以提高程序员技术档次的书或博客?
2在移动互联网小型项目/产品调研设计开发发布这个过程中有没有风险管理?
3从事偏向软件的嵌入式开发的学习步骤是什么?要看哪些书?做哪些事? -
4单元测试应该谁来做?怎样才算是一个好的单元测试?
5国内为何很少有人做结对编程呢?是确实不好还是属于中国特色?
=========
BTW,我们正在筹建嵌入式软件开发微信交流群,有兴趣的朋友请私信我。
http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
(1)学会用Linux。这个很多,鸟哥私房菜。(嵌入式开发只需要你使用,不需要过多研究服务器配置)。(2)C语言。精通。要相当精通。嵌入式工程师的面试就是C为基础。参考零基础学习C语言 视频
(3)基本的数据结构与算法,嵌入式那个性能受限的系统,必须非常考虑性能,内存大小。数据结构与算法剖析 视频
(4)操作系统的应用。先学Linux的系统编程 linux高级程序设计(第3版)视频
(5)操作系统的内核。ucosII是一个不错的起步,你搜索一下《ucosII标准教程》。但最终要回到Linux。要了解操作系统的驱动原理,内核机制。你搜索一下陈莉君的《Linux内核设计与实现》
(6)对处理器的理解。对接口及外设原理的理解。例如ARM,或许我们并不需要去制作硬件电路,但一定要看得懂硬件电路。《嵌入式ARM系统原理与实例开发》,对中断,指令,启动这些必须熟悉。
(7)结合以上,写驱动以及应用。如果涉及具体的领域,还需要相应领域的知识,例如图像,机电等等,这个时间,你完全 知道学什么了。Linux开源项目参考
http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
Linux技术手册-- > C语言- > C指针- > C陷阱与缺陷- > Unix环境高级编程- > Linux设备驱动程序- > TCP/IP协议- > Linux内核- > ARM汇编http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
C语言,ARM体系架构,ARM汇编,uCos/Linux。。。要学的很多,不一一列举。自己去了解。http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
如果做嵌入式。第一,C语言一定过关,嵌入式都是靠C、C++吃饭的。
第二,如果偏底层,就去玩玩单片机,玩上层,就玩玩linux,ARM评估板。
第三,最重要的,认真做项目。只有认真做不同的项目,做项目的不同部分,才能学到、玩到不同的更多的东西,嵌入式是接触实际设备的行业,很多东西是通的,也有很多东西是太过专业的,认真做好每一个点,把所有点拼凑到一起,联系到一起,系统的概念就有了。
http://www.easyfang.com易房网小编为您精选了网友的解决办法,供您参考
-----------------------------------------------------
网友回答:
最好讲一下具体是为什么设备进行嵌入式开发。假设是从零开始,我觉得最开始你得打好编程语言的基础,从C开始吧,然后了解一些简单的算法知识,练习是必须的;然后开始了解嵌入式开发的目标设备,以及开发所用的语言的语法和性能方面的特性,如果有了第一步的基础,这些都不困难;之后就是实际的开发了。