自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文搞懂c++(下)

9、常函数不能修改任何成员变量,但是课访问,const只能修改,不能看,但是静态成员可以被修改,常对象只能调用const成员函数。3、声明为虚函数,如果在子类中有同名函数,其实就是父类中的虚函数,子类有一次重新声明的机会(重写父类函数)1、不影响原来的类,不改变原来类的代码,实现对类功能的扩展,在原来类的基础上快速增加功能。2、继承的概念:在已有的类的基础上创建新类,可以继承一个或多个,描述类与类之间的关系。6、释放内存时,父类指针分配子类对象,调用的是父类析构,所以父类析构也得是虚函数。

2024-12-04 23:14:01 257

原创 一文搞懂C++(上)

1)数据和函数是分开的,程序散乱,如函数定义的参数类型都是int的,如果参数类型被修改,代码的修改两较大。1、类中可以有数据也可以有函数,函数和数据紧密结合,可以隐藏数据,属性对应数据,函数对应行为。2)内存膨胀,原来只有声明在代码区,其他在栈区,内联函数定义在代码区,节约了调用函数的时间。2)如果在类中定义构造函数,等同于内联函数,所有一般都在类内声明,在类外面,进行定义。7)在c++中,const修饰的变量变成常量,但在c语言中,还是变量,相当于只读。

2024-12-02 23:07:25 628

原创 Linux C语言进阶

一、二维数组的定义1、二维数组的应用:图、方阵2、数组元素的存放顺序:内存是一维的,二维数组:按行优先a[1]:表示第一行,也表示a[1][]的所有元素二、二维数组的初始化、遍历1、元素的初始化1、不是按顺序存放,部分初始化2、按顺序存放3、二维数组只能省略行,不能省略列1、打印杨辉三角形2、打印数组中的最大值,行,列三、多维数组。

2023-10-27 15:12:54 198

原创 Linux C语言开发(续)

一、二维数组的定义1、二维数组的应用:图、方阵2、数组元素的存放顺序:内存是一维的,二维数组:按行优先a[1]:表示第一行,也表示a[1][]的所有元素二、二维数组的初始化、遍历1、元素的初始化1、不是按顺序存放,部分初始化2、按顺序存放3、二维数组只能省略行,不能省略列1、打印杨辉三角形2、打印数组中的最大值,行,列三、多维数组。

2023-10-27 14:07:09 233

原创 Linux shell脚本

1)变量在bash声明,在./helloworld.sh执行,是两个进程,跨进程数据是不能共享的,bash的uname不能在./使用。如果用export修饰变量,对子进程可见,当前进程没有此变量,默认子进程去上一层进程中找寻变量,一直到根。1)绝对路径或者相对路径./ ---只能执行有执行权限x的文件,跨进程执行。su -l root/su -:切换到root用户,环境信息也切换。3)source---可以执行没有x权限的脚本文件,当前进程执行。2)sh---可以执行没有x权限的脚本文件,跨进程执行。

2023-10-26 11:47:58 242

原创 数据结构与算法

一、数据结构导学(一)基础C语言-结构体-内存(malloc)(二)心态-不畏难-代码量(三)方法-听-主动思考-尝试-多敲二、初始数据结构(一)解决的问题使数据更加有条例计算机要处理的是完整的信息组合(二)编程能力-可复用-效率三、什么是数据结构1、可以凌驾于语言之上讨论2、数据结构研究数据之间的关系3、数据结构最重要的三个元素:逻辑结构、存储结构以及操作(数据之间的运算)4、语言是最低要求,数据结构比所有语言出现的早四、数据结构基本概念1、数据2、数据元素。

2023-10-25 13:37:00 198

原创 Makefile总结

一、Makefile的重要性1、编译文件2、正常编译,文件多的时候操作麻烦3、决定能不能完成大型工程二、Makefile的概述1、自动化编译-makefile编译效率:make编译过的文件不再编译三、Makefile的基本语法1、语法2、使用1)创建一个目录2)和函数3)和函数声明4)减函数5)减函数声明6)主函数7)普通编译8)makefile编译9)两步编译此时编译,只会执行第一个目标sub.o。

2023-10-25 12:52:05 131

原创 Linux操作系统使用及C高级编程

一、Makefile的重要性1、编译文件2、正常编译,文件多的时候操作麻烦3、决定能不能完成大型工程二、Makefile的概述1、自动化编译-makefile编译效率:make编译过的文件不再编译正在上传…重新上传取消三、Makefile的基本语法1、语法2、使用1)创建一个目录2)和函数3)和函数声明4)减函数5)减函数声明6)主函数7)普通编译8)makefile编译9)两步编译此时编译,只会执行第一个目标sub.o。

2023-10-23 23:12:03 157

原创 Flappy bird项目

把小鸟的下落和管道的移动都放在信号处理函数中,当定时时间到后,管道自动移动,小鸟自动下落,与阻塞无关。是curses模式的入口,将终端屏幕初始化为curses模式,为当前屏幕和相关数据结构分配内存。是curses模式的出口,退出curses模式,释放curses子系统和相关数据结构占用的内存。1、curses有阻塞等待的特性,一条语句没有执行,后面的也不会执行。例:在getch函数之前,只执行打印C不会打印下面的A、B。5秒内终止,会打印HELLO,5秒后跳出循环,不会打印。

2023-10-23 22:13:46 204

原创 网络编程开发及实战(下)

一、基本概念(一)I/O基本概念1、基本概念1)一个完整I/O分为两个阶段:用户进程空间->内核空间内核空间->设备空间(磁盘、网卡)2)内存I/O(无名管道)、网络I/O(UDP/TCP)、磁盘I/O(文件I/O)2、同步和异步1)不着急等待结果是异步aio_read之前的程序read都是同步2)同步经常用于线程内调用两个函数的调用3)异步请求不知道的结果,后面可能通过别的机制来获得结果。2、阻塞与非阻塞3、阻塞状态不占有cpu,就绪态是等待cpu4、线程阻塞的条件。

2023-10-20 18:06:59 493

原创 网络编程开发及实战(上)

一、什么是互联网1、计算机网络的定义2、计算机的分类1)按照作用范围分类个人局域网:热点2)按照网络的使用者分类公用网:缴费可以使用的网专用网:军队3、网络的网络由节点和链组成互联网:网络的网络1)路由器也是计算机,但不是主机,传输数据是从主机到主机,但路由器是转发作用2)什么是互联网3)边缘部分:主机核心部分:广域网4)边缘部分:主机-端系统端系统有很大的区别,小的主机、摄像头,大的可能是昂贵的计算机端系统的拥有者可以是个人、单位、isp。

2023-10-20 17:46:55 567

原创 并发程序设计(续)

touch了原始文件test后,需要在test用空格敲出大小,如果不写,映射文件的大小为0,总线错误会乱码。在访问动态链接库,动态内存空间时,一个进程频繁的操作内存空间,也可以用内存映射,防止多次写磁盘。1)访问硬碟磁盘是毫秒级别,访问内存是纳秒级别,可以提高访问效率,差距很大,提高速度。4、映射的文件大小不能为0(空格),总线错误,指定0大小的创建映射区,非法参数。3)prot:共享内存访问权限,可读,可写,可执行,不可访问。1、在创建映射区时,包含一次对映射区的写操作。

2023-10-20 10:45:30 97

原创 并发程序设计

一、进程的创建和回收一、进程的概念1、进程!=程序程序是静态的,而进程是动态的2、进程和程序的区别1)进程控制块中包含进程的属性2)程序在磁盘里面,堆栈都是在内存中,程序运行起来都在内存中3)进程的运行在内存(RAM)中,手机内存指的是运行内存64G,电脑内存指的是硬盘(ROM)4)初始化的全局变量在数据段,没有初始化的全局变量放在BSS中代码段存放可执行文件,机器码5) static声明的变量不在栈中,和全局变量放在一起栈:参数,返回值,局部变量堆:malloc。

2023-10-19 17:05:47 333

原创 文件系统总结

1、库函数很关键2、标准I/O-流1)stream-I/O概念2)FILE-文件-流3)标准I/O的所有操作都是围绕FILE来进行的4)文本流:二进制流:5)全缓冲:缓冲区写满才写入磁盘行缓冲:回车换行无缓冲:直接写入文件3、Linux下的标准的三个流1、标准的I/O的定义:标准、通用、任何系统通用2、FILE-文件-流3、getchar()等同于fgetc(stdin)但getchar不能读取标准文件的内容只能读取键盘4、stdin也是FILE*的指针,是系统定义好的。

2023-10-19 16:04:15 145

原创 Liunx C运算符

1、float和double不能进行取余操作。

2023-10-17 23:36:15 279

原创 Linux C语言

1、变量名由字母、数字、下划线组成2、不能以数字开头,不能和C的关键字重名3、在程序运行时,变量所占的内存空间,由变量的数据类型决定4、变量在内存中的首地址,称为变量的地址5、变量的一般格式:存储类型 数据类型 变量名存储类型是关键词auto(默认)、register、static和extern。

2023-10-17 22:17:48 508

原创 Linux环境及Linux命令

Linux是开源软件,各种Linux的发行机构,按照自己的需求对文件系统进行裁剪,所以Linux发行版本目录结构不尽相同。相对路径:从当前路径开始,表示的是相对当前目录,需要依赖当前目录找到对应的目录。6)复制相同的文件:cp 文件夹 ../ -i :提示是否覆盖已经存在的目录。10、绝对路径:从根目录开始,表示的是全路径,在任何位置都可以准确的找到目录。2)mkdir 文件夹/文件:当前文件夹下创建文件。2)head -2 test.c显示前两行。2)已经创建的文件,修改文件更改时间。

2023-10-16 20:41:30 119

原创 L15D1 设备分类、设备号申请和注销

1、Linux设备一切皆文件,大部分设备是文件。2、普通文件在硬盘分区,存放文件内容,文件名,文件元信息inode(修改权限,修改时间,创建者...)3、socket(服务端客户端的地址值)、管道文件(通信机制)没有文件内容。4、链接文件:软连接另外文件的路径,硬链接是别名。5、字符设备和块设备没有文件内容。(二)按驱动程序分类1、块设备一般不面向应用设备,一般面向文件系统,设备缓存,提高效率,应用程序通过文件系统访问块设备。

2023-10-11 17:04:44 117

原创 L14D6内核模块编译方法

一个内核模块代码错误仍然会导致的内核崩溃。GPL协议:开源规定,使用内核一些函数需要(一)单内核的缺点内核模块的本质:一段隶属于内核的“动态”代码,与其它内核代码是同一个运行实体,共用同一套运行资源,只是存在形式上是独立的。myhello.c:内核模块函数代码(二)内核模块的三要素模块三要素:入口函数 出口函数 MODULE__LICENSE。

2023-10-10 18:33:01 499

原创 L14D5内核编译

mkimage帮助生成uImage文件1、mm:内存管理2、fs:文件系统3、net:网络协议栈4、dirvers:设备驱动5、arch+init:启动相关6、kernel+ipc:任务/进程管理不是内核源码:1、scripts:配置内核的脚本工具2、Documentation:内核相关文档3、samples:内存代码4、tools:生成/运用内核工具其他文件:1、fireware:使用场合少2、include头文件3、sound:声音设备框架4、block:块设备框架。

2023-10-08 20:51:21 106

原创 L14D3环境搭建

1、交叉编译 :主机写代码、编译,开发板运行。

2023-10-08 17:39:09 110

原创 L13D11 Linux驱动移植及内核深化

程序可分为逻辑代码(drivers)和设备信息(设备树), 逻辑代码控制灯闪,但是不知道是哪个灯,设备树提供哪个灯闪。更换灯,只需要修改设备树即可,逻辑代码不用变。设备改变,只需要改变设备树,不需要修改逻辑代码。.dts:设备树源文件.dtsi:通用信息/公用信息dtb:编译后的设备树文件。

2023-10-08 15:48:54 139

原创 L14D2 学习方法

u-boot-fs4412.bin:初始化硬件环境,启动传参内核,引导操作系统安装。uImage:可以直接运行的内核程序,裸机可执行文件。exynos4412-fs4412.dtb:设备树文件,用来记录外设信息。编写dts,生成dtb,还有dtsi。rootfs.tar.xz:根文件系统。

2023-10-08 15:48:16 78

原创 L14D1 操作系统、内核实现、设备驱动

狭义:操作系统内核,直接运行在硬件上的裸机程序,操作系统也是内核,给APP提供运行环境(底层开发人员)。广义:内核+中间层常用的库+应用层常用的APP(公司)。安卓:Linux+C库/C++库/JAVA库等+常用APP。鸿蒙系统难度在生态建立,在中间层做的工作比较多,目前开发一个操作系统内核并不困难,PS等很多软件是在Wins生态下,鸿蒙的生态建立就是推广问题,基于鸿蒙操作系统创建APP。1、不是一个完成的可以运行的程序,OS内部的一块代码。负责对应设备的正常使用,设备需要这块代码才能和上层应用交互。

2023-10-07 19:00:18 79

原创 L13D10 Linux内核移植

1、内核是操作系统的核心,内核是水果的核。2、内核提供最核心的功能,内核是操作系统工作的基础,决定整个系统的性能和稳定性。3、ubuntu是操作系统,内核是Linux。操作系统是在内核基础上添加了shell、库、应用程序等。4、 shell不属于内核。shell会保护内核,通过命令间接操作内核,用户和内核的交流,不直接操作内核。5、库函数是系统调用的接口,不属于Linux内核。6、桌面管理器支持可视的界面,是操作系统加的。

2023-10-02 19:21:55 259

原创 L13D9 uboot移植深化

1、4412的SOC和origen的SOC相同,需要修改一些外围的网卡、硬件驱动。2、注册开发板信息3、我们能看到三星公开的代码,也有一些为了安全加密的代码,我们是没办法看到的。4、u-boot-fs4412.bin在build.sh文件中,将三星、自己编写的引导文件、u-boot.bin合成的一个文件,是可以在开发板上运行的文件。

2023-10-01 19:55:46 345

原创 L13D8 uboot源码配置编译

选择uboot选择支持对应的硬件平台(芯片/开发板),并且相对成熟的版本(资料多)。处理器要比uboot早, 处理器和同时期的uboot的兼容性更好。

2023-10-01 12:01:59 192 1

原创 L13D7 交叉编译工具链

BIN文件一般直接运行在CPU之上的可执行文件,只包括CPU能识别的指令和数据,ELF是在Linux系统下的,需要Linux系统加载和管理才能运行,除了代码和数据段,还存储了和系统相关的其他信息。除了可执行语句和全局变量,Linux加载和管理ELF格式的文件,所以ELF还存储了很多其他信息,如符号表(C函数名,汇编标识符),调试信息(-g-GDB调试信息)等。ELF一般是运行在应用层的文件,是基于Linux系统的。库是分架构的,交叉编译内的库是在交叉编译时链接的,ubuntu上的库是在x86编译时链接的。

2023-09-30 20:18:50 343

原创 L13D6 Linux内核安装及交叉编译

1、向内核传递参数:首先告诉内核根文件系统挂载的服务器的路径,然后是读写权限,接着告诉内核在哪个端口打印信息,最后告诉内核开发板的ip地址。本节我们介绍的这种方法是最适合开发的方式:tftp+nfs结合的方式。按照顺序内核、根文件、设备树:启动linux内核,告诉Linux内核根文件系统和设备树的地址。具体方法:用tftp将内核和设备树加载到内存,将根文件系统以网络文件的形式和开发板共享。根文件的ip:ubuntu下的/opt/4412/rootfs。ip:开发板ip,告诉内核开发板自身ip。

2023-09-30 17:27:25 161

原创 L13D5 uboot使用

Linux安装到开发板还是Linux加载和运行,从外存加载到内存。

2023-09-29 16:06:05 106

原创 L13D4 uboot概述及SD卡制作

uboot从外存搬到内存软硬件初始化,linux、dtb、rootfs搬到RAM。

2023-09-28 19:48:26 132

原创 L13D3交叉开发环境

桥接模式-无线网卡-外网桥接模式-有线网卡-开发板写程序和编译程序在电脑上,通过网络发送给开发板。使乌班图和开发板组成局域网。桥接模式:连在路由器或者公司局域网。校园网不是局域网。设置网络要保证开发板可以访问外网,也可以连局域网网卡:wifi是无线网卡,也有有限网卡。

2023-09-28 18:25:12 90

原创 L13D2 开发板启动过程

在开发板装上Linux系统后,上电后程序的执行顺序,Linux是怎样一步一步启动起来的。

2023-09-28 11:57:52 106

原创 L13D1 嵌入式系统移植导学

硬件层:计算机和外界进行数据输入输出操作系统层:对计算机系统软件和硬件统一管理,为上层应用程序提供接口(API)。Linux提供的API:进程管理、内存管理、网络协议、文件系统、设备管理。

2023-09-28 10:56:33 170

原创 L12D24 IIC编程

开发板水平静止放置时MPU6050的Z轴上的加速度应该等于重力加速度的值(9.8m/s2),而其X轴和Y轴上的加速度应该等于0。实时监测开发板的放置状态,当监测到开发板水平放置时,每隔一分钟向终端上打印一次当前的时间以及开发板的状态。当开发板发生倾斜时MPU6050的Z轴上的加速度的分量会减小,而其X轴和Y轴上的加速度分量会增大。如:“2023-04-05 23:45:00 Status: Warning”如:“2023-04-05 23:45:00 Status: Normal”

2023-09-26 12:16:41 101

原创 L12D23 IIC控制器与MPU6050

1、每个器件7bit地址。2、标准模式下的最大通信速度100kbit/s,最快模式下的最大通信速度400kbit/s。3、IIC支持主机发送、主机接收、从机发送、从机接收模式。4、支持终端和轮询,发送完1字节数据会产生中断信号,通知接收方读取。把要发送的数据放在I2CDS。地址寄存器用于从机对比第一个字节中的地址。例:主机发送1、工作模式配置2、写入从机地址3、产生起始信号4、发送从机地址5、等待应答6、判断是否继续通信NO:1)写入发送的1字节数据2)清除中断挂起位。

2023-09-25 22:28:29 188

原创 L12D22 IIC总线原理

1、和UART一样也是总线协议,用于通信。2、串行、半双工、近距离、低速、低成本、芯片之间的传输。3、SDA数据线、SCL是时钟线。

2023-09-25 17:41:48 417

原创 L12D21 PWM

23:16] 死驱功能[15:8] 2,3,4一级分频[7:0] 0,1二级分频。

2023-09-25 15:36:05 488

原创 L12D20 RTC实验

1、不需要输入输出信号,集成在SOC,因此不需要引脚。2、需要备用电池,需要精度较高的晶振,可以设置闹钟,通过中断,设置闹钟音乐。

2023-09-24 18:57:07 105

原创 L12D19 ADC实验

(一)ADC简介1、温度传感器:温度较高的时候产生高电伏(1.5v-1.6v),温度较低时产生低电伏(0.1v-0.2v)等模拟信号,但CPU只能识别数字信号,将模拟信号送到ADC转换成数字信号高低电平。一般的,SOC内部集成有ADC。(二)ADC主要参数当最大输入电压一定时,二进制位数越高分辨率越高。1、分辨率计算公式ADC能区分的最小电压 = 最大输入电压/2的n次。

2023-09-24 12:21:11 154

L13D9 uboot移植深化

L13D9 uboot移植深化

2023-10-01

L12D11 FS4412开发环境搭建

L12D11 FS4412开发环境搭建

2023-09-20

sqlite3本地安装

sqlite3本地安装

2023-09-09

空空如也

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

TA关注的人

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