自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

STM32自带有10/100Mbit/s的以太网MAC内核,它提供地址以及媒体访问的控制方式。,是一个阉割的TCP/IP协议栈,交换机,路由器,光纤收发器都是用了TCP/IP协议栈。云台接入,无线网关,远程模块,工控控制器,嵌入式NAT无线路由器,网络摄像头。SMI站管理接口通过PHY地址访问指定的PHY芯片,简称PHY标识。BCR设置PHY的双工及网速的,BSR获取PHY的双工和网速的。lwIP是一个小型开源的。介质接口MII、RMII。

2025-03-18 16:02:19 112

原创 tslib

一开始,我们要用ts_setup去设置触摸屏设备,ts_setup分为两部分,ts_open(打开设备),ts_config(根据配置文件来加载各种模块,模块就是里面可以添加对数据的处理),设置完就可以调用ts_read,ts_read_mt,来获得数据,不同了就调用ts_close。如果这些默认的设备结点也没有,在linux里面,它会去扫描结点,在“/dev/input”DEV_INPUT_EVENT下面去扫描,如果这个目录下的设备结点表示它是触摸屏设备的话,那就返回那个设备结点。

2025-03-11 22:55:01 255

原创 电阻屏和电容屏

通过触摸屏,可以得到触点的电压值Vxp,Vyp,我们需要做的是将这两个电压值转换成LCD上的xy坐标,触摸屏和LCD屏是两个东西,他们只是物理尺寸一样,贴在一起而已,要建立连接,要先校准。Linux的输入系统的内核空间会向应用程序上报一个又一个的输入事件,输入事件就是一个又一个的input_event结构体。利用type确定是按键类型的事件,code来确定是哪一个按键,value来确定该按键的状态。上报完一个完整的事件以后,还要上报一个同步事件,表示这些事件的一个间隔。加入要上报的事件是按键。

2025-03-11 13:38:25 136

原创 使用查询,休眠-唤醒方式,POLL方式,异步通知方式,读取输入设备信息

有空间给应用程序来写数据,当这个POLL函数返回时,这个驱动程序会设置returned event 的值,把这个returned event设置成POLLIN ,POLLOUT 或者其他值,当这个POLL函数正常返回时,你需要去判断里面的每一个结构体,来看看returned event是不是你期望的event,如果是你期望的event,就表明有数据或者有空间。struct *fds 是一个指针数组,指针数组有多少项由nfds决定,POLL函数可以检测多个函数,最后一个参数是超时时间。fd是指要检测的文件。

2025-03-07 23:07:14 322

原创 Framebuuffer的应用编程

假设LCD上一个像素的颜色值是32位,在framebuffer中,第零个32位数据,就是LCD上第零个像素的颜色值,framebuffer上的数据和LCD上像素一一对应。应用程序将数据放到framebuffer里面,LCD控制器马上就会将数据搬到LCD上,一小段时间就能在LCD上显示出来,这一小段时间人眼根本看不出来,就好像应用程序马上就可以修改屏幕上的像素一样。在想要修改(x,y)点出的像素,我们要找出在framebuffer里面储存(x,y)的信息的地址。:这是偏移量,指定了映射开始的偏移位置。

2025-03-06 23:08:08 466

原创 综合实验处理表格

③处理数据,将读出来的数据data_buf,利用fprint函数进行拆分,存储在name和score中,然后计算sum和进行评价,将姓名分数总分还有评价一起通过fprintf存入result_buf.int read_line(int fd, unsigned char* buf) ,从文件中读入数据,返回读入数据的长度。对数据逐行处理,读一行,处理一行,然后将处理数据写入结果文件中。目标:通过编程处理文件,实现对数据的处理,成绩求和以及评价。①打开csv数据文件,创建存储结果的csv文件。

2025-03-01 17:47:55 338

原创 使用write函数

使用open命令之后,得到文件句柄fd,利用fd来读文件,提供buf用来保存字节,读count个字节到buf里面,失败的话会返回负数,可以去打印errno,成功的话会返回整数,如果要读1000个字节,只读了100个字节会返回100。假如写得时候,文件为空,指针指向最开始的位置,执行write命令写入N个字节,再执行write命令,会从后面接着写,如下图所示,如果想从指定位置开始写,可以修改指针,指向的位置,进行写数据。②读操作返回值为负值表示出错,返回值是(-1),要看是什么错误,打印perror.

2025-02-28 23:04:06 297

原创 嵌入式linux应用开发完全手册之文件IO

文件IO非常重要,因为在linux里面,一切都是文件,普通文件就不说了,进程间通信,无论是通过共享内存也好,还是fifo也好,这些东西也都是文件,甚至网络传输也可以归为文件,文件非常重要。linux是参考unix来制作出来的,能不能写一个应用程序能够同时在linux和unix上运行,只要在应用程序上使用同一套接口就可以了,posix接口。编译后,使用./open ./open.c & 让程序在后台运行,可以看到进程号 20834。0是标准输入,1是标准输出,2是标准错误,3是目前打开的这个文件。

2025-02-28 17:46:33 385

原创 认识时钟树

外部高速振荡器,经过M分频后进入锁相环,在锁相环内被n倍频后,经过压控振荡器,后被P分频,得到系统时钟,系统时钟经过分频后得到AHB总线时钟,AHB总线时钟经过分频后得到APB1,APB2上面的时钟。

2025-02-27 16:42:06 165

原创 【无标题】

利用pathSum遍历节点,然后利用sum函数计算当前节点向下路径的结点和,直至最后一个结点,然后判断和是否等于目标值,然后将从节点和中减去当前结点的值,继续判断剩下的结点和是否等于目标值,如果等于sum计数加一。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。和等于 8 的路径有 3 条,如图所示。,求该二叉树里节点值之和等于。给定一个二叉树的根节点。

2025-02-27 10:40:35 236

原创 通用makefile的使用

第一步,在Makefile_and_readme下面的Makefile 和Makefile.build拷贝到顶层目录,然后再在子目录下面创建一个空白文件Makefile。修改顶层目录下的Makefile文件,obj-y += main.o obj-y += sub.o obj-y += a/我们把文件的.h文件都放在了include目录下,在编译时,指定在include文件下查找头文件。顶层目录下Makefile文件中CFLAGS,LDFLAGS 是编译和链接选项。①支持多个目录,多层目录,多个文件。

2025-02-26 20:28:22 247

原创 Makefile的函数

c.$(wildcard pattern) #pattern定义了文件名的格式,wildcard 取出其中存在的文件。$(filter-out pattern..., text) 取出text中不符合pattern格式的元素。b.$(filter pattern..., text) 取出text中符合pattern格式的元素。在004_function下放置文件a.c b.c 执行下面的命令,能够找到符合.c格式的文件。files3等于从files2中找到当前真实存在的文件。

2025-02-26 14:06:44 184

原创 Makefile的使用

因为在嵌入式linux开发过程中,没有好用的IDE工具,没有好用的图形化的开发工具,与之类别,在windows下,有visual studio,可以在这个工具下,点点鼠标就创建工程,编译程序,这些背后的技术其实和Makefile相近,我们可以使用makefile为我们的工程和程序提供一套编译系统,也可以非常简单的执行某些命令就可以去编译文件,清除文件。gcc -o test a.c b.c (预处理,编译,汇编,连接),对所有的文件进行处理,但是如果只有一个文件有变,应该只编译改变文件,然后重新链接。

2025-02-25 22:27:09 433

原创 LeetCodeDAY11

计算每个节点向下路径的长度,和当前ans比较,较大值储存在ans中,并且向上一个节点,返回值,返回值是当前节点左右路径中较长的一个值加一,返回值是上一个节点的左路径或右路径长度,以方便计算上一个节点向下的路径长度。3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。这条路径可能经过也可能不经过根节点。是指树中任意两个节点之间最长路径的。给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。

2025-02-23 17:14:44 300

原创 交叉编译hello程序

通过串口程序操作开发板,首先将编译生成的hello程序拿到开发板上,这里要将Ubuntu的/home/book/nfs_roots 挂载在开发板/mnt下,访问/mnt就可以访问Ubuntu的该目录。然后在开发板上执行hello文件会发现出现错误,这是因为hello程序是为x86-64编译的,而不是为arm板编译的。注意在Ubuntu上也要把hello文件放在/home/book/nfs_roots下。得到的hello程序用file hello指令查看,可以看到这个是为arm编译的。

2025-02-22 21:51:03 142

原创 编译替换内核设备树驱动

编译完成后,在 arch/arm/boot 目录下生成 zImage 内核文件,在 arch/arm/boot/dts 目 录 下 生 成 设 备 树 的 二 进 制 文 件 100ask_imx6ull_mini.dtb。一个驱动文件的头文件来自内核,所以驱动文件来自于内核,必须要有内核源码,而且内核需要编译过,因为有些需要的文件是一个链接文件。是 Linux 和 Unix 操作系统中的一个命令,它的主要作用是将文件系统中的修改数据(缓冲区中的数据)写入磁盘,以确保数据的一致性和持久性。

2025-02-20 22:51:39 980

原创 DAY9Leetcode随机链表的复制

在开始,创建新的结点,创建并初始化hash表,在弹出的时候,给新创建的结点的写一个结点和随机节点赋值。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。个节点组成的链表来表示输入/输出中的链表。的链表,每个节点包含一个额外增加的随机指针。,该指针可以指向链表中的任何节点或空节点。那么在复制链表中对应的两个节点。例如,如果原链表中有。返回复制链表的头节点。

2025-02-20 11:54:59 126

原创 启动方式与连接串口

将hello.c放在Ubuntu /home/book/nfs_rootfs,在Ubuntu里面用gcc -o hello hello.c 生成hello文件,然后将/home/book/nfs_rootfs挂载在开发板/mnt,然后从开发板访问hello所在文件,尝试执行hello,无法执行二进制文件,格式错误执行错误。使用串口连接到开发板,开发板也上电,进入系统之后,就可以在这里执行各种命令了,开发板就相当于一台小型的电脑,在Ubuntu上可以执行的命令,在这里也基本可以执行。

2025-02-18 23:03:59 212

原创 LeetCode

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。这次是自己想出来的,记录一下。

2025-02-18 21:25:55 113

原创 DAY7Leetcode

递归法:定义一个整数变量cur初始化为0,在递归到底的时候,也就是head=NULL,时候向第n个结点的next值返回NULL,然后对cur进行加1,如果当前访问的结点是第x个,x不等于n,则向x结点的前一个结点返回当前的x结点,并且cur++,如果当前访问的是第n个结点,那么向第n-1个结点返回n的下一个结点,就可以删除第n个结点了。双指针法:先让一个指针走n个结点,再让另一个指针和刚刚的指针一起走,直到遍历完整个链表。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2025-02-17 21:15:44 233

原创 DAY7 两数相加

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。

2025-02-17 15:41:36 161

原创 LeetCode合并两个有序链表

递归法:

2025-02-16 23:01:34 69

原创 DAY6 Leetcode 环形链表II

定义快慢指针,slow 和 fast,设环长为C,慢指针一次走一步,快指针一次走两步,快慢指针入环时相差距离一定小于等于环的长度,(当他们的头结点是环的起点时,看做相差距离为环长),所以慢指针一定在入环第一圈内会跟快指针相遇,设环外的距离为L,慢指针在环内走的距离为X,相遇点到入环点的距离为C-X,则有2(L+X)=L+N*C+X,则有。为了表示给定链表中的环,评测系统内部使用整数。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。

2025-02-16 18:15:12 229

原创 嵌入式linux开发环境介绍

在windows编辑,服务器编译,在开发板运行对于嵌入式Linux没有很好的集成开发环境,且如果没有服务器可以采用下面的方法1.源代码运行工具2.上传工具3.远程登录工具4.串口工具配置VMware使用双网卡NAT网卡:Ubuntu通过它上网ubuntu 访问外网,通过NAT发送网络请求给windows,再由windows的请求去访问外网,外面返回的数据也是先返回给windows,windows再通过NAT网卡发送给Ubuntu如果没有NAT网卡点击编辑虚拟机设置②点击添加,然后点击

2025-02-15 23:31:21 277

原创 DAY5 Leetcode 环形链表

快指针每次前进两步,慢指针每次前进一步,如果没有环,fast指向NULL,如果有环,假设low在环的入口时,fast和low的距离相差N,每次快指针比慢指针多走一步,那么距离就会从N,N-1,N-2,直到减小到0,当快慢指针相等时,证明有环。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。来表示链表尾连接到链表中的位置(索引从 0 开始)。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。仅仅是为了标识链表的实际情况。,判断链表中是否有环。

2025-02-15 22:29:51 266

原创 DAY5缺失的第一个正数

哈希表法:感觉大概思想都是差不多,数组长度为len,这里将负数全部变成len+1,将剩下的在1-len之间的数变成负数,并且储存在1-n之间的对应位置,这个和上面的一样,只不过把1-n之间的数变成了负数而已。想法:一个长度为n的数组中,将其中包含有的1~n中的正数,放在其数值所在的位置,例如[3,4,-1,1],变成:[1,-1,3,4],这样再输出[1,-1,3,4]中,当nums[i]!=i+1时,输出i+1,就是缺失的第一个正数。,请你找出其中没有出现的最小的正整数。最小的正数 1 没有出现。

2025-02-15 21:43:51 226

原创 DAY4 leetcode 除自身以外的乘积

想法:时间复杂度O(n), 除了自身之外的乘积,也就是当前元素之前的乘积,乘上当前元素之后的乘积。分别计算当前元素之前的乘积a和当前元素之后的乘积b,然后计算得到答案。你可以在 O(1) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。之外其余各元素的乘积。时间复杂度内完成此题。

2025-02-13 15:33:51 113

原创 【无标题】

tar xzf test.tar.gz 解压文件,采用gzip方式,f表示文件,后面跟着一个文件名 tar xjf test.tar.bz2 解压文件,采用bzip2方式,f表示文件,后面跟着一个文件名。tar cjf test.tar.bz2 test 压缩文件,采用bzip2方式,f表示文件,后面跟着一个文件名,:这是一个用于 Unix 和类 Unix 操作系统的命令行工具,主要用于文件转换和复制。

2025-02-12 23:37:43 376

原创 DAY3Leetcode

最初的想法:假定轮转数组nums的大小为len,定义一个空的数组,将nums中第len-k至第len-1个数放在空数组的第0至k-1处,将第0至第len-k-1的数放在第k至第len-1处。第二个想法:将第0至第len-k-1的数用nums.push_back()依次放在nums数组的后面,再把前面的元素用nums.erase()删掉,但是会超时。写一个逆转函数,将第0至第len-k-1处的元素逆转,将第len-k至第len-1处的元素逆转,最后整体逆转整个nums.,将数组中的元素向右轮转。

2025-02-12 16:02:54 241

原创 目录与文件操作命令

绝对路径、相对路径、当前目录(pwd或./)、上级目录(..)、家目录(~或/home/book/)、上一个目录(-)grep "abc" * -nwr (r是递归查找,不仅查找当前文件,还有其子文件夹)进入家目录下的abc文件,在abc下创建123文件,在123文件下写入1.txt。grep "abc" * 查找含有有abc的文件。grep "abc" * -nw(w是整词)grep "abc" * -n(n是行号)rm(可以删除文件也可以删除目录)find -name "*名字*"

2025-02-11 23:36:10 262

原创 Shell命令解析与PATH环境变量

永久设置:(对当前用户有效)使用 gedit ~/.bashrc,行尾添加 exportPATH=$PATH:/home/book。环境变量,我们可以用env指令找到环境变量,等号前面是环境变量,等号后面是环境变量的值,可以看到环境变量PATH的值。谁从键盘接收这个命令,并显示出来,在回车以后谁找到对应的程序,执行出来,并且显示执行结果,背后的程序就是shell。shell是一个程序,它可以接收键盘数据并且回显,解析输入的字符串,寻找程序,执行程序。输入命令 ls -l (ls显示信息,l显示详细信息)

2025-02-11 21:36:05 207

原创 DAY2 Leetcode

写的时候没有想到排序,方法,将intervals按照第一个元素排序,然后当res为空的时候,将intr的值放进去,然后检验是否重叠,如果重叠,更新res中最后一个元素中的右区间值,如果非重叠就插入新的非重叠空间。

2025-02-11 19:08:47 88

原创 ubuntu

Ubuntu里面打开文件浏览器file,点击其他位置,点击computer,里面有各种目录,看不到各种盘符,在Ubuntu中访问文件,如/abc/def/hello.txt,只能看出hello.txt文件位于根目录下abc子目录下的def子目录,看不出哪个分区,在Ubuntu中以树状的结构保存文件夹或者文件。Ubuntu中怎么看到位于哪个分区,可以找到disk工具,可以看到只有一个磁盘,此时/dev/sda1,dev是指设备,sd是指磁盘,a表示第一个磁盘,1是指第一个分区。

2025-02-10 22:42:13 190

原创 Leetcode DAY2

能接到的水由左边和右边最高柱子的之间较小高度决定,因此当左指针和右指针作比较时,当leftMax

2025-02-10 16:59:43 190

原创 Leetcode 三数之和

又因为不能有重复的输出,所以在遍历时,要去除第i个元素后相同的元素,同理,需要在找到nums[i]+nums[left]+nums[right]=0,更新left和right时,去除重复的元素。将nums[i]作为外层,内层nums[j],利用unordered_map,寻找-nums[i]-nums[j],如果unordered_map中没有找到,将nums[j]插入unordered_map,j++继续循环。如果找到了,保存结果,j++,并且防止输出重复的结果。

2025-02-09 21:54:20 133

原创 记录leetcodeDAY1

将数组插入到 nums_set中,然后在nums_set寻找连续序列中的第一个数,后计算长度,寻求最大值。nums_set.count(),参数为寻找的元素,返回值为0或1。unordered_set 特点不重复插入。

2025-02-09 13:36:29 162

空空如也

空空如也

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

TA关注的人

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