- 谈不上什么理解,姑且先记录一下吧。一是方便以后有不懂随时翻来看看,二是以后对Makefile理解深了再做补充吧! 一、Make简介 工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工... 谈不上什么理解,姑且先记录一下吧。一是方便以后有不懂随时翻来看看,二是以后对Makefile理解深了再做补充吧! 一、Make简介 工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工...
- ARM cortex-A系列的内核不支持中断嵌套。在内核中断函数中,如果中断处理时间过长,产生中断嵌套,重者系统崩溃,轻者也会影响其他事件处理。这也是中断中不能使用延时函数的原因。 但是有些高实时性设备(比如网卡),就是需要处理大量的业务。为了满足中断处理时间尽量短的原则,我们将一些简单的处理放在中断中实现,这个阶段叫做中断... ARM cortex-A系列的内核不支持中断嵌套。在内核中断函数中,如果中断处理时间过长,产生中断嵌套,重者系统崩溃,轻者也会影响其他事件处理。这也是中断中不能使用延时函数的原因。 但是有些高实时性设备(比如网卡),就是需要处理大量的业务。为了满足中断处理时间尽量短的原则,我们将一些简单的处理放在中断中实现,这个阶段叫做中断...
- 完成应用程序通过驱动控制硬件的实现。实验建立在之前的框架上,我们先实现用户层与内核层之间的数据交互,驱动程序拿到用户传来的指令后,就可以执行点灯的动作了。 应用程序与驱动数据交互 对于驱动程序而言,使用copy_to_user 和 copy_from_user函数与应用程序进行数据交互。当应用程序read时... 完成应用程序通过驱动控制硬件的实现。实验建立在之前的框架上,我们先实现用户层与内核层之间的数据交互,驱动程序拿到用户传来的指令后,就可以执行点灯的动作了。 应用程序与驱动数据交互 对于驱动程序而言,使用copy_to_user 和 copy_from_user函数与应用程序进行数据交互。当应用程序read时...
- Linux系统根据驱动程序实现的模型框架将设备驱动分成字符设备驱动、块设备驱动、网络设备驱动三大类。这里简单理解一下概念 字符设备:设备按字节流处理数据,通常用的串口设备、键盘设备都是这种。块设备:设备按块单位对数据处理,通常是存储设备。网络设备:顾名思义,建立在socket接口上的设备。 字符设备驱动框架 &nbs... Linux系统根据驱动程序实现的模型框架将设备驱动分成字符设备驱动、块设备驱动、网络设备驱动三大类。这里简单理解一下概念 字符设备:设备按字节流处理数据,通常用的串口设备、键盘设备都是这种。块设备:设备按块单位对数据处理,通常是存储设备。网络设备:顾名思义,建立在socket接口上的设备。 字符设备驱动框架 &nbs...
- 应用层的进程是通过内核层驱动来访问硬件的,Linux内核源码在每次编译之后生成一个总的镜像,将镜像加载内存中运行并使用(内核在系统运行时会占用内核空间)。驱动属于内核源码的一部分,如果每次修改驱动都要重新编译加载内核的话,这太麻烦了,所以我们通过模块,使驱动可以独立于内核镜像之外,并能动态的加载和卸载。 在搭建好开发环境之后,通过so... 应用层的进程是通过内核层驱动来访问硬件的,Linux内核源码在每次编译之后生成一个总的镜像,将镜像加载内存中运行并使用(内核在系统运行时会占用内核空间)。驱动属于内核源码的一部分,如果每次修改驱动都要重新编译加载内核的话,这太麻烦了,所以我们通过模块,使驱动可以独立于内核镜像之外,并能动态的加载和卸载。 在搭建好开发环境之后,通过so...
- 当中断发生时,驱动程序会跳转到中断处理的函数入口,实现了中断的捕获和处理,但这样还不够。要让用户能够获取到中断分析的结果,我们将创建一个描述中断事件的结构体对象。硬件产生中断后,驱动代码将对中断事件的分析结果保存在结构体变量中,用户需要的时候,直接通过接口函数获取这个结构体的数据。 内核层: 硬件(中断事件) --> ... 当中断发生时,驱动程序会跳转到中断处理的函数入口,实现了中断的捕获和处理,但这样还不够。要让用户能够获取到中断分析的结果,我们将创建一个描述中断事件的结构体对象。硬件产生中断后,驱动代码将对中断事件的分析结果保存在结构体变量中,用户需要的时候,直接通过接口函数获取这个结构体的数据。 内核层: 硬件(中断事件) --> ...
- 按照之前的实现驱动的方法。对于同一类设备,驱动层实现的操作方法是相似的,而设备信息总是不同的,一个产品上有很多这样的同类设备,我们为每一个设备都定制一套驱动程序,代价似乎太“高昂点”;对于一个设别,如果硬件有所改动,也必然要修改取代代码。 为了提高代码的通用性,我们将驱动和设备进行分离,设备对象专门用来描述设备(硬件)的信息。而驱动负... 按照之前的实现驱动的方法。对于同一类设备,驱动层实现的操作方法是相似的,而设备信息总是不同的,一个产品上有很多这样的同类设备,我们为每一个设备都定制一套驱动程序,代价似乎太“高昂点”;对于一个设别,如果硬件有所改动,也必然要修改取代代码。 为了提高代码的通用性,我们将驱动和设备进行分离,设备对象专门用来描述设备(硬件)的信息。而驱动负...
- 目前已经学习两种应用层IO模型的使用 非阻塞:立即返回结果,如果想得到期望的结果,要不停的调用这个方法(轮询),非常耗费资源 阻塞:没有得到真正的数据前,不返回结果。此时,进程进入阻塞(休眠)态,直到有数据唤醒进程,这个过程不耗资源。 PS:linux应用中,大部分的函数接口都是阻塞 驱动程序将进程进... 目前已经学习两种应用层IO模型的使用 非阻塞:立即返回结果,如果想得到期望的结果,要不停的调用这个方法(轮询),非常耗费资源 阻塞:没有得到真正的数据前,不返回结果。此时,进程进入阻塞(休眠)态,直到有数据唤醒进程,这个过程不耗资源。 PS:linux应用中,大部分的函数接口都是阻塞 驱动程序将进程进...
- 使用阻塞模型虽然可以避免等待数据过程中,CPU对进程的消耗,但是仅仅是为了等待这一个结果,就让进程进入休眠,对于还要进行其他IO操作的进程而言太“奢侈”。所以引入多路复用的概念,解决这个问题。 非阻塞:立即返回结果,如果想得到期望的结果,要不停的调用这个方法(轮询),非常耗费资源 阻塞:没有得到真正的数据前,不返回结果。此时,进程进... 使用阻塞模型虽然可以避免等待数据过程中,CPU对进程的消耗,但是仅仅是为了等待这一个结果,就让进程进入休眠,对于还要进行其他IO操作的进程而言太“奢侈”。所以引入多路复用的概念,解决这个问题。 非阻塞:立即返回结果,如果想得到期望的结果,要不停的调用这个方法(轮询),非常耗费资源 阻塞:没有得到真正的数据前,不返回结果。此时,进程进...
- 在实际的处理对象中,有许多信息是由多个不同类型的数据组合在一起进行描述,而且这些不同类型的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据——结构体(structure),简称结构。 一、定义 定义一个结构类型的一般形式为 struct 结构体名 { 数据类型 成员名1; ... 在实际的处理对象中,有许多信息是由多个不同类型的数据组合在一起进行描述,而且这些不同类型的数据是互相联系组成了一个有机的整体。此时,就要用到一种新的构造类型数据——结构体(structure),简称结构。 一、定义 定义一个结构类型的一般形式为 struct 结构体名 { 数据类型 成员名1; ...
- Linux内核启动后,需要挂载根文件系统。本章介绍文件系统的制作过程,并且让开发板通过网络远程挂载nfs系统来验证制作的rootfs。。 文件系统格式 上面不同的文件系统格式,有适合不同的应用场合。nfs rootfs,实际nfs是将服务器端的目录通过网络的形式共享出去,是把服务端文件系统的一部分共享给了客户端。... Linux内核启动后,需要挂载根文件系统。本章介绍文件系统的制作过程,并且让开发板通过网络远程挂载nfs系统来验证制作的rootfs。。 文件系统格式 上面不同的文件系统格式,有适合不同的应用场合。nfs rootfs,实际nfs是将服务器端的目录通过网络的形式共享出去,是把服务端文件系统的一部分共享给了客户端。...
- 对于linux一切都是文件,驱动设备在应用层也是以文件的形式进行读写。之前学了阻塞、非阻塞、多路复用的方式读设备,它们都需要应用主动读取。那么应用层有没有一种方式,当底层将数据准备好了,应用程序自动处理这些数据?通过异步通信可以实现,这有写类似硬件层的中断概念 驱动层(准备好了数据) --> 发送特定信号 --> 应用程序... 对于linux一切都是文件,驱动设备在应用层也是以文件的形式进行读写。之前学了阻塞、非阻塞、多路复用的方式读设备,它们都需要应用主动读取。那么应用层有没有一种方式,当底层将数据准备好了,应用程序自动处理这些数据?通过异步通信可以实现,这有写类似硬件层的中断概念 驱动层(准备好了数据) --> 发送特定信号 --> 应用程序...
- 由于嵌入式系统分层,应用层要想操作硬件需通过内核层。驱动对上提供系统调用函数,对下封装了对底层硬件的一些基本操作。笔者目前不了解驱动程序的编辑,所以本章是在已经有驱动程序(fs4412_led_drv.c)和对应的应用程序(fs4412_led_app.c),来实现黑盒子移植(不去理解驱动程序的细节),实现控制led灯的闪烁。 led... 由于嵌入式系统分层,应用层要想操作硬件需通过内核层。驱动对上提供系统调用函数,对下封装了对底层硬件的一些基本操作。笔者目前不了解驱动程序的编辑,所以本章是在已经有驱动程序(fs4412_led_drv.c)和对应的应用程序(fs4412_led_app.c),来实现黑盒子移植(不去理解驱动程序的细节),实现控制led灯的闪烁。 led...
- 1,实现模块加载和卸载入口函数 module_init(chr_dev_init); module_exit(chr_dev_exit); 2,在模块加载入口函数中 &nb... 1,实现模块加载和卸载入口函数 module_init(chr_dev_init); module_exit(chr_dev_exit); 2,在模块加载入口函数中 &nb...
- SQLite SQLite是一款轻型的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟... SQLite SQLite是一款轻型的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟...
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签