C语言编程,这里分成这几类:1.c语言入门学习;2.C语言单片机开发;3.C语言linux应用开发;4.C语言linux驱动开发.
学习一本书籍即可,推荐 The C programming language(中文版).pdf.
在上位机使用任何编译器学习即可,把书籍上的练习题做一做,没有实际编程只学习书本,很快就会忘记,即使不会忘记,实际编程也感觉无从下手.
在上面的基础上,需要学习一下单片机编译器的扩展语法,汇编器的宏汇编语言和单片机的汇编语言,还需要学习一下编译器的heap,stack分布情况,单片机的体系结构.这些都不难,花时间一两个月就搞定.汇编语言不要太花时间学习,只要大概浏览一下,真正做的时候,边查手册边做.学习这些的目的是改动启动代码和实现loader功能,移植RTOS.
最终目的是实现稳定的RTOS运行环境,到这来汇编语言和单片机系统结构和编译器手册可以忘记了.接下来就是熟悉RTOS提供的服务,例如建立多任务,任务间通信,中断处理等.
这些服务只要知道怎么用就可以了.最快的方法是使用开发板提供的例子跑跑.然后就是仔细研究RTOS提供的API,看看还有哪些用法,达到熟练使用RTOS.接下来就没有什么难度了,就是熟悉单片机提供的各个模块的功能,例如GPIO,UART,I2C,SPI,USB,网络,CAN,ADC,DAC等等.C语言这时最重要的是熟练使用库函数,这是新手最容易忽略的,此时的库函数比较少,头文件可以在编译器中查找到.推荐参考<
经过一段时间的磨练,如果时间很充足的话可以研究一下RTOS内核源代码,RTOS内核代码都非常少,此时熟练使用了,再看就会发现比较容易看懂.
首先需要学习一下linux基本操作,推荐鸟哥的私房菜基础篇,操作系统推荐ubuntu.
接下来需要学习makefile这个比较熟练掌握,同时需要熟悉一下gcc编译器,需要熟悉gcc编译器基本配置.makefile学习强烈推荐<
gcc编译器需要熟悉一些选项例如连接动态库,查找头文件等等,入门参考韦东山编写的<<嵌入式Linux应用开发完全手册>>第三章.
接下来重点是需要学习linux提供的API接口了,推荐教程是:"UNIX环境高级编程"和"Linux System Programming"这两本书.
可以把书中的代码下载下来不时查阅.
首先需要学习ARM或RISC-V体系结构,和单片机最主要不同的地方是mmu,cache,tlb这些地方需要深入理解,其他都和单片机大同小异.只要深刻理解了这三个模块才能看到内核中的内存管理,虚拟文件系统等内容.体系结构资料一定要看官网的英文资料.
再次就是需要深入学习一下gcc,as,ld,gdb等工具使用.
内核中是分层结构的,在前期做驱动开发的最重要的是熟悉内核提供的接口函数,先熟练使用接口函数做驱动,深入后再理解接口函数内部原理.
有些公司要求编程规格,可以参考git链接中提供的资料.
有时会遇到C语言新标准的语法,请到标准官网查询或者git中提供的资料.
我把一些常用的资料整理了一下,如有侵权请联系,我会删除.
C语言基础:https://gitee.com/fedorayang/c_base
GNU工具:https://gitee.com/fedorayang/compiler_base