自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习嵌入式之驱动——I2C子系统

通信方式(串行、同步、半双工)

2025-08-28 19:21:54 290

原创 学习嵌入式之驱动——中断

(1)设备树中设置引脚的功能(2)pinctrl-controler:定义一种引脚配置(3)pinctrl-client:使用引脚配置。

2025-08-26 18:42:17 325

原创 学习嵌入式之驱动

针对内核的开发。

2025-08-25 09:00:28 541

原创 学习嵌入式之驱动——系统移植(二)

内核启动后 ->挂载文件系统 ->执行linuxrc ->/etc/initab脚本(决定系统启动执行哪些脚本、重启执行哪些脚本、ctrlaltdel执行哪些脚本)->系统启动执行 /etc/init.d/rcS脚本 ->设置环境变量、参数->挂载所有文件系统(mount-a)->执行/etc/fstab文件-> 挂载所有文件系统 ->/etc/profile脚本 ->启动bash shell ->与用户交互 ->./a.out ->fork+exec(./a.out)

2025-08-22 17:47:18 736

原创 学习嵌入式之驱动

(2)内核镜像:Linux内核核心代码(屏蔽底层不同的硬件,为上层应用提供统一接口,实现5大功能) ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​。(2)多任务的管理:管理多任务的状态。

2025-08-21 20:00:47 890

原创 学习嵌入式之硬件——LCD

LCD 全称是 Liquid Crystal Display,也就是液晶显示器,是现在最常用到的显示器,手机、电脑、各种人机交互设备等基本都用到了 LCD,最常见就是手机和电脑显示器了。这里需要注意的是,我们所提及的LCD不包括触摸功能,触摸功能是通过另外的设备实现的,LCD在这里只是输出设备。

2025-08-20 17:30:53 964

原创 学习嵌入式之硬件——ADC

(1)I.MX6ULL内部具有两个ADC控制器。都是采用逐次逼近法设计的。每路ADC的分辨率可选,分别为 8/10/12位。I.MX6ULL内部ADC具有自动校准功能,因此能够保证更高的测量精度;最大转换速率为1MHz, 即完成一次转换所需的时间最快只需要1us。I.MX6ULL的ADC还具有硬件平均功能和比较功能,大大方便 了软件设计。我们实验所使用的开发板将基准电压设置为3.3V;(2)每个ADC拥有10个通道,这里的通道就是指输入的电压信号是从哪个引脚输入进来的意思。

2025-08-18 10:22:06 1047

原创 学习嵌入式之硬件时钟、EPIT、GPT

EPIT 的全称是:Enhanced Periodic Interrupt Timer,增强的周期中断定时器, 它主要是完成周期性中断定时的。s3c2440里面的定时器还有很多其它的功能,比如输入捕获、PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一项功能!至于输入捕获、 PWM 输出等这些功能,I.MX6U 由其它的外设来完成。EPIT 是一个 32 位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能以后 EPIT 就会开始运行.

2025-08-15 18:06:48 650

原创 学习嵌入式之硬件——I2C

内部集成电路的简称,半双工串行同步通信,是芯片和芯片之间的通信方式;通常只有一个主机,多个从机,采用主从应答的方式上图所示是IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线,一根是数据线SDA, 另一根是时钟线SCL。这两个信号线都是双向的。作为一种通信方式,IIC总线在某一时刻,总线只允许有一个设备处于发送状态,所发生的数据被总 线上所有的设备所接收。IIC通信协议包含有设备地址,只有发送方携带的地址与某个接收方的地址 相同时,接收方才真正执行相关的指令。

2025-08-15 18:06:31 1346 1

原创 学习嵌入式之IMAX6ULL——GUN工具链+点灯+SDK开发裸机驱动

将C/C++等高级语言源代码转换为汇编代码再将汇编代码转换为目标文件支持多种编程语言和目标平台提供丰富的优化选项和编译控制选项。

2025-08-11 20:01:03 592

原创 学习嵌入式-IMX6ULL学习——中断

PPI(Private Peripheral Interrupt),私有中断,我们说了 GIC 是支持多核的,每个核肯定有自己独有 的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断;SGI(Software-generated Interrupt),软件中断,由软件触发引起的中断,通过向寄存器GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信。(2)通过GIC查询当前中断ID;OCP:开闭原则,对程序代码的添加是开放的,对程序的修改是关闭的。

2025-08-11 19:28:07 547

原创 学习嵌入式之硬件——ARM体系

学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。

2025-08-07 18:31:19 1570

原创 学习嵌入式之硬件——ARM体系

算术逻辑单元;完成运算的电路R0~R15高速缓存;RAM和内核速度不匹配;内存管理单元;映射虚拟内存和物理内存:提高内存的使用效率当前程序状态寄存器,当一些变量状态溢出状态,可以从CPRS寄存器可以看出有没有溢出,有一位可调整大小端,默认小端把CPSR的之前的数据保存;复杂指令CPU;体积大功耗大成本高,不适合便捷;在80%情况下,只能用20%功能精简指令集架构CPU,容易集成在便携式设备上A:arm3指令T:16位 samPCI:插显卡(1)多总线结构(2)单总线结构:DSP:数字图像处理。

2025-08-06 17:53:20 1170 1

原创 嵌入式学习之51单片机——串口(UART)

一、Uart 串口通信:1. UART:通用异步收发器4. Uart数据传输的顺序:串口通信中,遵循LSB(低位)优先传输的原则6. 串口通信时序起始位 +数据位(8bit ) + 校验位(奇偶校验) + 停止位7. 波特率:每秒传输bit数量9. TTL、RS232、RS485 电器属性。

2025-08-04 18:43:21 1416

原创 【无标题】

中断嵌套是指在一个中断服务程序(ISR)的执行过程中,又发生了另一个更高优先级的中断请求,系统会暂停当前中断服务程序的执行,转而处理更高优先级的中断。处理完高优先级中断后,再返回到低优先级中断服务程序继续执行。中断嵌套提高了系统的实时性和响应能力。

2025-08-02 17:30:10 990

原创 嵌入式学习之硬件——51单片机 1.0

嵌入式以应用为中心,计算机技术为基础,软硬件可裁剪的专用计算机系统;

2025-08-01 18:45:21 1296

原创 days34:零基础学嵌入式之数据存储——数据库

(1)普通文件对数据管理(增删改查)效率低(2)数据库对数据管理效率高,使用方便。

2025-07-28 20:18:00 976

原创 day33零基础学嵌入式之网路3.0---HTTP

世界范围内的,联机式的信息储藏所。万维网解决了获取互联网上的数据时需要解决的以下问题:(1)怎样标识分布在整个互联网上的文档 URL------万维网服务端如何区分请求的数据(2)用什么样的协议实现万维网上的各种链接 HTTP-----万维网服务端与服务器之间如何通信(3)怎么使用户能够方便的查看文档数据 HTML(超文本标记语言) ----浏览器端如何展示请求到的万维网数据。

2025-07-25 19:27:18 811

原创 day33:零基础学嵌入式之网络——TCP并发服务器

/把fd放进集合表中。3)通过函数接口,把集合传递给内核,并开始检测IO事件(输入输出、读写事件);writefds:关注的写事件的我文件描述符的地址。readfds:关注的读事件的我文件描述符的地址。4)当内核检测到事件时,通过相关函数返回,做具体的相关操作;1)创建文件描述符集合表:fd_set。

2025-07-25 19:17:20 837

原创 days32 :零基础学嵌入式之网络2.0

1.功能:抓取通过电脑网卡的网络数据2.作用:排查故障、抓取数据做数据分析、3.用法:(2)选择需要抓取的网卡====》any(3)设置抓取的条件 ===》dup.port == 50010 然后按一下回车(4)开始抓取(5)进行一次网络通信。

2025-07-22 18:22:39 962

原创 days31:零基础学嵌入式之网络1.0

一、网络编程基本内容(概念、编程框架)1.网络相关的基本概念和协议 ⭐2.数据库(实现远程、批量数据处理)3.构建网络服务器二、网络1.网络:实现进程间通信2.为了实现不同主机的通信,要实现:1)主机间在硬件层面互联互通;2)主机间在软件层面也要互联互通;交换机:局域网内的数据转发;路由器:广域网的数据路由;路由:负责路径选择的IP地址:区分不同主机,每次分配是有变化的。MAC地址:计算机的硬件地址,计算机出厂之后,是唯一的。IP + MAC 来标记计算机。

2025-07-22 09:31:41 944

原创 day30——零基础学嵌入式之进程间通信1.0

(3)system Ⅴ ===》系统Ⅴ 进程间通信方式 inner Process Comunication。管道的读写规则:管道的读端存在,写数据 ,有空间,可以一直写;满了,此时写操作阻塞,等读了4k之后,阻塞消失;===》本地套接字 网络套接字。前六种包括socket的本地逃跑戒子===》同一主机内进程间通信。pipefd[0]:读端。pipefd[1]:写端。无名管道 ===》没名字(父子进程间通信)socket ===》套接字。有名管道===》有名字。(1)功能:创建管道。

2025-07-18 19:09:54 237

原创 day30——零基础学嵌入式之线程2.0

信号量类型 信号量的变量。

2025-07-18 19:09:50 1105

原创 day29:零基础学嵌入式之线程1.0

轻量级的进程;线程创建时,需要的资源非常少创建效率高于进程任务切换的时候速率也高于进程。

2025-07-17 19:04:20 706

原创 day26:零基础学嵌入式之文件io

1.打开目录(opendir):DIR *opendir(const char *name);2)返回值:成功返回1970年到现在的秒数,失败返回-1。(3)返回值:包含文件信息的结构体,出错或者读到目录流末尾返回NULL。(3)返回值:成功返回保存日历时间结构体的指针,失败返回NULL。(1)功能:从目录流中读取文件信息并将保存信息的结构体地址返回。4)返回值:成功返回偏移量,失败返回-1。(3)返回值:成功返回目录流指针,失败返回NULL。(4)返回值:成功返回文件描述符,失败返回-1。

2025-06-30 15:01:49 833

原创 day28:零基础学嵌入式之进程2

1.进程的退出僵尸进程和孤儿进程僵尸进程:进程执行结束但空间未被回收变成僵尸进程;孤儿进程:父子进程中,父进程先消亡,子进程就变成孤儿进程,该子进程就向上找结点,它的父进程发生变化;

2025-05-26 19:36:33 552

原创 day27:零基础学嵌入式之进程

(4)写时复制:在fork之后,子进程先不开0~3g空间,在变量发生改变的时候(不管是父还是子的),才会开空间,,如果只是读的话,那就不另开空间,开的空间小,回收的时候也快;2)exit(), c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。已经清理函数(atexit)。3个状态,就绪→执行态→阻塞(等待,睡眠)基本操作系统linux中的状态,运行态,睡眠态,僵尸,暂停态。1)abort()(不许应用层调,系统发现本次程序,会发生非常严重的错误,不用做任何回收工作,则终止,)

2025-05-25 18:16:45 696

原创 嵌入式学习的第二十五天-系统编程-标准I0与文件IO

1)与scanf区别:如果接受字符串,stdin接受可以有空格,结束标识是\n,并且\n也被接收,scanf如果接收空格则表示接收字符串完毕,如果是回车\n去缓冲区了。(4)注意:如果从文件的指定位置向后偏移过程中已经超过了文件的当前末尾位置,则会自动以'\0'来填充文件内容,从而形成一种被称为"空洞文件" 的特殊文件。(1)功能:将stream流文件中的文件指针从whence位置开始,偏移offset字节的长度。,缓存区满刷新缓存区,对普通文件进行标准IO操作,建立的缓存一般为全缓存,一般用于写操作。

2025-05-21 17:42:46 1993

原创 day24:零基础学嵌入式之系统编程

so动态库:stdio.c=>libc.so:gcc的前三步,so文件已经是二进制,也叫c库文件,调用系统级别的头文件,传入的是so动态库,路径在:usr/lib。(1)功能:从stream流对象关联的文件中获取size大小字节的文本数据并存储到s对应的本地内存(栈区数组,堆区内存)FILE是文件流指针,描述文件相关信息,打开之后,只关心文件的内容,FILE结构体内部有个成员指向文件的文本;(3)返回值:成功 返回指向有效数据的首地址,一般等于s的地址,失败 或者 文件末尾 NULL;

2025-05-20 17:59:05 1720

原创 day22:零基础学嵌入式之数据结构——树、哈希

一、树1.树的定义树:n(n>=0)个结点的有限集合。n = 0 ,空树。2.在任意一个非空树中,(1),有且仅有一个特定的根结点(2),当n>1 时,其余结点可分为m个互不相交的有限集合T1,T2,T3.。。。。Tm,其中每一个集合又是一个树,并且称谓子树。3.度结点拥有子树的个数称谓结点的度。度为0的结点称谓叶结点。度不为0,称谓分支结点。树的度数是指,这棵树中,最大的结点的度数,称谓树的度数。树的深度或高度,从根开始,根为第一层,根的孩子为第二层。

2025-05-19 20:09:00 576

原创 day21:零基础学嵌入式之数据结构

(1)工程管理工具,三个以上编译要写,如果在实际中.c比较多,改了其中的一个.c,只编译这一个.c;make (如果也要指定makefilr文件,就make -f Makefile2)如果想在没有改代码的前提下再次编译,先make clean ,再make。如果想在没有改代码的前提下再次编译,先make clean ,再make。一、双向链表(doulinklist)

2025-05-15 17:58:45 1097

原创 day20:零基础学嵌入式数据结构--单向链表

(2)链表是逻辑结构连续物理结构(在内存中的表现形式)不连续。(2)链表, 不需要预先分配,大小可变,动态分配。(1)顺序表 需要预先分配空间,大小固定。(1)顺序表是一段连续的存储单元。单向链表找倒数k个节点。三、顺序表和链表 优缺点。3.单向链表找中间结点。6.判断是否循环列表。

2025-05-14 19:10:47 739

原创 day19:零基础学嵌入式之数据结构

(1)为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node);(1)线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。(2)也就是说前面的顺序表只需要存储数据元素信息就可以了。1.线性表的链式存储目的:解决顺序存储的缺点,插入和删除,动态存储问题。

2025-05-13 19:35:37 321

原创 day 18:零基础学嵌入式之数据结构——线性表

(2)当线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,为空表。在非空的表中每个元素都有一个确定的位置,如果a1是第一个元素,那么an就是第n个元素。如果存在多个元素,第一个元素无前驱,最有一个没有后继,其他的元素只有一个前驱和一个后继。2,有穷性,执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。(2)链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。1,输入,输出特性,输入时可选的,输出时必须的。3,确定性,同一个输入,会得到唯一的输出。

2025-05-12 18:36:00 767

原创 day17:零基础学嵌入式之c语言——结构体

4.打印枚举都可以用%d打出,sizeof是4,printf(“%d”,w);3.访问:对共用体进行访问时的结果,是对最后赋值的成员的结果;共用体在里面的作用时降低通信内存的负担,提高通信的效率;(1)默认按照计算机位数对齐,64/8=8最终大小必须是8的整数倍;(5)结构体变量的引用:结构体变量名 . 成员名,其中.是结构体成员运算符;1.目的:创建一个数据类型,枚举一些需要的,这个数据类型的范围就是所枚举的;(2)从结构体中的成员中查找最大字节的成员,最终按此成员大小对齐;无符号位移称逻辑右移;

2025-05-09 23:50:51 309

原创 day16:零基础学嵌入式之c语言——指针

(2)用法:把函数声明去掉函数名,在去掉的位置上加(*p),eg:int (*p)(int a,int b);当主程序结束时,垃圾回收器会回收未释放的指针,(只适用于有操作系统,不适用于裸机程序);,*malloc()申请内存,保证申请的空间一定连续;free()释放内存;(2)不能返回局部变量的地址,但是也可以在局部变量前面加static让变量的生存期变为静态生存区,常用传入一个指针,返回该指针,(1)函数的形参是指针的指针,实参是指针数组,也被成为二级指针;(1)函数的函数名,是这个函数的入口地址;

2025-05-08 23:20:07 278

原创 day15:零基础学嵌入式之c语言——指针

3.void *:万能指针,可以接受任何类型的地址,但是万能指针不能作为指针进行指针运算,常要与强转搭配使用,一般是写代码自己也不知道是什么类型,降低程序耦合性。数组指针:int (*p) [10]:是指向长度为10的整型数组的指针,保存了一个地址,为该整型数组的首元素地址;(1)二维数组名就是指向长度为cols长度的一维数组首数组指针,一维数组名相当于指向该一维数组的首元素的指针;(1)格式:基类型 (*指针名)【元素个数】;1.匿名数组:字符串:其值是首元素地址,是const char*

2025-05-07 19:18:45 216

原创 day14:零基础学嵌入式之c语言——指针

3.为了杜绝野指针的出现,int *p = NULL/p =NULL,p称为空指针,空指针无法进行指针运算,他代表指针的状态,表示该指针指向的空间不可被访问;(2)减号两端可以都是指针,必须要保证两个指针的基类型一致,相减之后的表达式时int型,差值是两个指针之间相差了几个基类型,差值的正负可以判断两个指针的前后位置;` (2)*a++回导致编译报错,*p++可以,因为p是指针变量,但是a是指针常量;(1)在加法两端必须是一个是指针一个是常数,不可以两端都是指针;(2)常用于整型数组中;

2025-05-07 18:48:07 354

原创 day13:零基础学嵌入式之c语言——宏+指针

函数需要保护现场、恢复现场,而宏只需要无脑的文本替换、展开宏定义的效率比函数高,宏会消耗空间替换时间,宏的复用性低。(3)为了避免重复定义同一函数,在每个头文件的开头加#ifndef FUNC.H #define FUNC.H #endif;1.正确灵活的运用指针,可以有效地表示复杂的数据结构,可以动态分配内存,方便地使用字符串,有效而方便地使用数组,再调用函数时能获得1个以上的结果。(1)指针变量和指针所指向的空间必须确定,如果不确定,该指针叫野指针或者疯指针,要杜绝该指针;

2025-05-05 22:41:55 697

原创 day12:零基础学嵌入式之c语言——函数3.0

(3)register:寄存器存储,在定义一个变量前可以加register,这这个变量就被称为寄存器,为了提高对变量的读写速度;(3)全局变量:为了实现函数的传参,但是通常不使用,使用后其函数要与定义的全局变量绑定在一起,耦合性不够且空间也浪费,尽量不使用;2)全局作用域:在任何花括号之外的变量,叫全局变量,生效范围是从定义开始,到本文件结束是结束(int g_i);(1)auto(自动)变量:局部变量前,默认时auto,表示该变量的开辟、销毁是自动的;将变量存放在栈区中;(1)作用域:标识符生存的范围;

2025-04-29 19:23:14 365

day33:零基础学嵌入式之网络-HTTP服务端

day33:零基础学嵌入式之网络-HTTP服务端

2025-07-25

空空如也

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

TA关注的人

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