基于ARM的嵌入式系统与C语言编程的结合是无操作系统支持的嵌入式系统应用边界扩展的体现。本文从介绍嵌入式系统和ARM概念入手,引出基于ARM的嵌入式系统的与C语言编程的应用结合点,重点分析了在ARM嵌入式平台上进行C语言编写系统软件和应用软件的方法,希望为软件编程人员提供一些思考。

随着计算机技术尤其是计算机信息控制技术的深入发展,嵌入式技术得以出现,并已在众多消费类电子产品中得到成熟应用,如汽车电子设备、视频电子产品、智能家电等,目前正在向装备制造业领域、工业自动化控制、航天产品、网络等高端领域蔓延。而ARM(Advanced RISC Machines)作为嵌入式处理器中的高端代表,其奠定了嵌入式系统的强大动力。由于嵌入式开发的一个核心特点是其本身不具备自我开发能力,而是必须借助一套专门的开发工具和某种程序环境来实现,而C语言环境和C语言编程正是为嵌入式系统开发提供了某些条件,与此同时ARM嵌入式系统也为基于C语言的系统软件和应用软件编写提供了良好平台。本文就从介绍嵌入式系统和ARM概念入手,引出基于ARM的嵌入式系统的与C语言编程的结合点,重点分析了在ARM嵌入式平台上进行C语言编写系统软件和应用软件的方法,具有一定的价值。

一、嵌入式系统及ARM概念介绍

嵌入式系统也即嵌入式计算机系统,主要用于对机器装置乃至大型厂房等进行控制或监视,其特点可与普通的PC机系统对比来体现:一是PC机系统面向大众和大部分行业领域,而嵌入式计算机系统一般只针对特定应用;二是PC机系统的软件一般存储于磁盘或硬盘当中,而嵌入式系统软件则基本上固化在存储器芯片或单片机上;三是嵌入式系统要依赖一套专门的开发工具或编程环境来实现间接开发。嵌入式系统也同PC机一样由操作软件和应用软件组成,总的来看,其架构包含了嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件,而这其中嵌入式处理器如同PC机的CPU,是整个嵌入式系统的核心部件。ARM系列微处理器便是嵌入式处理器中的佼佼者,其因处理速度快、功耗低且价格低廉而拥有着良好的应用前景,目前基ARM微处理器已广泛应用于电子产品、通信网络系统和军事系统等领域。

二、基于ARM嵌入式系统的C语言编程研究

由于当前ARM嵌入式系统涉及到的诸如系统引导、外围驱动程序、存储管理以及一些应用程序等90%需要应用到C语言或C语言编程环境,因此分析ARM嵌入式系统与C语言编程之间的关系以及二者之间技术融合可以从系统引导、外围驱动程序、类似存储管理等几个方面来着手。

(一)main函数与系统引导

main函数导源出C语言,然而嵌入式系统由于缺乏操作系统内核,所以对main函数的初始化往往需要借助系统引导模块来完成,而汇编语言正是完成系统引导系统初始化工作的关键程序。系统引导模块在完成各种初始化任务后,通过一条跳转指令进入C的主入口main,从而实现了C应用程序的控制权转移。由此可见,ARM嵌入式系统与C语言编程的技术结合点在于系统引导实现控制权转移至C的main函数。

(二)存储管理

ARM嵌入式系统下的存储管理,主要是指动态的内存管理,malloc和free两个标准库函数的主要功能是实现C语言中动态内存分配与释放。Malloca是从系统空闲内存中分配合适的内存块,而free函数则是负责回收这些内存块。由于以上两个函数需要借助操作系统内核来实现功能,而在ARM裸平台上无法实现就地调用,因此需要编写m_alloc和_free两个函数,以实现动态的管理。

(三)外围驱动程序设计

C语言驱动程序一般指的是中断处理程序设计以及基础之上的驱动程序设计。嵌入式系统的外围设备通常是以实现与CPU中断来进行通信,而中断中出现的各种变量会因处理不及时或不当而影响到全局变量的优化,而这大大会影响到系统的运行稳定性和效率,解决办法是在声明变量时增添volatile修饰符以通知编译器存在一个可能被异步时间改变的量,通过编译器功能来实现编程指令的优化。

三、结语

本文在此只介绍了几种具有代表性的ARM嵌入式系统与C语言编程的结合点,除此还有诸如应用程序设计中,嵌入式平台上的应用程序设计常常面临着标准库函数无法直接借用和内存资源有限带来的栈容量无法自动扩展的设计难题,而借助C语言编程很好地解决了这一问题。也就是,ARM嵌入式系统与C语言编程的结合,解决了许多嵌入式系统存在的关键问题,这大大提高了嵌入式技术水平和系统的完善度。相信随着嵌入式软件的不断增多和成熟,ARM嵌入式系统将得到越来越多的应用。
文章来源于网络

ARM嵌入式系统C语言编程分析相关推荐

  1. 嵌入式C语言编程课件,嵌入式系统C语言编程基础PPT课件

    <嵌入式系统C语言编程基础PPT课件>由会员分享,可在线阅读,更多相关<嵌入式系统C语言编程基础PPT课件(81页珍藏版)>请在人人文库网上搜索. 1.嵌入式系统C语言编程基础 ...

  2. 嵌入式系统C语言编程基础

    文章目录 Q1:所有嵌入式系统的主流程最后都进入一个死循环,怎样用C语言实现─个死循环? A1 Q2:while(){...}和do{....}while()有什么区别? A2 Q3:用变量a给出下列 ...

  3. arm7c语言编程实例,ARM芯片嵌式系统C语言编程…….pdf

    ARM芯片嵌式系统C语言编程-- 咳 牡 痞 姻 亢 朔 台 矢 盆 校 摇 为 嘛 坷 趴 鉴 皋 己 硕 可 费 味 聋 曝 特 扳 婚 雅 善 湾 搜 茎 昼 抱 掀 平 九 牙 河 诵 弘 甥 ...

  4. 掌财社:新手学习嵌入式用什么语言编程?

    随着AI智能产品的出现,市场上对于嵌入式开发人员需求也越来越多,嵌入式系统成为了一个很时尚的名词,应用范围也相当的广泛,很多人都想入行嵌入式,那么,学习嵌入式用什么语言编程?这个对于新手来说是一个比较 ...

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

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

  6. c语言static. volatile,嵌入式系统C语言重点语法const、volatile、static、堆栈等的意义及用法...

    原标题:嵌入式系统C语言重点语法const.volatile.static.堆栈等的意义及用法 在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场. 要点:堆, ...

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

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

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

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

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

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

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

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

最新文章

  1. 哨兵机器人钢力士_还记得秒杀X战警的哨兵机器人吗?在漫威原著里,X战警更憋屈...
  2. Vue 学习 第六天学习笔记
  3. Integer.parseInt() 与 Integer.valueOf() 区别
  4. LintCode 16. 带重复元素的排列
  5. python小练习—名片管理系统(增、删、改、查、数据本地保存)
  6. Web Api 中使用 PCM TO WAV 的语音操作
  7. 修改手机屏幕刷新率_240Hz 超高刷新率,这手机屏幕比电竞专业屏还牛
  8. CSS垂直居中的方法
  9. [转载] Python 统计学习方法——kdTree实现K近邻搜索
  10. 取PE文件OriginalFilename-解析VERSION资源
  11. 编译原理第一章笔记--绪论
  12. python 回归方程及回归系数的显著性检验_回归方程及回归系数的显著性检验
  13. 泰坦尼克号沉没之谜,用数据还原真相——Titanic获救率分析(用pyecharts)
  14. 怎样把可调DC-DC变身为数控稳压电源
  15. [面试题]1000瓶毒药里面只有1瓶是有毒的,问需要多少只老鼠才能试出那瓶有毒。
  16. 《伯克毕生发展心理学3》
  17. 2022学生党蓝牙耳机怎么选?最新蓝牙耳机排行榜
  18. python设置字体_python操作word设置字体
  19. 【国庆献礼】浅谈国产数据库
  20. selenium自动化爬取Boss直聘职位数据 按照热门城市

热门文章

  1. 【Windows】合并分区教程(解决C盘空间不足)
  2. CodeBook 可以自定义字符集的密码本
  3. python代码美化工具black
  4. 图像处理一之-摄像头二值化处理-(什么是二值化)
  5. Linux用户管理 (实验2)
  6. TwinCAT3入门教程2-程序工程创建
  7. FOC控制原理——Clark变换和Park变换
  8. 非负矩阵分解NMF简介
  9. SCI论文写作--科研其实远没有那么难
  10. z8350cpu linux,跑分 Intel Z8350小有提升_平板电脑评测-中关村在线