自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(795)
  • 收藏
  • 关注

原创 《【北京迅为】itop-3568开发板NPU使用手册》-第5章 模型转换

RKNN-Toolkit2 是为用户提供在 PC、Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成以下功能:模型转换: 支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等模型转为 RKNN 模型,并支持 RKNN 模型导入导出,RKNN 模型能够在rk3568开发板上加载使用量化功能。

2026-01-15 13:35:28 594

原创 《【北京迅为】itop-3568开发板NPU使用手册》-第4章 体验RKNN_DEMO

系统性地介绍了RKNPU从入门到应用开发的全流程知识体系。本手册以“认识工具—构建环境—模型转换—部署实践”为主线,为开发者在Linux和Android双平台上提供完整的NPU应用开发指导。本手册既适合嵌入式AI开发初学者系统学习,也可作为高级开发者的技术参考,帮助开发者高效利用RKNPU实现各类AI应用的部署与优化。完整教程及配套资料,关注我的B站👉或公众号,回复【RKNPU2】即可领取,你的关注是我更新的最大动力~【公众号】迅为电子【交流群】861311530【视频展示】【视频教程】

2026-01-13 17:27:34 711

原创 《【北京迅为】itop-3568开发板NPU使用手册》-第3章 让NPU跑起来

系统性地介绍了RKNPU从入门到应用开发的全流程知识体系。本手册以“认识工具—构建环境—模型转换—部署实践”为主线,为开发者在Linux和Android双平台上提供完整的NPU应用开发指导。本手册既适合嵌入式AI开发初学者系统学习,也可作为高级开发者的技术参考,帮助开发者高效利用RKNPU实现各类AI应用的部署与优化。完整教程及配套资料,关注我的B站👉或公众号,回复【RKNPU2】即可领取,你的关注是我更新的最大动力~【公众号】迅为电子【交流群】861311530【视频展示】【视频教程】

2026-01-13 14:50:23 712

原创 《【北京迅为】itop-3568开发板NPU使用手册》-第2章 准备RKNPU开发环境

系统性地介绍了RKNPU从入门到应用开发的全流程知识体系。本手册以“认识工具—构建环境—模型转换—部署实践”为主线,为开发者在Linux和Android双平台上提供完整的NPU应用开发指导。本手册既适合嵌入式AI开发初学者系统学习,也可作为高级开发者的技术参考,帮助开发者高效利用RKNPU实现各类AI应用的部署与优化。【公众号】迅为电子【交流群】861311530【视频展示】【视频教程】完整教程及网盘资料,关注我的B站👉或公众号,回复【RKNPU2】即可领取,你的关注是我更新的最大动力~

2026-01-12 09:22:03 894

原创 《【北京迅为】itop-3568开发板NPU使用手册》-第1章 你好!NPU

系统性地介绍了RKNPU从入门到应用开发的全流程知识体系。本手册以“认识工具—构建环境—模型转换—部署实践”为主线,为开发者在Linux和Android双平台上提供完整的NPU应用开发指导。本手册既适合嵌入式AI开发初学者系统学习,也可作为高级开发者的技术参考,帮助开发者高效利用RKNPU实现各类AI应用的部署与优化。【公众号】迅为电子【交流群】861311530【视频展示】【视频教程】完整教程及配套资料,关注我的B站👉或公众号,回复【RKNPU2】即可领取,你的关注是我更新的最大动力~

2026-01-10 13:12:16 692

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第6章 Openwrt文件系统构建

不论是做嵌入式Linux开发,还是学习Linux技术,Linux的基本知识都是要学习的,为此,北京迅为基于嵌入式Linux入门教程上新了。教程旨在系统性地讲解嵌入式Linux文件系统的构建、定制与移植全流程,为开发者提供从基础入门到高阶定制的完整学习路径【公众号】迅为电子【配套视频】

2026-01-06 13:58:18 741

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第5章Buildroot系统构建

Buildroot是一个可以使用交叉编译简单且自动化地为嵌入式系统构建完整Linux系统的工具。Buildroot可以为你的系统生成交叉编译工具链,根文件系统,Linux内核镜像和引导加载程序。Buildroot可以独立地用于这些选项的任意组合(比如,你可以使用现有的交叉编译工具链,并且仅仅只编译文件系统)。Buildroot主要用于使用嵌入式系统的开发者,嵌入式系统通常使用的处理器并不是PC电脑上的X86处理器,他们可以是PowerPc处理器,MIPS处理器或者ARM处理器等等。

2026-01-04 17:20:20 1026

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第4章QT系统移植工具

不论是做嵌入式Linux开发,还是学习Linux技术,Linux的基本知识都是要学习的,为此,北京迅为基于嵌入式Linux入门教程上新了。教程旨在系统性地讲解嵌入式Linux文件系统的构建、定制与移植全流程,为开发者提供从基础入门到高阶定制的完整学习路径【公众号】迅为电子【配套视频】在上一章节中,我们成功移植了QT库,并且成功运行了QT程序。本章节我们来移植一些第三方组件,比如ssh。我们将逐步完善这个最小系统,最终我们会得到一个符合自己需求的,相对完善的操作系统。

2026-01-04 14:19:37 808

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第3章 最小文件系统移植QT库

不论是做嵌入式Linux开发,还是学习Linux技术,Linux的基本知识都是要学习的,为此,北京迅为基于嵌入式Linux入门教程上新了。教程旨在系统性地讲解嵌入式Linux文件系统的构建、定制与移植全流程,为开发者提供从基础入门到高阶定制的完整学习路径【公众号】迅为电子【配套视频】在上一个章节,我们使用busybox工具制作了一个最简单的根文件系统,如果我们想要在此基础上运行Qt程序,我们需要移植QT库,本章节将一步步移植Qt库,并运行QT程序。

2026-01-04 14:09:30 740

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第2章 Busybox制作最小文件系统

在制作文件系统的时候,可以使用“Busybox 工具”,即为网盘资料“iTOP-3568开发板\03_【iTOP-RK3568开发板】指南教程\03_文件系统构建配套资料\01_Busybox文件系统构建配套资料\最小系统资料\01_busybox源码”中的busybox-1.33.1.tar.bz2。“BusyBox 工具”是一个集成了一百多个最常用 Linux 命令和工具的软件。

2025-12-31 16:59:23 726

原创 【北京迅为】嵌入式Linux基础教程(高清重制版)-第1章 Linux文件系统简介

要想讲清楚是文件系统,可以将文件系统在字面上分为俩部分来理解,一部分是文件,一部分是系统。那文件系统是不是可以理解成是组织和管理文件的一个系统呢。所以有了文件系统以后,就可以轻松的操作存储在存储介质的文件。比如删除一个文件,新增一个文件等。文件系统的格式(类型)有多种,如fat32 ext2 ext3 ntfs等。Linux文件系统中一般由如下的几个目录构成。这些目录用于不同的功能。1 /bin 目录。

2025-12-30 16:15:01 646

原创 【北京迅为】iTOP-4412精英版使用手册-第八十章 Qt程序打包和部署

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。然后把exe文件拷贝到我们新创建的文件夹里面,在控制台进入可执行文件所在的目录,如。需要用到QT的控制台,点击电脑左下角,在搜素栏搜索qt,即可看到 qt控制台,双击即可打开,如。因为我们要把写好的程序发给用户来用,写好的源码也不方便给别人看,所以要把程序进行打包部署。然后在pro文件里面添加。注意:图标的格式必须为.ico这个格式的,其他格式不行。

2025-12-30 13:50:12 298

原创 【北京迅为】iTOP-4412精英版使用手册-第七十九章 Qt串口编程

已成为三星官方推广的处理器之一,并承诺长期供货。QSerialPort封装了丰富的成员变量来对应串口属性,还有很多操作串口的成员函数,常用的成员函数有setPort()或setPortName(),setBaudRate(),setDataBits(),setStopBits(),setParity()等,可以用这些函数设置要访问的串口设备。>,用Qt定义的关键字foreach遍历容器Qlist里的串口信息,并将串口信息放到QStringList的类对象serialNamePort,显示到ui的串口组件。

2025-12-29 17:25:16 620

原创 【北京迅为】iTOP-4412精英版使用手册-第七十八章 Qt界面切换

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。我们选择Widget,用户可以根据需要选择,然后输入类名windowRun。步骤三:创建windowRun类对象win,设置大小,显示。

2025-12-29 16:28:39 233

原创 【北京迅为】iTOP-4412精英版使用手册-第七十七章 Qt界面布局

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。Grid Layout 网格状布局,网状布局大小改变时,每个网格的大小都改变。我们发现布局之后各个组件都是紧挨着的,这时候可以用“弹簧”控件来控制组件位置。使用时先选中组件,然后点击水平布局即可完成,可看到组件变为水平排列。

2025-12-29 16:02:45 173

原创 【北京迅为】iTOP-4412精英版使用手册-第七十五章 Qt信号和槽

当需要调用外部函数时,发送一个信号,此时与该信号相关联的槽便会被调用,槽其实就是一个函数,槽与信号的关联要由程序员来完成,关联方法有自动关联和手动关联。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。slots 槽是普通的 C++ 成员函数,当与其关联的信号被发射时,这个槽函数就会被调用。槽函数有的参数个数和类型,在对应的信号函数中必须一一对应,即信号函数的参数个数必须多于或等于槽函数的个数。member:接收对象里面的槽函数,格式一般为。

2025-12-29 14:50:03 729

原创 【北京迅为】iTOP-4412精英版使用手册-第七十四章 QtCreator的安装和使用

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。界面后,选择安装包,我们在windows下学习Qt,所以选择qt-opensource-windows-x86-5.11.1.exe,点击即可下载。qt的移植性非常的强。不久的将来,qt会被用到MCU上,学习QT还是非常有意义的。

2025-12-27 14:32:14 348

原创 【北京迅为】iTOP-4412精英版使用手册-第七十三章 C++入门

在嵌入式上,我们少不了界面的开发,一种是用安卓,一种是用 QT,那么安卓对 CPU 的性能要求比较高,不是所有的 CPU 都可以运行,但是 QT 对 CPU 要求不高, 甚至可以在单片机上来运行, 而且 QT 是一个非常优秀的跨平台工具,一套代码我们可以在多个平台上来运行, 比如 Windows, Android, Linux 等,换一套编译器即可更换不同的平台。所以非常的方便和有趣。类的成员不仅可以是变量,也可以是函数,类可以看做是一种数据类型,这种数据类型是一个包含成员变量和成员函数的集合。

2025-12-27 09:44:13 852

原创 【北京迅为】iTOP-4412精英版使用手册-第七十二章 5.3.18内核移植

PWM_POLARITY_INVERTED,可选字段,是否提供由pwm driver决定,表示pwm信号的极性,若为0,则正常极性,若为PWM_POLARITY_INVERTED,则反转极性。使用命令 “vim arch/arm/boot/dts/topeet_LVDS_7_0.dtsi”新建名为topeet_LVDS_7_0.dtsi的设备树,方便exynos4412-itop-elite.dts 应用,也方便屏幕的更换与修改。反之,发射结反偏时,三极管处于截止状态,LED不亮。

2025-12-23 16:01:17 975

原创 【北京迅为】iTOP-4412精英版使用手册-第七十章一 Linux内核移植

由于开发板上的接口非常多,接下来大家如果有兴趣,可以对各个不同的外设移植驱动了,大家可以尝试从移植和研究当中学习Linux 的开发技巧。第一处:注释我们进到内核 arch/arm/boot/dts/下,里面默认有 itop 的设备树文件,如下图所示: 我们打开 exynos4412-itop-scp-core.dtsi 文件,修改设备树文件。所以我们要下载这个版本之后的。3)生成.config,我们直接使用官方的默认配置即可,直接输入命令 make exynos_defconfig,如下图所示。

2025-12-18 17:41:28 752

原创 【北京迅为】iTOP-4412精英版使用手册-第七十章iTop4412 u-boot-2020.10移植

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。配备三星S5M8767电源管理。配备Android、Linux+Qt、Ubuntu操作系统,开启学习、研发的全新方式。Exynos4412开发板处理器成功应用于三星GALAXYS3,联想K860,魅族MX2等热门产品当中,并取得巨大成功。功耗控制以及强劲的性能一直为业内称道,超过5000万片的出货量,足以证明其稳定性与可用性。已成为三星官方推广的处理器

2025-12-18 16:56:49 883

原创 【北京迅为】iTOP-4412精英版使用手册-第六十九章 Linux内核裁剪与定制

本章节不会谈到具体的代码,但是这里需要提醒的是,初学者特别是以前只接触过单片机的用户,Linux 学习过程中不需要也不可能从代码开始学习,Linux 驱动的学习步骤是"基础知识"“搭建环境”“编译烧写”,然后就是本章节的“定制内核”。Linux 内核看起来非常庞大,但是对于初学者以及开发应用程序的用户,根本不需要一开始就埋头于内核中,但是对于配置内核中的一些常用选项,并且编译出来下载到开发板上测试,则是必须掌握的,这是学习和掌握 Linux 的必行之路。取消配置,则内核在启动的时候,将不会打印信息。

2025-10-25 14:15:22 693

原创 【北京迅为】iTOP-4412精英版使用手册-第六十八章 U-boot基础知识

E4412_N.bl1.SCP2G.bin是三星提供的BL1文件,如果想分析,可以输入arm-none-linux-gnueabi-objdump -D -b binary -m arm E4412_N.bl1.SCP2G.bin > b1.asm命令生成反汇编文件,查看bl1.asm,初始化化环境如中断初始化,设置堆栈等,并搬移bl2代码到RAM中。就是说把整个 BL1 主体部分的内容累加和放到这里,然后实际计算下整个累加和,做对比,如果不对,就说明 BL1 是假的或错误的,不予执行。

2025-10-24 14:30:38 747

原创 【北京迅为】iTOP-4412精英版使用手册-第六十七章 USB鼠标驱动详解

其中的参数 name,则是驱动名称“usbmouse”,既然有驱动名称,那一定有设备名称,请注意前面介绍过的 USB 描述符,USB 描述符的具体内容是在USB 设备中的,相当于设备注册是在实体的“USB 设备”中!可以这样类比,当我们要到大学报到的时候,我们要填写学籍档案,假设学籍档案中信息都在户口簿上,例如:姓名、籍贯以及身份证号等等,这些信息从户口簿传递到学籍档案中,信息其实是一样的,只是在户口簿和学籍档案中组织形式不一样,名称不一样,实际包含的信息是一样的。主机只能和 USB 设备的“端点”通信;

2025-10-24 10:56:36 1044

原创 【北京迅为】iTOP-4412精英版使用手册-第六十六章 USB驱动专题

USB 通信的整个通信流程,在初始化进入 probe 之后,都是以 urb 为核心,urb 的处理流程为:创建 urb、初始化 urb(中断 urb,块 urb,控制 urb,同步 urb)、提交 urb、完成 urb、销毁 urb。除去具体的 USB 外部设备,像 USB 主控制器、USB ROOT HUB, USB HUB 等等都是属于 USB 内部设备,USB 内部设备的驱动实现,是不需要驱动工程师做的,这些工作在原厂提供的代码中都是支持的,甚至是 linux 官方的驱动中都是支持这些功能的。

2025-10-24 10:25:10 810

原创 【北京迅为】iTOP-4412精英版使用手册-第六十五章 Linux-定时器

在 Linux 内核中,定时器叫做内核定时器,内核定时器用于控制某个函数,也就是定时器将要处理的函数在未来的某个特定的时间内执行。内核定时器注册的处理函数只执行一次, 即不是循环执行的。内核的全局变量 jiffies:(记录内核自启动来的节拍数,启动的时候初始化为 0,内核之启动以来,产生的中断数)时钟中断,每产生一个中断,jiffies 就加 1。add_timer→mod_timer→ mod_timer(内核函数有下划线,表示“局部函数”)→internal_add_timer。

2025-10-23 16:27:49 320

原创 【北京迅为】iTOP-4412精英版使用手册-第六十四章 Linux-SPI驱动实验

SPI 和 I2C 一样,也是一个很常用的通信接口,大多数用于芯片之间的通信,同 I2C 相比,SPI 接口拥有更快的速度,速度可达十几 MHz。spi_device 封装了一个spi_master 结构体,事实上 spi_master 的注册会在 spi_register_board_info 之后, spi_master 注册的过程中会调用 scan_boardinfo 扫描 board_list,找到挂接在它上面的 spi 设备,然后创建并注册 spi_device。稍后会念念他的好的。

2025-10-23 16:06:14 758

原创 【北京迅为】iTOP-4412精英版使用手册-第六十三章 Linux-I2C驱动实验

虽然 I2C 看似复杂,但是需要我们嵌入式工程师做的事情并不多,首先,Linux 里面提供的 i2c adapter 的硬件驱动,探测、初始化 i2c adapte 等等这些几乎不需要我们驱动开发人员在添加了,我们需要关注的是实现 i2c 设备驱动中的 i2c_driver 接口,用具体的 i2c device 设备的attach_adapter()、detach_adapter()方法赋值给 i2c_driver 的成员函数指针。采用互电容的方法,在配合的相互的电容式触摸面板,它支持真正的多点触摸功能。

2025-10-23 15:53:09 524

原创 【北京迅为】iTOP-4412精英版使用手册-第六十二章 查询的方式获取按键值

iTOP-4412开发板【精英版】搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与大容量,纵使海量思考也能及时处理。第五步,在 led 驱动基础上修改初始化,设置 key 对应的 IO 为输入模式,添加驱动中的 rea 函数。然输入命令./read_key &运行应用层程序,按下开发板的按键,会看见我们的按键的数值已经被读出来了。第六步,使用 read 函数读管脚的状态,驱动使用 copy_to_user 函数上传给用户层。第一步,写入口出口函数。

2025-10-23 15:45:22 253

原创 【北京迅为】iTOP-4412精英版使用手册-第六十一章 PWM操作

定时器 0 与定时器 1 共用一个 8位预分频器,定时器 2、定时器 3 与定时器 4 共用一另一个 8 位预分频器,每个定时器都有一个时钟分频器,时钟分频器有 5 种分频输出(1/2、1/4、 1/8 、1/16 和外部时钟 TCLK)。当定时器递减计数器达到0的时候,如果设置了 Auto-Reload 功能,相应的 TCNTBn 的值会自动重载到递减计数器中以继续下次操作。然而,如果定时器停止了,比如在定时器运行时清除 TCON 中定时器使能位,TCNTBn 的值不会被重载到递减计数器中。

2025-10-23 15:27:18 646

原创 【北京迅为】iTOP-4412精英版使用手册-第六十章 RS485硬件原理

RS485 采用 SN65HVD3082 这个芯片,RO 为数据输入端,DI 为数据输入端,RE 是接收使能端,低电平有效,OE 是发送使能端,高电平有效,RE 和 DE 由一个管脚来控制,所以RS485 的驱动为串口驱动加上一个管脚驱动。硬件连接完成之后,我们把视频目录下面的测试程序分别拷贝到开发板上,因为 485 的驱动可以等于串口驱动+GPIO 的字符驱动,所以在驱动中只需要操作 GPIO,也就是设备节点/dev/max485_ctl。模块 2 和另外一块开发板连接,连接方式和模块 1 相同。

2025-10-23 15:09:05 369

原创 【北京迅为】iTOP-4412精英版使用手册-第五十九章 并发的控制

假设任务单元 A 申请“共享单元”:则先读变量,如果 0,则对变量加 1,如果 1,则直接返回,然后对共享资源资源进行操作,操作完毕之后则对变量赋值,假设任务单元 B 要申请“共享单元”:则先读变量,如果 0,则对变量加 1,如果 1,则直接返回,后对共享资源资源进行操作,操作完毕之后则对变量赋值。一个操作是原子操作,意思就是说这个操作是以原子的方式被执行,要一口气执行完,执行过程不能够被 OS 的其他行为打断,是一个整体的过程,在其执行过程中,OS 的其它行为是插不进来的。

2025-10-23 15:03:01 478

原创 【北京迅为】iTOP-4412精英版使用手册-第五十八章 中断之独立按键

修改完成之后,在 Ubuntu 系统下使用命令“mkdir irq_test”,新建文件夹“irq_test”,然后将修改好的驱动文件“itop4412_irq.c”、Makefile 文件拷贝到文件夹“irq_test”中,如下图所示。”这句代码在调试的过程中非常有用,就是打印当前所在的函数以及对应的行,在后面测试的时候就可以看到其效果。和上面中断申请函数对应的就是中断释放函数 free_irq,卸载驱动的时候需要调用,如下图所示,也是在头文件“include/linux/interrupt.h”中。

2025-10-23 14:45:06 683

原创 【北京迅为】iTOP-4412精英版使用手册-第五十六章 proc文件系统

为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi 目录中存储的就是当前系统上所有 SCSI 设备的相关信息,/proc/N 中存储的则是系统当前正在运行的进程的相关信息,其中 N 为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。1.13、task — 目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;

2025-10-23 13:40:07 509

原创 【北京迅为】iTOP-4412精英版使用手册-第五十五章 字符类GPIOS

配备三星S5M8767电源管理。修改完成之后,在 Ubuntu 系统下使用命令“mkdir char_driver_leds”新建文件夹“char_driver_leds”,然后将修改好的驱动文件“char_driver_leds.c”、头文件“char_driver_leds.h”、Makefile 文件以及应用文件“invoke_char_gpios.c”拷贝到文件夹“char_driver_leds”中,如下图所示。编写一个简单的应用“invoke_char_gpios.c”,如下图所示。

2025-10-23 10:54:52 505

原创 【北京迅为】iTOP-4412精英版使用手册-第五十四章 字符驱动

修改完成之后,在 Ubuntu 系统下使用命令“mkdir char_driver”新建文件夹“char_driver”,然后将修改好的驱动文件“char_driver.c”、Makefile 文件拷贝到文件夹“char_driver”中,如下图所示。使用命令“./mnt/udisk/invoke_char_driver”运行应用,调用驱动模块生成的设备节 点,如下图所示,可以看到两个设备节点都可以正常打开,说明驱动底层的 open 函数可以正常使用。使用编译命令“make”编译驱动,如下图所示。

2025-10-22 17:41:00 417

原创 【北京迅为】iTOP-4412精英版使用手册-第五十三章 生成字符类设备节点

以 4412 的串口为例,它有四个串口,不可能为每一个串口都重复申请设备以及设备节点,因为它们有类似的地方,而且很多代码都是重复的地方,所以引入了一个抽象的类,将其打包为 ttySACX,在实际调用串口的时候,只需要修改 X 值,就可以调用不同的串口。Linux 中的 class 是设备类,它是一个抽象的概念,没有对应的实体。如上图所示,这里给设备号 249 申请了两个设备节点,如果设备号 249 有对应的驱动, 用命令创建的设备节点和用代码创建的设备节点有一样的效果,都可以给提供给应用程序调用和操作。

2025-10-22 16:48:35 799

原创 【北京迅为】iTOP-4412精英版使用手册-第五十二章 注册字符类设备

如上图所示,用到多次 memset 函数,第一次由于没有规定 my_devices[i].data 的大小,所以只是对默认大小的数据赋值为 0,在设备初始化的循环中,又重新对my_devices[i].data 申请了 REGDEV_SIZE 大小的数据,所以需要重新赋值为 0。注册字符类设备的初始化函数为 cdev_init,这个函数在头文件“include/linux/cdev.h” 中,使用命令“vim include/linux/cdev.h”打开这个头文件如下图所示。

2025-10-22 16:37:18 642

原创 【北京迅为】iTOP-4412精英版使用手册-第五十一章 动态申请字符类设备号

启动开发板,将 U 盘插入开发板,使用命令“mount /dev/sda1 /mnt/udisk/”加载 U 盘,然后使用命令“insmod /mnt/udisk/request_ascdev_num.ko”加载模块request_ascdev_num.ko,如下图所示。将“实验 17_静态申请字符类设备号”中的文件“request_cdev_num.c”改为“request_ascdev_num.c”,然后添加动态申请设备号的代码,如下图所示。如上图所示,可以看到主设备号 249 已经动态被申请到。

2025-10-22 16:31:14 287

原创 【北京迅为】iTOP-4412精英版使用手册-第五十章 静态申请字符类设备号

这里使用设备号 9,使用加载模块的命令“insmod /mnt/udisk/request_cdev_num.ko numdev_major=9 numdev_minor=0”加载驱动 request_cdev_num.ko,如下图所示,加载成功。在 Ubuntu 系统下新建 request_cdev_num 文件夹,将写好的 request_cdev_num.c、编译脚本拷贝到 request_cdev_num 文件夹下,如下图所示。如上图所示,先将主设备号和次设备号默认为 0,然后做一个简单的判断。

2025-10-22 16:28:12 591

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除