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

第一阶段:学习“裸机”编程
(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)》

对于arm嵌入式系统的一点认识相关推荐

  1. 网络上所谓的《ARM嵌入式系统入门最好的文章》

    一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位. 广义的嵌入式无非几种:传统的什么51.AVR.PIC称做嵌入式微控制器:ARM是嵌入式微处理器 ...

  2. ARM嵌入式系统malloc的实现(C源码)

    在ARM嵌入式系统实现malloc内存分配机制. 在ARM cpu上验证通过. ps:也可在pc ubuntu linux进行验证 #include "include/lib_replace ...

  3. 8、ARM嵌入式系统:UART初始化

    一.UART概述 百度上UART的定义:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART.它将要传输的资料在串行通信与并行 ...

  4. 7、ARM嵌入式系统:LCD/数码管/OLED初始化

    一.LCD/数码管模块在板子上的位置 LCD和数码管在板子上都分别有一个插槽. 二.LCD/数码管初始化代码 //SMG init void SMG_Init() { /* PORTB and POR ...

  5. [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件

    本章的最后,通过描述ARM为核心的嵌入式系统,来介绍了嵌入式系统的软件和硬件构成和结构.这里根据这部分的介绍以及其他的文章,描述下通用的嵌入式系统的软件和硬件.     首先来说下硬件,书中说,包含有 ...

  6. 嵌入式:ARM嵌入式系统开发流程概述

    文章目录 嵌入式开发的具体过程 开发流程图 嵌入式软件开发环境 交叉开发环境 远程调试结构图 嵌入式应用软件开发的基本流程 软件模拟环境 目标板与评估板 嵌入式软件开发的可移植性和可重用性 嵌入式开发 ...

  7. 移植tcpdump到ARM嵌入式系统

    移植tcpdump到嵌入式系统 tcpdump和libpcap的下载链接:Home | TCPDUMP & LIBPCAP 百度网盘下载链接:https://pan.baidu.com/s/1 ...

  8. [ARM嵌入式系统开发]第一章之Dhrystone

    在书的第一章开头部分,作者提到了"最成功的ARM内核之一ARM7TDMI,具有最高120 Dhrystone MIPS的性能.高的代码密度和低功耗等特性,使它成为移动嵌入式设备的最佳选择&q ...

  9. ARM嵌入式系统上OpenCL测试

    By Toradex Giovanni Bauermeister 1). 简介 相比曾经,如今科技设备对处理性能和速度要求越来越高.为了应对这种技术需求,许多公司发明了不少方法来获得更好的处理性能.例 ...

  10. openssh arm linux 编译,openssh编译安装到ARM嵌入式系统中

    目录 一.SSHD编译(此步骤在虚拟机上执行) 1.1 在/root/目录下创建ssh目录 1.2 交叉编译zlib 1.3交叉编译openssl 1.4交叉编译openssh 二.移植(此步骤在开发 ...

最新文章

  1. 12306 背后的技术大牛:我不跟人拼智商,我就跟他们拼狠!
  2. 正则表达式的一点奇怪
  3. 浅析java中的死锁_Java学习笔记五十五(死锁问题)
  4. node.js request get 请求怎么拿到返回的数据_使用JS和NodeJS爬取Web内容
  5. [数据结构-划分树小结]
  6. 致青春——谁的青春没有遗憾2018-01-05
  7. 【风控】团伙挖掘中的14大关系类型
  8. GCC,GDB,Makefile
  9. WinCE偶尔不能正常启动(内存清理)
  10. 图像频域增强:带通带阻滤波器
  11. linux从字符界面转入图形界面一法
  12. Android-Handler机制简述
  13. 删除文件出现“文件正在使用或正在打开”
  14. P3110 [USACO14DEC]驮运Piggy Back
  15. 计算机基础知识论文统一格式,大一计算机基础知识论文.docx
  16. SpringBoot+Vue项目小区物业管理系统
  17. 3.1 Vendor Model浅析
  18. 安装Altera USB-Blaster驱动程序遇到的问题
  19. 毫米波技术入局智能家居,是大材小用还是技术革命?
  20. 计算机二级office知识框架,计算机二级Office:Excel模拟分析和图表知识点讲解

热门文章

  1. 达摩院发布2021十大科技趋势(附PDF版)
  2. Java——单例模式:饿汉、懒汉模式
  3. C语言常见的陷阱与缺陷
  4. 小坑远程shell工具
  5. 计算机系统的性能能被准确测量吗,信息技术 基于计算机的软件系统的性能测量与评级...
  6. python sql注入检测脚本_python 打造一个sql注入脚本 (一)
  7. 解析大型门户网站教给我们的PV增加技巧
  8. 数学建模之Python-支持向量回归(SVM)
  9. java 文档注释生成_Java的文档注释之生成帮助文档的实例
  10. matlab中uigetfile命令的应用