- 博客(53)
- 收藏
- 关注
原创 linux驱动编程——标准、混杂、中断
设备号类型:①主设备号 ②子设备号 类型:unsigned int dev_t12 major(主设备号)(子设备号)(1)申请设备号的函数为:(设备号)(设备号起始地址)(申请该设备个数)(设备名称)(次设备号个数)(4)归还设备号(5)创建设备节点(带参宏)(设备类型 名字)注:①owner指向模块的指针,这里只需传THIS_MODULE。②该函数返回struct class *,用宏IS_ERR判断是否合法。(6)添加节点。
2024-09-29 16:40:51
776
原创 s3c2440——ADC模数转换器,Linux驱动编程——u-boot
模拟:连续;数字:离散。模拟信号一般指连续变化的电压值。转换的步骤:采样、量化。分辨率:nbit;表示一个电压比较器比较10次,得到十位数字信号。因此得到的数字信号范围:0~2^10-1,最大数字信号为:2^10-1。常用分辨率为:8bit、10bit、12bit、16bit。采样后取平均值:称为中值滤波。查表:ADCCON、ADDCDATO。
2024-09-25 22:02:48
407
原创 s3c2440——UART串口通信
1、并行通信:一次可收发2bit/2bit以上。通信效率高;但对SOC硬件资源占用率太高。串行通信:一次通信传递1bit。降低对硬件占用率;但通信速率低。2、单工通信:只能A发送,B接收。半双工通信:A、B均可收发,但不能同时通信。全双工通信:A、B可同时收发。eg:USB(统一串行总线)、串口均属于串行通信。
2024-09-23 21:44:37
760
原创 s3c2440时钟、pwm定时器
1、晶振 ,在不外加电源的情况下,增加频率,使其从12MHZ到400MHZ。锁相环PLL:MPLL = (2*m*Fin)/(p * 2 ^s);m = MDIV(分频值M的值)+8,p = PDIV +2,s = SPIV查表:MPLLCON、CLKCON、CLKDIVN、CAMDIVN.
2024-09-23 10:39:31
337
原创 s3c2440各部分应用
按位与&:清零,清零位&0;如:0xFFFF &( ~(1 << 7)), 将第7位清零。按位或 | :置1,置1位 | 1;如:0xFFFF | (1 << 5) , 将第5位置1。按位异或^:翻转,翻转位 ^ 1。如:0xFFFF ^ (1 << 3),将第3位翻转。
2024-09-23 00:02:17
364
原创 汇编语言(模式切换)
最高位1至最低位1之间的二进制数序列:1001 1001 从第一个1开始到最后一个1之间没有超过8位末尾1的右边有1个0,不满足第二条,所以0x132不是立即数。ARM中将这 12bits 分为 8bit 常数(0~255)和 4bit 循环右移位值(0~15)。8bit 常数范围(0~255),位移的步进值是以2为单位(即实际位移 2 * rotate 位),可以表示循环有以(0~30)偶数位: 0、2、4、6、8、10、12、14、16、18、20、22、24、26、28、30。
2024-09-19 20:23:39
1031
原创 硬件开篇——体系架构
裸机驱动(无操作系统)——由寄存器控制;Linux驱动。硬件:计算机系统:计算机架构:①冯诺依曼(指令、数据一起)②哈佛(指令、数据分开)
2024-09-19 00:56:39
1095
原创 线性结构——栈与队列
内核:内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。一、内存五分区作用?堆区:该区由程序员申请后使用,需要手动释放否则会造成内存泄漏。 如果程序员没有手动释放,那么程序结束时可能由OS回收。栈区:存放函数形参和局部变量(auto类型),由编译器自动分配和释放。静态/全局区:存放全局变量和静态变量(包括静态全局变量与静态局部变量),初始化的全局变量和静态局部变量放在一块,未初始化的放在另一块。文
2024-09-11 20:40:27
567
原创 链表——单向链表续、双向链表
当while(1)一直运行时,操作系统一直被申请空间,最终;造成内存泄漏。避免方法如:堆区手动申请的空间,都在用完后。测试是否存在内存泄漏:安装命令:sudo apt-get install valgrind;执行命令:valgrind ./a.out。
2024-09-04 19:43:53
467
原创 sqlite数据插入效率
时间相关接口:功能:得到从1970年1月1日0时0分0秒到现在的秒数。<可以利用该函数来计算一个程序的运行时间,只需就可以。注意单位的转变。精度到微秒结构体: struct timeval {/* seconds */ 秒/* microseconds */ 微妙 1s=1000000us结构体: struct timezone {/* minutes west of Greenwich */ 格林威治向西的分钟数。
2024-08-30 19:25:24
2511
原创 数据库——开篇
1、当程序运行结束,掉电,数据丢失。(数组、链表、变量等)2、程序运行结束,掉电,数据不丢失。(1)文件:对数据管理(增删改查)效率低。(2)数据库:专业存储数据,可存大量数据。对数据管理效率高,使用方便。
2024-08-29 19:03:50
1383
原创 http应用层协议
注:DNS (domain name server)称为域名解析:将域名转换为IP地址。eg:<协议>://192.168.1.112:80/;http 只是协议中一种。<主机>:<端口>/<路径> //表示了资源所在的路径。其中为了传输除了文本以外的图像、视频等内容,有。1、如何在万维网中表示一个资源?2.站点 与 站点之间资源传输时,该。用来存放各种资源的网络。
2024-08-24 13:24:03
713
原创 TCP系列相关内容
loop——本地回环测试地址。void *memset(void *s,int c,size_t n)——给一个变量设定一个值。
2024-08-23 20:21:19
2159
原创 进程间的通信3——IPC对象通信->共享内存、网络通信
网络通信需要在物理层面、软件(逻辑)层面都有通路。局域网、城域网、广域网;因特网。最初APAR Net //阿帕网便是将众多局域网连接,形成因特网雏形。之后为解决不同体系结构网络互联问题,1981年国际标准化组织ISO制定了开放系统互连模型(OSI网络模型)。
2024-08-21 20:12:49
1305
1
原创 进程间的通信2——有名管道、信号
是一种(内核/内存中)特殊的文件。<系统层面有名字>信号是一种异步的通信方式;本身并不能传递大量数据。也称软中断;<软件层面上实现一个类似中断的过程>
2024-08-17 18:33:58
603
原创 链接、报错、Makefile工程管理工具
sprintf 拼接字符串。快捷命令:【vi -t 待查宏或结构体名称】进入窗口查找;【:ts 宏或结构体名称】在窗口内实现最初查找;【ctrl +]】实现追踪;【ctrl + t】返回上一级;【df -h】查看硬盘空间;【ll -i】文件存储编号。
2024-08-08 19:46:17
1124
原创 fp与fd转换、目录操作
char *getcwd(char *buf,size_t size(本次接收的最大长度)) <类pwd命令>步骤:打开(opendir)、读取(readdir)、关闭(closedir)。注意:read 都当二进制看,不会自动补零;fgets会自动补零。功能:FILE *fp —转换—> int fd。功能:int fd —转换—> FILE *fp。DIR *目录流指针;FILE * 文件流指针。<类stat、ll命令>
2024-08-07 18:21:08
690
原创 linux系统编程开篇——shell脚本
脚本中,为弱类型语言,不用定义变量。read(相当于scanf);echo(打印输出):(1)当echo后跟"双引号",遇到$变量,则输出变量中的值;(2)当echo后跟'单引号',遇到$变量依然打印$变量;(3)当echo后跟`反单引号`,将中间的字符串按照命令打印。写变量时不加$,读变量时要加$。定义的变量仅在该命令窗口、文件下应用(类似于局部变量)。想在其他窗口下应用,可变为环境变量,用PATH命令。例如:实现+ - * /运算 注意:乘号要用/*,不能用*;
2024-08-03 19:16:31
887
1
原创 结构体、链表
struct 类型名 变量进行的是变量的赋值。变量的初始化:struct 类型名 变量 = {...,...,...};与结构体中声明的成员次序一致。可部分成员初始化,例如: 其他的未初始化的为0。
2024-08-01 18:22:42
424
原创 指针——数组与指针(进阶版)
表示只能指向int型参数、返回值为int型的函数。“指针函数名 = 函数名;”表示为指针变量赋值,函数名后面不跟参数时,为函数的入口地址。降低程序耦合性。
2024-07-31 18:30:52
727
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人