开发一个C语言插件

2.0万 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
具备一定C基础的学生、嵌入式学习者、嵌入式工程师,有编程项目经验学习效果更佳
你将会学到
本课程为《C语言嵌入式Linux高级编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,最后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。
课程简介

C语言到底学到什么程度,才能够胜任嵌入式Linux内核、驱动的开发? 

C语言到底学到什么程度,才能够胜任嵌入式Linux内核、驱动的开发? 

C语言到底学到什么程度,才能够胜任嵌入式Linux内核、驱动的开发? 


不同的软件开发职位,对C语言的要求是不同的。

宅学部落ddd.png

总体来讲,嵌入式开发,尤其是驱动内核开发,对C语言的要求,相比其它职位,相对很高。 

 不仅要求学员学习C语言的基本语法,还要对 

1)计算机基本原理、系统架构 

2)编译、链接原理 

3)程序的加载、运行过程 

4)C标准、C编译器对C标准的扩展 

5)嵌入式硬件系统的理解 

6)程序的健壮性、安全性、编码风格等 

有一个更深的理解和学习。 

学习路线.jpg

本期是《C语言嵌入式Linux高级编程》第3期主要内容包括: 

1)C语言编译的基本过程:预处理、编译、链接

2)linux环境下LEF文件种类、与BIN文件差异 

3)编译过程分析:预处理、汇编、符号表、重定位表

4)链接过程分析:地址分配、链接脚本、符号解析、重定位

5)程序的运行原理、BSS段的处理、main函数入口分析

6)静态库的链接机制

7)动态链接过程分析:PIC与位置无关代码、全局偏移表、动态链接重定向符号表、共享库

8)C语言插件机制:如何开发一个最简单的C语言插件

9)linux内核模块加载机制:linux内核模块是如何动态加载到内核执行的

10)binutils工具集常用工具介绍

11)linux内核加载实验:u-boot的bootm机制、Linux内核的解压缩、重定位

12)u-boot的重定位分析:如何进行自身的代码拷贝、重定位操作、如何从Flash跳转到RAM中去执行 


本期课程偏向于理论,探讨程序编译链接的基本过程,有一定的难度和复杂度,课程里面涉及到了嵌入式开发中比较难的几个点,比如u-boot重定位等。所以千万不要期望看一次视频就完全学习哦~。 如果看一遍视频感觉有什么疑惑或者不理解的地方,不要灰心,多复习,课下多总结、分析,相信一定能攻克它!

展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交