Advertisement

嵌入式人工智能

阅读量:

常用的嵌入式操作系统有Linux、WINCE、 安卓、Vxworks、 QNX、 OSE等,目前资料最多的是linux,所以下面以linux为例。

一、 安装虚拟机和Linux系统。

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

二、学会使用Linux常用命令。

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

三、学会使用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、 ttp。 如果你在ARM开发板上弄了个Web服务器,那么,你就可以用这些工具去访问它。其中,ssh工具建议用SecureCRT或者MobaXterm。

5、samba。 要想用Linux跟windows交换数据,还可以搭建samba服务 器。

6、版本控制器。有svn, cvs, git等, 推荐学git。 有了git,你就不必手动备份代码了。

四、学会编写shel脚本。

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

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

六、增强理论知识。

因为有的人打着嵌入式硬件工程师的名号,其实嵌入式硬件就是普通硬件工程师做的工作。我们这里都是讨论软件方面的内容,而且嵌入式是以软件为主导的。

1、单片机。不想学单片机的话,可以学计算机组成原理。

2、数据结构。主要掌握表和树,其中链表会在操作系统的调度算法中用到。

3、操作系统。全部都是重点,必须深入研究,才会对Linux有个较全面的认识。

4、编译原理。有时间的话,多看看,没空的话,也得了解一 下。对于提高编程能力,有一定的帮助。

5、数据库。除了基本的数据库理论之外,还得掌握SQLite或者Oracle。

6、ARM体系结构。介绍ARM的架构和指令集,在移植uboot和驱动中会用到,不做这两项工作的话,可以不学。

**7、计算机络基础。开发中用到的tcp、udp、 ssh、 ttp、 http、 rtp就会涉 及到络相关的知识,也就是socket套接字编程。

8、接口应用。如:串口、zmodem、IC、 SPI、 1-wire、 USB、HDMI、CAN、lIS、 PCIE、 蓝牙、陀螺仪等。**

学完上面这些理论之后,得再复习- -下linux下C编程,你会有更大的收获。

下面第七、八、九阶段,使用开发板自带的bootloader即可,暂时不必研究它。

七、文件系统。

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

全部评论 (0)

还没有任何评论哟~