自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

D&T的博客

纸上得来终觉浅,绝知此事要躬行

  • 博客(166)
  • 收藏
  • 关注

原创 linux 内存管理之五bootmem 分配器 2.4.22

其初始化过程 已在 上篇[ARM 架构物理内存初始化],(https://blog.csdn.net/zsj1126/article/details/116430903)介绍。内核的bootmem 分配器 又叫自举内存分配器,其内涵即 自己初始化自己的一个内存分配器。以页为单位分配,起始地址对齐和计算,如goal 非0 ,则从goal 开始扫描。last_offset: 上次分配的bootmem页内偏移。last_pos: 上次分配的bootmem页结束id。209-210 : 判断是否可以合并分配。

2023-06-19 12:45:32 460

原创 linux 内核页表初始化源码分析2.4.22

一 静态页表初始化如下图,swapper_pg_dir 代表着一级页表,pg0,pg1,分别为这个页表的前两个页表项,包含8m空间,存储内核镜像,由于vmlinux 的编译基址址是PAGE_OFFSET + 1MiB,所以,这里这三个虚拟地址分别为swapper_pg_dir:PAGE_OFFSET + 1MiB +0x1000arch/i386/kernel/head.S............

2022-07-06 17:01:36 711

原创 LINUX nand flash 驱动ECC说明

结构体释义struct nand_ecclayout {uint32_t eccbytes; //表示使用几个ecc字节uint32_t eccpos[128]; //表示ecc占用的位置,因为现在大页面4kbyte也就128个,所以这里写了128,以后有更大页面的,这里也要改了。uint32_t oobavail; //有几个oob可用,这个跟下面的成员有点像,一般用下面的struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];

2022-07-06 16:56:42 966

原创 LINUX 2.4.22 内存管理 之三ARM物理内存初始化(二)

上一篇:物理内存初始化(一)下一篇:页表管理(上)前文介绍系统启动后 内存的初始化入口,以及BOOTMEM 分配器的初始化,接下来进入paging_init函数,该函数主要负责页表初始化,struct map_desc {unsigned long virtual; //node start vitural addressunsigned long physical; // node start physical addressunsigned long length; //node size

2022-07-06 16:55:10 504

转载 find exec 选项 用法

SHELL find -exec 用法

2022-06-23 17:34:43 349 1

原创 cygwin 的 manpage 安装

cygwin 默认的安装 manpage 非常少,如需使用manpage 还需手动将安装包勾上 ,posix 接口的 manpage 才能看到

2022-04-10 13:34:48 257

原创 cygwin 的介绍和安装

文章目录简介简介优点安装下载安装程序安装步骤简介简介Cygwin是一个可原生运行于Windows系统上的POSIX兼容环境。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。优点首先自然是近乎一致的UNIX/Linux体验;完备且相对轻量,普通用户不必安装整个Linux系统或虚拟机,就可以获得近乎一致的体验,Cygwin的程序运行与Windows互不干扰,高效的

2022-04-10 13:26:49 1802

原创 解决Kconfig中help信息在窗口不显示问题

今天在 buildroot 下面 make menuconfig 碰到 Kconfig配置的help 无法显示,排查了半天,最后是因为文件格式为dos , 调整回 unix 就OK了vim 下面 输入:setfileformat=unix

2021-11-04 16:51:34 236

转载 arm 汇编指令

文章目录指令格式条件码寻址方式指令集指令格式特点: 精简指令集,译码机制简单 ,目标寄存器在前,源寄存器在后。除几个特例长度只有32 位条件码寻址方式注意 ,IA DA , 多寄存器的顺序是从左到右,而IB, DB 顺序反之,从右到左,如 STMIB R6,{R1-R5} ;R5-> [R6+4],R4 ->[R6+8],R3->[R6+12],R2->[R6+16],R1->[R6+20]将R5 -R1的数据依次存入R6+4 为起始

2021-07-25 12:01:09 214

原创 ubuntu 14.04安装交叉编译工具GCC 2.95.3(一)编译环境搭建

文章目录编译环境搭建安装 GCC 3.4下载deb 包安装配置gcc 版本编译环境搭建1、sudo apt-get install ncurses-dev2、sudo apt-get install bison3、sudo apt-get install flex4、sudo apt-get install build-essential安装 GCC 3.4修改gcc版本,默认是(Ubuntu 4.8.4-2ubuntu1~14.04.4)的,这个版本太高了,改为3.4.6的下载deb 包

2021-07-18 18:23:27 521

原创 LINUX 2.4.22 内存管理 之四 页表管理【中】

[上一篇]ch3 上页表管理文章目录3.4 翻译和设置页表条目3.5 分配和释放页表3.6 内核页表3.6.1 bootstrap3.6.2 第二阶段3.4 翻译和设置页表条目下面这组宏用来地址映射(虚拟地址到物理地址)以及单个的页表条目的设置,ptep_get_and_clear用来保护和修改页表条目或物理页名称功能mk_pte()通过 struct page ......

2021-06-16 05:56:03 940

原创 LINUX 动态调试 DYNAMIC DEBUG 使用

打开动态调试配置CONFIG_DYNAMIC_DEBUG=y,CONFIG_DEBUG_FS=y使用可以按需要,模块,文件,行号,格式,选择调试输出同时也支持打印行号,模块名,等打开调试// 提供NFS服务模块所有的信息nullarbor:~ # echo -n ‘module nfsd +p’ > /dynamic_debug/control// 提供函数svc_process()的所有信息nullarbor:~ # echo -n ‘func svc_process +p’ &

2021-06-03 20:28:45 1447

原创 LINUX 2.4.22 内存管理 之三 ARM 架构物理内存初始化(一)

arm 物理内存

2021-05-21 00:34:03 561

原创 menuconfig 如何撤销输入

make menuconfig有时需要修改数值,可以按着Ctrl+<–(ctrl加退格键 即可删除)

2021-04-20 08:00:26 292

原创 shell echo 不换行 输出

$echo -n “123”$echo “456”最终输出123456

2021-04-10 18:44:03 5699

原创 LINUX线程(六)生产者,消费者同步实例

消费者:一,创建并加锁phtread_mutex_t mutex;phtread_mutex_init()phtread_mutex_lockphtread_cond_wait() //等待条件满足,1)阻塞等条件变量2)解锁unlock3)加锁5. 访问共享数据6. 解锁,释放条件变量,释放锁生产者:phtread_mutext_lock生产数据,phtread_mutext_unlockphtread-cond_signal/phtread-cond_broadca

2021-01-09 16:31:24 165

原创 LINUX线程(五)线程同步

线程同步,指一个线程发出同一功能调用时,在没有得到结果之前,该调用不返回。同时其他线程为保证数据一致性,不能调用该功能同步方法锁的使用:建议锁,对公共数据进行保护,所有线程应该在访问公共数据前先拿锁再访问,但锁本身不具备强制性互斥量pthread_mutex_t mutexphtread_mutex_init(&mutex,NULL);phtread_mutex_destroy(&mutex,NULL);pthread_mutex_lock(&mutex)pthre

2021-01-09 15:51:46 170

原创 LINUX 线程 (二)控制原语

函数原型说明进程对应功能接口pthread_t pthread_self(void);返回线程ID,线程ID是进程内部,识别标志(不同进程中,线程ID允许相同)getpidint phtread_create(phtread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void ),void arg);创建新线程。参数1:传出参数,保存新线程ID;参数2:线程属性默认NULL;参数3:线程体,该函数...

2021-01-09 12:52:41 145

原创 LINUX 线程(四)属性设置线程分离

线程属性初始化int pthread_attr_init(phtread_attr_t *attr); 成功:0 ;失败,错误号销毁线程属性int pthread_attr_destroy(phtread_attr_t *attr); 成功:0 ;失败,错误号设置线程属性 分离状态int phtread_attr_setdetachstate(phtread_attr_t *attr,int detachstate);获取线程属性int phtread_attr_getdetachstate(

2021-01-09 12:47:58 331

原创 LINUX 线程(三)循环创键多个子线程

int main(){ int i ,ret; for(i = 0; i<N ;i++){ ret = pthread_create(&tid, NULL,tfn,NULL); if(ret!=0) perror(..); }}

2021-01-09 10:05:09 130

原创 LINUX 线程(一)概念

进程: 有独立的进程地址空间,有独立的pcb ,是分配资源的最小单位线程:有独立的PCB,没有独立的进程地址空间 ,是最小的执行单位ps -Lf 进程id : 查看对应进程下的线程数.LWP : 线程号,CPU 执行的最小单位线程ID 与LWP 不是同一概念,线程ID 用于同一进程中的线程管理线程共享.text .data. .rodata .bss heap 全局变量(除errno)线程独享栈空间(内核栈,用户栈)线程id处理器现场和栈指针errno信号屏蔽字调度

2020-12-28 13:16:52 91 1

转载 LINUX 会话 与守护进程创建

创建会话6点注意事项调用进程不能是进程组组长,该进程变成新会话的首进程该进程成为一个新进程组的组长进程新会话丢弃原有的控制终端,该会话没有控制终端该调用进程是组长进程,则出错返回有些系统需有root 权限建立新会话时,先调用fork,父进程终止,子进程调用setsid守护进程Daemon(精灵)进程,是linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发送的事件,一般采用以d结尾的名字命名。创建步骤fork 子进程,让父进程终止子进程调用se

2020-12-28 12:57:54 167

原创 shell 数组的初始化

静态定义方法一[root@localhost ~]# array=(1 2 3)[root@localhost ~]# echo ${array[*]}1 2 3 方法二[root@localhost ~]# array=([1]=one [2]=two [3]=three)[root@localhost ~]# echo ${array[*]}one two three方法三[root@localhost ~]# array[0]=a[root@localhost ~]# arr

2020-12-24 22:52:16 2922 1

原创 shell 大小写转换

说明^ 把变量中的第一个字符换成大写^^ 把变量中的所有小写字母,全部替换为大写。, 把变量中的第一个字符换成小写,,把变量中的所有大写字母,全部替换为小写实例parameter = ab ${parameter^} ##得到结果Ab ${parameter^^} ##得到结果ABparameter = AB ${parameter,} ##得到结果aB ${parameter,,} ##得到结果ab...

2020-12-24 18:52:47 2113 1

原创 shell 字符串中 插入字符实例

中间插入str="20171125"$ echo ${str:0:4}-${str:4:2}-${str:6}2017-11-25取子串$ var=“get length of me”$ echo ${var:0:3}get

2020-12-24 18:33:05 2965 1

转载 VIM 文件编码识别与乱码处理

在 Vim 中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding 和 termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个 Vim 用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用1.encodingencoding 是 Vim 内部使用的字符编码方式。当我们设置了 encoding 之后,Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的

2020-12-22 22:06:55 227

原创 软件架构师的能力培养

目录软件架构师需要的基础知识和技能计算机体系结构网络体系结构硬件知识中间件知识软件工程知识方法学知识行业知识软件架构师需要的基础知识和技能注重建立宏观视角,从时间和空间维度来看待。计算机体系结构处理器、指令集、多核、存储、操作系统、IO 、并发网络体系结构ISO 七层、网络协议硬件知识服务器、存储、网络设备、中间件知识数据库、应用服务器、消息队列、缓存、HTTP服务器、各种框架软件工程知识软件质量、软件生命周期、软件过程方法学知识架构理论 、架构模式、架构描述 、面向对象、UML

2020-12-10 22:52:25 205 1

原创 makefile 基础

常用函数src = $(wildcard ./*.c )匹配当前工作目录下的所有.c文件,组成列表,赋值给变量srcobj = $(patsubst %.c ,%.o,$(src))将参数3中,包含参数1的部分替换为参数2命令前 加 - 表示指令执行出错,不报错,顺序执行结束make 选项选项说明-n显示要执行的命令,但并未真正执行自动化变量$@:在规则命令中,表示规则中的目标$^:在规则命令中,表示规则中所有依赖条件$<:在规则命令中,表示

2020-12-05 13:03:06 72

原创 gdb调试常用命令

编译:加上 -g 选项 编译可执行文件 得到调试表使用: gdb 可执行文件名gdb 调试命令说明list / l列出源码,方便根据源码行号设置断点break/bb n 在第 n 行 设置断点 b if expr 设置条件断点info b查看断点run / r [arg1] [arg2]运行程序 ,查找段错误出现位置 ;后面也可以跟main 参数,运行时传参next/n下一条指令,越过函数step/s下条指令,进入函数print

2020-12-05 12:05:33 204

原创 shell 快捷键

快键键含义ctrl+a回到行首ctrl+e跳到行尾ctrl+u清空命令ctrl+p上条指令ctrl+n下条指令ctrl+b回退ctrl+f前进ctrl+ddelete 光标后面的

2020-11-28 09:44:47 254

转载 Busybox下tftp命令使用详解

Busybox下的tftp命令可以用来进行单文件传输。使用的时候,是把电脑作为服务器Server,Busybox作为客户端Client,使用tftp命令可以实现从Server下载单个文件到Client,或者从Client上***个文件到Server。首先来了解一下tftp命令参数,在Busybox下输入tftp –help,得到tftp使用的详细参数,如下图参数说明:-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名。-r 是remote的缩写,

2020-10-22 16:50:35 1816

原创 记录锁的使用

记录锁是对于不同进程访问文件区域的一种同步工具,防止多个进程修改同一文件区在同一个进程多次上锁,(这不是记录锁的正确用法,且没有意义)也不会被阻塞

2020-10-21 00:03:47 161

转载 第三版apue编译

第三版apue编译:首先在 http://www.apuebook.com/ 下载源码解压:tar zxvf src.3e.tar.gz看完Readme可知,直接执行make即可执行make报错:making threadsmake[1]: 正在进入目录 `/work/apue/apue.3e/threads'gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE badexit2.c -o badexit2 -L../lib

2020-09-26 11:05:27 131

原创 vmware ubuntukylin 虚拟机启动黑屏 解决

之前一直重置 网络socket 就可以解决黑屏,但 后来这个办法不管用了, 按shift+alt+f2 /f3 也无法进入终端, 自己尝试修改虚拟机设置 --》选项 ==》高级 ==》固件类型 由BIOS 修改为 uefi,后,问题解决...

2020-09-20 12:20:54 1923

转载 svn导出某两个版本之间变化的文件

svn导出某两个版本之间变化的文件场景: 代码上线时, 需要将有变动的文件提交到服务器上, 这时候我们只希望取出变动的文件(新增或修改的, 删除的单独处理)实现:TortoiseSVN客户端, 用svn show log功能列出所有Revisons记录, 任选两个版本右键选取Compare revisons,会列出两个版本间差异项目,用鼠标全选右键选择"Export selection to …",这样就能导出差异文件.注: 这样操作导出的文件同时带有文件夹, 非常方便.另, 用linux的s

2020-09-19 10:52:31 1511

原创 office project 2013 此域不支持你输入的日期 问题解决

文件-选项-常规-日期格式,将2020年2月13日改为2020/02/13格式即可!

2020-09-03 10:13:01 2414

原创 搜狗输入法找不到候选框问题解决

右键点击搜狗输入法的状态栏, 是否有输入法修复,如果没有,就先换个其他皮肤,然后点击输入法修复,ok

2020-08-20 15:32:21 2285

原创 linux信号之作业控制

文章目录概述概述SIGTTIN 当一个后台进程组进程试图读其控制终端时,终端驱动程序产生此信号。(见9 . 8节中对此问题的讨论。)在下列例外情形下不产生此信号,此时读操作返回出错, e r r n o设置为E I O:( a )读进程忽略或阻塞此信号,或( b )读进程所属的进程组是孤儿进程组。...

2020-08-16 09:11:11 111

原创 linux信号【5】sigsetjmp和siglongjmp函数

文章目录简述简述这两个函数与 s e t j m p和l o n g j m p函数非常相似,都是用于程序的非局部转移。而在信号处理程序中,对应使用的就是sigsetjmp和siglongjmp函数。在信号处理程序中,有时需要返回到序的主循环中,而不是从该处理程序返回。为什么不直接使用 s e t j m p和l o n g j m p呢? 因为用l o n g j m p时有一个问题。当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中。这阻止了后来产生的这种信号中断此信

2020-08-11 19:46:54 469

原创 linux 信号【3】信号集和信号集函数

文章目录信号集信号集初始化信号集的变更信号集测试sigprocmask函数信号集数据类型s i g s e t _ t以包含一个信号集,表示多个信号的集合#include <signal.h>信号集初始化int sigemptyset(sigset_t * s e t) ;初始化由s e t指向的信号集,使排除其中所有信号int sigfillset(sigset_t * s e t) ;函数 s i g f i l l s e t初始化由s e t指向的信号集,使其包括所有信号

2020-08-11 19:01:40 169

空空如也

空空如也

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

TA关注的人

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