- 博客(47)
- 收藏
- 关注
原创 字符设备驱动流程
字符设备是Linux驱动中最基本的一类设备驱动,字符设备就是—个—个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、IIC、SPI、LCD等等都是字符设备,这些设备的驱动就叫做字符设备驱动。linux系统中万物皆文件,驱动程序加载后会在/dev目录下生成一个对应的文件,如/dev/led。应用程序就是先用open打开该文件,用write控制led的亮灭,用read读取led的亮灭,用完之后用close关闭该文件。
2024-05-07 14:56:00 612 1
原创 Day 3. cy语言和汇编语言的互相调用
lr(栈指针)来管理 主调函数来负责。3、读写cpsr寄存器的指令是什么?4、入栈和出栈操作使用的指令是什么?读CPSR —— MRS指令。写CPSR —— MSR指令。1. 等待返回值寄存器。
2024-04-15 09:04:04 236
原创 Day 2. 2440相关知识点
ARM920T有31个通用的32位寄存器和6个程序状态寄存器,这37个寄存器分为7组,进入某个工作模式时就使用它的那组寄存器。有些寄存器,不同的工作模式下有自己的副本,当切换到另一个工作模式时,那个工作模式的寄存器副本将被使用:这些寄存器被称为备份寄存器。从下图中可以看出fiq模式的备份寄存器最多,这是为了提高fiq的响应速度,减少保存寄存器值所花费的时间。的工作模式分为普通模式、特权模式,其中特权模式又细分为六种模式。4、cpsr中的那几位是用来设置工作模式的?1、arm的工作模式有哪些?
2024-04-10 18:45:19 614
原创 Day 7. 哈希表
哈希存储——>散列存储哈希冲突/哈希矛盾如何解决?开放定址法:链地址法:.h文件1、创建哈希表2、设计哈希函数3、数据插入4、查找5、销毁6、遍历。
2024-03-25 19:41:33 321
原创 Day 5. 循环队列
顺序队列:存在假溢出问题,于是出现了循环队列。防止越界访问:i=(i+1)%len。满队列:尾下标加一等于头下标。空队列:头下标和尾下标相等。
2024-03-23 09:00:38 236
原创 Day 4.系统栈-----顺序栈、队列-----链式队列
大小:8MB1、局部变量2、未经初始化为随机值3、代码执行到变量定义时为变量开辟空间4、当变量的作用域结束时回收空间5、函数的形参和返回值6、函数的调用关系、保护现场和恢复现场7、栈的增长方向,自高向低增长。
2024-03-21 22:51:37 413
原创 Day 3.双向链表
* 学生信息结构体 */int id;int score;}DATA_STU;/* 结点 *///前驱结点的地址//后继结点的地址}DOU_NODE;/* 链表标签 */int clen;}DOU_LIST;
2024-03-21 01:01:25 445
原创 Day 2. 数据结构-----单向列表2(无头链表)
定义两个指针指向头结点,慢指针一次走一步,快指针一次走两步,再次相遇时,相差的步数就是环形链表的节点数。
2024-03-19 19:42:42 438
原创 Day 11.Sqlite3的相关函数接口
功能:打开数据库文件(创建一个数据库连接)参数:filename:数据文件路径ppDb:操作数据库指针存放的空间首地址返回值:成功返回SQLITE_OK;失败返回错误码。
2024-03-18 09:11:58 358
原创 Day 8.TCP通信
socketconnectsendrecvclosesocketbindlistenacceptsendrecvclose int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);功能:发送链接请求参数:sockfd:套接字文件描述符addr:目的地址存放空间首地址addrlen:IP地址的大小返回值:成功返回0;失败返回-1;ssize_t send(int sockfd, con
2024-03-07 21:32:20 745
原创 Day 7.UDP编程、不同主机之间用网络进行通信
功能:从套接字中接受数据参数: sockfd:套接字文件描述符buf:存放数据空间首地址flags:属性 默认为0src_addr:存放IP地址信息的空间首地址addrlen:存放接收到IP地址大小空间的首地址返回值:成功返回实际接收到的字节数;失败返回-1;
2024-03-06 18:28:29 842
原创 Day 6.有名信号量(信号灯)、网络的相关概念和发端
功能:创建一组信号量参数:key:IPC对像的名字nsems:信号量的数量返回值:成功返回信号量ID失败返回-1。
2024-03-05 21:18:18 1190
原创 Day 3.线程的分离属性、互斥、*死锁的和信号量
1)pthread_mutex_trylock(尝试加锁)替代 pthread_mutex_lock。多线程操作互斥锁,导致多个线程均无法向下执行的状态成为死锁状态简称死锁。CPU最小的一次不能被任务调度打断的操作称为原子操作。信号量时一种资源,可以被初始化、申请、释放、销毁。互斥锁只能解决资源竞争的问题;pshared:0 一个进程中所有线程共享。返回值:成功返回0;返回值:成功返回0;返回值:成功放回0;mutex:互斥锁空间首地址。mutex:互斥锁空间首地址。sem:信号量空间首地址。
2024-02-27 19:09:51 1022
原创 Day 2.exec函数族和线程的基本概念、相关函数接口
功能:利用进程空间去执行另外一份代码l:参数以列表形式传递v:参数以指针数组形式传递e:更新环境变量p:在系统指定目录下查找文件1)自定义一个程序(文件名为apple)2)int execl/int execv引用运行功能:获得环境变量名对应的值功能:设置环境变量的值参数:name:环境变量名value:环境变量的值overwrite:非0 覆盖0 不覆盖返回值:成功返回0;失败返回-1system功能:执行shell命令。
2024-02-26 23:58:51 993
原创 Day 1.进程的基本概念、相关命令、函数结口
程序:存放在外存中的一段数据组成的文件进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡。
2024-02-23 21:26:53 925
原创 Day 6.文件属性和权限的获取
功能:返回1907-1-1到现在的秒数(格林威治时间)参数:tloc:存放秒数空间的首地址返回值:成功返回秒数失败返回-1。
2024-02-20 19:35:35 1144
原创 Day5.目录IO的基本函数和自定义头文件
示例 :利用read和write实现文件内容的拷贝(将src.bmp中的内容拷贝到dst.bmp文件中)
2024-02-19 23:18:24 1114
原创 Day 3. Linux高级编程之函数接口和流的定位
1)gets没有给定最多读取字符的个数,有越界风险\n\nfgets需要给定最多读取的字符个数,没有越界的风险\n\n2)gets会去掉从终端接收的/n,换成/0\n\n fgets则会保留并在末尾加上/0\n\n3)puts会在字符串末尾多打印一个/n字符\n\nfputs不会在末尾多打印/n字符。
2024-02-05 19:40:09 1163 1
原创 Day 2.几个简单的函数接口 今日份浅学
1.函数接口(1).fgetc: int fgetc(FILE *stream); 功能:从流中度区下一个字符 参数: stream:文件流指针 返回: 成功返回ASCII值 失败返回 EOF 读到文件末尾返回EOF练习:读出文件内容的行数#include <stdio.h>int main (void){ FILE *fp = NULL; char ch = 0 ; fp = fopen ("file.txt
2024-02-04 22:00:32 425 1
原创 指针操作一维字符型数组和及回调函数------努力学习嵌入式的第十四天!今天的内容让人脑瓜子嗡嗡的 着重复习
1.指针操作一维字符型数组(字符串)2.函数grtsputsstrlen1.const 能加的都加2.函数功能尽可能写的全面1.指针操作函数2.函数名就是函数入口地址3.定义一个函数指针便变量获得函数名4.使用:通过指针变量获得函数名5.用途:回调函数指针 -- 函数的指针 --- 返回的类型是函数类型的 指针指针函数 -- 指针的函数 --- 返回值为指针类型 的函数。
2024-01-30 22:52:07 1226 1
原创 努力学习嵌入式的第十三天——指针如何操作一维整型数组和一维字符数组
基类型 *变量名a.基类型:数据类型 基本数据类型 数组类型 指针类型b.* //定义时侯的*表示定义的是一个指针类型的变量c.变量名eg.//int *p,q;//1:可以用来修饰变量,修饰函数参数,修饰函数返回值,且被const修饰的东西,都受到强制保护,可以预防其它代码无意识的进行修改,从而提高了程序的健壮性2:使编译器保护那些不希望被修改的参数,防止无意代码的修改3:增强代码的可读性。
2024-01-29 19:24:03 1132
原创 学习嵌入式的第十二天-------二维数组函数的调用和指针的运算
int Sum(int a[][4],int row) //数组求和函数int sum=0;int i=0;int j=0;for (i=0;i
2024-01-27 19:07:31 1071
原创 学习嵌入式的第十一天----------一维整形型数组和字符型数组的函数调用
返回值的类型 函数名 (形参)函数体return 表达式返回值的类型:a.一般与返回结果类型一致b.不一致时,以函数定义时,”以返回值的类型为准“c.不写的话默认为int。d.有时候也不需要写返回值。
2024-01-26 23:25:30 873 1
原创 目标成为嵌入式大牛的第十天之函数的一般形式和调用
1.main函数之前2.main函数之后:要加函数声明即-----函数头 + 分号;函数声明最次要放在使用之前1.函数实现:主要是代码的逻辑2.流程图:主要是某个功能块儿3.main函数:指的是主函数 针对每个功能块4.函数调用的本质:函数调用就是一个函数调到另一个函数中实现其功能 结束之后返回到原来位置,也就是所谓的”进栈“和”出栈“。
2024-01-25 19:26:26 940
原创 立志成为嵌入式高手的第八天------一维字符数组
冒泡和选择哪个循环方法好?通过CPU执行代码(指令)的数量=消耗时间计算时间复杂度:O(n)计法 //大o计法思想:(再有序的数列中)找一个合适的位置,插入;就如同军训站队int n;int a[n];如上所示,想要成立int a[n]不能被初始化。二分查找(折半查找):前提:数据必须有序 所以要先排序在查找如:100005000250012506253121507537189421。
2024-01-23 22:40:55 729 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人