怎样学习嵌入式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

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
宋宝华嵌入式 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索........................................................................7 C 语言高效编程的几招...............................................................................11 想成为嵌入式程序员应知道的 0x10 个基本问题 .........................................................15 C 语言嵌入式系统编程修炼...........................................................................22 C 语言嵌入式系统编程修炼之一:背景篇 ............................................................22 C 语言嵌入式系统编程修炼之二:软件架构篇 ........................................................24 C 语言嵌入式系统编程修炼之三:内存操作 ..........................................................30 C 语言嵌入式系统编程修炼之四:屏幕操作 ..........................................................36 C 语言嵌入式系统编程修炼之五:键盘操作 ..........................................................43 C 语言嵌入式系统编程修炼之六:性能优化 ..........................................................46 C/C++语言 void 及 void 指针深层探索 .................................................................50 C/C++语言可变参数表深层探索 .......................................................................54 C/C++数组名与指针区别深层探索 .....................................................................60 C/C++程序员应聘常见面试题深入剖析(1) ..............................................................62 C/C++程序员应聘常见面试题深入剖析(2) ..............................................................67 一道著名外企面试题的抽丝剥茧 ......................................................................74 C/C++结构体的一个高级特性――指定成员的位数 .......................................................78 C/C++中的近指令、远指针和巨指针 ...................................................................80 从两道经典试题谈 C/C++中联合体(union)的使用 ......................................................81 基于 ARM 的嵌入式 Linux 移植真实体验 ................................................................83 基于 ARM 的嵌入式 Linux 移植真实体验(1)――基本概念 ...........................................83 基于 ARM 的嵌入式 Linux 移植真实体验(2)――BootLoader .........................................96 基于 ARM 的嵌入式 Linux 移植真实体验(3)――操作系统 ..........................................111 基于 ARM 的嵌入式 Linux 移植真实体验(4)――设备驱动 ..........................................120 基于 ARM 的嵌入式 Linux 移植真实体验(5)――应用实例 ..........................................135 深入浅出 Linux 设备驱动编程 .......................................................................144 1.Linux 内核模块..............................................................................144 2.字符设备驱动程序 ...........................................................................146 3.设备驱动中的并发控制 .......................................................................151 4.设备的阻塞与非阻塞操作 .....................................................................157

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值