文章字数3600   干货指数:☆ ☆ ☆ ☆ ☆

留意没?其实智能手环、智能音箱、智能家电、共享单车、无人驾驶.....这些属于嵌入式系统的产品都早已融入了我们的日常生活。

嵌入式究竟是什么?嵌入式说白了就是嵌入式系统。从应用对象上加以定义来说,它是一个软件和硬件的综合体,还可以涵盖机械等附属装置。

一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心。

嵌入式开发怎么入门?

嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的一门综合学科,所以需要掌握的内容也比较多:

C语言基础L

在开始学习嵌入式之前,首先要打好基础,其中最重要的是C语言基础,要至少达到能单独编写调试一个500行的小项目(大概是一个本地员工管理系统的代码量),能够了解C语言的基本语法规则,基本语句的使用,理解指针概念并能灵活使用各种指针。

在学习C语言的过程中,指针的概念比较难理解,但是如果对计算机组成原理有了解的话,地址和指针,源码和可执行程序,软件通过寄存器控制硬件这些概念都会变得很清晰。

那学习C语言使用什么环境?

首选方案,Windows安装虚拟机,虚拟机运行Linux操作系统,编辑器选择vim,命令行运行gcc编译器编译环境。

为什么要用Linux操作系统呢?

从上文中的各大企业对研发工程师的要求可以看出,Linux操作系统在嵌入式行业中的地位是任何操作系统不可比拟的。许多公司为了保护自己的代码产权,开发用的主机直接运行Linux操作系统,并在命令行终端来控制主机。

出于未来工作中尽快适应这种开发环境,所以可以在入门的时候就直接体验和见识酷炫的Linux操作系统。

但是入门阶段并不需要刻意背过Linux的各种使用命令、Linux各种服务器的配置,还原备份各种操 作等,只要会基本文件相关的命令,会使用vim编辑器和gcc编辑器即可。

大约一周的时间即可熟悉Linux系统,你会体会到Linux和Windows系统的不同,摆脱对图形化界面的依赖。

当学会了C语言编程后,你需要掌握操作系统相关的知识,多线程多进程编程、网络编程。通过实践学习一些接口函数完成一些小项目比如银行家算法、网络聊天室等。对操作系统的知识有一个初步的感性认识。

MCU和CPU

L

以上的所有编程学习都是在单一的环境下进行的。即开发环境和运行环境都是一样的都在Ubuntu下进行。难道嵌入式开发就是如此吗,说好的软硬件可裁剪呢?

别急,紧接着我们就需要加入MCU和CPU的学习,要学习ARM是什么,不同系列的MCU开发方式不同,ARM Cortex™-A 系列应用型处理器,可向托管丰富OS平台和用户应用程序的设备提供全方位的解决方案,从超低成本手机、智能手机、移动计算平台、数字电视和机顶盒到企业网络、打印机和服务器解决方案,是作为学习嵌入式的合适的素材。

现在嵌入式的学习资源丰富,选择合适的Cortex™-A 系列的开发板后,根据裸板开发、系统移植、驱动开发这样的顺序学习。

裸板开发的学习主要是感受一下如何通过编程实现控制硬件。系统移植中我们会发现搭载Linux操作系统的板子功力大增,交叉编译工具链的出现使得我们对架构两个字有了更深入的认识。

刚刚还在怀念在Ubuntu下编写C代码运指如飞的感觉,现在可以继续编写Linux风格的C代码了。

驱动开发前面裸板开发和驱动移植的学习目的是面对接下来的驱动大魔头,学习驱动开发我们需要有一个空杯心态,需要有主动理解Linux内核设计理念的意识(但是不要钻牛角尖),时刻把握Linux下一切皆文件的宗旨和分层的思想。

当我们在这一阶段点亮开发板上的一盏明灯,恭喜你,一只脚踏进嵌入式开发的大门了。

C++和QtL

体会了最基本的驱动开发后,嵌入式学习还未结束,但是之后的学习我们有了一些选择的主动权,当我们看到一些有意思的嵌入式小项目,我们可以理解它的实现思路。

而最好的学习方法是自己实践完成一些小项目,你也许不满足之前所学,为什么不能把黑乎乎的命令行终端优化成精美的液晶屏显示,C++和Qt的学习就在所难免了。

不过还好,有C语言的加持,C++的学习变得比较顺利,最大的困难应该在于面向过程到面向对象思维的转变。

Python人工智能L

那么,如果你已经可以实现一个小型的嵌入式项目了,但是如果大火的人工智能技术可以加入到这个小项目中,想必一定非常酷炫,我们可以把呆板的用户界面输入改成图像识别或者人脸识别。

现在编写人工智能代码最广泛的语言是Python3,在github上有许多的开源项目和代码。为了看懂开源代码,暂且不管复杂的数学相关的算法,首先需要学习Python3。

其实,Python3也是一种解释型语言,之前的基础学习中我们学过Shell,两者都是解释型语言,最大区别在于运行的环境和应用的场景不同。

Shell多用于编写Linux系统下的小工具,Makefile的编写是最大的应用场景,Python可以运行在Windows和Linux下,移植了Python的开发板,可以根据各大AI开放平台的支持,将设备接入平台调用云平台提供的API,实现图像识别、人脸识别、文字识别......

STM32L

一个产品级的项目考虑的不仅仅是功能的实现,还要考虑功耗、成本。

此时你会发现许多低功耗的模块可以取代之前基于ARM Cortex™-A的开发板,STM32映入眼帘,STM32的开发原理无非也是控制寄存器驱动硬件模块,在芯片手册中挣扎一段时间,通过一周的时间熟悉CubeMX和keil的使用,驱动一个温湿度传感器或者其它传感器模块,在这个过程中我们就可以了解STM32开发的基本套路。

python嵌入shell代码_小白进!嵌入式开发如何快速入门?相关推荐

  1. python嵌入shell代码_大家一起学python-Python基础1

    本节内容 Python简介 Python的发展史 选择Python 2 还是python 3? Python安装 第一个Python程序 Python变量 学习怎么输入 数据类型 数据运算基础 表达式 ...

  2. python嵌入c代码_怎样把Python代码嵌入到C程序

    匿名用户 1级 2017-11-03 回答 这篇文章主要介绍了将Python代码嵌入C++程序进行编写的实例,尽管通常还是Python代码中调用C++程序的情况较多...需要的朋友可以参考下 把pyt ...

  3. python疲劳检测代码_【君奉天|开发日记】疲劳驾驶检测

    我之前写的关于DuerOS开发日记: 今天看了2017百度世界大会上李彦宏董事长介绍了百度的疲劳驾驶检测,正好我之前阿德里安·罗斯布鲁克的文章中介绍了利用Facial landmarks + drow ...

  4. PEP8 python规范神器和jupyter notebook主题更改--Jupyter Notebook 快速入门

    PEP8 python规范神器和jupyter notebook主题更改--Jupyter Notebook 快速入门 原文: https://www.cnblogs.com/xxtalhr/p/10 ...

  5. 嵌入式开发--CubeMX使用入门教程

    嵌入式开发–CubeMX使用入门教程 CubeMX简介 传统的单片机开发时,需要针对片上外设做各种初始化的工作,相当麻烦. CubeMX是ST公司出品的一款图形化代码生成工具,通过图形化界面,可以非常 ...

  6. python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

  7. python两行数据相加_小白python入门基础——Python安装教程与特色介绍

    简介 Python语言是少有的一种可以称得上即简单又功能强大的编程语言.你将惊喜地发现Python语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构. Python的官方介绍是: Py ...

  8. python多久能上手_小白学习Python,怎样能够快速入门上手

    原标题:小白学习Python,怎样能够快速入门上手 时至今日,Python已经成为最受欢迎的编程语言之一,清晰易读,适用广泛.在TIOBE 排行榜中位居第四,成为名副其实的人工智能第一语言. 那么零基 ...

  9. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

最新文章

  1. 【Vegas原创】Oracle每日export的脚本(Windows版)
  2. POJ 1125 Stockbroker Grapevine
  3. Vi编辑器中查找替换
  4. 腾讯数据中心负责人揭秘:半年时间如何搭好“山洞鹅厂”
  5. git学习之通俗易懂篇(一)
  6. 【poi xlsx报错】使用POI创建xlsx无法打开
  7. 解决centos KDE命令提示符和文字不紧贴的问题
  8. 从别的网站服务器获取数据,使用get()方法以GET方式从服务器获取数据
  9. jq之mouseleave()
  10. 综述 | 知识图谱(Knowledge graph)链路预测(Link Prediction)
  11. MySQL中的联合索引
  12. java线程池相关总结
  13. 基于FVC_MSAVI_EVI的荒漠化等级分类方法
  14. 关闭jtag保留swd
  15. 聚类和分类的最基本区别。
  16. Windows 安装redis 教程
  17. C语言 - 常见面试题整理
  18. 推荐算法中CTR和CVR的ESMM模型pytorch实现
  19. 计算机考研用python_本科化工考研跨考计算机,学过高数和Python,难度有多大?...
  20. Splay Tree

热门文章

  1. html 禁用自动跳转,javascript 实现页面跳转,禁止返回上一页【转】
  2. jsp页面div上下滑动_H5单页面手势滑屏切换原理
  3. java五子棋棋盘_java五子棋项目(一)
  4. Deepin系统安装后相关设置与环境搭建
  5. python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...
  6. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景
  7. java subset_Java TreeSet subSet()方法
  8. vscode css提示_lt;css-doodle/gt;让你成为CSS艺术家
  9. ckeditor 图片上传_开发问题:Django使用ckeditor上传到七牛云
  10. python数组去重函数_Python科学计算库Numpy之 数组操作