对于arm嵌入式系统的一点认识

   从本科开始接触了单片机,并且所有的开发全部停留在“裸机”开发阶段,即后来所谓的嵌入式系统的应用层和驱动层混合在一个框架里编程。这种“裸机”编程在早期功能比较单一且不复杂的系统上具有一定优势,但是随着嵌入式系统的功能越来越集成化和复杂化,早期的“裸机”编程的弊端呈现出来,分层概念在嵌入式系统里越来越多的体现出来。但是“裸机”编程有其自己的“生态环境”,并且其也是后来嵌入式编程的“垫脚石”。
因此,对于嵌入式系统编程,我提出如下几点循序渐进的过程:

第一阶段:学习“裸机”编程
(1)首先打好C语言基础,推荐看《C程序设计语言》,因为所有的“裸机”编程都是基于C语言开发的,并且后边我们接触到的嵌入式linux分时系统也是完全用C语言实现的,学好C语言不仅利于当前的单片机编程,也为后来学习嵌入式linux打下基础;
(2)一般的,单片机编程默认的是从51开始学起,我这里推荐直接从STM学起,利用ST封装的库函数编程,你会开始慢慢理解封装和分层的概念了。这里推荐选择意法半导体家的STM8系列单片机,该系列单片机功耗低,性价比高,片上资源丰富。前期学习时,根据芯片手册,对片上的外设进行编程练习,了解每一种外设的工作原理;在此之后,开始了解芯片的工作模式,即一般的用户模式,中断模式,管理模式等。【了解芯片的工作模式为以后的调试打下基础】
(3)熟悉编译器的使用,针对arm内核的处理器,一般的选择arm公司支持的keilMDK编译器,重点学习该软件的仿真功能。
(4)学习基础的arm汇编语言,阅读Start.S启动文件,明白单片机的工作原理,以及代码是如何在单片机硬件内部执行的。
一般的,“裸机”编程常用且必须要掌握的有:串口编程,IIC编程,定时器编程。
该阶段,推荐阅读的文档 “STM8XXX系列芯片手册”,《C语言程序设计》,《arm汇编语言编程详解》,《Cortex™-M3技术参考手册》,《C语言数据结构》。
第二阶段:嵌入式linux的学习
所有应用的运行环境最终都会归结于系统。所以嵌入式linux系统开发成为当下使用最广泛的系统,其优势不言而喻,可自行百度了解,仅提供循序渐进的学习过程。
(1)需要具备一定的C++基础;
(2)学习linux基本指令;
(3)搭建linux开发环境【软件:VMware虚拟机,Ubuntu12.04系统,arm-none-Linux-gnueabi-gcc交叉编译器 】
(4)学习linux系统编程;
(5)学习linux驱动编程;
(6)学习嵌入式qt图形界面开发。
推荐的书籍:《程序员的自我修养-链接、装载与库》,《Linux设备驱动开发详解》,《linuxC编程一站式学习》,《Linux系统命令及其使用详解》
推荐学习的视频教程:https://pan.baidu.com/s/1mia6pvU《系统编程》
https://pan.baidu.com/s/1slHF1MH《驱动编程》
作为一个硬件开发专业的学生,学会设计原理图和PCB也是基本素养。关于如何画PCB,百度即可。设计电路图,推荐的书籍:
《[晶体管电路设计(上)].铃木雅臣.2004年9月第一版》
《[晶体管电路设计(下)].铃木雅臣.2004年9月第一版 (1)》

你可能感兴趣的:(linux)