怎样学习嵌入式C语言编程

C语言编程分类

C语言编程,这里分成这几类:1.c语言入门学习;2.C语言单片机开发;3.C语言linux应用开发;4.C语言linux驱动开发.

c语言入门学习

学习一本书籍即可,推荐 The C programming language(中文版).pdf.
在上位机使用任何编译器学习即可,把书籍上的练习题做一做,没有实际编程只学习书本,很快就会忘记,即使不会忘记,实际编程也感觉无从下手.

C语言单片机开发

在上面的基础上,需要学习一下单片机编译器的扩展语法,汇编器的宏汇编语言和单片机的汇编语言,还需要学习一下编译器的heap,stack分布情况,单片机的体系结构.这些都不难,花时间一两个月就搞定.汇编语言不要太花时间学习,只要大概浏览一下,真正做的时候,边查手册边做.学习这些的目的是改动启动代码和实现loader功能,移植RTOS.
最终目的是实现稳定的RTOS运行环境,到这来汇编语言和单片机系统结构和编译器手册可以忘记了.接下来就是熟悉RTOS提供的服务,例如建立多任务,任务间通信,中断处理等.
这些服务只要知道怎么用就可以了.最快的方法是使用开发板提供的例子跑跑.然后就是仔细研究RTOS提供的API,看看还有哪些用法,达到熟练使用RTOS.接下来就没有什么难度了,就是熟悉单片机提供的各个模块的功能,例如GPIO,UART,I2C,SPI,USB,网络,CAN,ADC,DAC等等.C语言这时最重要的是熟练使用库函数,这是新手最容易忽略的,此时的库函数比较少,头文件可以在编译器中查找到.推荐参考<<Linux_C函数库参考手册.pdf>>,放在手头参考,这份资料是我遇到最方便的库函数参考手册.
经过一段时间的磨练,如果时间很充足的话可以研究一下RTOS内核源代码,RTOS内核代码都非常少,此时熟练使用了,再看就会发现比较容易看懂.

C语言linux应用开发

首先需要学习一下linux基本操作,推荐鸟哥的私房菜基础篇,操作系统推荐ubuntu.
接下来需要学习makefile这个比较熟练掌握,同时需要熟悉一下gcc编译器,需要熟悉gcc编译器基本配置.makefile学习强烈推荐<<GNU make简明手册.pdf>>,陈浩写的非常简单明了,可惜他英年早逝,非常遗憾.
gcc编译器需要熟悉一些选项例如连接动态库,查找头文件等等,入门参考韦东山编写的<<嵌入式Linux应用开发完全手册>>第三章.
接下来重点是需要学习linux提供的API接口了,推荐教程是:"UNIX环境高级编程"和"Linux System Programming"这两本书.
可以把书中的代码下载下来不时查阅.

C语言linux驱动开发

首先需要学习ARM或RISC-V体系结构,和单片机最主要不同的地方是mmu,cache,tlb这些地方需要深入理解,其他都和单片机大同小异.只要深刻理解了这三个模块才能看到内核中的内存管理,虚拟文件系统等内容.体系结构资料一定要看官网的英文资料.

再次就是需要深入学习一下gcc,as,ld,gdb等工具使用.

内核中是分层结构的,在前期做驱动开发的最重要的是熟悉内核提供的接口函数,先熟练使用接口函数做驱动,深入后再理解接口函数内部原理.

C语言开发其他问题

有些公司要求编程规格,可以参考git链接中提供的资料.
有时会遇到C语言新标准的语法,请到标准官网查询或者git中提供的资料.

参考链接

我把一些常用的资料整理了一下,如有侵权请联系,我会删除.
C语言基础:https://gitee.com/fedorayang/c_base
GNU工具:https://gitee.com/fedorayang/compiler_base

相关推荐

  1. 怎样学习嵌入C语言编程

    2023-12-24 13:20:04       72 阅读
  2. 嵌入学习第二篇——C语言基础10

    2023-12-24 13:20:04       50 阅读
  3. 嵌入C语言学习——基于Linux与GCC

    2023-12-24 13:20:04       55 阅读
  4. 学习笔记之嵌入八股文(C语言)

    2023-12-24 13:20:04       31 阅读
  5. 嵌入学习——C语言基础——day4

    2023-12-24 13:20:04       35 阅读
  6. 嵌入学习——C语言基础——day6

    2023-12-24 13:20:04       34 阅读
  7. 嵌入学习——C语言基础——day10

    2023-12-24 13:20:04       35 阅读
  8. 嵌入学习——C语言基础——day12

    2023-12-24 13:20:04       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 13:20:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 13:20:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 13:20:04       82 阅读
  4. Python语言-面向对象

    2023-12-24 13:20:04       91 阅读

热门阅读

  1. React拖拽实践

    2023-12-24 13:20:04       66 阅读
  2. Pytohn data mode plt

    2023-12-24 13:20:04       50 阅读
  3. 在ajax中使用callback

    2023-12-24 13:20:04       62 阅读
  4. 信息学奥赛一本通2034:【例5.1】反序输出

    2023-12-24 13:20:04       68 阅读
  5. OC学习笔记——基础控件篇

    2023-12-24 13:20:04       48 阅读
  6. 遗传算法及其在稀疏阵列中的应用

    2023-12-24 13:20:04       55 阅读
  7. leetcode 30. 串联所有单词的子串

    2023-12-24 13:20:04       66 阅读