- 博客(68)
- 收藏
- 关注
原创 八、设备树的使用
dtc,device tree compiler,是将.dts 编译为.dtb需要用到的编译工具,是编译设备树的小工具。dts,device tree source,是设备树源码文件,是描述硬件信息的asiII文本文件。在结构上,DT是一个树,或具有命名节点的非循环图,节点可能具有任意数量的命名属性封装任。从概念上讲,定义了一组通用的使用约定,称为绑定,用于描述数据在树中的显示方式,以描述。这句话迫使ARM Linux社区引入了设备树。内核在解析这个节点的时候,会根据节点的状态,判定是否添加到。
2025-12-06 18:04:48
642
原创 七、platform子系统
在Linux 2.6内核中,提出了**“总线”、“设备”、“驱动”**的架构,目的是让我们写出来的驱动通用性更强。要在probe函数中,使用操作系统提供的通用API获取硬件的资源即可。当注册设备的时候,会去寻找同名的驱动,当注册驱动的时候,也会。根据总线的类型, 确定设备在总线上如何描述。根据总线的类型, 确定驱动在总线上如何描述。根据总线的类型,确定在总线上如何注册设备。根据总线的类型,确定在总线上如何注册驱动。根据总线的类型, 确定设备和驱动匹配原则。//描述platform总线上的设备。
2025-12-04 17:36:21
546
原创 五、Linux字符设备驱动
查看设备文件还在吗 ls -l /dev/led-device (创建方法 sudo mknod /dev/led-device c 240 0)devtmpfs挂载到/dev目录下,并自动创建与系统硬件设备对应的设备文件,这些设备文件用于让用户空间。字符设备或块设备,我们可以通过**设备文件(属性信息中包含的设备号)**来访问底层设备。描述文件属性信息(文件类型,权限,大小,修改时间,设备号[设备文件])第五集根据设备号添加字符设备,设备号和设备驱动绑定。它在系统启动时创建设备节点,并且可以在设备。
2025-12-04 17:19:34
691
原创 【无标题】
int * const p=&n;修饰指针变量名,表示p为常量,不能修改p的值。int const *q=^n;修饰*,表示q指向常量,不能修改q指向的内容。const int *q=&n;与int const *q=^n;相同。const int const *r=4n;具有p和q的特性。还有修饰函数返回值和函数3.volatile修饰变量,告诉编译器每次使用从地址读取,防止优化。4.static_cast、const_cast、reinterpret_cast、dynamic_cast5.new/d
2025-11-21 18:11:16
240
原创 四、Linux设备驱动介绍
操作系统驱动程序(Operating System Driver)是针对特定硬件设备编写的高层驱动程序,用于操作系统内核与硬件设备之间的交互。裸机驱动(Bare-Metal Driver)是指针对特定硬件设备编写的底层驱动程序,可以直接与硬件设备进行交互,实现对设备的控制和管理。因此,驱动程序需要深入了解硬件设备的特性和操作方式,并提供相应的API接口,以便应用程序可以直接调用驱动程序提供的函数来控制硬件设备。比如串口、鼠标、键盘等。驱动程序通常是作为操作系统内核的一部分运行的,用于管理和控制硬件设备。
2025-11-03 18:21:34
881
原创 三、linux驱动之模块参数和符号导出
当我们加载一个模块到Linux 内核的时候,Linux 内核允许向这个模块传递一些参数。编译模块A,在模块A编译好后,在它的当前目录会看到一个Module.symvers文件,这个文件里存放的。上面宏定义的任一个使得给定的符号在模块外可用,GPL 版本的宏定义只能使符号对 GPL 许可的模块可。将模块A编译生成的Module.symvers文件拷贝到模块B目录下,然后编译模块B。查找所有模块和其他文件, /etc/modprobe.d目录中的可选配置文件除外。模块的全局变量和函数,B模块是无法访问的。
2025-11-03 18:17:29
736
原创 二、linux驱动之模块化编程
make -C /lib/modules/$(shell uname -r)/build M=模块代码的路径 modules。**这就好比Linux操作系统的设计者开发的操作系统实际上是一个房子的框。写的内核程序对于Linux操作系统而言都是一个模块,可以随时加载到Linux系统中运行,也可以把内核程。/lib/modules/ubuntu的内核版本/build/Makefile。//告诉linux模块出口函数,从操作系统中卸载模块代码的时候调用。-----------切换到------------>
2025-10-28 13:18:52
881
原创 一、环境安装
如果clangd在处理的时候提示某些编译选项不支持,可以在工程目录下新建一个**.clangd**配置文件,使用vscdoe开发c/c++程序,在刚配置好clangd环境后,会发现函数调用会显示函数的形参名,如下图。这种提示虽然有助于我们开发,但是也有不好的地方,会妨碍我们控制代码的长度。建议直接在linux跑vscode,ssh链接不太好用。阅读Linux内核关于驱动框架相关源码。掌握Linux内核里面常用的驱动框架。**github下载地址:**理解软件架构设计思想。**课程下载地址:**
2025-10-28 12:50:47
422
原创 2六Ubuntu文件系统移植
在 linux 系统中,系统默认的目录结构都是以 /,即以。通过qemu-arm-static,我们在x86的ubuntu PC机上,可以模拟ARM处理器,就像运行在ARM上一样进。WantedBy :这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别。的某一个程序,那就可以使用QEMU的user mode来简化整个操作流程,同时能够方便的利用 QEMU 自。正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,
2025-10-20 14:43:14
692
原创 2五、buildroot支持Qt5
TSLIB_TSDEVICE 表示触摸设备文件,这里设置为/dev/input/event1,这个要根据具体情况设置,#TSLIB_CONFFILE 表示触摸配置文件,文件为/etc/ts.conf,此文件在移植 tslib 的时候会生成。#TSLIB_FBDEVICE 表示 FB 设备,也就是屏幕LCD,根据实际情况配置,LCD屏设备为/dev/fb0。#这里设置校准文件为/etc/pointercal,此文件可以不存在,校准的时候会自动生成。我们选择 External toolchain,自己添加。
2025-10-18 18:55:14
1052
原创 2四、buildroot支持第三方软件
ALSA Utils是纯应用层的软件,相当于ALSA设备的测试程序,ALSA-Lib则是支持应用API的中间层程。序,ALSA-Utils中的应用程序中会调用到ALSA-Lib中的接口来操作到我们的音频编解码芯片的寄存器,**而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是。核2.6后续版本中支持音频系统的标准接口程序,由ALSA库、内核驱动和相关测 试开发工具组成,更好。sshd 在开机自启的时候占用了很长的一段时间,仔细观察打印信息发现,
2025-10-18 18:28:10
839
原创 2三、buildroot
得到busybox-1.35.0.tar.bz2值以后,打开buildroot-2023.02/package/busybox/busybox.hash将busybox-这个错误是因为buildroot-2023.02/package/busybox/busybox.hash记录的是busybox-1.36.0.tar.bz2的。2. **系统默认的rcS脚本不会直接做系统用户态启动初始化操作,而是会调用/etc/init.d/目录下的SXX开。就算是内核设置了支持中文的话,
2025-10-17 19:05:15
746
原创 2二、u-boot移植
在 uboot 启动信息中会有“Board: MX6ULL 14x14 EVK”这一句,也就是说板子名字为 “MX6ULL 14x14。在u-boot源码下的configs目录下添加mx6ull_smartcar_defconfig配置文件。在u-boot源码目录下的include/configs目录下添加smartcar.h。在u-boot源码下的board/freescale目录下添加smartcar开发板。进入smartcar目录下,将mx6ullevk.c修改成smartcar.c。
2025-10-17 18:46:00
723
原创 2一、u-boot下载编译
在u-boot的configs目录下有u-boot支持的开发板的默认配置文件,我们需要根据自己实际开发的。我们的小车使用的是imx6ull芯片,NXP官方基于这款芯片做了EVK开发板,我们可以使用**和具体的板子有关的,打开freescale文件夹,freescale芯片的板子都在此文件夹下。在u-boot编译的时候,Makefile就会根据.config里面的配置,选。– mx6ull开头的,表示使用IMX6ULL芯片的板子。存放的是uboot源码需要的头文件,这里我们关注**
2025-10-17 18:15:30
515
原创 六节tslib移植 、Qt移植到嵌入式linux
TSLIB_TSDEVICE 表示触摸设备文件,这里设置为/dev/input/event1,这个要根据具体情况设置,#TSLIB_CONFFILE 表示触摸配置文件,文件为/etc/ts.conf,此文件在移植 tslib 的时候会生成。#TSLIB_FBDEVICE 表示 FB 设备,也就是屏幕LCD,根据实际情况配置,LCD屏设备为/dev/fb0。#这里设置校准文件为/etc/pointercal,此文件可以不存在,校准的时候会自动生成。
2025-09-27 19:32:51
914
原创 五节busybox
rcS是个shell脚本,可以在文件系统挂载后用来指定需要执行的命令和脚本,我们把它存放在etc/init.d路径。在交叉编译工具链的路径下有编译器默认链接的动态库,我们需要把这些动态库拷贝到rootfs目录下。Busybox 的编译配置和 Linux 内核编译配置使用的命令是一样的,使用命令“在根文件系统中创建其它文件夹,如dev、proc、mnt、sys、tmp、root等。1.拷贝busybox源码目录下的_install目录为rootfs目录。:要挂载的特殊的设备,也可以是块设备,比如。
2025-09-27 09:23:21
521
原创 三四节Linux内核移植-------LED驱动编译WIFI驱动编译----调用
确认当前的配置是否支持自己开发的芯片。kconfig语法 -------略。新建kconfig和makefile。在上一级makefile添加下代码。安装内核配置与编译需要的工具。在上一级kconfig修改。使用默认配置为文件配置。检查.config文件。
2025-09-22 16:14:54
635
原创 修改u-boot延时rk3568为例
编译成功,标注处表示使用了修改后的.config文件,uboot与kernel编译前都需要进行make ***defconfig命令,表示使能某些选项,defconfig内容会写入.config,最终编译使用.config的配置,./build.sh uboot已经包括了make ***defconfig,不需要手动去make。注:不同主板的设备分区会有所差异,获取到的分区表与此案例不同为正常现象。将CONFIG_BOOTDELAY值修改为5,表示uboot启动后会延迟5秒等待用户操作。
2025-09-21 11:05:58
439
原创 串口-TTL-RS485-RS422-RS232
串行接口指的是数据一个一个的顺序传输,通信线路简 单。在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定 为。异步方式指的是,数据传输的过程中,不需要时钟线,直接发送数据就可以了。例如我们常说的串口采用。是对电气特性以及物理特性的规 定,只作用于数据的传输通路上,它并不内含对数据的处理方式。发送方和接收方之间是没有时钟信号线的,他们各自使用自己的时钟。同步方式指的是,在数据传输的过程中,需要一根时钟线同步。,特点是通信线路简单,成本低,适用用于远距离通信。
2025-09-06 11:35:17
1001
原创 GD32F407VE环境搭建,标准库工程创建
打开下载的 GD32F4xx 标准固件库,里面的目录如图Examples:此文件夹包含的是官方编写的示例代码,涉及芯片的大部分功能。Firmware:此文件夹里面有 3 个文件夹,包含 CMSIS,标准外设库和 USB 库,存放官方封装的一些库函数,方便用户开发使用。Template:此文件夹是工程模板文件夹,里面包含 IAR 和 Keil 的工程示例。Utilities:此文件夹包含一些第三方组件和 GD32 配套的开发板文件。
2025-08-28 18:38:12
1119
原创 STM32F407VG工程创建标准库版
打开下载的 STM32F4xx 标准固件库,里面的目录如图Project:此文件夹包含的是官方编写的示例代码,涉及芯片的大部分功能。还包含了模板代码。Libraries:此文件夹里面有 2个文件夹,包含 CMSIS和固件库,方便用户开发使用。Utilities:此文件夹包含一些第三方组件和 STM32 配套的开发板文件。
2025-08-28 15:54:20
893
原创 嵌入式小记
输出高电平时需外部上拉电阻提供电流,读取外部状态时,引脚呈现高阻态检测外部电平。输出方式:可输入也可输出。若无上拉电阻,无法输出高电平,加上拉电阻后,高电平接近上拉电阻所接电源电压。输出电流:灌电流(外部电流流入引脚)可达 20mA ,拉电流(引脚输出电流到外部)为 270~150μA。输出电流:强上拉输出,可达 20mA,需加限流电阻,防止电流过大损坏电路。输出电压:弱上拉特性,输出高电平接近电源电压 ,输出低电平接近 0V。输出电压:无实际输出电压,仅用于检测外部输入电平,自身不产生驱动电压。
2025-07-14 08:54:08
467
原创 nightqss
*不勾选进度条的textVisible属性*//*文字需使用单独控件*//* 需用多个组件 *//*单行输入文本框*//*多行输入文本框*//*对话框关闭按钮*//*对话框主界面*//*非悬浮海图上*//*下拉式组合框*/
2024-06-14 22:35:38
343
原创 dayqss
*不勾选进度条的textVisible属性*//*文字需使用单独控件*//* 需用多个组件 *//*单行输入文本框*//*多行输入文本框*//*对话框关闭按钮*//*对话框主界面*//*非悬浮海图上*//*下拉式组合框*/
2024-06-14 22:35:03
460
原创 黑色格调qss
*不勾选进度条的textVisible属性*//*文字需使用单独控件*//* 需用多个组件 *//*单行输入文本框*//*多行输入文本框*//*对话框关闭按钮*//*对话框主界面*//*非悬浮海图上*//*下拉式组合框*/
2024-06-14 22:27:08
400
原创 windows10 sockect tcp
这是因为inet_addr是一个老函数,而微软就是喜欢强迫别人用它的新函数。1. 用socket的新函数代替程序出现的所有老函数,此方法学习成本太高。2. 在项目属性里设置,告诉编译器,我就用老函数,让她不要报错了。
2023-10-14 20:24:55
898
原创 银河麒麟链接Windows
5.麒麟打开终端ctrl+alt+T输入sudo apt-get install openssh-server g++gdb gdbserver。9.工具-->选项-->跨平台-->链接管理器-->添加。8.visual studio 创建linux项目。6.检查g++ -v。7.设置手动IPv4。
2023-04-19 09:08:14
1066
原创 cocos2dx 3.17.2 Android Studio打包环境搭建及过程
cocos2dx3.17.2 Android Studio 打包过程及环境配置
2023-02-11 16:31:24
812
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1