- 博客(23)
- 收藏
- 关注
原创 Router‘s WAL AND LAN
一般无线路由器主要包括电源接口、复位按钮(Reset键)、1个WAN端口、3个或4个LAN端口,以腾达AC23为例其中LAN端口主要用来连接局域网,WAN端口用来连接外部网线,Reset复位按钮用来恢复出厂默认设置。LAN:即局域网,Local Area Network的缩写,安装便捷、成本节约、扩展方便等特点使其在各类家庭、办公室内运用广泛。LAN口:本地网接口,连接台式电脑、笔记本、电视机、交换机等内部网络,将一根网线一端连接任意一个LAN口,一端连接自己家里需要联网的设备。
2024-08-09 13:32:19
145
原创 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
可选类型如fpa,fpe2,fpe3,maverick,vfp,vfpv3,vfpv3-fp16,vfpv3-d16,vfpv3-d16-fp16,vfpv3xd,vfpv3xd-fp16,neon,neon-fp16,vfpv4,vfpv4-d16,fpv4-sp-d16,neon-vfpv4等。ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
2023-10-22 11:07:44
1106
原创 Android灯光系统笔记
Android 底层与应用层之间的传递过程如下图Andriod app(java)这里表示的是一个应用程序,可以当做一个client(客户,即我们硬件访问服务器服务的对象),我们所做的一切,都是为了给client提供合适的java接口去控制硬件。当然,即使客户是上帝,也的遵循一定的规则。那么客户,需要遵循什么样的规则,才能达到他访问硬件的目的呢?1.需要申请具体服务(getService),就好像你去酒店吃饭一样,你需要点菜,指定具体的菜名。只有菜单里存在的菜式才可以点2.指令发送,你获得服务以后
2021-05-20 10:34:29
441
1
原创 shell脚本编译uboot,Kernel,rootfs指定名保存到指定文件夹
这个脚本文件是用来构建uboot kernel rootfs,可以使用./build_commom_ukr.sh --h来获取帮助信息。#!/bin/bashshell_dir=$(cd $(dirname $0); pwd)#uboot configuboot_dir=${shell_dir}/u-boot-2016.03uboot_target=/home/jerry/Nxp_sdk/nxp_drcoffee_board/build_commom_ukr# kernel configk
2021-03-02 13:17:24
443
原创 Linux Kernel LCD屏驱动流程
为了解决24位色渐变效果,来从头梳理一次LCD屏的驱动,看下问题出在哪里。------------------LCD Device Tree --------------------------lcdif: lcdif@021c8000 { compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif"; reg = <0x021c8000 0x4000>; interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL
2021-01-18 11:15:25
1509
1
原创 Linux驱动中LCD相关参数及时序
在LCD的相关参数中主要是图像传输时序及VSYNC,HSYNC,DATA_ENABLE等参数LCD驱动移植中经常会需要配置LCD显示相关的参数及data transfer timing。SOC中LCD控制器需要的时序从SOC时序图获取的信息VSYNC时序图中低电平无效,高电平传输数据。HSYNC时序图中低电平无效,高电平传输数据。DATA_ENABLE低电平使能传输数据。LCD屏厂商提供的时序从LCD厂商提供文档中时序图获取的信息VSYNC时序图中低电平无效,高电平传输数据。
2021-01-06 14:29:56
1903
1
转载 谈 Linux,Windows 和 Mac<王垠>
这段时间受到很多人的来信。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门…… 我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了。简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:Linux 和 Unix 里面包含了一些非常糟糕的设计。
2021-01-05 13:57:08
641
原创 Linux应用层与内核驱动层3种交互方式
本文主要是总结出应用层与内核驱动层的主要交互方式,并提供示例代码分析交互过程。但不涉及更细节的内核代码的分析。应用层与内核驱动层交互的方式多种多样,这里只写出了我目前理解到的3种方式,至于其它等以后再做整理。应用与驱动3种方式所谓的应用与驱动层的交互主要是数据的传递,这里主要是使用内核提供给应用层的API接口,从而实现应用与驱动数据传递。应用层操作硬件设备也是通过内核层提供的API接口或文件设备提供的操作接口来实现调用驱动来操作硬件设备。总结来是应用层与驱动层数据相互传递,或应用层通过驱动提供的方法
2021-01-05 10:00:14
8325
1
原创 C++ 复习常用知识点
复习常用知识点总结指针、引用、数组、内存引用与指针的区别虚机制:虚函数、虚函数表、纯虚函数C和C++的一些区别:new、delete和malloc、free的区别一些关键字的作用:static、const、volatile、extern四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_castSTL部分容器的实现原理,如 vector、deque、map、hashmap模板特化、偏特化,萃取 traits 技巧继承、虚继承
2020-12-24 15:10:20
256
原创 C++对象使用虚析构函数原因
原因:在多态的情况,存在一种情况就是使用基类指针指向派生类对象,这样就可以实现多态的使用。基类指针调用派生类函数。然而在结束时需要删除对象,这个时候如果直接使用基类指针删除对象,那么由于对象的指针作用域,指针只会调用基类的析构函数,释放基类析构函数中的操作。但不会执行派生类中析构函数,这样派生类析构函数中所有的操作都得不到执行。那么肯定会漏掉很多的操作,典型的派生类所申请内存空间的释放,可能就在析构函数中释放,无法执行到自然就没有释放,产生内存泄漏问题。#include <iostream>
2020-12-16 15:54:00
159
原创 内存管理之连续-非连续内存分配方式
进程分配内存空间让其正常支行的三种方式:1)连续内存分配(为一个进程分配一片连续的内存空间)2)非连续内存分配3)虚拟内存管理连续内存分配方案进程独享用户空间内存区域,把所有的内存一次性分享给进程(程序)使用。这们系统只能执行单程,单用户的模式。静态内存分配方案动态内存分配方案给配给一个进程的内存,且进程没有完全使用这片内存则会产生内部碎片。而由于内存空间太小导致无法正常分配给进程使用,内存剩余产生的叫外部碎片。不管内部或外部碎片都会产生内存的浪费。关于动态内存分配的管理算法这里不作记
2020-12-16 10:21:46
2316
原创 C++对象内存模型延伸理解
我们是面向什么编程在编程时,时常会说我们是面向过程编程,还是面向对象编程。其它这是把底层内存处理过程,通过编译器来抽象实现。事管是面向什么编程,其它底下都是面向内存编程。面处对象编程时的内存模型在编程过程中,如c++等高级语言都是面向对象编程的方式实现。都要涉及到对象的内存模型问题。如果我实例化一个对象,那这个对象在内存中是如何存放的,如果这个对象还存在继承关系,那继承的基类与派生类在内存中又是怎么样存放,存在什么样的关系呢。本篇只说几个比较简单的问1) 继承中基类的对象与派生类对象在内存中存放。
2020-12-11 15:33:19
150
原创 C/C++有意思的指针(5)
指针与引用的关系经常会看到关于指针与引用的关系,也有会它们之间的对比等等。但我确认不太想把引用与指针做太多的对比,在我看来引用更多的与普通变量相关,而不是与指针变量相关。虽然说它们本质上都是对内存空间的操作。但变量,指针变量,引用变量的操作内存来源都是内存地址所指向的空间。定义变量,也是在内存区域开一块内存在使用。只是在编译时编译器对变量的地址直接进行解引用,或说编译作为中间人,把变量与内存址址绑定死了无法再指向其它内存区域,所以变量不能像指针那个重新指向其它地址。变量没办法再更改指向的内存空间,所以变
2020-10-17 10:06:53
80
原创 C/C++有意思的指针(4)
指针与寄存器指针可以让我们申请内存空间,并使用指针读写指定的内存区域。但还有另外一种情况,我们想把数据放到指定的内存区域,或说在某些寄存器与内存统一编址的平台,想要访问某段寄存器,并更改寄存器的值。通过查看芯片手册,知道设备寄存器地址,然后通过把地址值转换成指针对这段寄存器内存进行读写。我们通过取地址符(&)来获得内存地址,同理也可以知道指定内存地址值,把地址值转换成指针。指针在驱动程序中的角色外设备控制寄存器,在驱动编写时常需要根据需对外设进行设置,这就需要配置外设的功能控制寄存器来实现
2020-10-16 10:47:21
107
原创 C/C++有意思的指针(3)
指针是内存的空间戒指指针类似于玄幻小说主角手上的空间存物戒指,有些属性好的戒指包含完整的宇宙空间。属性差的可能就只有一个仓库大小的空间。所以如果手上有一个牛逼的空间戒指那不知道有多爽。程序员有机会通过计算机的内存空间来获得这样一种能力–拥有储物戒指,从而获得某个空间(内存空间)。内存空间也是一种空间,只是存储的东西受限制于现在计算机的功能,能存储二进制数。我相信未来肯定可以像小说那样拥有真实的空间,想在这个空间存什么都可以。那么程序怎么样生成一样空间戒指呢,就是定义一个指针,把这个指针指向内存的一片存
2020-10-15 16:18:27
105
原创 C/C++有意思的指针(2)
指针变量的定义与使用普通变量的定义与使用不存在很大的区别,定义了直接使用即可。但指针的定义与使用是需要作区分的。int* p = nullptr; //定义时*指内存地址,或说指向的内存区域首地址cout << *p << endl; //指针使用时*是指对p存放的地址解引用,按p的数据类型读取内存数据。这对指针类型作解析:(int*) 类型中的* 为内存地址类型,指向某个内存地址首地址。再加上旁边的int则约定这个内存区域存放的数据类型为Int型,按int类型读取内存4
2020-10-15 10:58:36
127
原创 C/C++有意思的指针(1)
指针带来的乐趣在C/C++中指针是一个常用的类型,但同时指针也是一个重要且有意思的概念。这个概念说大了与量子纠缠什么还能联系在一起,也可以与宇宙空间联系起来。而我更喜欢它另外一个角度的理解:玄幻小说里男主角的空间戒指。记得以前看玄幻类小说时常羡慕男主角的空间储物戒指,想放什么就放什么,还可以在信物戒指里面住,甚至生活都可以。里面放的都是奇珍异宝,鸟语花香等等,总之它是一个与世无争的空间。只要你有一个这样的戒指你就能获得具大的空间,这里的空间是指宇宙空间。而计算机相当于现实世界的虚拟,它也有自己的空间,这
2020-10-14 10:05:38
180
原创 C++ 理解虚指针、虚函数表
C++多态实现的基本是虚函数,虚函数实现的依赖的机制是指针,即在类中使用指针变量向一片内存区域。后面知道这个内存区域存放是函数指针列表。所以使用函数指针数组的方式来实现。理解虚指针,虚函数表在C语言中我们使用struct创建结构体,应用结构体时都使用到一个概念叫内存首地址,内存首地址也是内存区域第一个元素地址。数组中使用数组名来作为数组内存首地址,可以使用数组名作为指针操作数组中的数据。在类中也是一样,我们使用一个变量,使它固定到类第一个位置,那么不管我们如何作指针转换也可以通过类名访问到,因为不管如何
2020-09-26 10:26:19
363
原创 public protected private关键字权限
public protected private关键字我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public、protected、private。关于这三个关键字理解了下面的框图访问权限publicprotectedprivate对本类可见可见可见对子类可见可见不可见对外部(调用)可见不可见不可见框图第一行看(对本类行),则代表着类内部三个关键字的权限。如果框图一列列看,则代表继承角度来看三个关键字的权限。如publ
2020-09-21 17:05:56
697
1
原创 C/C++ Const关键字小结
Const关键修饰变量常用功能const关键字通常用来修饰变量、函数。当用来修饰变量则向编译器表示此变量为不可以修改内存数据,内存数据相当于只读属性。const关键字修饰的变量或对象不影响该变量的生命周期。但影响变量的作用域 。使用const关键修饰的全局变量在不同文件中使用,需要显式的声明为extern属性,且必须定义时已经初始化。普通的全局变量默认即为extern属性所以不需要显式的说明即可以在不同文件中使用,且普通变量声明可初始化,也可不初始化变量。const修饰的变量由于是只读属性
2020-09-21 10:27:27
135
原创 C++构造函数浅拷贝与深拷备
在很多的程序场景都会用到浅拷备或深拷备。然由于两种拷备方式的机制不同,所以应该场景也不同。如果错用会带来一定的程序风险。浅拷备特点: 在拷备时把所有的值直接从源对象到目标对象上。正是由于这种拷备数据的机制,当对象里的数据都是直接分配内存,不需要在堆栈上再分配内存,这种下可以直接使用浅拷备方式即可。设想,如果一个对象中有指针变量,那么这个指针变量使用时,必然需要动态申请一块内存区域来存放数据。如果使用浅拷备机制,在拷备过程中指针变量的赋值也是直接的,那么这时源对象指针获得的数据是目标对象在堆栈上申请的某
2020-09-18 16:02:17
302
原创 Qt Creator Qml 嵌入式环境与桌面环境配置
系统环境:Ubuntu 18.04buildroot 根文件系统Qt creator 5.12.0开发环境创建使用 ubuntu作为操作系统环境。使用Buildroot生成根文件系统,在buildroot中可以直接把QT相关库编译进根文件系统中。这样直接搭建好嵌入式开发环境,而不需要另外再分别编译根文件系统,QT库,QT组件等事项。主机开发环境由于环境已经搭建好,这里就不重新搭配开发环境。如果有需要我另外开一篇来写搭建环境的过程。本文主要针对已经搭配好的环境中环境变量问题作个总结。环境变
2020-09-05 14:51:51
1458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人