- 嵌入式
Linux内核编程:设备树overlay和ConfigFS文件系统
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。设备树的overlay功能是指可以在系统运行期间动态修改设备树。一般情况下,如上图所示,设备树经过DTC编译器编译为二进制的hello.dtb文件,加载到内存,随Linux内核一起启动后,一般就无法更改了。如果我们想修改设备树,需要修改hello.dts文件文件,重新编译成二进制文件:hello.dtb,然后重新启动内核,重新解析。有了设备树的overlay功能,省去了设备树的重新编译和内核重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便: * 外界插拔设备,无法在设备树中预先描述:耳机 * 树莓派 + FPGA开发板 * 基于I2C的温度传感器 * 管脚的重新配置:PIN multiplexing * 修改bootcmd、分区 * ... 设备树的overlay功能,目前还没有加入到内核mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树文件。如果你手头的开发板或内核平台还没有支持device tree overlay,可以学习本期课程,学习内核中设备树overlay的实现原理,如何给内核打补丁,使内核支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。本期课程的主要内容如下: * 在开发板上如何实现设备树的overlay功能 * Configfs文件系统的配置与挂载 * Configfs编程接口 * 如何编写设备树 overlay插件 * 设备树 overlay的编译和运行 * 设备树overlay运行机制分析 本期课程适合哪些人学习: * 嵌入式驱动工程师 * 嵌入式BSP工程师 * 嵌入式软件工程师 * 想从事嵌入式开发的同学 全网首家讲解设备树overlay的视频教程。
共14节 1115人已学习¥199.0 免费试学 - 驱动/内核开发
Linux设备树(device tree)
设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和必备技能
共35节 1393人已学习¥199.0 免费试学 - 驱动/内核开发
Linux内核编程:入门篇
Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制: * 降维分析,化简为繁,将复杂的系统简单化 * 用软件工程的方法分析内核:软件分层、模块化分解、框架迭代 * 多角度立体分析Linux内核,目的只有一个:更好地理解内核 * 利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互 * 利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核编译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O... 本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。
共14节 1767人已学习免费 免费试学 - 嵌入式
Linux系统编程第08期:时间管理和定时器编程
本期课程是《Linux系统编程》第08期,主要讲解在Linux下时间管理的基本概念、时间的获取和设置、定时器编程,包括简单的闹钟alarm、间隔定时器interval timer、POSIX timer编程。
共13节 761人已学习¥19.0 免费试学 - 嵌入式
Linux系统编程练手项目:使用C语言实现协程
协程是最近几年比较火的一个概念,尤其是在互联网后台、手机游戏后台等场景中被大量使用。它跟我们经常使用的进程、线程有什么区别呢?有哪些优势呢? 本期课程为《Linux系统编程》的练手项目:带领大家从零开始,使用仅仅50余行代码,就可以实现一个简单的协程,实现协程的三个基本API接口函数:create、yield、resume。从最开始的汇编开始,到最上层的API的封装,通过这个小项目的实战训练,让你真正理解协程的概念。
共17节 1367人已学习¥29.0 免费试学 - 嵌入式
Linux系统编程第07期:多线程编程入门
Linux下多线程编程的概念、API接口使用、线程同步的掌握、线程池、协程等基本概念。
共15节 589人已学习¥19.0 免费试学 - 嵌入式
Linux系统编程第06期:从零实现一个shell解释器
在Linux环境下,shell是一个位于操作系统和用户应用程序之间的工具,我们在shell终端下敲入命令并运行,或者直接运行一个脚本文件,这背后都是shell在帮助我们解析命令并创建一个个子进程去执行。为了更深一层去探寻shell背后的机制原理、加深对Linux系统的理解,本课程将带领大家,从零开始一步一步实现一个shell解释器:wsh,主要实现以下功能: * 可以在shell交互窗口中执行用于输入的shell命令 * 实现shell的内建命令:cd、exit、export等 * 支持管道命令 | * 支持进程的后台执行 * 支持脚本的解析和运行 * 支持脚本简单的if-else控制语法 * 支持信号的处理操作
共19节 1302人已学习¥49.0 免费试学 - 嵌入式
Linux系统编程第05期:进程间通信
Linux系统提供了各种系统调用API用于进程之间的通信: * 无名管道PIPE * 命名管道FIFO * 消息队列 * 共享内存 * 信号量 * 文件锁 * 信号signal.... 其中还包括system V和POSIX 两种接口标准,除此之外,Linux系统自身还扩展了自己的一套API接口用于进程间通信,比如signalfd、timerfd、eventfd等。 本视频教程为《Linux系统编程》第05期,本期课程将会带领大家学习Linux下将近15种进程间通信IPC工具的使用,了解它们的通信机制、编程实例、使用场景、内核中的实现以及各自的优缺点。本课程会提供PDF版本的PPT课件和代码,学员购买课程后可到课程主页自行下载 嵌入式自学路线指导图: ------------------------------------------------------------------------------------------------------ 《嵌入式工程师自我修养》嵌入式自学系列教程 作者:王利涛 ------------------------------------------------------------------------------------------------------ 一线嵌入式工程师精心打造,嵌入式学习路线六步走: 第 1 步:Linux三剑客 * 零基础玩转Linux+Ubuntu * Git零基础实战:Linux开发技能标配 * vim从入门到精通基础篇:零基础学习vim基本命令 * vim从入门到精通定制篇:使用插件打造嵌入式开发IDE * makefile工程实践基础篇:从零开始一步一步写项目的Makefile * makefile工程实践第2季:使用Autotools自动生成Makefile * 软件调试基础理论 * printf打印技巧 * Linux内核日志与打印 * 使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境 第 2 步:C语言嵌入式Linux高级编程 * 第1期:C语言进阶学习路线指南 * 第2期:计算机架构与ARM汇编程序设计 * 第3期:程序的编译、链接和运行原理 * 第4期:堆栈内存管理 * 第6期:数据存储与指针 * 第7期:嵌入式数据结构与Linux内核的OOP思想 * 第8期:C语言的模块化编程 * 第9期:CPU和操作系统入门 搞内核驱动开发、光会C语言是不行的! 你还需要学习的有很多,包括:计算机体系架构、ARM汇编、程序的编译链接运行原理、CPU和操作系统原理、堆栈内存管理、指针、linux内核中的面向对象思想、嵌入式系统架构、C语言的模块化编程.....第 3 步:Linux系统编程 * 第00期:Linux系统编程入门 * 第01期:揭开文件系统的神秘面纱 * 第02期:文件I/O编程实战 * 第03期:I/O缓存与内存映射 * 第04期:打通进程与终端的任督二脉 * 第05期:进程间通信-------------------we are here! 第 4 步:Linux内核编程 练乾坤大挪移,会不会九阳神功,是一道坎。搞驱动内核开发,懂不懂内核也是一道坎。 第 5 步:嵌入式驱动开发 芯片原理、datasheet、硬件电路、调试手段、总线协议、内核机制、框架流程.... 第 6 步:项目实战 嵌入式、嵌入式人工智能、物联网、智能家居...
共30节 2374人已学习¥39.0 免费试学 - Linux
Linux系统编程第04期:打通进程与终端的任督二脉
本课程是《嵌入式工程师自我修养》自学视频教程系列,嵌入式学习6步走中的第3步:Linux系统编程第04期。主要学习重点:进程的创建、执行、控制运行、退出等,进程与终端之间的关系,Linux中的进程全景图
共21节 908人已学习¥39.0 免费试学 - 嵌入式
Linux系统编程第3期:文件IO缓存与内存映射
本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第03期。 主要分析Linux文件I/O缓存机制:包括页缓存、用户空间的I/O缓存、内存映射机制等。
共11节 1017人已学习¥39.0 免费试学 - 嵌入式
Linux系统编程第2期:文件IO编程实战
本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。
共17节 875人已学习¥39.0 免费试学 - 嵌入式
Linux系统编程01期:揭开文件系统的神秘面纱
本期课程将会带领大家,从底层NAND flash、普通磁盘的存储机制和电路原理开始,从底层到上层,步步推进,打通文件系统的任督二脉,揭开文件系统存储的基本原理和读写流程。
共18节 990人已学习¥39.0 免费试学 - 嵌入式
Linux系统编程:入门篇视频教程
Linux系统编程视频课程为《Linux系统编程》入门篇,主要针对零基础的Linux开发学员科普Linux系统编程的概念以及需要掌握的各种技能,掌握Linux命令编写、Linux学习路线并熟悉嵌入式设备编程的方法。为后续的Linux系统编程深入学习打下良好的基础。
共14节 25769人已学习超级会员免费 免费试学 - 单片机/工控
C语言嵌入式Linux编程第9期:CPU和操作系统入门
操作系统和多任务编程,是很多嵌入式学员学习的难点和重点。本期课程针对嵌入式学员,尤其是非CS专业的嵌入式学员,补充CPU工作机制、操作系统核心技术等理论短板,为后续的Linux内核、驱动开发等高阶课程打下良好的理论基础。
共23节 1639人已学习¥49.0 免费试学 - 嵌入式
C语言嵌入式Linux编程第8期:C语言的模块化编程
本期课程,王老师对C语言在大型项目中经常遇到的一些问题、模棱两可的概念、知识死角、各种坑,从原理上进行分析、从技术实现上进行讲解。这些东西,在其它地方很少看到,很多知识点是老师花费了一个月的时间去研究、分析、验证得出的结论,干货满满。对于新手来收,这些可以直接作为经验,应用在以后的开发实战中;对于1~3年的公司工程师来说,学完本期课程,相信您也会有不少的收获。
共24节 2044人已学习¥59.0 免费试学 - 嵌入式
C语言嵌入式Linux编程第7期:Linux内核常用的数据结构与面向对象思想
学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。
共19节 1509人已学习¥59.0 免费试学 - 驱动/内核开发
C语言嵌入式Linux编程第6期:数据存储与指针
本期课程为《C语言嵌入式Linux编程》第6期,从一个全新的视角:存储的角度,由浅入深,层层递进,一步一步去探讨讲解C指针。存储才是C语言的精髓,在存储面前,一切指针、链表、函数、变量都是浮云。抛开各种类型数据、函数、数据结构的表象,理解他们在内存中的存储才是我们理解C指针的关键。通过本期课程学习,达到“能用指针、敢用指针、善用指针”之学习目的。
共22节 1990人已学习¥39.0 免费试学 - 驱动/内核开发
C语言嵌入式Linux编程第4期:堆栈管理
本课程是《C语言嵌入式Linux编程》第4期主要内容包括: 1)程序运行过程中堆栈的内存分布 2)栈初始化、大小、栈在函数调用和参数传递过程中的作用 3)栈与作用域、栈对形参和实参的管理 4)黑客栈溢出攻击原理及实践 5)堆内存的维护、嵌入式裸机环境下、ucos、linux环境下堆内存的管理和维护 6)内存泄露与防范、内存错误及检测 7)实战:实践自己的堆内存管理器
共16节 1593人已学习¥39.0 免费试学 - 驱动/内核开发
C语言嵌入式Linux编程第5期:C标准及GNU C扩展
本课程是《C语言嵌入式Linux编程》第5期主要内容包括:Linux内核、驱动程序中,GNU C对标准C扩展的大量的语法。 学员在掌握这些扩展语法的基础上,消除阅读Linux内核、驱动、GNU开源软件的障碍。 能够看懂这些“稀奇古怪”的语法,学会用这些扩展的语法知识去分析复杂的开源软件、Linux内核及驱动代码。
共24节 2415人已学习¥39.0 免费试学 - 嵌入式
C语言嵌入式Linux编程第3期:程序的编译、链接和运行
本课程为《C语言嵌入式Linux编程》第3期,主要对程序的编译、链接及运行机制进行分析。同时对静态库链接、动态链接的过程、插件原理、内核模块运行机进行探讨,后对嵌入式系统比较难理解的u-boot重定位、u-boot加载内核、内核解压缩、重定位过程进行分析,加深对程序的编译链接原理的理解。
共22节 1949人已学习¥59.0 免费试学
- 1
- 2