嵌入式学习路线规划!

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

嵌入式这行业学的东西也多,目前我学习路线是c++→ linux应用开发→ linux驱动开发,我也不知道选择是否正确,这是我看了一些资料之后得出来的学习路线。
嵌入式行业们看看这个路线正确吗,或者可以给出一个学习路线。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/713145
  • 除此之外, 这篇博客: 【面试】 深信服 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++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课课程中的 变量、表达式与赋值语句——教室面积小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    解答

    根据问题描述,学习嵌入式安全方向的硬件木马检测,你的学习路线是C++ -> Linux应用开发 -> Linux驱动开发。这个学习路线是比较常见的,并且也是比较合理的。在嵌入式领域,C++是一门广泛使用的编程语言,Linux应用开发和Linux驱动开发都是重要的技能。

    但是,在学习的过程中,你还需要补充一些其他的知识,以便能够更好地理解和应用嵌入式安全和木马检测的相关技术。

    以下是一些建议和指导:

    1. 学习C++语言:作为一门通用的编程语言,C++是学习嵌入式开发的基础。你需要掌握C++语法、面向对象编程、数据结构和算法等基本知识。

    2. 学习Linux系统:嵌入式设备常常使用Linux作为操作系统,因此学习Linux系统是必要的。你需要了解Linux的基本概念、常用命令和操作方法。可以通过自学或者参加相应的培训课程来学习。

    3. 学习嵌入式系统的架构和硬件知识:嵌入式系统通常有不同的架构和硬件平台,比如ARM、x86等。你需要了解这些架构和硬件平台的特点和差异,以便在开发和调试嵌入式系统时更加熟练。

    4. 学习嵌入式安全和木马检测的基本原理:嵌入式安全和木马检测是一个比较专业的领域,你需要了解基本的安全原理、攻击技术和防御策略。可以通过阅读相关的书籍、论文和文章,及参加相关的专业培训课程来学习。

    5. 学习Linux应用开发:Linux应用开发是嵌入式领域的重要技能之一。你需要学习Linux应用开发的基本概念、开发环境和常用的开发工具,以及掌握常用的应用开发框架和库。可以选择一些开源项目,通过开发实践来提升自己的技能。

    6. 学习Linux驱动开发:Linux驱动开发是嵌入式系统开发中的核心技术之一。你需要了解Linux驱动的工作原理、驱动模型和驱动开发的基本步骤。可以通过阅读相关的书籍、参考示例代码和实际的驱动开发项目来学习。

    7. 拓宽知识面:除了上述的知识点,你还可以进一步拓宽自己的知识面。学习其他相关的技术,比如网络安全、硬件设计、系统调试和性能优化等。可以关注一些专业的技术讨论论坛和社区,与其他嵌入式行业的专家交流和学习。

    总之,学习嵌入式安全方向的硬件木马检测需要全面掌握C++、Linux应用开发和Linux驱动开发等技能,并且需要了解相关的安全原理和技术。同时,你还需要保持学习的热情和持续的学习态度,不断拓展自己的知识和技能。祝你学习进步!