嵌入式学习路线规划?

研0,今年9月份左右开学,导师方向是嵌入式安全方向的,给我的科研具体是硬件木马检测。

嵌入式这行业学的东西也多,目前我学习路线是c++→ linux应用开发→ linux驱动开发,我也不知道这个路线是否正确,这是我阅读了一些资料得出来的。
嵌入式行业的哥们看下这个路线是否正确,或者指条明路吧。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7663467
  • 除此之外, 这篇博客: 【面试】 深信服 C++软件开发 研发 物联网方向中的 1. C++ 内存分区,未初始化的全局变量放在哪?如果进行编译,在二进制文件中有它的位置吗? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在 C++ 语言中,内存被分为 5 个区:自由存储区全局/静态存储区常量存储区

    • :由编译器在需要时分配,不需要时自动清除的变量存储区。存储的变量通常为局部变量、函数参数、返回值等

    • :一般由程序员主动分配(malloc)和释放(free),如果程序员分配后未释放,那么在程序运行结束后,操作系统会自动回收。

    • 自由存储区:由程序员主动使用 new 和 delete 生成和释放的内存区域,自由存储区

    • 全局/静态存储区:存放全部变量和静态变量的内存区域。在 C 语言里,全部变量分为已初始化的和未初始化的,而在 C++ 里没有这种区分,它们都存放在同一块内存区域

    • 常量存储区:存放常量

    因此我们知道,未初始化的全部变量存放在全局/静态存储区

    再来看一下 bss 段data 段text 段heap 段stack 段

    • bss 段:bss 段,通常是指用来存放程序中未初始化的全局变量的一块内存区域,属于静态内存分配

    • data 段:数据段,通常是指用来存放程序中已初始化的全局变量的一块内存区域,属于静态内存分配

    • text 段:代码段,通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

    • heap 段:堆,是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

    • stack 段:栈,是用户存放程序临时创建的局部变量,但不包括 static 声明的变量,static 意味着在数据段中存放变量。

    一个程序本质上都是由 bss 段、data 段、text 段三个部分组成的。一般在初始化时 bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。在C语言之类的程序编译完成之后,已初始化的全局变量保存在 data 段中,未初始化的全局变量保存在 bss 段中。text 和 data 段都在可执行文件中,由系统从可执行文件中加载;而 bss 段不在可执行文件中,由系统初始化。

  • 您还可以看一下 夏曹俊老师的C++ 设计模式原理与实战大全-架构师需备课程课程中的 适配器模式的定义、场景与实用工程技术:对象适配与类的适配小节, 巩固相关知识点