
笔记
你板子冒烟了
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JJJ:结构体定义中常加的后缀:attribute ((packed))
在GCC下:struct my{ char ch;: 的作用就是告诉编译器取消结构体在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关。在GCC下:struct my{ char ch;原创 2024-08-22 10:03:00 · 375 阅读 · 0 评论 -
JJJ:linux 内核 hlist 数据结构分析
linux 内核 hlist 数据结构分析原创 2024-08-19 16:35:20 · 375 阅读 · 0 评论 -
git制作patch
详解如何使用git 生成patch 和打入patch原创 2024-06-21 10:33:34 · 175 阅读 · 0 评论 -
JJJ:rcS脚本是如何被执行到的
parse_inittab 里面会调用 new_init_action(SYSINIT, INIT_SCRIPT, “”),决定了接下去初始化的脚本是INIT_SCRIPT所定义的值。在init_main()函数中会调用parse_inittab(void)函数,parse_inittab(void)函数可以使用一些默认的配置,当/etc/inittab没有配置时。kernel_init执行"/sbin/init",在此程序中,会执行到busybox的init进程入口,init_main.原创 2024-06-04 20:22:33 · 431 阅读 · 1 评论 -
JJJ:linux spi总结
在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,数据的传输是在时钟信号的上升或下降沿进行采样的。在SPI通信中,主设备通过时钟信号来控制从设备的数据传输,时钟信号在传输开始前需要有一个确定的起始状态,时钟极性就是用来指定这个起始状态的电平状态。模式0表示时钟空闲状态为低电平,数据在时钟的下降沿采样,上升沿发送。模式2表示时钟空闲状态为高电平,数据在时钟的下降沿采样,上升沿发送。模式3表示时钟空闲状态为高电平,数据在时钟的上升沿采样,下降沿发送。/ 若采用了这个宏,时钟状态空闲时为高电平。原创 2024-05-20 21:19:00 · 301 阅读 · 0 评论 -
JJJ:MSB LSB,大小端
例如,在8位二进制数01010101中,MSB为0,LSB为1。LSB则表示二进制数的最低位。MSB表示二进制数的最高位。原创 2024-05-20 21:11:09 · 312 阅读 · 0 评论 -
JJJ:WARN,WARN_ON,BUG_ON
当满足一些条件时,该函数会输出一条带有调试信息的警告消息,并打印出相应的调用栈信息,以便于开发人员进行调试。不要过度使用,否则会造成系统性能下降。在生产环境中,应该关闭大部分的内核调试功能。原创 2024-05-20 21:09:32 · 450 阅读 · 0 评论 -
JJJ:ubuntu修改静态ip
网关一般放置在网络边缘,与不同网络相连。网关会对数据包进行协议格式的解析,然后再构建适合目的网络的协议格式,发送到目的网络中。网关需要具备转换不同协议格式的能力,支持数据缓存、分组、组装、再传输等功能,以保证数据的快速、稳定传输。它可以将一个网络的协议格式转换为另一个网络可识别的协议格式,实现不同网络之间的数据传输。转换网关:是一种将不同网络协议进行转换的网关,其主要作用是将数据包格式转换为目标网络可以识别的格式。应用网关:主要用于应用层协议转换,实现HTTP、SMTP、FTP等应用协议之间的转换。原创 2024-05-20 09:21:35 · 307 阅读 · 0 评论 -
JJJ:给一个shell指令起别名,如让vi指向vim
这个只是一次性(在mobaxterm中的一个窗口中执行,在另一个窗口不会生效),原创 2024-05-16 20:50:51 · 178 阅读 · 0 评论 -
ddr测试&sd卡读写速度测试
注意/dev/zero不产生io,作为读或者写中的一方,可以用来测试纯写或者纯读的速度。time指令可以用来测试其后接指令的执行时间,细节。2、sd卡读速度和写速度测试。原创 2024-05-16 18:47:33 · 2071 阅读 · 0 评论 -
JJJ:vim操作实用小技巧
用space替代tab的输入,在Makefile中不能用空格代替Tab(就是不能设置这个选项)高亮搜索结果,所有结果都高亮显示,而不是只显示一个匹配。移动光标(j 或 k)选中需要注释的行的开头;把当前窗口差异行复制到对端窗口差异行。符号注释,则取消注释时需进行两遍操作。在搜索时,输入的词句的逐字符高亮。把对端窗口差异行复制到当前窗口行。尽量折叠,尽量显示差异部分。启动鼠标操作见骚操作第一个。设定tab宽度为4个字符。,转换成16进制模式看。,然后输入注释符,如。选择要删除的注释符;原创 2024-03-30 23:49:17 · 259 阅读 · 0 评论 -
JJJ:改善ubuntu网速慢的方法
从列表可知,有很多国内的下载源供我们选择,这里我们以阿里源 mirrors.aliyun.com 为例,们可以将 Ubuntu 系统的软件下载源更改为国内软件源,譬如阿里源、中科大源、清华源等等,Ubuntu 系统默认的软件下载源由于服务器的原因, 在国内的下载速度往往比较慢,这时我。下载速度相比 Ubuntu 官方软件源会快很多!当然也可以选择其它下载源。原创 2024-03-19 21:36:46 · 715 阅读 · 0 评论 -
/proc目录下助于调试相关的文件
在内核2.4.29版本以前,此文件的内容为系统当前挂载的所有文件系统,在2.4.19以后的内核中引进了每个进程使用独立挂载名称空间的方式,此文件则随之变成了指向/proc/self/mounts(每个进程自身挂载名称空间中的所有挂载点列表)文件的符号链接;与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。具有一些独特的特点。原创 2024-03-04 20:58:56 · 1014 阅读 · 0 评论 -
JJJ:pd充电协议
PD充电协议介绍- 想要一统天下的USB-C sponsored原创 2022-04-08 21:20:01 · 381 阅读 · 0 评论 -
JJJ:dp & dp1.2 & dp1.4
dp接口:全称为DisplayPort。是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。该接口主要用于视频源与显示器等设备的连接。支持携带视频、音频、USB和其他形式的数据。dp1.2和dp1.4的区别输出的分辨率(分辨率越高,显示越清晰)传输带宽(传输速率)价格显示技术(dp1.4更先进)...原创 2022-04-08 20:54:46 · 1043 阅读 · 0 评论 -
JJJ:printk_ratelimit() 函数
内核版本:2.6.38此函数的功能是:限制在一定时间间隔内的打印次数。printk_ratelimit()include/linux/printk.h#define printk_ratelimit() __printk_ratelimit(__func__)__printk_ratelimit(__func__)kernel/printk.c/* * printk rate limiting, lifted from the networking subsystem. * * Thi原创 2022-04-04 15:45:04 · 1012 阅读 · 0 评论 -
JJJ:配置ubuntu虚拟机网络
文章目录1、首先查看主机网络相关的信息2、设置虚拟机3、原配置1、首先查看主机网络相关的信息可以看到:ipv4的ip,子网掩码,网关。三个关键信息。下面在设置虚拟机网络的时候要参考这三条信息。2、设置虚拟机虚拟机 -> 设置 -> 网络适配器,选择桥接模式,如下图:我一开始选的nat模式,发现:主机ping虚拟机能通;虚拟机ping主机不通。选了桥接模式后发现:问题解决。虚拟机的ip所在的网段要和主机的网段保持一致。子网掩码和网关地址,均保证和1中主机相关信息一致。3、原创 2022-03-28 15:57:51 · 1546 阅读 · 1 评论 -
设备树补充
1节点格式[label:] node-name[@unit-address] { [properties definitions] //就是属性定义,对当前节点描述,将硬件信息提供给内核处理 [child nodes] //子节点 } PIC: pic@10000000 { interrupt-controller;};another-device-node { interrupt-paren.原创 2022-01-06 13:37:16 · 304 阅读 · 0 评论 -
JJJ:Makefile 添加
CURDIR 变量CURDIR 是 Makefile 中的一个变量:表示当前目录下。在 Makfile 中使用 $(CURDIR)export 和 unexport如果你要传递变量到下级 Makefile 中,那么你可以使用这样的声明:export <variable ...>如果你不想让某些变量传递到下级 Makefile 中,那么你可以这样声明:unexport <variable ...>make -s 中 -s 选项1、如下的Makefile:..原创 2022-01-01 10:18:26 · 924 阅读 · 0 评论 -
vscode
windows vscodectrl+k ctrl+s:打开快捷键设置转到定义,后退 搭配,可设置为 f12,f10原创 2021-12-01 10:11:09 · 189 阅读 · 0 评论 -
cpu如何工作的
1、mos管的工作原理2、通过mos管构成的逻辑门电路3、cpu的加法计算过程添加自己要添加的文字原创 2021-11-27 15:26:29 · 229 阅读 · 0 评论 -
3、cpu的加法计算过程
一、加法运算1、进位、本位和数本位和数:sum,简写为s进位:carry,简写为c定义参考下图:2、半加法器半加法器 只能计算1位二进制的加法;全加法器 可以计算多位二进制的加法。用一个 异或门 和一个 与门 即可实现一个 半加法器。输入:两个加数输出:本位和数、进位3、全加法器半加法器 只能计算1位二进制的加法;全加法器 可以计算多位二进制的加法。输入:两个加数,进位输出:本位和数,进位4位二进制数加法器将4个全加法器的cout接到下一级的cin,如下图:上述的这种原创 2021-11-27 15:16:15 · 3950 阅读 · 0 评论 -
2、通过mos管构成的逻辑门电路
一、总结mos管 是构成 逻辑门电路 的最基本单元。各个逻辑门电路的真值表如下:二、各种门1、非门NOT2、与门AND3、与非门把上面与门电路 右边的 非门电路 去掉NAND4、或门OR5、或非门NOR把或门右边的非门电路去掉6、异或门XOR两个输入相异为1,相同为0。7、同或门XNOR两个输入相同为1,相异为0。...原创 2021-11-27 14:14:27 · 33316 阅读 · 7 评论 -
1、mos管的工作原理
文章目录一、导体,绝缘体,半导体二、半导体的制作掺杂pn结半导体的单向导电性三、mos管的工作原理源极,栅极和漏极nmos和pmos电路符号四、总结一、导体,绝缘体,半导体导体:能够导电的介质。绝缘体:不能导电的介质。半导体:根据特定外界条件的变化,介质对外表现为导体或者绝缘体。二、半导体的制作硅原子的结构图如下:最外层有4个电子,纯净的硅晶体内部全是硅原子,最外层共享彼此的4个价电子,能在外层形成稳定的8电子结构,不会有自由电子或者自由空穴。对外表现为绝缘体。掺杂分为两种:n型掺杂和p原创 2021-11-27 14:01:00 · 2453 阅读 · 1 评论 -
qsort函数
NAMEqsort, qsort_r - sort an arraySYNOPSIS#include <stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); void qsort_r(void *base, size_t nmemb, size_t size, int原创 2021-10-01 17:26:45 · 502 阅读 · 0 评论 -
windows下 ctrl+快捷键 相关操作
CTRL是键盘一个常用的键。全名为"control",中文意思为"控制",用途广泛。在计算机基础中称为“控制键”。ctrl z撤销后实现恢复的方法:首先进入相应的操作界面;然后按【ctrl+z】键撤销当前操作;最后按下快捷键【CTRL+Y】即可恢复上一步操作。其他快捷方式:ctrl +V 粘贴ctrl +C或ctrl +INSERT 复制ctrl +X 窗口最大化/剪切(移动)ctrl+N 窗口最小化ctrl+W 关闭当前窗口ctrl +Esc 打开开始菜单ctrl +ALT+DELET原创 2021-09-28 16:29:25 · 2778 阅读 · 0 评论 -
time_t,tm结构体,以及与string之间的转换函数
#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <time.h>int main(int argc, char** argv){ // typedef long time_t time_t原创 2021-09-06 15:57:11 · 614 阅读 · 0 评论 -
select例程
#include <sys/types.h> #include <sys/time.h> #include <stdio.h> #include <fcntl.h> #include <sys/ioctl.h> #include <unistd.h> int main() { char buffer[128]; int result, nread; fd_set inputs, testfd原创 2021-08-29 20:27:44 · 200 阅读 · 0 评论 -
log upload
StateMachine.cgetUploadUrl:向srv发送获取kpi url 或者 log url 获取请求getUploadUrlHandler:线程,调用 getUploadUrlexecuteConnectedState:创建线程Topic.cinternalGetUploadURLHandler:当MessageHandler 收到一个URL类型的回复后,调用此函数接收url信息,并发往进程。======Statemachine.cgetUploadUrlHan..原创 2021-08-24 16:49:18 · 451 阅读 · 0 评论 -
socket 实验源码
//s1.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int main(int argc, char** argv){ int server_fd, clie原创 2021-08-19 23:25:44 · 254 阅读 · 0 评论 -
笔记0 绪论
原创 2021-08-01 23:16:36 · 131 阅读 · 0 评论 -
va_start, va_arg, va_end 相关
本文主要介绍va_start和va_end的使用及原理。核心思想:只是参数个数可变,但参数的类型可知,用format指出参数是什么类型。函数原型如下:#include <stdarg.h>void va_start(va_list ap, last);type va_arg(va_list ap, type);void va_end(va_list ap);void va_copy(va_list dest, va_list src);1、在C中,当我们无法列出传递函数的所有原创 2021-05-26 11:57:27 · 211 阅读 · 1 评论 -
CMakeLists.txt 笔记
设置编译器SET(CMAKE_C_COMPILER $ENV{SOURCETOOLCHAIN}gcc)SET(CMAKE_CXX_COMPILER $ENV{SOURCETOOLCHAIN}g++)设置executable或library的输出路径set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)...原创 2021-05-21 14:15:15 · 138 阅读 · 0 评论 -
Linux驱动开发】free_irq时发生错误:Trying to free already-free IRQ
在卸载驱动时,出现以下错误提示:Trying to free already-free IRQ 49表示中断没有释放成功,磨了很久后发现,中断申请函数request_irq()与中断释放函数free_irq()的最后一个参数(void *dev 设备结构体)要保持一致,必须是同一个指针。int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)转载 2021-05-19 22:51:38 · 893 阅读 · 1 评论 -
关于cmake 指定g++/gcc 编译器的问题
CMake是一个开源的跨平台工具系列,旨在构建,测试和打包软件。但是,在使用cmake的时候我们也会经常遇到一些不明白的问题,下面就是使用设置指定的g++/gcc编译器的一点经验。之前在网上搜索如何设置指定编译器,发现网上的很多教程并没有说清楚,所以做下简单的记录上面两行set命令是设置指定的编译器。但是要将其放在project命令的前面。...原创 2021-05-18 11:22:08 · 836 阅读 · 0 评论 -
putty主要设置
字体设置(个人喜好)设置终端行数设置 UTF-8 格式,否则某些情况 terminal可能出现乱码原创 2021-05-14 10:52:08 · 417 阅读 · 0 评论 -
JJJ:vim 安装 Ctaglist(Clist)插件
vim插件taglist的安装和使用Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.的解决办法原创 2021-05-07 20:42:39 · 536 阅读 · 1 评论 -
arm-1
开发电脑选择:核心越多越好,主频越高越好----->编译工程快设置ubuntu系统ip的方法:右上角找到设置图标,选择network,点齿轮图标号,在ipv4下面设置地址192.168.1.x,子网掩码255.255.255.0,网关192.168.1.1(必须要使windows,ubuntu,开发板处于同一网段,能互相ping通)U盘连接到主机和UBUNTU相互转换:虚拟机右下角,右键连接or断开shell常用指令ls -a:显示所有目录,文件夹,隐藏文件/目录ls -l:..原创 2020-10-27 09:50:53 · 386 阅读 · 0 评论 -
计组:八、CPU的结构和功能
主要内容:先分析CPU的功能,再由功能,去讲解对应的结构。机器 / CPU完成一条指令的详细过程。流水技术。中断技术的原理。8.1、CPU的结构8.1.1、CPU的功能CPU内部包括运算器和控制器,这两部分必不可少(可以把主存、寄存器组也算在CPU内)。接下来主要介绍控制器的作用。控制器的功能/作用:负责协调、控制计算机各部件执行程序的指令序列;对于冯 . 诺 结构的计算机:code进入存储器后,由控制器来取指令、执行指令;控制器的基本功能:取指令,分析指令、执行指令。..原创 2020-08-05 23:03:15 · 1683 阅读 · 0 评论 -
多线程
引入头文件:#include <pthread.h> //开启线程相关头文件#include <stdio.h>编写线程函数:void* tprocess(void * args){//运行程序体return NULL;} //注意是函数指针调用线程函数:pthread_t t; //用于声明线程IDpthread_create(&t,NULL,tprocess,NULL); //创建线程pthread_join(t,.原创 2020-06-18 17:48:26 · 130 阅读 · 0 评论