编译原理,对嵌入式开发重要吗?

很重要。

嵌入式开发,尤其是底层内核驱动开发、操作系统移植,会涉及到很多底层、编译原理的知识,比如:

不同的启动方式,从NAND/NOR/SD卡驱动,为什么可以这样,编译链接时需要注意什么?

u-boot自启动,为什么可以从不同存储介质启动,还可以自拷贝,把自己拷贝到RAM,还可以重定位?

bootloader加载内核镜像的时候,加载到哪里?为什么要加载到这里?

共享库加载(映射)到内存,为什么可以在运行时动态加载运行?

内核模块是怎样通过insmod命令加载到内核并运行的?

内核模块是如何卸载的?为什么可以在内核运行时可以动态加载和卸载?

我们调试程序的时候,为什么要分为debug文件和release文件?

源码级调试是如何实现的?

很多工程上的问题,如果你不满足于仅仅会操作、会修改,把代码跑起来,而是想探究得深一点,想知道为什么要这样改,为什么要这样配置,这些都需要编译原理、计算机系统原理等理论的支撑,才能帮助你更好的理解。

如果你不满足仅仅做一个工程师、码农,而是以后向往系统架构的方向发展,我觉得编译原理、操作系统、计算机架构与系统原理都是必须要掌握的。

但是对于很多电子、自动化、电气等弱电类专业的学生来说,可能硬件电路是强项,信号分析、控制算法是强项,但是涉及到操作系统、编译原理往往力不从心,是一块理论短板。自己看各种大块头书的话,又感觉理论性太强,跟自己所做的工程关联不大,学习起来没动力,那该如何学习这块知识呢?

广告来了,《C语言嵌入式Linux高级编程》视频课程,就是为电子、自动化等弱电类专业,没有学过编译原理、操作系统等专业课的学员和工程师,精心打造的一套嵌入式C语言进阶学习课程。

本套课程一共9期,每期一个专题,包括:

ARM架构与反汇编://现场反汇编、手撕汇编代码,让你深刻理解程序运行的底层机制

程序的编译原理与运行机制分析://互联网上第一家在ARM架构下重新演绎编译原理

程序运行的堆栈内存深入分析://堆栈溢出攻击、内存泄露,让你从原理上掌握它

Linux内核中的GNU C 语法扩展://破除阅读Linux内核源码的语法障碍

指针的深入分析与探讨

C语言的模块化编程思想

C语言的面向对象编程思想

C语言的多任务编程思想

等话题,让不同专业背景的学员,弥补嵌入式开发所需要的理论知识体系和短板,为后续的职业发展打下坚实的基础。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190927A0OQ4P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励