- 博客(15)
- 资源 (4)
- 收藏
- 关注
原创 linux动态库的重定位机制
linux的动态库可以被共享,这个符号会怎么被链接进去呢,让我们来看一下过程。下面以常见的printf来举例。
2024-04-12 14:07:55
1119
1
原创 Linux内核clone
例如系统调用sys_clone –> kernel_clone创建用户线程,或者kernel_thread -> kernel_clone创建内核线程,当然kernel线程创建是通过唤醒kthreadd这个内核线程体完成工作的。以这种方式工作,可能是出于并发的考虑,对于内核而言如果在系统调用等软件中断中执行耗时工作,则不太现实,因此就将其剥离为一个可正常调度的线程,不仅减少中断占用提高系统响应,在SMP多核系统也可以充分提高并发能力。如果是vfork方式创建,则父线程在这里就等待主休眠等待子线程退出了。
2024-01-23 16:11:41
551
1
原创 vscode debug 嵌入式arm设备
首先,vscode本身是支持debug标准GNU-Linux相关架构处理器的,只是说目前调试手段千奇百怪,而且标准不统一,所以很多开发者都是采用最原始的printf方式debug,这样效率低下,这个方法可以说真是太妙。在开始这个之前,有必要说一下设备本身需要的一些东西:1. 必须要支持带符号的应用程序,这需要编译时-g选项2. 嵌入式设备必须能通过多种途径执行gdbserver,这意味着必须有足够的静态存储器空间存放gdbserver或者能够支持远程挂载。
2023-12-08 10:59:13
1395
原创 vscode server搭建及dockerfile版本
vscode支持Client-Server组合,文章主要讲解server端部署。vscode插件市场地址:https://marketplace.visualstudio.com/vscode客户端地址:https://code.visualstudio.com/updates。
2023-11-09 09:37:09
1127
1
原创 linux5.x编译docker
然后执行配置类相关建立预处理编译命令,比如:make menuconfig 或 make defconfig。如果是x86程序,可以去内核根目录下拷贝配置文件,其他的则自行设置交叉类.config文件。aptitude是一个改进的apt依赖组件,如果存在版本降级依赖,就需要通过他来处理。u-boot-tools用于arm相关编译uboot引导加载。如果编译时依赖工具链,使用export增加可执行文件搜索路径。这样就把路径加入到PATH中,可以在编译时找到工具链地址了。newpath={这里输入工具链路径}
2023-11-08 19:54:34
200
1
原创 ARM指令集-深入原子性
5. strex回写count,由于是本处独享的cache,且只有cache是占用时才能成功写入,它是否成功会写入r2,当r2 ≠ 0 时,流程会跳转至+6行。1. CPU的缓存抢占,如果在别的地方已经修改过缓存,则这个缓存是time-out的(也叫dirty状态),那么写入这个缓存是会失败的。3. ldrex r0, [r3],相比普通的寄存器取数,这里会进行cache独占,其他任务重入时对cache的再次独占就是无效的。6. 只有当cache独占写入成功,r2才会置0,跳出循环。
2023-10-26 21:25:48
255
1
原创 docker镜像简易教程
在安装完成所需内容后,可以将容器的修改固化为docker layer,这层修改后续就不能动了,建议完成后再提交,不然再次提交还会产生layer。进入docker,指定宿主共享资源路径/home/work -> /share,在容器内可以通过share文件夹访问宿主资源。命令包含作者信息、注解、容器id、镜像名与标签,标签相当于版本号(不写就是默认latest)由于image的镜像不能直接使用,我们把宿主机的配置拷进去。进入docker后,更新apt源。
2023-10-16 10:40:34
82
1
原创 ubuntu磁盘管理与反向清理
docker安装要自己去找,安装好找一个新的磁盘挂载到系统上,然后关闭docker,移动docker库,最后用软件链接起来,这样docker就可以不随系统了,减少崩溃影响。进入/var/log/apt,里面有多个history.log*的文件,里面是apt安装历史记录集合。另外ubuntu通过apt安装的库,参考下面的apt部分,不是pip3安装的包不通过pip3清理。切换到xxx目录,统计当前目录下容量,如果有挂载点也被计入,-d 1是层级深度为一级。如果要卸载pip3,通过apt反向卸载。
2023-10-16 10:17:30
132
1
原创 ubuntu重装踩坑汇总
因为删除了装机时的账户1000,当本地passwd文件没有此记录时,就会显示裸id号,可以通过重新拷贝实现新创建者命名。新用户访问1000创建者目录,会导致权限异常。使用系统自带的命令seahorse打开钥匙环,然后删除默认的钥匙环,然后重新创建一个密码为空的钥匙环,重启后就不会提示了。更新/etc/fstab后,主动去挂载目录执行下chmod 777 <path>,然后reboot完成就能看到权限了。如果有中文,看firefox是否装有语言包,一并删除。编辑/etc/fstab文件设置开机挂载。
2023-09-25 16:07:11
217
1
原创 Linux虚拟地址到物理地址
pte_offset_map(实际为pte_offset_kernel),用于从pmd(pgd)继续索引二级页表,当对pmd变量进行指针操作时,需要注意获取的内存值是二级页表的物理地址,因此要启用如下的宏pmd_page_vaddr将地址转换回虚拟地址后,才能正确访问。内核页表有四层,包括pgd->pud->pmd->ptep->pte,实际上pgd指向一级页表,pmd为二级也表,中间的pud实际透传无意义的。2. 页表项,指页表内一个项,包含两个要素:页表项所在地址和页表项保存的下一级页面地址。
2023-09-13 17:30:54
458
1
原创 OPENCV(1)_平台搭建
OPENCV是计算机视觉(Computer Vision)的一个重要库,目前以C++为核心编程语言。本文主要讲解VS2013+OPENCV 2.4.13的平台搭建过程,经过验证VS2012也能正常使用。 配置前尽量使计算机联网,有可能需要下载VS相关的组件,例如window SDK 、 windows C++ runtime 等。VS2012/VS2013在网上有下载,尽量使用镜像+key,部分安
2017-01-26 10:53:01
543
原创 用Python开车的老司机
简介Python可以进行网络爬虫的故事已经不是新鲜事了,但是用爬虫开车抓图的老司机可数量不多。这次要实现的是Python的”老司机功能”,利用了多个网络相关的模块:re正则表达式模块,用于解析html内的标签;os操作系统模块,用于管理文件;urllib网页模块,用于下载和转译html内容;urlparse网址解析模块,用于提取域名等信息。正片废话不多说,驾照在此:#coding=utf-8imp
2017-01-22 01:21:03
1970
原创 Python-Windows定时关机与虚拟WIFI
简介Python是目前较为流行的胶水语言,一般用于网络编程、系统应用、科研计算等全方位领域,是云计算开源框架OpenStack的主要开发语言。Python的功能里有一个os模块来衔接windows的命令行工具,可以实现过去在DOS环境下要执行的各种功能。这次的范例是实现一键执行定时关机以及虚拟Wifi热点架设任务,以便未来不需要再敲命令直接按习惯去执行需要的功能。定时关机原理首先看一下Windows
2017-01-18 16:43:04
715
TI 3D打印设计
2015-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人