当前位置:首页 » 编程软件 » arm体系架构与编程

arm体系架构与编程

发布时间: 2023-02-05 06:04:36

① 什么是嵌入式学习嵌入式需要什么基础

嵌入式linux操作系统学习规划
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。

2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。

4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。

2010-8-21 16:46 回复
122.90.173.* 2楼

C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。

嵌入式书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
c语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 杨宗德着
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 杨宗德着
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》

C语言书籍推荐
1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。

这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!

② 嵌入式需要学习什么

嵌入式开发学习路线图-尚观嵌入式研究室-嵌入式路线图

-------作者:尚观嵌入式研究室UEA0908班 范同学
为什么选择学习嵌入式?

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,同时也是当今IT领域仅存的几个金领职位之一。当前的中国IT人才面临严重的“后继乏人”,
而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级IT人才。如果你从事的IT培训不专业,面对竞争越来越激烈的职场,基本找不到
工作。据专家预测,嵌入式每年人才缺口在30万左右。

入式职业发展讲解视频

视频中主要讲解什么样的人适合从事嵌入式行业、嵌入式行业从业人员需要具备哪些基本素质、嵌入式行业的特点以及嵌入式行业的现状与发展。

嵌入式研发方向职业生涯讲解视频(1)
嵌入式研发方向职业生涯讲解视频(2)
嵌入式研发方向职业生涯讲解视频(3)

嵌入式研发方向职业生涯讲解视频(4)
嵌入式研发方向职业生涯讲解视频(5)

ARM+Linux嵌入式底层内核驱动方向学习总体路线图

基础学习Ⅰ---Linux入门

目前嵌入式主要开发环境有
Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人
员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux
系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把
Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安

基础学习Ⅱ---C语言

C语言是嵌入式开发必备的基础知识。在Linux下从事C语言的开发,你会觉得更为顺畅、更为自然,因为C语言是因unix的出现而诞生的,Linux内
核几乎完全是由C语言编写完成的。学习C语言,如果不会用指针,那么就称不上会C语言。做嵌入式开发指针更显得尤为重要,所以做嵌入式开发除了掌握位操
作、限定词等,对指针的掌握是不可或缺的。而且要掌握多级指针、函数指针等等。涉及到指针,那么就会讲到内存分配。在大学中,学习C语言一般的学习很少讲
到内存分配,但是如果期望从事嵌入式开发,那么就必须懂得C语言是怎么做内存分配管理的。指针之外,还要学习模块化编译处理、指针与数组、gcc、
Makefile、GDB、递归、结构体、宏定义使用等。C语言是整栋嵌入式大厦的基础,所以在学习嵌入式时,必须把C语言重视起来,多敲代码,多练。一
名优秀的程序员必定是通过“体力劳动”再转向“脑力劳动的”,这也是为什么我们要有“写不出代码=0”思想的原因所在。
如果说C语言相当于文字,那么数据结构就相当于在造句、写文章。代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作
为学习重点。而且我们也可以查看一些比较常见的函数(如str、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这
不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。

C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。

B)经典学习视频推荐:

1-1c语言编辑器vi的使用

1-2c语言编译过程及编译器gcc

2-1c语言的数据类型

2-2数据快速引用

2-3c语言运算符及表达式

3-1c语言的分支结构

3-2c语言的循环结构

4-1c语言函数的定义及传

4-2c语言函数调用

5-1-1c语言的一维数组

5-1-2二维数组及多维数组

5-1-3c语言字符数组

5-2-1c语言结构体-Struct

5-2-2C语言联合体-Union

6-1c语言指针的概念

6-2c语言指针与一维数组

6-3指针与二维数组及字符

6-4指针与结构体、联合体

6-5c语言指针与函数

6-6c语言指针常量与常量

7c语言存储空间管理

8-1c语言存储模型分析

8-2双向循环链表的创建增

8-3双向循环链表的数据管

C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器

基础进阶---Linux应用程序设计

Linux的思想源于Unix。Linux继承了Unix的优点,但是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux
不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface
Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了
UNIX 几个典型特性当中最实用的一些功能:
Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。

Linux 支持 BSD Socket 网络编程接口。
许多 Linux 发行版采用 SysV init
机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。

A)经典书籍推荐:

B)经典学习视频推荐:

Linux网络开发-1、ARP攻击原理
Linux网络开发-2、ARP攻击实例分析
Linux网络开发-3、ARP攻击程序代码分析和socket构造

C)经典学习案例:
1、串口监听程序
2、图片浏览器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音频广播程序 7、ping的实现
8、DDos攻击程序 9、ARP攻击程序

嵌入式入门---ARM体系结构

从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM
Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex
M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。
在开始学习前,建议有一块自己的开发板,目前ARM9
2440的开发板价格在400-600元之间,ARM11
6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大家尽量不要买mini开发板,虽然mini开发板的价格要便宜些,但是与正常开发板相比,mini板功能是不完善的。嵌入式汇编有别于X86汇编,所以如果以前没有接触过汇编语言,那么没有必要先去学X86汇编再学嵌入式汇编,可以直接学习嵌入式汇编。除了汇编我们还要学习ARM指令集。有了开发板,我们要下载相对应处理器的DataSheet及开发板电路原理图。ARM体系结构的学习我们是不能完全照抄别人代码的,因为我们自己手中的开发板及处理器与别人是不同的,除非所用的代码是根据你手中的开发板来编写的。所以,我们要先去看书、看视频资料理解原理及工作方式等,然后根据自己开发板的电路原理图和DataSheet来编写代码,达到理解外围设备工作原理和操作硬件的目的。

B)经典学习视频推荐:
1)嵌入式扫盲篇

嵌入式漫谈1

嵌入式漫谈2

嵌入式漫谈3

十问嵌入式1-什么是嵌入式,创业

十问嵌入式2-嵌入式实例iphone

十问嵌入式3-嵌入式前景

十问嵌入式4-嵌入式学习

十问嵌入式5-ARM概述

十问嵌入式6-ARM概述
开发板

十问嵌入式7-ARM与单片机

十问嵌入式8-汇编语言的作用

十问嵌入式9-操作系统的选择

十问嵌入式10-编程语言选择

2)嵌入式开发概述

嵌入式开发入门经典教程-1
嵌入式开发入门经典教程-2
嵌入式开发入门经典教程-3

嵌入式开发入门经典教程-4
嵌入式开发入门经典教程-5
嵌入式开发入门经典教程-6

嵌入式开发入门经典教程-7
嵌入式开发入门经典教程-8
嵌入式开发入门经典教程-9

嵌入式开发入门经典教程-10
嵌入式开发入门经典教程-11
嵌入式开发入门经典教程-12

嵌入式开发入门经典教程-13

3)ARM体系结构与Bootloader开发

1、ARM基础概念介绍与开发板使用教程
2、编译器高级应用与裸机代码编写教程
3、ARM指令与ARM汇编入门

4、ARM汇编高级教程与APCS规范详解
5、ARM体系结构详解与异常处理机制
6、ARM中断机制详解与Watchdog驱动开发实例

7-1、ARM外部中断机制详解与LED驱动开发实例
7-2、ARM嵌入式开发之ARM外部中断机制详解与实例
8、AMBA总线结构与ARM时钟配置

9、时序图详解与NAND
FLASH驱动开发实例
10-1、内存控器与SDRAM原理详解(上)
10-2、内存控器与SDRAM原理详解(下)

11、UART串口详解与通信开发实例
12、ARM协处理器CP15配置原理
13、从零开始写Bootloader开发过程详解

C)经典学习案例:
1. ARM模拟器开发 2. Watchdog控制程序 3.
RTC时钟控制程序
4. Uart控制程序 5. LCD控制程序 6.
触摸屏控制程序
7. DMA控制程序 8. 音频控制程序 9. 网卡控制程序
10.
文件系统制作 11. ARM-Linux移植

嵌入式提升---Linux内核、驱动

众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。

由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11
6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。

B)经典学习案例:
1. GPIO驱动 2. RTC时钟驱动 3.
WatchDog驱动 4. Udev移植 5. 触摸屏输入设备驱动
6. LCD显示设备驱动 7. DMA驱动 8.
音频设备驱动 9. Nand Flash块设备驱动 10. 网络设备驱动

有不明白的可以到尚观嵌入式研究室咨询,或者听听免费的网络公开课,希望对你有帮助

③ 初学者如何学习嵌入式

作为一个新人,怎样学习嵌入式Linux

原文链接:网页链接

作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。

在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西,很适合煅炼你的编程能力。

回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux可以分为两部分:底层系统、应用开发。如果你是想做应用开发,那么你去把C语言、数据结构、JAVA什么的学好吧。嵌入式应用开发和PC上的应用开发并没有什么特别要注意的。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体到某个例子,比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android,这个时候你应该去学学QT、Android的编程。但是基础还是C或JAVA,在此基础上去熟悉它们的接口。你学过VC的话,也是要花时间去了解那些类、控件的。

如果你的目的是想学习底层系统,这是我的专长,倒是可以说一点。
在回答这个问题之前,我先回答:不少人问我,到底是学驱动还是学应用?

我只能说凭兴趣,并且驱动和应用并不是截然分开的


  1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。 想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂

  2. 做应用门槛低,特别是现在的ANDROID,纯JAVA。做应用的发展路径个人认为就是业务纯熟。比如在通信行业、IPTV行业、手机行业,你了解行业的需求。所以,当领导的人,多是做应用的。

  3. 做驱动,其实我不想称为“做驱动”,而是想称为“做底层系统”,做好了这是通杀各行业。我工作几年,做过手机、IPTV、会议电视,但是这些产品对我毫无差别,因为我只做底层。他们的业务跟我没关系。当应用出现问题,他们解决不了时,我就会从内核角度给他们出主意,给他们提供工具。 做底层的发展方向,个人认为是技术专家。

  4. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,你会感觉很踏实。有了业务经验,你再了解一下底层,很快就可以组成一个团队。

回到怎么学的问题上。嵌入式Linux底层系统包含哪些东西?不要急,举一个例子你就知道了。


  1. 电脑一开机,那些界面是谁显示的?是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。类似的,这个BIOS对应于嵌入式Linux里的bootloader。这个bootloader要去Flash上读入Linux内核,并启动它。

  2. 启动windows的目的是什么?当然是上网聊天什么的了。这些上网、聊天工具在哪?

    在C盘、D盘上。所以, windows要先识别出C盘、D盘。在Linux下我们称为根文件系统。

  3. windows能识别出C盘、D盘,那么肯定能读写硬盘才行。这涉及的东西称为驱动程序。当然不仅仅是硬盘,还有网卡、USB等等。嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。

先说到这里吧,嵌入式LINUX里含有bootloader, 内核, 驱动程序、根文件系统这4大块。

一、bootloader:

它就是一个稍微复杂的裸板程序。但是要把这裸板程序看懂写好一点都不容易。Windows下好用的工具弱化了我们的编程能力。

很多人一玩嵌入式就用ADS、KEIL。你能回答这几个问题吗?

1. 一上电,CPU从哪里取指令执行?

答:一般从Flash上指令。

2. 但是Flash一般是只能读不能直接写的,如果我用到全局变量,这些全局变量在哪里?

答:全局变量应该在内存里

3. 那么谁把全局变量放到内存里去?

答:长期用ADS、KEIL的朋友,你能回答吗?这需要"重定位"。在ADS或KEIL里,重定位的代码是制作这些工具的公司帮你写好了。你可曾去阅读过?

4. 内存那么大,我怎么知道把"原来存在Flash上的内容"读到内存的"哪个地址去"?

答:这个地址用"链接脚本"决定,在ADS里有scatter文件,KEIL里也有类似的文件。但是,你去研究过吗?

5. 你说重定位是把程序从Flash复制到内存,那么这个程序可以读Flash啊?

答:是的,要能操作Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。


自问自答到这里吧,bootloader这一个裸板程序,其实有3部分要点:

  1. 对硬件的操作

  2. 对ARM体系处理器的了解

  3. 程序的基本概念:重定位、栈、代码段数据段BSS段什么的。


对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不求你能设计硬件,但是至少能看懂; 不求能看懂模拟电路,但是要能看懂数字电路。这方面的能力我是在学校里学到的,微机原理、数字电路这2本书(书名忘了)就足够了。但是我怀疑你有无耐心把这2本书看完。我不知道现在有没有更快捷的书。想速成的话,就先放掉这块吧,不懂就问GOOGLE、发贴。

另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,读任何芯片手册都很容易。对ARM体系处理器的了解, 看杜春蕾的<ARM体系架构与编程>吧,里面讲有汇编指令,有异常模式、MMU等。也就这3块内容需要你了解。

程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的。劝你若非超级天才还是别去看了。就看我写的<嵌入式Linux应用开发完全手册>和第1期视频吧,别担心,不用花钱。照着视频把硬件相关的实验做了,这些概念就清楚了。我还没有

发现第2套讲这些概念的书或视频。

对于bootloader,我学习时是先看了<ARM体系架构与编程>,然后自己写程序把各个硬件的实验都做了一遍,比如GPIO、时钟、SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂u-boot了

总结一下,看懂硬件原理图、看芯片手册,这需要你自己去找资料。剩下的,就按<嵌入式Linux应用开发完全手册>和第1期视频的章节目录去学习吧。


二、内核:

想速成的人,先跨过内核的学习,直接学习怎么写驱动。

想成为高手,内核必须深刻了解。注意,我说的是了解,我没奢望去写出一个内核。

要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。

推荐两本书:

1. 通读<linux内核完全注释>,请看薄的那本(浮燥的社会讲求速度, 呵),

2. 选读<Linux内核情景分析>, 想了解哪一块就读哪一节


三、驱动:

驱动包含两部分:硬件本身的操作、驱动程序的框架。

又是硬件,还是要看得懂原理图、读得懂芯片手册,多练吧。


说到驱动框架,有一些书介绍一下。LDD3,即<Linux设备驱动>,老外写的那本,里面介绍了不少概念,值得一读。但是,它的作用也就限于介绍概念了。我基本上是入门之前用它来熟悉一下概念,入门后就扔掉了。

驱动方面比较全的介绍,应该是宋宝华的<linux设备驱动开发详解>了,老实说我只看过目录,有不少人说好,这里推荐一下。要想深入了解某一块,<Linux内核情景分析>绝对是超5星级推荐。你别指望把它读完,1800多页,上下两册呢。我是某一块不清楚时,就去翻一下它。任何一部分,这书都可以讲上2、3百页,非常详细。并且是以某个目标来带你分析内核源码。它以linux 2.4为例,但是原理相通,同样适用于其它版本的linux。

还有没有其他介绍?呵呵,当然有了,韦东山Linux视频第2期。<嵌入式Linux应用开发完全手册>里对驱动讲得不多,不够深入。于是我录制了这期视频。不仅仅教你怎么写怎么改驱动,还教你为什么这样写这样改驱动。

每一个驱动都是现场编写:

  1. 用绘图板画图讲解──相当于学校里老师在黑板上画图讲解,很直观绝对不是对着PPT念。

  2. 用source insight当场写程序,从第1行开始写,每一课都是这样。我讲了20多个驱动,就写了20多个程序。

  3. 写完就编译、测试。

  4. 很全面,字符设备驱动、块设备、网卡驱动3大类齐全,硬件介绍、驱动框架分析、测试3大类齐全。

培训机构里教的内容,远不及这期视频丰富。我在多个培训机构讲过课,从没看到哪个老师敢每一课都当场讲解当场编写代码,当场测试,除我之外!也没看到哪个培训机构讲完这些内容──因为时间不够,讲完起码要一个月,但是这部分基本只有2周授课时间。

把你手上的开发板所涉及的硬件,都去尝试写一个驱动吧。有问题就先"痛苦地思考",思考的过程中你会把很多不相关的知识串联起来,最终贯通。


四、根文件系统:

大家有没有想过这2个问题:

1. 对于Linux做出来的产品,有些用作监控、有些做手机、有些做平板。那么内核启动后,挂载根文件系统后,应该启动哪一个应用程序呢?

答:内核不知道也不管应该启动哪一个用户程序。它只启动init这一个应用程序,它对应/sbin/init。显然,这个应用程序就要读取配置文件,根据配置文件去启动用户程序(监控、手册界面、平板界面等等)这个问题提示我们,文件系统的内容是有一些约定的,比如要有/sbin/init,要有配置文件

2. 你写的hello,world程序,有没有想过里面用到的printf是谁实现的?

答:这个函数不是你实现的,是库函数实现的。它运行时,得找到库。这个问题提示我们,文件系统里还要有库。

简单的自问自答到这里,要想深入了解,可以看一下busybox的init.c,就可以知道init进程做的事情了。当然,也可以看<嵌入式Linux应用开发完全手册>里构建根文件系统那章。


说一下我的学习经历吧。

  1. 我在学校时读的是物理电子专业,其实课程里没有教怎么设计电路,只是教了些电子电路方面的知识。PCB的设计是在实验室里自学的,只设计过2层板,现在忘记得差不多了。但是保留了看原理图、看芯片手册的能力。

  2. 选修了软件学位,对软件设计挺感兴趣,但是也只是学了C语言、数据库而已。凭着兴趣做了不少竞赛题。没能力去参加竞赛,但是把C语言练得很扎实。

  3. 在实验室、在第1家公司,就是设计些简单的PCI卡,写一下windows的驱动程序

  4. 在第2家公司,用51单片机做车载电话,开始走上纯软件的道路。

  5. 开始感到单片机的不足,辞职半年闭门学Linux,从red hat怎么操作开始。步骤就是先看<ARM体系架构与编程>,再自己写裸板程序操作硬件,接着到分析u-boot。同时看<linux内核完全注释>,对LINUX框架有所了解。在写裸板时,建议各位加强对中断的理解,内核就是用中断来完成各种功能的。

  6. 分析完u-boot,就开始进行简单的驱动编程了,这时候,能力还很弱。

  7. 开始去中兴上班,工作2年,编写各类驱动、解决各类问题(驱动问题、帮助定位应用问题),能力得到煅炼。

总结一下:

1. 硬件方面的书: 微机原理、数字电路,高校里的教材。毕业多年,忘名了。

2. Linux方面的书:

<ARM体系架构与编程>

<嵌入式Linux应用开发完全手册>

<Linux设备驱动>,老外写的那本

<linux设备驱动开发详解>

<linux内核完全注释>

<Linux内核情景分析>


3. 视频:

  • 韦东山Linux视频第1期(基于S3C2440录制): ARM实验,u-boot,文件系统,初级驱动

  • 韦东山Linux视频第1期(基于S3C6410录制): 裸板程序

  • 韦东山Linux视频第2期: 高级驱动

  • 韦东山Linux视频第3期:项目实战

  • 韦东山Linux视频第4期:Android驱动

视频信息请看网页链接


————————————————

版权声明:本文为博主“韦东山”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/thisway_diy/article/details/51887326

④ ARM体系结构与编程的作品目录

第1章 ARM概述及其基本编程模型
1. 1 ARM技术的应用领域及其特点
1. 2 ARM体系结构的版本及命名方法
1. 2. 1 ARM体系结构的版本
1. 2. 2 ARM体系的变种
1. 2. 3 ARM/Thumb体系版本的命名格式
l. 3 ARM处理器系列
1. 3. 1 ARM7系列
1. 3. 2 ARM9系列
1. 3. 3 ARM9E系列
1. 3. 4 ARM1OE系列
1. 3. 5 SecurCore系列
l. 4 ARM处理器模式
1. 5 ARM寄存器介绍
1. 5. l 通用寄存器
1. 5. 3 程序状态寄存器
1. 6 ARM体系的异常中断
1. 6. 1 ARM中异常中断种类
1. 6. 2 ARM处理器对异常中断的响应过程
1. 6. 3 从异常中断处理程序中返回
1. 7 ARM体系中存储系统
1. 7. 1 ARM体系中的存储空间
1. 7. 2 ARM存储器格式
1. 7. 3 非对齐的存储访问操作
1. 7. 4 指令预取和自修改代码
第2章 ARM指令分类及其寻址方式
2. 1 ARM指令集概要介绍
2. 1. 1 ARM指令的分类
2. 1. 2 ARM指令的一般编码格式
2. 1. 3 ARM指令的条件码域
2. 2 ARM指令寻址方式
2. 2. l 数据处理指令的操作数的寻址方式
2. 2. 2 字及无符号字节的Load/Store指令的寻址方式
2. 2. 3 杂类Load/Store指令的寻址方式
2. 2. 4 批量Load/Store指令的寻址方式
2. 2. 5 协处理器Load/Store指令的寻址方式
第3章 ARM指令集介绍
3. 1 ARM指令集
3. 1. l 跳转指令
3. l. 2 数据处理指令
3. 1. 3 乘法指令
3. 1. 4 杂类的算术指令
3. 1. 5 状态寄存器访问指令
3. l. 6 Load/Store内存访问指令
3. 1. 7 批量Load/Store内存访问指令
3. 1. 8 信号量操作指令
3. 1. 9 异常中断产生指令
3. 1. 10 ARM协处理器指令
3. 2 一些基本的ARM指令功能段
3. 2. l 算术逻辑运算指令的应用
3. 2. 2 跳转指令的应用
3. 2. 3 Loacl/Store指令的应用
3. 2. 4 批量Load/Store指令的应用
3. 2. 5 信号量指令的应用
3. 2. 6 与系统相关的一些指令代码段
3. 3 Thumb指令介绍
第4章 ARM汇编语言程序设计
4. 1 伪操作
4. 1. l 符号定义伪操作
4. 1. 2 数据定义伪操作
4. 1. 3 汇编控制伪操作
4. 1. 4 栈中数据帧描述伪操作
4. 1. 5 信息报告伪操作
4. 1. 6 其他的伪操作
4. 2 ARM汇编语言伪指令
4. 3 ARM汇编语言语句格式
4. 3. 1 ARM汇编语言中的符号
4. 3. 2 ARM汇编语言中的表达式
4. 4 ARM汇编语言程序格式.
4. 4. l 汇编语言程序格式
4. 4. 2 汇编语言子程序调用
4. 5 ARM汇编编译器的使用
4. 6 汇编程序设计举例
4. 6. 1 ARM中伪操作使用实例
4. 6. 2 ARM中汇编程序实例
第5章 ARM存储系统
5. 1 ARM存储系统概述
5. 2 ARM中用于存储管理的系统控制协处理器CP15
5. 2. 1 访问CP15寄存器的指令
5. 2. 2 CP15中的寄存器
5. 3 存储器管理单元MMU
5. 3. l 存储器管理单元MMU概述
5. 3. 2 禁止/使能MMU
5. 3. 3 MMU中地址变换过程
5. 3. 4 MMU中存储访问权限控制
5. 3. 5 MMU中的域
5. 3. 6 关于快表的操作
5. 3. 7 ARM中的存储访问失效
5. 4 高速缓冲存储器和写缓冲区
5. 4. 1 基本概念
5. 4. 2 cache的工作原理和地址映像方法
5. 4. 3 cache的分类
5. 4. 4 cache的替换算法
5. 4. 5 缓冲技术的使用注意事项
5. 4. 6 存储系统的一致性问题
5. 4. 7 cache内容锁定
5. 4. 8 与cache和写缓冲区相关的编程接口
5. 5 快速上下文切换技术
5. 5. l 快速上下文切换技术原理
5. 5. 2 快速上下文切换技术编程接口
5. 6 与存储系统相关的程序设计指南
5. 6. l 地址空间
5. 6. 2 存储器格式
5. 6. 3 非对齐的存储访问操作
5. 6. 4 指令预取和自修改代码
5. 6. 5 IMB
5. 6. 6 存储器映射的I/O空间
5. 7 AIOA存储系统的实例
5. 7. 1 L7205的存储系统概述
5. 7. 2 L7205中的SDRAM
5. 7. 3 L7205中的 MMU
第6章 ATPCS介绍
6. 1 ATPCS概述
6. 2 基本ATPCS
6. 2. l 寄存器的使用规则
6. 2. 2 数据栈使用规则
6. 2. 3 参数传递规则
6. 3 几种特定的ATPCS
6. 3. l 支持数据栈限制检查的ATPCS
6. 3. 2 支持只读段位置无关(ROPI)的ATPCS
6. 3. 3 支持可读写段位置无关(RWPI)的ATPCS
6. 3. 4 支持ARM程序和Thumb程序混合使用的ATPCS
6. 3. 5 处理浮点运算的ATPCS
第7章 ARM程序和Thumb程序混合使用
7. 1 概述
7. 2 在汇编语言程序中通过用户代码支持interwork
7. 2. l 可以实现程序状态切换的指令
7. 2. 2 与程序状态切换相关的伪操作
7. 2. 3 进行状态切换的汇编程序实例
7. 3 在C/C++程序中实现interwork
7. 4 在汇编语言程序中通过连接器支持interwork
7. 4. l 利用veneers实现汇编程序间的程序状态切换
7. 4. 2 利用veneers实现汇编程序与C/C++程序间的程序状态切换
第8章 CC++以及汇编语言的混合编程
8. l 内嵌汇编器的使用
8. 1. l 内嵌的汇编指令用法
8. 1. 2 内嵌的汇编器和armasm的区别
8. l. 3 在CC++程序中使用内嵌的汇编指令
8. 1. 4 内嵌汇编指令的应用举例
8. 2 从汇编程序中访问C程序变量
8. 3 汇编程序.C程序以及C++程序的相互调用
8. 3. l 在C++程序中使用C程序头文件
8. 3. 2 汇编程序.C程序以及C++程序的相互调用举例
第9章 异常中断处理
9. 1 ARM中异常中断处理概述
9. 1. 1 ARM体系中异常中断种类
9. 1. 2 异常中断向量表及异常中断优先级
9. 1. 3 异常中断使用的寄存器
9. 2 进入和退出异常中断的过程
9. 2. 1 ARM处理器对异常中断的响应过程
9. 2. 2 从异常中断处理程序中返回
9. 3 在应用程序中安装异常中断处理程序
9. 3. 1 在系统复位时安装异常中断处理程序
9. 3. 2 在C程序中安装异常中断处理程序
9. 4 SWI异常中断处理程序
9. 4. 1 SWI异常中断处理程序的实现
9. 4. 2 SWI异常中断调用
9. 5 FIQ和IRQ异常中断处理程序
9. 5. 1 IRQ/FIQ异常中断处理程序
9. 5. 2 IRQ异常中断处理程序举例
9. 6 复位异常中断处理程序
9. 7 未定义指令异常中断
9. 8 指令预取中止异常中断处理程序
9. 9 数据访问中止异常中断处理程序
第10章 ARM C/0++编译器
10. 1 ARM C/C++编译器概述
10. 1. 1 ARM C/C++编译器及语言库介绍
10. l. 2 ARM编译器中与搜索路径相关的一些基本概念
10. 2 ARM编译器命令行格式
10. 2. l 过程调用标准
10. 2. 2 设置源程序语言类型
10. 2. 3 指定搜索路径
10. 2. 4 设置预处理选项
10. 2. 5 设置输出文件类型
10. 2. 6 指定目标处理器和ARM体系版本
10. 2. 7 生成调试信息
10. 2. 8 代码生成的控制
10. 2. 9 控制警告信息的产生
10. 2. 10 编译时进行的一些额外的检查
10. 2. 11 控制错误信息
10. 3 ARM编译器中的pragmas
10. 4 ARM编译器特定的关键词
10. 4. 1 用于声明函数的关键词
10. 4. 2 用于声明交量的关键词
10. 4. 3 用于限定数据类型的关键词
10. 5 ARM编译器支持的基本数据类型
10. 6 ARM编译器中预定义宏
10. 7 ARM中C/C++库
10. 7. 1 ARM中C/C++运行时库概述
10. 7. 2 建立一个包含C/C++运行时库的C/C++应用程序
10. 7. 3 建立不包含C运行时库的应用程序
10. 7. 4 裁减C/C++运行时库以适应特定的目标运行环境
第11章 ARM连接器
11. 1 ARM映像文件
11. 1. 1 ARM映像文件的组成
11. 1. 2 ARM映像文件的入口点
11. 1. 3 输入段的排序规则
11. 2 ARM连接器介绍
11. 3 ARM连接器生成的符号
11. 3. 1 连接器生成的与域相关的符号
11. 3. 2 连接器生成的与输出段相关的符号
11. 3. 3 连接器生成的与输入段相关的符号
11. 4 连接器的优化功能
11. 5 运行时库的使用
11. 5. 1 C/C++运行时库与目标文件
11. 5. 2 查找需要的C/C++运行时库
11. 5. 3 选择合适种类的C/C++运行时库
11. 5. 4 扫描C/C++运行时库
11. 6 从一个映像文件中使用另一个映像文件中的符号
11. 6. 1 symdefs文件
11. 6. 2 建立symdefs文件
11. 6. 3 symdefs文件的使用
11. 7 隐藏或者重命名全局符号
11. 7. l steering文件的格式
11. 7. 2 steering文件中的命令
11. 8 ARM连接器命令行选项
11. 9 使用scatter文件定义映像文件的地址映射
11. 9. l scatter文件概述
11. 9. 2 satter文件中各部分介绍
11. 9. 3 scatter文件使用举例
第12章 嵌入式应用程序示例
12. l 嵌入式应用程序设计的基本知识
12. 1. 1 嵌入式应用系统中的存储映射
12. 1. 2 系统初始化
12. 2 使用semihosting的 C语言程序示例
12. 2. 1 源程序分析
12. 2. 2 生成映像文件
12. 3 一个嵌入式应用系统示例
12. 3. l 源程序分析
12. 3. 2 生成映像文件
12. 3. 3 本例中地址映射模式
12. 4 进行ROM/RAM地址重映射的嵌入式应用系统
12. 4. l 地址映射模式
12. 4. 2 源程序分析
12. 4. 3 生成映像文件
12. 5 一个嵌入式操作系统示例
第13章 使用CodeWarrior
13. 1 CodeWarrior for ADS概述
13. 2 简单工程项目的使用
13. 2. 1 工程项目窗口
13. 2. 2 简单工程项目的使用
13. 3 配置生成目标
13. 3. 1 Debug Settings对话框介绍
13. 3. 2 设置牛成目标的基本选项
13. 3. 3 汇编器选项设置
13. 3. 4 编译器的选项设置
13. 3. 5 连接器的选项设置
13. 3. 6 fromELF工具的选项设置
13. 4 复杂工程项目的使用
13. 4. l 建立一个新的生成目标
13. 4. 2 将一个生成目标更名
13. 4. 3 建立生成目标之间的依赖关系
13. 4. 4 子工程项目的使用
13. 5 工程项目模板
13. 5. 1 ADS中工程项目模板的使用
13. 5. 2 建立用户工程项目模板
13. 6 编译和连接工程项目
13. 6. 1 编译文件
13. 6. 2 生成工程项目
第14章 ARM体系中的调试方法
14. 1 ARM体系中调试系统概述
14. 2 基于Angel的调试系统
14. 2. l 基于Angel的调试系统的概述
14. 2. 2 使用Angel开发应用程序
14. 2. 3 Angel执行的操作
14. 2. 4 将Angel移植到特定的目标系统
14. 3 基于JTAG的调试系统
14. 3. l 基于JTAG的调试系统的特点
14. 3. 2 基于JTAG的调试系统结构
14. 3. 3 目标系统中的调试功能扩展部件
14. 3. 4 基于JTAG的调试过程
14. 4 ADW使用介绍
14. 4. 1 ADW概述
14. 4. 2 ADW中的窗口
14. 4. 3 ADW使用介绍

⑤ 学习Linux的步骤是怎样的

对于Linux的学习,可以分为四个阶段,Linux初级入门阶段→Linux中级进阶→Linux高级进阶→Linux资深方向细化阶段
第一阶段:初级阶段
初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。
1. Linux基础知识、基本命令;
2. Linux用户及权限基础;
3. Linux系统进程管理进阶;
4. linux高效文本、文件处理命令;
5. shell脚本入门
第二阶段:中级进阶
中级进阶需要在充分了解linux原理和基础知识之后,对上层的应用和服务进行深入学习,其中说到服务肯定涉及到网络的相关知识,是需要花时间学习的。
1. TCP/IP网络基础;
2. Linux企业常用服务;
3. Linux企业级安全原理和防范技巧;
4. 加密/解密原理及数据安全、系统服务访问控制及服务安全基础;
5. iptables安全策略构建;
6. shell脚本进阶;
7. MySQL应用原理及管理入门
第三阶段:Linux高级进阶
1. http服务代理缓存加速;
2. 企业级负载集群;
3. 企业级高可用集群;
4. 运维监控zabbix详解;
5. 运维自动化学习;
第四阶段:Linux资深方向细化
1. 大数据方向;
2. 云计算方向;
3. 运维开发;
4. 自动化运维;
5. 运维架构师
以上是Linux的一个学习方向和路线,对于Linux学习是一个需要坚持的过程,也许通过自学或者培训,3至6个月都可以把基本知识学会,但是重在实践,深入的思考和不断的摸索,你会发现Linux更多的美!

⑥ ARM体系结构与编程的参考文献

1. KaiHwang着.王鼎兴,沈美明等译《高等计算机系统结构并行性可扩展性可编程性》北京:清华大学出版社1995
2. 郑纬民,汤志忠编着.《计算机系统结构》北京:清华大学出版社1998
3. NucleusPLUSReferencemanual.AcceleratedTechnology
4. L7200-05SDB-HWusersmanual.LinkUpSystemsCorporation2000
5. L7210DataBookRev1_2.LinkUpSystemsCorporation2000
6. DDI0100E_ARM_ARM.ARMLimited2000
7. DUI0068B_ADS1_2_Assembler.ARMLimited2001
8. DUI0151A_ADS1_2_LinkUt.ARMLimited2001
9. DUI0067D_ADS1_2_CompLib.ARMLimited2001
10. DUI0065D_ADS1_2_CodeWarrior.ARMLimited2001
11. DUI0058D_ADS1_2_DebugTarg.ARMLimited2001
12. DDI0192A_720T_R3.ARMLimited2000
13. DAI0048A_scatterload.ARMLimited1998
14. AdamCaly.n.Motorola,Inc.
15. DennisEdwards.ExecutingOutofROM.2002EmbeddedSystemsConference,SanFrancisco

⑦ 杜春雷的《arm体系结构与编程》,这本书如何,适合自学吗,题主是一个

这本书知识点掌握后会对ARM硬件内核有较为透彻的了解。但里面牵涉内容比较广泛,对于初学者比较难一次性掌握。

⑧ ARM嵌入式系统结构与编程的内容简介

本书是作者根据多年开发和教学实践经验并考察了当前嵌入式发展的最新动向编着而成。在内容设计上,本书采取了循序渐进的原则,对嵌入式底层硬件知识进行精心规划,以大量的实例说明技术难点,深入浅出,使嵌入式系统初学者能够以“arm体系结构→指令系统→汇编程序设计→混合编程→硬件下编程”为主线,以阶梯式前进的方式,低起点、高效率地学习理论、深入实践,从而为嵌入式系统开发打下坚实的基础。.
本书结构合理、实例丰富,具有很强的实践性和实用性,本书可作为高等学校计算机、电子信息类本科生、研究生进行嵌入式系统学习的教材或参考书,也适合嵌入式开发的工程技术人员和广大的嵌入式开发爱好者学习使用。

⑨ ARM体系结构与编程的内容简介

ARM处理器是一种16/32位的高性能、低成本、低功耗的嵌入式RISC微处理器,由ARM公司设计,然后授权给各半导体厂商生产,它目前已经成为应用最为广泛的嵌入式处理器。
本书分14章对ARM处理器的体系结构、指令系统和开发工具作了比较全面的介绍。其中包括ARM体系介绍、ARM程序设计模型、ARM汇编语言程序设计、ARM C/C++语言程序设计、ARM连接器的使用、ARM集成开发环境CodeWarrior IDE的介绍及高性能的调试工具ADW的使用。并在此基础之上介绍一些典型的基于ARM体系的嵌入式应用系统设计时的基本技术。通过阅读本书可以使读者掌握开发基于ARM的应用系统的各方面的知识。
本书既可作为学习ARM技术的培训材料,也可作为嵌入式系统开发人员的参考手册。

⑩ 自学ARM嵌入式应该先从哪些知识入手

我不知道你有没有和arm相关的学习基础,既然你说你是个新手,我就按照我如何学习arm的方法说说,-_-
1,arm是比较难的嵌入式方案,也是炙手可热的嵌入式方案,所以学好arm高薪恨容易,所以在学好arm之前,你必须建立很好的学习兴趣。
2,学习arm,不要着急上手arm开发板,不然遇到很多问题你都无法下手,建议你先认真大好基础。现在arm一般和linux搭配使用,所以建议你先大好linux基础,以后在上手arm就容易多了。
3,学习linux之后,你要晓得c语言还是蛮重要的。
4,在1,2之后希望你能够拥有一块开发板,不贵3,4百的样子,我自己有3,4块了,你先买个初级入门的,这样你就可以将linux搭起来建立环境使用arm开发板了。
4,说起来轻巧,做起来难,希望你有持之以恒的精神,我大学2年级就开始 学习了,如果有什么问题尽管联系我,这是我的网站嵌入式分享网站www.ourunix.org,通过这个你自然知道如何学习了。希望你成功。
我现在在编译android,准备移植呵呵,打字很费劲,所以只能写到这了

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:750
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:719
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:879
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1127
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:351
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:912
python股票数据获取 发布:2025-10-20 07:39:44 浏览:876