自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (13)
  • 收藏
  • 关注

原创 andriod硬件访问硬件服务框架--流程(思维导图)

安卓多个应用程序的时候 同时访问硬件 会造成冲突 所以就是用 server框架写server的框架 有些复杂 就用流程图 表示出来大概开发应用程序的时候 就是这个流程图 后面 有详细开发按按理-----led server框架开发...

2020-03-02 01:51:27 1722 2

原创 04_iic子系统

iic_client和iic_driver 加入iic总线的思想和paltform总线的玩法一样把iic设备和驱动注册到iic总线中 构造出字符设备驱动和设备节点供app进行操作但是iic硬件设备是挂在iic控制器下面的 所以iic控制器也会有自己的驱动和设备树节点 厂家一般都会帮做好我们写的iic_driver驱动程序 控制iic硬件的时候 使用iic总线提供的api 来控制iic硬件设备详细介绍分两部分 一个是iic驱动程序 一个是iic控制器驱动介绍。

2023-01-23 23:51:52 559

原创 00_linux 设备驱动模型 2.6以后通用模型

自定义一个总线 叫x-bus在里面增加dev和drv 匹配成功后 调用drv的probe进行基本的设备文件创作和设备节点创作/sys/bus/xbus 自己生成的总线,和IIC这边匹配类似自定义总线dev /sys/bus/xbus/device/zzz自定义总线drv /sys/bus/xbus/drv/zzzbus_register(struct bus_type * bus) //添加新的总线类型 device_register(struct device);

2023-01-23 23:50:29 814

原创 02_gpio子系统

驱动程序还想控制gpio 可以不用读写寄存器 直觉用gpio子系统开发的接口就能用了轻松做输入输出 获取当前值gpio1 记录了控制器相关的寄存器基地址//初始化外设时钟 gpio - controller;//表明gpio1是gpio控制器 # gpio - cells = < 2 >;//表明gpio1是中断控制器 # interrupt - cells = < 2 >;//表明gpio1和pinctrl子系统关系 gpio子系统引脚编号和pinctrl子系统引脚编号的关系 }

2023-01-22 22:05:26 935

原创 09_使用设备树

查看设备树在sys目录下的 也就是kobj 的一些注册了这个目录下的的各种属性都能cat (kset)同时还有子节点目录 或者文件名 和之前的kobj ktype的文件文件夹 映射类似设备树的原文件 编译成dtb uboot进行加载到指定位置把各种节点转换为 struct device_node 结构体有compitle属性的话 转换为 plantform_device 节点的属性用struct propetry表示。

2023-01-22 16:44:35 1

原创 07_plantform平台总线

平台总线其实就是继承 06_自己创建xbus总线 有了更多的玩法和自己创建的xbus总线一样 平台总线也有dev和drv 需要这两个进行匹配之后 进行porbe调用plantform_device 结构体中直觉继承了 struc devicelantform_driver 继承了driverplantform平台总线不用手动注册 上电的时候执行了 platform_bus_init()

2023-01-21 15:06:56 630

原创 06_平台总线匹配规则,自己搭建总线xbus

自己创建平台总线 /sys/bux/xxx对平台总线加入dev /sys/bus/xxx/dev对平台总线加入drv /sys/bus/xxx/drv两个相匹配的时候 直接调用drv->probe 函数 进行基本的class_create() device_create()等创建设备文件 和设备节点。

2023-01-21 12:16:32 626

原创 02_kset和ktype和kobject相互关系

sys/下面每个目录对应的时一个kobj 有的kobj是key_set结构体的一个变量举个简单的例子:/sys/device/plantform/devices 是一个key_set,因为创建了这个文件夹 同时也有kobject作为它的结构体成员/sys/device/plantform/drivers 是一个key_set,因为创建了这个文件夹 同时也有kobject作为它的结构体成员。

2023-01-20 21:11:40 3

原创 03_class创建device创建_kobject_uevent发送

根据之前的kobject知道 /sys/目录下的每个文件夹都是一个 kobject的对象使用class_create() 创建 /sys/class/xxx目录 同时返回class对象使用device_create() 创建/sys/class/xxx/yyy目录 和创建/dev/yyy的文件节点 同时返回device对象class和device 都间接继承于kobject 所以kobject是总线、驱动、设备的三种对象的一个基类。

2023-01-20 21:08:09 278

原创 01_kobject和ktype创建设备文件和设备目录

设备文件属性指的是 /sys/yyy/xxxyyy:代表这个设备的目录xxx:代表这个驱动设备的各种属性,我们可以直接操控属性来控制这个设备比如之前常见的 echo 5 > /sys/led/brightness 直接操作这个属性来更改led的亮度。

2023-01-20 21:07:34 346

原创 00_linux_最简单构建字符设备 2.4版本之前使用

背景:怎么构建一个最简单的字符设备驱动并且可以使用app进行操作大致方法1.写驱动文件(file_operation),构造对应的read write 函数2.分配设备名称(/proc/devices/设备名称)3.注册进内核 使用主次设备号,设备名称 ,insmode 注册后 在/proc/devices/设备名称 就能找到对应设备4.对这个设备进行注册,mknode 命令,生成 /dev/设备文件名称5.应用程序打开。

2022-11-27 23:14:29 116

原创 Linux 进程通信

创建子进程在诸多的应用中,创建多个进程是任务分解时行之有效的方法某一网络服务器进程可在监听客户端请求的同时,为处理每一个请求事件而创建一个新的子进程有两种方式,第一种复制父进程的大部分内容,第二种重新开始,不需要去继承父进程的数据段、堆、栈以及继承了父进程打开的文件描述符fork()单独存在为第一种使用fork()后子进程马上使用exec()变为第二种方式第一种(需要继承)一个现有的进程可以调用 fork()函数创建一个新的进程,调用 fork()函数的进程称为父进程由 fork()函数创建出

2022-05-15 17:51:09 227

原创 linux信号原理

基本概念信号的目的通信一般是进程向另一个进程发送信号,下面列举一些情况a.硬件发生异常b.终端下输入如: CTRL + Cc.进程调用 kill()系统调用可将任意信号发送给另一个进程或进程组 :接收信号的进程和发送信号的进程的所有者必须相同d.发生了软件事件:如进程所设置的定时器已经超时、进程执行的 CPU 时间超限信号由谁处理、怎么处理a.忽略信号b.捕获信号:执行预先绑定好的信号处理函数c.执行系统默认操作信号的分类Linux一共有62种信号Linux 系统下可对信号从两个

2022-05-02 15:10:03 548

原创 usb分层解析

随便插入一台手机提示这个是android设备,请您安装驱动程序1.既然没有安装驱动程序,为何是android设备?因为windos有了usb总线驱动程序,接入usb设备后,从usb总线驱动程序中知道是一个 “android phone”提示安装的"设备驱动程序",而不是usb总线驱动程序usb总线驱动负责识别:usb设备,给插入的usb找到对应的驱动程序2.usb种类这么多,为什么插入电脑就知道是 androidpc和usb都会有一些规范 : 这样usb总线驱动会发出某些命令获取设备信息(

2022-02-11 15:49:59 322

原创 整理Linux启动流程

linux是怎么启动的呢?回答:按下电源键,玩耍手机基础概念BL0:SOC内置在iROM里的代码,是芯片厂商事先烧好的代码,这部分代码会根据指定的引脚电平决定从什么设备启动。BL0就是Nand Flash,NorFlash,iNand等设备的复制函数(因为要读Flash,所以要简单初始化以下Flash),他的主要工作是把BL1从Flash中拷贝到iRAM或NorFlash上运行。(BL0是SOC出厂前设置的,芯片厂商也不知道板子上将来接的是什么样的DRAM,因此配置和初始化内存和Flash就交给BL1

2022-01-30 22:27:43 1673 2

原创 android调用底层原理

android中app调用c过程什么是JNI?是一种协议,并提供一套编程框架,让java和本地语言(C/C++)之间能够相互调用。JNI简单来说就是java程序可以调用C/C++写的动态链接库为什么需要JNIJava由于是平台无关语言,通过不同操作系统下具有相同功能的JVM实现一次编译,可以到处运行。也正是因为JVM,使得Java程序运行的效率相对于C/C++等本地语言较低,而且不能像C/C++一样直接操作底层硬件。什么是NDKNative Development Kit 本地开发工具集。

2022-01-03 22:33:24 1422

原创 ARMv7和ARMv8的区别

记录一些关键的变化:对工程师来说Armv8-A有什么新东西?Armv8-A架构引入了许多变化,可以设计出可实现的性能更高的处理器。因为pc端逐渐对arm架构的偏爱,大的内存和寻址空间就很有必要,原始的32bit只能支持4gb内存大的物理地址这使处理器能够访问超过4GB的物理内存。64位虚拟寻址这使虚拟内存越过4GB限制的。 这对使用内存映射文件I / O或稀疏寻址的现代桌面和服务器软件很重要。自动信号事件这使得高效,高性能的自旋锁成为可能。更大的寄存器文件有31个64位通用寄存器,这提

2022-01-01 16:57:34 2562

原创 c 工程开发字符串 api模型

描述一char *p = “abcd1111abcd2222abcd333” 请找出abcd出现的次数要求1 :自定义一个接口(函数),并实现功能要求2 :编写测试用例api分析实现一个函数 --> get_count()参数分析 a.需要查找的子串 b.待查找的子串 c.输出的结果a.需要查找的子串 --> 需要查找的子串整个存放的内存空间 --> 需要子串的首地址 = char *strb.待查找的子串 -> 待查找的子串整个存放的内存空间 --&g

2021-11-09 15:08:28 61

原创 嵌入式c自我修养

开始记录一些在内核里看见的奇怪语法,慢慢认清,学会他们的写法宏定义写一个比较大小的宏定义差劲#define MAX(x,y) x > y ? x : y会因为传入的宏带有其他符号(考虑优先级)而改变我们的想法比如 : printf(“max=%d”,MAX(1!=1,1!=2));中等#define MAX(x,y) (x) > (y) ? (x) : (y)括号外的符号也会有类似的优先级比如 : printf(“max=%d”,MAX(1!=1,1!=2));良好#

2021-09-02 00:08:37 269

原创 hdiraw多点分析,使用getevnt进行上报

分析input event的数据多点按下多点发送是 开始先单点发送的指令 +另一个点0003 D047 00000001 //好像代表手指10003 D057 00000001 //应该是对1手指的追踪0003 D053 000020a10003 D054 00005a44多点移动/dev/input/event0: 0003 D047 00000000/dev/input/event0: 0003 D053 0000425b/dev/input/event0: 0003 D054

2021-08-18 17:07:51 192

原创 通用makefile快速上手

记个通用makefile平时写代码时,如果有通用makefile就好了,现在有时间,记录一个 基本目录结构如下include 包含了所有的头文件,其他文件里面都包含了一个MakefileMakefile还需要改改的顶层MakefileMakefileCROSS_COMPILE = AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ldCC = $(CROSS_COMPILE)gccCPP = $(CC) -EAR = $(CROSS

2021-08-16 15:52:27 99

原创 hidraw进行单点复现触摸痕迹

查找官方的文档hidraw的描述可以读取一个usb的原生数据,并且对数据进行解析读取read()读取usb发送回来的数据写usb支持数据输入的话(有一个 INTERRUPT OUT 端点)ioctl()HIDIOCGRDESCSIZE:获取报告描述符大小HIDIOCGRDESC:获取报告描述符 —>返回 struct hidraw_report_descriptorHIDIOCGRAWINFO : 获取原始信息 —>返回 struct hidraw_devinfoH

2021-08-06 17:33:56 447

原创 触摸屏按键录制与回放--基于event和uinput

继续学习拿到的需求基础:1、可以正常录制触摸数据到文件,包含时间信息(进阶任务需要用到)2、可以通过分析触摸文件统计每个触摸点相关down/up状态,以及丢up等数据3、移植getevent工具进阶:1、实现触摸的回放功能(可以不考虑时间戳,单点实现X,Y坐标即可)。(提示:使用uinput)2、实现循环回放,以及时间序列与文件一致。3、实现多点触摸回放功能。进行分析录制触摸文件应该是直接分析hexdump里面的数据,因为是输入子系统,所以接口应该是相同的之前写的文章分析每个点d

2021-08-03 20:29:21 496

原创 中断深入-->中断下半部线程化(工作队列+ threaded irq)

在此之前前定时器、下半部 tasklet,它们都是在中断上下文中执行,它们无法休眠。所以复杂的事情,就不能放在下半部,不然系统会很卡如果使用线程来处理这些耗时的工作,那就可以解决系统卡顿的问题:因为线程可以休眠。不自己创建线程 —> 工作队列在内核中,我们并不需要自己去创建线程,可以使用“工作队列”(workqueue)。内核初始化工作队列是,就为它创建了内核线程。以后我们要使用“工作队列”,只需要把“工作”放入“工作队列中”,对应的内核线程就会取出“工作”,执行里面的函数。工作队列

2021-06-24 14:29:20 308 1

原创 中断深入--->中断下半部 tasklet

在此之前因为中断的处理会打断其他程序的运行,所以我们希望中断越快结束越好那么我们就把复杂但不那么紧急的事情放在中断的下半部tasklet里面中断和tasklet是 多对一的关系怎么描述呢,描述不出来就像下面我按钮按了三下的话,就会循环三次,跑到100在跑到100之前,发生中断,还是继续先跑完当前的100驱动中使用tasklettasklet结构体中断下半部使用结构体 tasklet_struct 来表示,它在内核源码 include\linux\interrupt.h 中定义s

2021-06-21 23:52:41 71

原创 中断深入-->定时器

在此之前我们今天描述的定时器是软件上的定时器,当超过设置的时间,就会唤醒响应的功能然而怎么设置定时器的时间呢?就有了硬件上的定时器,通过硬件的的时钟来设置我们的定时器硬件定时器在源码根目录下有个 .config,里面有各种配置参数这里表示频率是100hz, 代表每秒100次,也就是10ms嘀嗒一下定时器(软件)所谓定时器,就是闹钟,时间到后你就要做某些事。有 2 个要素:时间、做事,换成程序员的话就是:超时时间、函数在内核中使用定时器很简单,涉及这些函数(参考内核源码 include\

2021-06-21 15:37:33 109

原创 中断深入-->异步通知

在此之前在中断中引进异步通知,可以让驱动发生中断后主动通知app省去大量的查询时间,和不必要的资源浪费异步通知的流程总体流程: 驱动发送信号给appLinux 系统中也有很多信号,在 Linux 内核源文件 include\uapi\asm-generic\signal.h 中,有很多信号的宏定义: 我们在异步里使用的是 SIGIO① 谁发:驱动程序发② 发什么:信号③ 发什么信号:SIGIO④ 怎么发:内核里提供有函数⑤ 发给谁:APP,APP 要把自己告诉驱动⑥ APP 收到

2021-06-15 17:02:52 168

原创 中断深入--> poll机制

在此之前poll机制相当于让app 休眠一段时间,如果在这段时间里有数据 -----> app调用read读取数据如果这段时间没有数据 ------> 不再等待,继续做app自己的事情pool机制的流程poll是在系统调用里面写好的,我们的驱动在 poll只做了两件事 把线程放入 waitqueue队列,但是不休眠 返回event 状态有按键按下,不超时的情况函数执行流程如上图①~⑧所示,重点从③开始看。假设一开始无按键数据:③ APP 调用 poll 之后,进入

2021-06-14 10:25:31 403

原创 中断深入-->休眠唤醒(通用)

在此之前中断里面 休眠唤醒,poll,异步… 等等都是为了读取该驱动的应用不占用那么多cpu资源相对来说,对原来的驱动的中断函数没有太多调整,而是在驱动其他地方进行改进处理,给应用程序更好调用休眠流程当app读取时候,有数据可以读取app读取时候没有数据,进入休眠先创建一个等待队列 waitqueue同时app->read,调用了驱动的read, 在驱动的read里,把进程放进等待队列app读取的时候没有数据,先进入休眠当有按键产生,会执行写好的 handle程序在hand

2021-06-12 23:07:47 542

原创 设备树里使用中断---->对gpio进行编程

arm -> 中断过程先分清有硬件上的中断(hwirq),和软中断—>软件规划的中断至于arm在使用linux内核时候调用中断的流程之前就写了出来linux调用中断的流程设备树里使用中断设备树里面参考如何写出中断内核 Documentation\devicetree\bindings\interrupt-controller\interrupts.txt设备树的中断分层我们外设的中断就是这样一层一层的传到cpu在硬件上,“中断控制器”只有 GIC 这一个,但是我们在软件上也可

2021-06-07 00:25:38 482 2

原创 imx6ull 正点原子设备树适配韦东山的开发板 (二)适配lcd,背光,和触摸屏

继续设备树的移植适配lcd查看内核文档lcdif设备树根据imx6ull.dtsi里面有的soc厂商设备树找到compile内容 compatible = “fsl,imx6ul-lcdif”, “fsl,imx28-lcdif”;根据这两个匹配项去document里面查找相关文档alientek_linux/Documentation/devicetree/bindings/fb/mxsfb.txtcompatible: 照着写reg: lcd寄存器初始和长度interrupts:d

2021-06-03 10:50:19 840 1

原创 基于触摸屏的 输入系统应用分析

有时候想给输入系统的驱动写个应用也会发现无从下手,今天就对触摸屏写应用进行分析输入系统调用流程调用过程有各种输入设备,就拿触摸屏举例,各种触摸屏经过驱动适配后,会给上层提供一个统一的接口就便于app直接调用1.开始运行app open设备节点,暂时没有数据,app进行休眠2.按下屏幕产生中断,驱动直接获得数据,变成标准的输入事件,发送给输入核心层3.核心层把数据变成标准格式,传递给事件层4.事件层唤醒app,把之前标准格式的数据发送给app传输的数据格式根据上面所说,在核心层把各种设

2021-06-03 10:48:01 336

原创 imx6ull 字符驱动->点亮led

用韦老师的板子点灯由于刷面试题,好多驱动都忘记咋写了,今天开始复习驱动,以后接手其他板子照着上就行了电路分析从底板原理图上看找出led灯连到核心板里面 也是叫SNVS_TAMPER3时钟使用某一外设之前一定要配置时钟,在datasheet里面找到CCM根据外设指引找到该寄存器从下图看出是默认打开的,时钟全开???,那就不用配了电器属性在gpio这一章找到 pad structure进行分析一下我们配置电气属性是在IOMUXC章节HYS(bit16):对应图中 HY

2021-05-28 20:07:53 347

原创 c语言 队列---->链表实现

队列大致我们一般用链表实现队列,而栈一般用顺序表实现一个头节点,一个尾节点队列实现定义一个队列队列有很多个节点,相当于链表里的节点,每个节点有指向下一个节点的指针//定义每一个数据的节点typedef struct my_node{ char data; struct my_node *next;}my_node,*p_node;//定义队列typedef struct{ p_node front,rear; //队头,尾指针}link_queue;

2021-05-13 11:11:14 178

原创 c语言 栈-->数组实现

顺序栈下面的代码里,头指top指针里面也是存放数据的实现定义一个栈typedef struct{ char *base; char *top; int stack_size;}my_stack,*p_my_stack;对栈初始化传入一个栈的指针,设置栈初始大小为100void init_stack(p_my_stack p_stack){ p_stack->base = (char *)malloc(100*sizeof(char));//初始栈的

2021-05-11 12:00:26 114

原创 二维数组,二级指针,指针数组,数组指针傻傻分不清

用的是64位的编译器,所以一个指针8字节举例子二维数组 == 数组指针int a[2][3] = { {2,3,6},{20,40,60}} ; //定义了行为2,列为3的数组,sizeof(a) = 4*6 =24int(*b)[5]; //数组指针,一个指向5个数组的指针//因为[]优先级大于* 所以要加括号表明这是一个 int指针...

2021-04-19 09:41:52 73

原创 蓝牙伪造请求

思路让安卓设备抓取到发送的信息拿到蓝牙信息进行wine shark 过滤出关键信息让电脑设备的linux进行数据读写,达到蓝牙操控的目的开始行动咯安卓设备找到信息(需要root)在设备里进入蓝牙目录,找到该文件在开发者选项里打开蓝牙HCI信息收集日志这个.log就是我们蓝牙在运行中发送和获取到的数据了放入电脑里进行分析通过adb 命令进行手机的连接,导出我们的.log 文件直接拖入wine shark这就有很多,还是需要排查找到设备的mac地址有些app不太好用,不知道这个

2021-04-06 22:57:29 297

原创 imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button

对比正点原子的设备树结构图韦东山的设备树结构图从因为蓝色的是开发板厂商对开发板自己的优化,所以我们对正点原子蓝色部分进行修改就行只编译imx6ull对正点原子里的包进行修改,因为有太多设备树编出来,所以把不要的去掉修改Makefilemakefile里面只留下我们要的根据缺失把之前删掉的其他文件找回,直到编译通过让设备树支持内核运行到根文件系统...

2021-03-20 23:02:26 752

原创 rk3128中更改设备树,使用新的MIPI屏幕JD8952

原来的设备树文件,我们因为换了屏幕,我们需要对设备树进行更新屏参文件配置mipi host 配置、屏电源控制配置、屏初始化序列三部分是在drivers/video/rockchip/screen/lcd_mipi.c 中解析的,最后的屏参是在drivers/video/of_display_timing.c 中解析。因为该部分信息 mipi/edp/lvds/hdmi 之类显示设备都存在,所以在统一的地方进行解析。mipi host 配置disp_mipi_init: mipi_dsi_ini

2021-02-25 15:56:59 916 1

原创 rk3128 通过自带buildroot打包开发板根文件系统,重做自己的img镜像

对rk3128要生成自己的qt镜像文件据说这样才方便大批量的烧录打包分析根据九鼎里面带有的编译脚本,把自定义的uboot,kernel,rootfs进行替换,用他的脚本就能打包了他自己也是这样做的,我们只要qt,就把庞大的andriod去掉因为kernel 和 uboot 已经做好了,那么自定义的就是 rootfs文件系统找到roofs文件系统所在编译roofs 根据下面的判断,把解压之前的文件进行修改就行了那么出来的文件就是这个重新做自己的rootfs镜像准备博主在桌面建立了

2021-02-07 15:18:19 1073

my_tslib.zip

rk3128 触摸屏不能匹配qt解决,重新编译好的 tslib库,上arm直接运行

2021-02-03

6818_work.7z

arm板上通过内核实现可滑动的电子相册,已经编辑好了,直接用// 建立一个空结构体 struct fb_var_screeninfo vinfo; bzero(&vinfo, sizeof(vinfo)); char *fbmem = init_lcd(&vinfo); ``` 给结构体通过 ioctrl 获得相关参数 ```c char *init_lcd(struct fb_var_screeninfo *vinfo) { int lcd = open("/dev/fb0", O_RDWR); ioctl(lcd, FBIOGET_VSCREENINFO, vinfo)

2020-11-29

6818_mjpg.tar.bz2

想对s5p6818进行摄像头(支持uvc)进行使用,把得到的视频放入web端 嫌烦直接拿我的用就好啦 mjpg_stream网上的移植过程很多,但是发现源码失效了,而且用最新的源码进行编译,有些地方也会出错

2020-11-17

imx6null 移植华为云,交叉编译openssl

imx6null 移植华为云,交叉编译openssl,紫

2020-11-09

02 带有上报下发功能.7z(一)使用Django和华为IOT平台通信:初建框架 带有上报下发的 djangoweb

用Django作为app端和iot平台通信 东西就用我之前的写好的web进行改装,在上面对华为iot进行通信,什么数据库,或者版本我也会给出来

2020-09-27

myfile.zip

解决开发板子 ping的通 ip 不能ping 百度的问题 参照我的博客进行 连接 这些文件全部放在etc下就好啦

2020-09-26

电容屏中断和gt9147各种芯片手册.zip

之前玩arm都是电阻屏,但是电容屏更加通用,这次拿ALIENTEK 4.3’LCD进行学习,里面有GT9147驱动IC(相当于控制触摸屏的一个小芯片) 把源码进行修改,从官方给的查询模式触发,变成中断触发,源码可下载,另带找到的芯片手册

2020-09-06

arm_mqtt_c_ok.zip

arm-a上华为iot云,移植虚拟机的文件到开发板,全网首发,### 上一篇文章已经在虚拟机上可以用华为的sdk连接到iot云端 我已经造好轮子,也不收费,希望大家多交流,每次下载点东西,一个两个都要金币的,很难受 现在我们把文件移植到开发板上

2020-06-18

mqtt_c_demo.zip

已经调试好的华为iot--->linux当做物联设备,成功上云包.oT Device SDK Tiny是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能,相关集成指导请参见端云互通组件开发指南。

2020-06-16

这次的驱动和makefile和tslib.zip

可以通过环境变量来设置:先设置环境变量后,才能使用触摸屏程序。 export TSLIB_TSDEVICE=/dev/event0 //这是指触摸屏设备。 export TSLIB_CALIBFILE=/etc/pointercal //校验文件放在这里。 export TSLIB_CONFFILE=/etc/ts.conf //配置文件放在这里。 export TSLIB_PLUGINDIR=/lib/ts //插件放在这里 export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 //显示屏 ts_calibrate //是指校验,在 SHELL 中输入这个程序后: 这时屏幕上会出现一些文字,左上角会有个“十字架”。

2020-03-31

输入子系统第四步完成注册后硬件操作.emmx

对应着硬件操作的流程图 #define EV_SYN 0x00 //同步类 #define EV_KEY 0x01 //按键类,如键盘上的 a,b 等按键事件。 #define EV_REL 0x02 //relation 相对位移事件(如鼠标的位移是基于上一个位置的)。 #define EV_ABS 0x03 //ABS 是绝对位移(如触摸屏是 XY 坐标绝对位置)。 #define EV_MSC 0x04 #define EV_SW 0x05 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f

2020-03-15

SYS_001.zip

博客所写的代码和编译结果 思维导图

2020-03-03

所需uboot和gcc.zip

4412开发安卓5.0.2 时候本篇文章要的uboot和gcc uboot是4122的 

2020-02-17

空空如也

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

TA关注的人

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