自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++继承

派生类对象将使用派生类的方法,此时可通过基类作用域运算符使用基类方法。派生类对象将使用基类的方法。virtual只针对对象指针。

2024-03-23 09:26:40 71

原创 QGroundcontrol随笔

2024-03-21 17:05:41 335

原创 C++学习笔记

可以有参数(有参构造),可以重载,也可以无参数(无参构造),如果自己没有实现,编译器会自动实现无参构造。继承会将父类中的所有成员进行继承,对于父类的private类型的成员变量,子类中含有此成员(占用大小)但是子类不可访问此成员。拷贝 > 有参 > 无参,如果自己实现了高级,编译器不会自动生成更低级。如果自己实现了有参构造函数,则编译器不再自动生成无参构造函数。如果自己实现了拷贝构造函数,则编译器不再自动生成任何构造函数。类外不可以,子类可以。类外不可以,子类不可以。不可以有参数,因此不能重载。

2024-03-21 09:00:15 321

原创 qmldir的理解

plugins.qmltypes 由qmlplugindump -nonrelocatable QtLocation 5.14 程序自动生成,该文件为Qtcreator描述了dll中定义的C++类和属性,以便于QtCreator生成提示信息。plugin 后面的declarative_location 为插件名称,例如declarative_location.dll或者declarative_location.so。QtLocaion必须与qmldir所在的文件夹名字一样。,使用代码补全功能。

2024-03-19 09:01:52 376

原创 QML与C++通信

要注册一个 QML 类型,有多种方法可用,如 qmlRegisterSingletonType() 用来注册一个单例类型, qmlRegisterType() 注册一个非单例的类型, qmlRegisterTypeNotAvailable() 注册一个类型用来占位, qmlRegisterUncreatableType() 通常用来注册一个具有附加属性的附加类型。一旦导出了一个类,在 QML 中就必然要访问该类的实例的属性或方法来达到某种目的,而具有什么特征的属性或方法才可以被 QML 访问呢?

2024-03-16 17:40:00 1030

原创 Loader

在此前提下,如果子项想把接收到的event传递给父项Rectangle,必须设置子项的event.accepted = false,如果为true,只有子项能接收到event,父项无法接收。要想loader的子项获得焦点,必须Loader的focus属性为true,除此之外,还要设置子项的focus也为true才行。

2024-03-15 20:52:15 334

原创 qml 过渡 动画 转换

转换:用于状态转换,常与state配套使用,使用from和to来筛选state。方法一:使用Behavior on x 监听x的变化从而调用动画运行。方法二:通过动画的id,使用start或running启动动画。

2024-03-12 16:46:23 350

原创 qt添加xcb支持

2024-03-05 10:32:17 353

原创 glibc

证明buildroot会使用交叉编译器自带的glibc库来对根文件系统进行编译。

2024-03-05 10:06:14 368

原创 交叉编译qt5.14.2

7.在根文件系统/etc/init.d/下添加文件S80selfdef,目的是挂载NFS网络文件系统。5.将前期交叉编译的tslib文件夹和XCB、X11、XKB文件夹也拷贝到/opt/build_output/6.修改根文件系统/etc/profile文件,添加如下代码。

2024-03-05 09:42:54 443

原创 交叉编译工具链

2024-03-02 06:59:24 324

原创 apt查看包的依赖关系

利用apt-cache search xxx(xxx为关键字)找出对应的包名。然后用apt-cache depends 包名 找出依赖关系。例如:apt-cache search xcb。

2024-02-27 15:20:13 384

原创 ./configure配置说明

其中–prefix选项是配置安装目录,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。.c文件的编译选项,示例CFLAGS=“-g -O2 -I/home/mayue/bulidspace/termcap-1.3.1/install/include”./configure是用来检测你的安装平台的目标特征的。c++文件的编译选项。

2024-02-27 10:31:26 358

原创 编译链接库路径设置

可通过export LIBRARY_PATH=~/test/Lib:$LIBRARY_PATH 添加动态库搜索路径,通过printenv | grep LIBRARY查看是否添加成功。/etc/ld.so.conf和LD_LIBRARY_PATH具有同等的作用,都是程序运行时链接的库。

2024-02-27 09:02:27 398

原创 交叉编译qt到arm平台

autoconfigure.sh中指定了prefix(/home/consys/tool/aarch64-qt-output),这个目录需要注意并不是绝对路径,如果指定了sysroot,那么生成路径就是在sysroot指定的路径下创建prefix路径,即最终的动态库生成路径是(/home/consys/rk-qt/sysroot/home/consys/tool/aarch64-qt-output),这一点不要搞混了。pkg-config的搜索路径可以通过环境变量PKG_CONFIG_PATH指定。

2024-02-26 23:54:08 1014

原创 qmake

虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。也就是说,从同一个抽象规则出发,它为各个编译器定制工程文件。总结一下,make用来执行Makefile,cmake用来执行CMakeLists.txt,qmake用来处理*.pro工程文件。

2024-02-26 20:41:53 306

原创 各种GUI选型

2024-01-30 14:56:15 370

原创 交叉编译工具链

softfp: armel架构(对应的编译器为 arm-linux-gnueabi-gcc )采用的默认值,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。hard: armhf架构(对应的编译器 arm-linux-gnueabihf-gcc )采用的默认值,用fpu计算,传参数也用fpu中的浮点寄存器传,省去了转换,性能最好,但是中断负荷高。ABI是计算机上的,EABI是嵌入式平台上(如ARM,MIPS等)

2024-01-29 20:20:44 342

原创 defconfig和.config

make menuconfig利用默认. config再加上自己选择的模块配置选项生成最终版本. config。defconfig提供厂商默认配置,生成默认.config。make 利用最终版本. config进行编译。

2024-01-20 11:10:18 363 1

原创 Android镜像区别

boot. img( kernel.img和resource.img)uboot. img( bootloader镜像)resource. img(Linux设备树镜像)kernel.img( Linux内核镜像)

2024-01-20 10:14:22 347

原创 kobject和kset

把kobject加入kset分为以下几步:

2024-01-17 21:42:30 380

原创 总线bus

2023-12-14 06:48:01 34

原创 设备树节点

2023-12-04 20:09:39 55

原创 CPU上下文切换

进程是由内核来管理和调度的,进程的切换只能发生在内核态,所以进程的上下文包含了虚拟内存、栈、全局变量等用户空间的资源,还包含了内核堆栈、寄存器等内核空间的状态,所以进程的上下文切换要比系统调用更多一步,保存该进程的虚拟内存、栈等用户空间的资源,进程上下文切换一般需要几十纳秒到数微秒的CPU时间。前后两个线程属于同一个进程,因为虚拟内存是共享的,所以在切换的时候,虚拟内存这些资源保持不动,只有切换线程的私有数据、寄存器等不共享的资源。进程的内核态资源: CPU寄存器,内核堆栈。

2023-07-23 09:54:32 143

原创 桥接和NAT

vmnet0用于桥接的交换机vmnet8用于NAT的交换机

2023-01-29 18:13:12 108

原创 MMU工作原理

2023-01-13 22:39:58 102

原创 物理内存映射

2022-12-24 16:27:51 81

原创 系统调用和库函数

c标准库函数(fread)—指针操作带缓存,可以移植linux下的posix可移植编程接口Api(read)和 windows下win32 api —文件描述符fd,无缓存vfs虚拟文件系统linux驱动程序框架framebuffer驱动框架硬件驱动程序LCD硬件

2022-12-13 11:01:24 83

原创 线程和进程

用户视角看的PID是task_struct中的t_gthread,存在隶属关系。内核视角看到的是task_struct中的pid是独一无二的,内核视角线程和进程都是一样的,pid无隶属关系。

2022-12-11 21:58:30 106

原创 mmap内存映射

在驱动(内核空间)中申请kmalloc一块页大小(4k)的虚拟空间(3G-4G),然后通过virt_to_phy转变成物理地址(其实就是减去一个偏移地址),然后将此物理地址与vm中的虚拟地址(系统自动分配)映射。此后在驱动中和应用中将会访问同一块物理地址。

2022-11-21 17:13:46 96

原创 区分tty串口设备

tty0对应前台虚拟终端(有且仅有1个)tty1对应虚拟终端1ttySC0对应串口终端tty对应当前进程(在哪个shell执行的)所绑定的终端console为控制台,权限相比终端更大,可以查看内核打印信息,可在内核启动时设置/dev/ console=ttyx来指定其中一个终端作为控制台,如果没有事先指定,则按照串口或者虚拟终端的驱动程序安装的顺序来指定,哪一个驱动先安装则指定为控制台。

2022-10-30 09:43:00 947

原创 Linux阻塞与非阻塞

阻塞访问时:当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。阻塞访问最大的好处就是当设备文件不可操作的时候进程可以进入休眠态,这样可以将CPU 资源让出来。但是,当设备文件可以操作的时候就必须唤醒进程,一般在中断函数里面完成唤醒工作。Linux 内核提供了等待队列(wait queue)来实现阻塞进程的唤醒工作,对于设备驱动文件的默认读取方式就是阻塞式的。方法是先初始化等待队列头,然后把work加入到等待队列项add_w

2022-10-28 23:21:46 789

原创 Linux工作队列

tasklet属于软中断,且不可休眠,应用线程会一直等待软中断执行完毕才能继续执行,所以会卡顿。共享工作队列:中断服务函数里面调用schedule_work(function),内核线程会在合适的时机运行function,内核线程可以休眠,不影响app运行自定义工作队列(中断的线程化处理):request_threaded_irq(function ),如果某项work非常耗时,影响其他内核中work的执行(排队一个一个执行),可以单独开一个工作队列,用来单独执行那些耗时的work软中断可以被硬件

2022-10-28 23:21:27 156

原创 钻头使用心得

木质材料木工麻花钻,(非自攻丝打眼)支罗钻,(小孔)多功能麻花钻(可切割)扁钻,(深孔)平翼钻,(浅圆柱槽)飞机钻,(大孔)金属材料金属麻花钻,不锈钢开孔器阶梯钻,(薄壁钻孔)不锈钢类用含钴钻头,注意事项:低速,加水(温度高容易退火),土石材料三角钻,(玻璃、瓷砖、花岗岩)冲击钻头,(红砖〔冲击钻〕,混凝土〔电锤〕)注意事项:低速,加水

2022-10-28 11:30:44 856

原创 设备树节点

of_find_node_by_path1.从设备节点中提取GPIO号of_get_named_gpio2.gpio_request3.gpio_direction_input4.从设备节点中提取中断号irq_of_parse_and_map5.request_irq

2022-05-24 14:15:13 2243

原创 网络3

静态NAT实现私网地址和公网地址的一对一转换。有多少个私网地址就需要配置多少个公网地址。静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用。内部网络向外部网络发送报文时,静态NAT将报文的源IP地址替换为对应的公网地址;外部网络向内部网络发送响应报文时,NAT将报文的目的地址替换为相应的私网地址。PAT又称为NAPT (Network Address Port Translation) ,它实现一个公网地址和多个私网地址之间的映射,因此可以节约公网地址。PAT的基本原理是将不同私网地址的报文的源I

2021-12-01 08:22:41 118

原创 网络

静态NAT实现私网地址和公网地址的一对一转换。有多少个私网地址就需要配置多少个公网地址。静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用。内部网络向外部网络发送报文时,静态NAT将报文的源IP地址替换为对应的公网地址;外部网络向内部网络发送响应报文时,NAT将报文的目的地址替换为相应的私网地址。PAT又称为NAPT (Network Address Port Translation) ,它实现一个公网地址和多个私网地址之间的映射,因此可以节约公网地址。PAT的基本原理是将不同私网地址的报文的源I

2021-11-28 09:38:38 281

原创 光纤

光纤收发器:无协议,透明传输,电光转换,价格便宜,用来拓展以太网。光端机:分为发送端和接收端,通常用于视频监控。既可以传输视频,也可传输音频,485,网络,开关等信号,为有协议传输,有编码解码过程,缺点,价格较高。光模块:也叫光电转换模块,封装分为GBIC,SFP,SFP+等,为无源配件,不能单独使用,需结合光纤收发器或者光端机使用,光纤收发器中大多已经集成GBIC光模块,光端机后侧的fiber接口为光模块插入口,大多采为SFP接口形式,其中SFP封装的光模块大多是LC接口的光纤,GBIC封装的光模块大

2021-11-07 10:05:13 284

原创 ARM指令

ldr指令:ldr r1,0x1234表示将0x1234地址中的数据给寄存器r1ldr r1, =0x1234有等号表明这是伪指令,意思是将0x1234这个地址给r1寄存器,根据后面数值是否为立即数,将其转为其他两种指令1.若是立即数,将其转为mov指令2.若不是立即数,将其转为ldr r1,[pc,#4]...

2021-08-28 17:47:28 113

原创 Linux根文件系统

内核启动的最后一步为启动init进程,此时init进程属于内核空间,通过内核代码init/main.c中的init_post函数的run_init_process(sbin/init)跳转到Busybox的sbin/init程序,此时init进程属于用户空间,Busybox init程序对应的代码在init/init.c中。init程序解析etc/inittab文件,运行etc/init.d/rcS脚本,脚本中mount-a挂载文件系统,此过程会挂载etc/fstab中的文件系统。把需要执行的命令放

2021-08-25 18:10:19 89

空空如也

空空如也

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

TA关注的人

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