0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习嵌入式系统C语言编程的关键点

单片机匠人 来源:张飞实战电子 作者:黄忠老师 2021-09-29 15:48 次阅读

1、真正深刻地认识存储器

冯.诺伊曼说过“程序等于算法加数据结构”。首先,算法是什么?算法是通过存储在存储器中的程序代码实现的。其次,数据结构又是什么?数据结构是存放在存储器中的各种类型的数据。程序本质上就是处理器通过执行存放在存储器中的程序代码对存放在存储器中的数据进行操作和变换的过程。在这个过程中除了处理器本身外,最核心的环节就是存储器。因为不管是程序的可执行代码还是数据都是存放在存储器中的。撇开代码、变量、数组、指针、结构、堆栈等这些软件中的各个元素的表象,剩下的本质就是存储器!因此,理解C语言的关键是真正理解存储器。

每一个存储单元都有两个属性:一是存储器里面存放的内容,二是存储器的地址。这个内容可以是代码,也可以是数据,甚至是另一个存储单元的地址(这个时候往往我们称这个存储单元放的是一个指针)。

2、认识和理解嵌入式C编程环境

嵌入式软件开发的 一个非常重要的特点就是交叉编译,也就是开发工具运行的环境和被调试的程序不是运行在同一个硬件平台(处理器)上的。一般而言编译器、汇编器、链接器等工具链软件以及调试工具都运行在通用的PC机平台上;调试工具通过一定的通信手段将链接器输出的可执行文件下载嵌入式系统开发板(一般称为目标系统)的存储器中,并通过一定的机制控制和观测目标系统的寄存器、存储器等。这个开发过程往往需要使用多种不同的工具,对此初学者很容易感到困惑。只有真正理解开发过程中各个环节的作用,才能对嵌入式系统C编程有深入的认识。

另一个问题是,虽然C语言是一门高级语言,但是想真正用好C语言,程序员必须对编程过程中所使用的工具非常了解,清楚地知道每个工具的作用以及这些工具与硬件平台的相互关系。比如:编译器是如何处理全局变量和全局数组的?对于全局变量的处理与局部变量有什么不同?编译器是如何利用堆栈进行传递参数的?又比如:C语言的编译器、链接器是如何处理一个项目中多个C文件之间的相互依赖关系的?链接器最终是如何生成可执行文件的?可执行文件的内存映像又是如何安排的?这些问题初看起来似乎与C编程本身没有什么关系,但因为在嵌入式软件的开发过程中程序员要经常直接和底层的设备与工具打交道,所以一个嵌入式软件的程序员应该对这些问题了如指掌。

3、认识和掌握C语言中的常见陷阱

C语言不是一门面向初学者的编程语言,C语言发明者的初衷是希望设计一种面向编译器和操作系统设计的高级语言,因此C语言中充满了各种各样对于初学者而言的陷阱。这些陷阱一方面来自于C语法本身的灵活性,另一方面来自于C对存储器边界的不检查,因此非常容易在代码中造成存储器越界访问的问题。在C语言中,最容易出错的地方是与存储器相关的内存访问越界以及内存泄漏的问题,C语言的使用者必须非常小心地规避这些陷阱。

4、掌握C语言程序设计过程中的调试方法

任何程序在编写的过程中都需要调试,尤其对于比较复杂的系统更是如此。面对程序编写过程中出现的问题,比较现实的问题应该是如何在最短的时间内发现程序错误的根源,修改这个错误,并且吸取教训争取在以后的程序中不再犯同样的错误。在这个环节中最重要也是最需要技巧的工作就是找到问题的根源。虽然很少有相关的参考书介绍这方面的内容,但事实上,程序的调试是有一定的方法和技巧的。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5073

    文章

    19038

    浏览量

    303592
  • C语言
    +关注

    关注

    180

    文章

    7601

    浏览量

    136272
  • 编程
    +关注

    关注

    88

    文章

    3597

    浏览量

    93615

原文标题:如何学好嵌入式系统中的C语言编程

文章出处:【微信号:gh_e7f294a514ca,微信公众号:单片机匠人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    零基础嵌入式开发学习路线

    底层岗位方向比如:嵌入式硬件工程师、驱动开发工程师等岗位投简历啦!当然,这只是一个大致的路线,并不涵盖所有的细节和知识。如果你想深入学习,还需要仔细研究一些书籍和资料,也可以参考多做一些实践项目。
    发表于 10-25 15:55

    嵌入式学习建议

    原理的嵌入式操作系统进行学习。不要一开始就学习几种操作系统,理解了基本原理,实践中确有实际需要再学习
    发表于 10-22 11:41

    嵌入式系统的未来趋势有哪些?

    嵌入式系统是指将我们的操作系统和功能软件集成于计算机硬件系统之中,形成一个专用的计算机系统。那么嵌入式
    发表于 09-12 15:42

    嵌入式C编程常用的异常错误处理

    嵌入式C编程中,异常错误处理是确保系统稳定性和可靠性的重要部分。以下是一些常见的异常错误处理方法及其详细说明和示例: 1. 断言 (Assertions) 断言用于在开发阶段捕获程
    发表于 08-06 14:32

    嵌入式系统怎么学?

    一系列课程和技术,包括但不限于以下内容: 1、基础知识:学习计算机组成原理、数字电路、模拟电路等基础知识,建立对计算机硬件的认知与理解。 2、编程语言:掌握至少一种嵌入式
    发表于 07-02 10:10

    如何提升嵌入式编程能力?

    /C++:大多数嵌入式系统使用CC++编程语言,因
    发表于 06-21 10:01

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C
    发表于 04-07 16:03

    嵌入式编程片上系统是什么

    嵌入式编程片上系统(Embedded Programmable System-on-Chip,或简称EPSoC)是一种特殊的嵌入式系统,它
    的头像 发表于 03-28 15:33 539次阅读

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C
    发表于 03-25 14:12

    嵌入式软件开发应该掌握哪些知识?

    掌握的知识 1.基础知识 1.1 c/c++编程语言和数据结构 C/C++ 是
    发表于 02-19 11:23

    c语言,c++,java,python区别

    操作系统嵌入式系统等对性能要求较高的场景。C语言的语法相对简单,学习曲线较平缓,也是
    的头像 发表于 02-05 14:11 2275次阅读

    嵌入式学习步骤

    开发。 嵌入式学习步骤总结如下: (1).确定目标平台:选择适合您要开发的嵌入式系统的硬件平台。这取决于您要控制的设备以及您需要执行的任务。 (2).选择
    发表于 02-02 15:24

    聊一聊嵌入式C语言

    作为一名嵌入式软件开发者,熟练掌握嵌入式C语言对我的日常工作至关重要。
    的头像 发表于 01-22 09:28 528次阅读

    C语言构建高效的嵌入式程序

    嵌入式工程师在编写C语言程序时,需要注重效率和清晰的思路。本文将通过解析经典问题“猴子选大王”来展示如何用C语言思维方式构建高效、清晰的程序
    的头像 发表于 12-21 09:27 605次阅读

    嵌入式C语言高手炼成之内存操作篇

    嵌入式系统编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它
    的头像 发表于 12-11 17:20 492次阅读