你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

嵌入式干货,请收下!

[复制链接]
gaosmile 发布时间:2020-3-12 11:37
嵌入式系统是一个非常广泛的定义,从技术层面来说可以分为硬件层,驱动层,系统层和应用层。常用的嵌入式操作系统有Linux、WIN CE、安卓、Vxworks、QNX、OSE等,目前资料最多的是linux,所以下面以linux为例。
01
安装虚拟机和Linux系统

一般人用的电脑都会装Windows系统,要想在Windows上跑其它系统,得安装虚拟机。而目前主流的虚拟机有vmware、VirtualBox、hyperV等,你可以随便选一个安装。然后去官网下载个人版的Linux镜像(.iso文件)并把它安装在虚拟机里面即可,这里给出主流Linux系统的官网链接:ubuntu、fedora、centos、debian、suse。如果你没有用过linux的话,推荐使用ubuntu。因为RedHat要收费,并改名为RHEL,所以这里不作介绍。
02
学会使用Linux常用命令

这里,必须改改在Windows下点鼠标的习惯,在linux下做事得用命令行。此外,在Linux下载软件,不需要在百度下载,而是用linux自带的软件包管理工具(如:apt-get、dnf、rpm等)。如果你用ubuntu的话,得修改软件源(下载软件的网址),因为国外的源比较慢,百度上有详细说明。接下来,得学会最基本的命令,如:ls、cd、find、grep、ps、diff、fdisk、ifconfig等。跟着教材多操作几遍就会了,没有很深的理论知识,不需要掌握所有的命令,也不需要记住所有命令的选项,用到的时候会查就可以了。有空的话可以上ubuntu社区或者linux公社。
03
学会使用Linux常用工具

1、编辑器(写代码必备的)。有gedit,vim,emacs,sublime等,推荐学vim。
2、gcc和gdb。gcc是编译器,gdb就是代码调试器。
3、makefile、autoconf、automake。这里可不像VC++6.0这种工具,点个鼠标就给你编译好。在Linux下,你得用makefile和make工具,来编译代码。其中autoconf和automake可以自动生成makefile。
4、ssh、tftp。如果你在ARM开发板上弄了个Web服务器,那么,你就可以用这些工具去访问它。其中,ssh工具建议用SecureCRT或者MobaXterm。
5、samba。要想用Linux跟windows交换数据,还可以搭建samba服务器。
6、版本控制器。有svn,cvs,git等,推荐学git。有了git,你就不必手动备份代码了。
04
学会编写shell脚本

在实际工作中,复杂的系统管理操作,不会一行一行地敲命令,而是用脚本(命令是基础)。脚本也是一种编程语言,只不过是解释型语言。相比C/C++、C#、JAVA这类高级语言,脚本要易学很多(因为增加了语法糖)。在Linux下,shell也有很多种,如:bsh、bash、csh、tcsh、ksh、zsh等,一般是学bash,其它的遇到再学也不迟,因为都是大同小异的。此外,bash语法比较奇特,很多符号(如:$#,$0,$?等)比较难记,不过也没必要特意去死记它,有个印象就可以了,用到的话再查手册,这里重点掌握正则表达式。如果有时间的话,建议再学python脚本,python的语法要容易很多,用途也比bash广很多。
05
学会Linux下C编程

尽管学会bash已经能做很多事情了,但是驱动和内核开发还是用C语言,因为那时候系统还没起来,bash是用不了的。此外,C语言的执行效率比bash要高,网络编程的Socket也常常用C语言开发。在这里,得掌握基本的文件操作、进程/线程控制、Socket等。推荐《Linux环境C程序设计》、《UNIX环境高级编程》、《UNIX网络编程 卷1》、《UNIX网络编程 卷2》,或许这些教材有点难,但是,请不要钻牛角尖,不懂的暂时跳过,在学完下一阶段的理论之后,再来看,之前不懂的东西就变得容易。
06
增强理论知识

因为有的人打着嵌入式硬件工程师的名号装逼,其实嵌入式硬件就是普通硬件工程师做的工作。我们这里都是讨论软件方面的内容,而且嵌入式是以软件为主导的(工资上有较大差距)。
1、单片机。不想学单片机的话,可以学计算机组成原理。
2、数据结构。主要掌握表和树,其中链表会在操作系统的调度算法中用到。
3、操作系统。全部都是重点,必须深入研究,才会对Linux有个较全面的认识。
4、编译原理。有时间的话,最好多看看,没空的话,也得了解一下。对于提高编程能力,有一定的帮助。
5、数据库。除了基本的数据库理论之外,还得掌握SQLite或者Oracle。
6、ARM体系结构。介绍ARM的架构和指令集,在移植uboot和驱动中会用到,不做这两项工作的话,可以不学。
7、计算机网络基础。开发中用到的tcp、udp、ssh、tftp、http、rtp就会涉及到网络相关的知识,也就是socket套接字编程。
8、接口应用。如:串口、zmodem、IIC、SPI、1-wire、USB、HDMI、CAN、IIS、PCIE、蓝牙、陀螺仪等。
学完上面这些理论之后,得再复习一下linux下C编程,你会有更大的收获。
下面第七、八、九阶段,使用开发板自带的bootloader即可,暂时不必研究它。
07
文件系统

在学习操作系统原理的时候,已经有介绍文件系统了,而且不需要深入研究文件系统的具体算法,只需要了解其特性再学会使用它就可以了。如:NFS、FAT32、NTFS、yaffs2、ext4、ZFS等。
08
内核裁剪

一般初学,可以先掌握内核剪裁(具体工作就是填写若干个选项)。剪裁只是去掉内核部分不需要的功能,以减少代码体积。这里只要求你对内核的各个功能选项都很熟悉就可以了。如果剪裁还不能满足要求的话,得阅读内核源码,修改内核了。推荐《Understanding the Linux Kernel》和《Linux Kernel Development》。阅读内核源码,推荐windows下的source insight或者eclipse。
09
驱动开发

由于系统还没起来,所以驱动能用到的API(内核的部分API,如:kprintk、kmalloc等)并不多,很多函数还是得自己写的,其中,会经常访问临界资源,所以得掌握自旋锁、睡眠锁。此外,驱动程序出问题的话,整个系统就挂掉了,所以还要掌握各种调试驱动的方法,如:goto语句、日志系统、KDB等。接下来就要熟悉掌握字符设备和块设备的驱动程序了。推荐《小白的博客》和《Linux Device Drivers》(不建议看中文版)。
10
移植bootloader

单片机也有bootloader,在keil C下的startup.a51,主要是做一些初始化工作。那么,在ARM上面的bootloader也是一样的功能,同样,也没有那么重要所以把它排在后面。常用的bootloader有vivi和uboot,一般学习uboot,主要掌握uboot的启动流程和移植。在经过前面的学习,那么uboot对你来说已经非常容易的了,一般只需要学会使用uboot或者用已经移植好的uboot,不需要深入研究它。推荐看uboot自带的帮助文档以及《深入理解BootLoader》。阅读uboot源码,推荐windows下的source insight或者eclipse。
11
图形界面开发

常用的GUI图形库有:GTK++、QT、JAVA、安卓等。有C++基础的,建议学习QT,不会C++的,建议学JAVA。在前期的GUI开发,可以不需要使用开发板,而2440下适合跑QT,如果要跑JAVA、安卓的话,建议换一块开发板,可以考虑Exynos4412开发板。此外,你还可以用python自带的TKinter来开发图形界面。
因为安卓系统是在Linux的基础上封装了一层API,所以,如果做安卓驱动,就得掌握Linux(上面前十个阶段)。如果只做安卓app,你只需要使用android studio或者eclipse配合安卓模拟器(最好用安卓手机),就可以了,不需要学习Linux,也不需要开发板。
在你做过几个GUI项目之后,再学习UML和设计模式,这会大大增强你的代码架构能力。
12
Web开发

有的时候得在ARM板上搭个Web服务器,这里,得学习HTML、CSS、Javascript、XML、Ajax、PHP等。看起来内容很多,但其实并不多,因为这些语言都很容易上手。初学可以使用Adobe的Dreamweaver做开发,上手之后一个sublime text配合firefox浏览器就可以了(还要学习MVC模式)。此外,还得会用bash或者python编写CGI程序,这样才可以在网页上调用到底层的C语言接口。推荐《疯狂HTML 5/CSS3/JavaScript讲义》。

收藏 评论0 发布时间:2020-3-12 11:37

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版