嵌入式ARM的学习方法上

嵌入式分为广义和狭义两种。广义的嵌入式就是片上系统(system on a chip),包括单片机、PSOC、NIOS、Microblaze等。而狭义的嵌入式就是ARM9、cortex A8等特定的跑操作系统的芯片。这里主要介绍狭义嵌入式的学习路线嵌入式ARM的学习方法。

还是主流的方法,先学会使用它,再深入研究底层。

常用的操作系统有Linux、WIN CE、安卓、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、dnf、rpm等)。如果你用ubuntu的话,得修改软件源(下载软件的网址),因为国外的源比较慢,百度上有详细说明。接下来,得学会最基本的命令,如:ls、cd、find、grep、ps、diff、fdisk、ifconfig等。跟着教材多操作几遍就会了,没有很深的理论知识,不需要掌握所有的命令,也不需要记住所有命令的选项,用到的时候会查就可以了。有空的话可以上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、tftp。如果你在ARM开发板上弄了个Web服务器,那么,你就可以用这些工具去访问它。其中,ssh工具建议用SecureCRT或者MobaXterm。

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

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

四、学会编写shell脚本

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

五、学会linux下C编程

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

原文地址:https://www.cnblogs.com/wkmaaa/p/9076482.html

时间: 2024-08-02 08:02:23

嵌入式ARM的学习方法上的相关文章

ARM嵌入式开发板学习路线指引

如何入门嵌入式?嵌入式开发学习方法步骤如何入门嵌入式?嵌入式开发学习路线指引 嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android.平台:Cortex-A9开发板 嵌入式技术学习如何入手,从何学起呢, 以下内容简单介绍嵌入式开发的学习步骤及如何成为一位合格的嵌入式工程师, 一.首先要掌握基础架构嵌入式Linux系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux内核,文件系统,应用程序.开发编译环境的搭建,源代码的编译和烧写,应用和

(转)嵌入式开发如何学习

一般来说,在嵌入式行业中从事嵌入式产品研发的人往往来自这样一些专业:计算机.电气,自动化,微电子,电子信息,通信,机械等相关专业,由于大学里面不同专业基础课的设置,所以在准备学习的过程中需要根据实际情况有不同的侧重. 一是程序设计的基础,例如:基本的编程语言基础,至少对数据类型.程序的结构及流程控制等最基本的内容要相当清楚,所以建议恶补一下C语言,呵呵!另外有不少同学都问到数据结构的基础,我一直认为数据结构和算法的学习是帮助形成程序设计逻辑思维的很好训练方式,对于程序员的长期专业素养的提高一定有

嵌入式Linux操作系统学习规划

开发板用友善之臂的吧mini2440 连3.5寸屏500块钱的样子有好几张DVD学习光盘 这款口碑比较高 嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目. 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺.这一

嵌入式linux如何学习

俗话说万事开头难(然后中间难,最后难?),刚开始的时候,你是否根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到方向?又是arm,又是linux,又是uboot头都大了.不知道自己究竟从哪里开始? 简单说,从arm基础知识到裸机编程,从uCOSII到linux,从linux基础的命令到shell编程,从u-boot到文件系统,最后到现在的linux驱动程序.从简单到复杂,从基础到高级基本是按照这个来的. 第一阶段:嵌入式硬件基础以及裸机程序开发 1.知识点: (1)

嵌入式应该如何学习,高手建议如何学习嵌入式系统

嵌入式的运用的技术范围越来越广,想进入嵌入式行业,嵌入式应该如何学习呢?对于没有基础的同学该怎么学习嵌入式,今天就给大家说一下嵌入式的学习.首先学习嵌入式,你得了解嵌入式是什么? 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能.可靠性.成本.体积.功耗等严格要求的专用计算机系统.举些例子,手机.电子时钟.智能报警装置.自动监控器.出租车计费器等等都属于嵌入式系统. 大家都知道嵌入式开发这

关于嵌入式系统的学习路线图

嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一.嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器.存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等.特别是随着消费家电的智能化,嵌入式更显重要.像我们平常常见到的手机.PDA.电子字典.可视电话.VCD/DVD/MP3 Player.数字相机(DC).数字摄像机(DV).U-Disk.机顶盒(Set Top Box).高清电视(HDTV).游戏机.智能玩具.交换机.路由器.数控设备或仪表.汽

Android ARM指令学习

在逆向分析Android APK的时候,往往需要分析它的.so文件.这个.so文件就是Linux的动态链接库,只不过是在ARM-cpu下编译的.所以学习Android下的ARM指令很重要.目前,市面上的ARM-cpu基本都支持一种叫做THUMB的指令集模式.这个THUMB指令集可以看作是ARM指令集的子集,只不过ARM指令集为32bit,THUMB指令集为16bit.之所以要使用这个THUMB指令集,主要是为了提升代码密度.具体信息大家可以google. 下面介绍如何简单修改.so文件. 首先,

ARM指令集学习总结-转载

ARM指令集比较简单,本文介绍ARM指令集中需要注意和不易理解的地方. 一.ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的.         二.ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL汇编是不同的,初学者很不易理解.        三.指令的后缀:     "S"  可选后缀,若

Android ARM 汇编学习(一)

给自己挖了个坑,一切都得从"Hello World"开始. hello.S .data msg:     .ascii      "Hello, World!\n" len = . - msg .text .globl _start _start:     /* syscall write(int fd, const void *buf, size_t count) */     mov     %r0, $1     /* fd -> stdout */