你要学的不仅仅是C语言……
对于上面的C语言测试,如果你已经知道答案,并且知道考什么知识点,那么恭喜你,你已经熟悉了C语言和计算机体系结构的知识。 如果你的答案不是很好,偷偷百度搜索理想的答案,也不要灰心,因为本次测试要考的内容其实不仅仅是C语言知识,而是与嵌入式C语言开发相关。 一些理论知识,如处理器架构、操作系统、编译原理、编译器特性、内存堆栈管理、Linux内核中的GNU C扩展语法等。
当然,上面的测试并不是故意伤你的心或者让你买这本书,而是要传达一个信息:如果你想从事嵌入式开发工作,特别是嵌入式Linux内核驱动开发工作,你需要精通不仅是C语言,最好掌握与C语言相关的一系列基础理论和调试技巧。 笔者也是一个经历过的人。 从最初学习嵌入式到从事嵌入式开发,一路走来坎坷坎坷。 我不想说什么。 如果我说太多,我会流泪。 从一开始我连指针都不会用,也不敢用。 在查看内核驱动代码时我很困惑。 我越看,就越不确定,也就越没有信心。 但现在我不再感到害怕,我有信心、有能力理解内核中的代码。 细节和系统框架,这种进步不是从天上掉下来的,也不是来自不小心掉进山洞捡到武术秘籍,而是来自于不断的学习和实践,反复迭代,不断提升自己的知识系统和技能。 慢慢地到达了那棵树。 学习没有捷径。 如果想要真正学习嵌入式并精通嵌入式,我个人觉得除了精通C语言之外,最好具备以下完整的知识体系和编程能力。
l 半导体基础知识、CPU工作原理、硬件电路、计算机系统结构。
l ARM体系结构和汇编指令、汇编编程、ARM反汇编分析。
l 程序编译、链接、安装、运行和重定位分析。
l 熟悉ARM、GNU编译器的C语言标准、特性及扩展语法。
l C语言的模块化编程思想,学会用模块化思想来分析复杂系统。
l C语言的面向对象编程(OOP)思想,学习使用OOP思想来分析Linux内核驱动程序。
l 对指针的深入理解,复杂指针的声明和灵活应用。
l 对内存堆栈管理、内存泄漏、堆栈溢出、段错误有深入的了解。
l 多任务并发编程思想、CPU和操作系统基础理论。
本书的内容及写作初衷
本书从C语言的角度出发,分为10章。 在假设读者已掌握C语言基本语法的基础上,讨论和学习C语言背后的CPU工作原理、计算机体系结构以及ARM平台下的程序编译。 /程序运行时的链接、内存堆栈管理等底层知识。 同时针对嵌入式开发领域,用三章探讨了C语言的面向对象编程思想、模块化编程思想和多任务编程思想。 这些底层知识和编程思想构成了嵌入式开发所需的通用理论基础和编程思想。 核心技能。 尤其是对于很多从不同专业转行到嵌入式开发的朋友来说,由于专业背景的差异,每个人的知识储备和编程能力参差不齐。 在学习嵌入式开发的过程中,经常会遇到各种各样的问题。 诸如此类的问题让我陷入了学习的困境。
编写本书的初衷是为不同专业背景的读者构建嵌入式开发所需的完整知识体系和认知框架。 掌握这些基础理论和编程技巧,将弥补不足,为后续嵌入式开发的高级学习打下坚实的基础。
本书特点
l 行文白话文,通俗易懂。 不怕学不会,就怕学不会。
l 大量插图和原理图,图文并茂,更有利于学习和理解。
l 讲解ARM平台下程序的编译、链接和运行原理(原创)。
l 现场“拆解”ARM汇编代码,从反汇编角度分析C函数调用和参数传递过程。
l 从CPU、计算机体系结构、编译器、操作系统、软件工程等多个角度分析C语言。
l 深入讲解GNU C编译器扩展语法(广泛用于GNU开源软件和Linux内核)。
l 底层分析内存堆栈管理机制,从根源上了解内存错误。
l 从头开始逐步构建和迭代嵌入式软件框架。
l 教你用OOP思想分析Linux内核中复杂的驱动程序和子系统。
l C语言多任务并发编程思想,CPU和操作系统零基础入门。
读者定位
本书针对嵌入式开发,特别是嵌入式Linux开发背景下的C语言进阶学习。 比较适合在校学生、嵌入式学生、工作1到3年的职场新人阅读学习。 为了取得更好的学习效果,在阅读本书之前,首先要保证自己已经掌握了C语言的基本语法,并且使用过至少一种C语言集成开发环境(VC++ 6.0、C-Free、GCC等)。都可以接受)),开发了一个完整的C语言项目(课程设计也算)。 有了这些基础和编程经验,学习效果会更好。