嵌入式ARM的学习方法下

因为有的人打着嵌入式硬件工程师的名号装逼,其实嵌入式硬件就是普通硬件工程师做的工作。我们这里都是讨论软件方面的内容,而且嵌入式是以软件为主导的(工资上有较大差距)。如果对硬件感兴趣的,可以参看博客《如何学习硬件设计——理论篇》和《如何学习硬件设计——实践篇》,这里不要求掌握硬件,有一定程度的了解即可。

一、增强理论知识

1、单片机。具体的学习路线请参考博客文章《如何学习单片机》。不想学单片机的话,可以学计算机组成原理。

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

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

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

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

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

7、计算机网络基础。开发中用到的socket、ssh、tftp、http就会涉及到网络相关的知识。

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

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

先下载一本韦东山的《嵌入式Linux应用开发完全手册》,还要买一块2440的开发板(虽然s3c2440已经停产,但是这芯片依照是资料最多的一块),然后进入七、八、九、十阶段。其中第七、八、九阶段,使用开发板自带的bootloader即可,暂时不必研究它。

二、文件系统

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

三、内核裁剪

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

四、驱动开发

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

五、移植bootloader

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

六、图形界面开发

常用的GUI图形库有:GTK++、QT、JAVA、安卓等。有C++基础的,建议学习QT,不会C++的,建议学JAVA。在前期的GUI开发,可以不需要使用开发板,而2440下适合跑QT,如果要跑JAVA、安卓的话,建议换一块开发板,可以考虑Exynos4412开发板。此外,你还可以用python自带的TKinter来开发图形界面。推荐《QT5编程入门》、《疯狂JAVA讲义》、《疯狂Android讲义》、《python编程入门》。

因为安卓系统是在linux的基础上封装了一层API,所以,如果做安卓驱动,就得掌握linux(上面前十个阶段)。如果只做安卓app,你只需要使用Android
studio或者eclipse配合安卓模拟器(最好用安卓手机),就可以了,不需要学习linux,也不需要开发板。

在你做过几个GUI项目之后,再学习UML和设计模式,这会大大增强你的代码架构能力。

七、Web开发

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

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

时间: 2024-10-16 06:10:36

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

嵌入式ARM的学习方法上

嵌入式分为广义和狭义两种.广义的嵌入式就是片上系统(system on a chip),包括单片机.PSOC.NIOS.Microblaze等.而狭义的嵌入式就是ARM9.cortex A8等特定的跑操作系统的芯片.这里主要介绍狭义嵌入式的学习路线嵌入式ARM的学习方法. 还是主流的方法,先学会使用它,再深入研究底层. 常用的操作系统有Linux.WIN CE.安卓.Vxworks.QNX.OSE等,目前资料最多的是linux,所以下面以linux为例. 一.安装虚拟机和linux系统 一般人用

嵌入式ARM核心板的介绍

嵌入式ARM核心板(也称ARM CPU模块)是根据不同半导体原厂ARM芯片的核心资源和特点,精心设计出来,并经过严格生产测试的工业级品质产品. 用户可根据工业环境中特定应用场合需求,选择合适的嵌入式ARM核心板,方便快捷的构建软.硬件系统平台,降低开发难度,缩短产品开发周期,同时也可以减少研发成本的投入,帮助客户简单快速的实现最终产品. ARM核心板的主要特点: 支持包括ARM9,Cortex-A5,Cortex-A8,Cortex-A9等系列ARM内核芯片,满足客户从低端到高端各种应用需求;

交叉编译Python至嵌入式arm

这是求毕业哥的处女座博客,希望大家别喷!!! 由于实验室项目的需要,求毕业哥于昨晚(2014/11/05)9点开始学习Python.自身有点强迫症,装什么软件都要求新的,所以给自己 Windows装了个Python3.3(也为自己埋了个雷).之前在Linux机器上装了Python-2.7.3,我没多想,以为Python高级版 是向下兼容的.于是就开始了求毕业哥的踩雷之路...raw_input(),``,socket通信...总之各种版本间不兼容啊!!! 言归正传,求毕业哥(以下简称,求毕业)的

嵌入式arm linux环境中gdb+gdbserver调试

一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试. Gdbserver在目标系统中运行,gdb则在宿主机上运行.目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序.在此我们还不能直接采用linux发行版自带的gdb,需要交叉编译gdb和gdbserver. 二.编译gdb和gdbserve

交叉编译Python至嵌入式arm(支持import sqlite3,datetime等)-----Cross Compiling Python for Embedded Linux

这是求毕业哥的处女座博客,希望大家别喷!!! 由于实验室项目的需要,求毕业哥于昨晚(2014/11/05)9点开始学习Python.自身有点强迫症,装什么软件都要求新的,所以给自己Windows装了个Python3.3(也为自己埋了个雷).之前在Linux机器上装了Python-2.7.3,我没多想,以为Python高级版是向下兼容的.于是就开始了求毕业哥的踩雷之路...raw_input(),``,socket通信...总之各种版本间不兼容啊!!! 言归正传,求毕业哥(以下简称,求毕业)的实验

嵌入式开发——boa服务器下的ajax与cgi通信

博主最近在最有做一个嵌入式课程设计,要求是利用基于cortax a8的物联网实验箱做一个简单的嵌入式网页交互系统作为课程设计来验收评分.因为本身自己是学前端的,所以网页部分并不是重点,主要是和boa服务器之间的通信,课程实验给的例子是直接使用printf来打印html标签形成新的页面,有过前端开发经验的人都知道这种做法效率低下而且没有办法实现异步刷新,所以博主采用ajax来进行boa服务器下的异步通信. 主要实现及踩过的坑如下: 1. get 还是 post请求:怎么发请求参见W3School上

嵌入式ARM开发环境搭建

1. 安装,配置,启动FTP服务 安装FTP: sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_enable=YES#write_enable=YES 修改完成后执行以下命令重启此服务sudo /etc/init.d/vsftpd restart 2. 安装,配置,启动SSH服务 sudo apt-get install openssh-server 3. 安装,配置,启动NFS服务 sudo

嵌入式ARM处理器

目前,嵌入式多核处理器已经在嵌入式设备领域得到广泛运用,但嵌人式系统软件开发技术还停留在传统单核模式,并没有充分发挥多核处理器的性能.程序并行化优化目前在PC平台上有一定运用,但在嵌入式平台上还很少,另外,嵌入式多核处理器与PC平台多核处理器有很大不同,因此不能直接将PC平台的并行化优化方法应用到嵌人式平台. 嵌入式多核处理器结构 嵌人式多核处理器的结构包括同构(Symmetric)和异构(Asymmetric)两种.同构是指内部核的结构是相同的,这种结构目前广泛应用在PC多核处理器;而异构是指

_未完成;交叉编译QT5.9安装到嵌入式arm板子上

ref:https://blog.csdn.net/u012175418/article/details/52704734 平台 :Ubuntu 18.04 QT版本   :5.9.1 (open source) g++ : 7.3.0arm-gcc :4.8.1 arm-board :Linux 3.4  for  s5p6818 以下采用的系统为ubuntu16.04,开发板为迅为iTOP4412,4.3寸屏. 下载qt5.7源码qt-everywhere-opensource-src-5.