LINUX
sean-zhao
爱屋及乌
展开
-
分页内存管理
以32bit cpu 32bit system 为例只要记住一点无论几级页表,对于一个表项来说,占据4个字节,存储着的是下一级页表或者物理页对应的基地址。基地址 这三个字非常关键。0级页表存的是对应1级的基地址1对应22对应3一次类推然后,本级页表,简单理解就是比如定义一个unsigned int map_1[4096] 数组,在虚拟地址里取对应的页表项目偏移值,比如是个1024,。实际就是取的此数组map_1[1024]的值。map_1[1024]的值存的是什么呢,存的就是下一级页表存.原创 2022-04-26 20:24:01 · 170 阅读 · 0 评论 -
vscode printf不明确
编写代码的过程中,vscode报错: printf不明确一开始并没有怀疑自己的代码编写问题。按照网上的方式解决,无果1、将using namespace std;2、删除后保存cpp文件,3、再加上using namespace std;4、保存cpp文件。可能的原因之一代码书写错误比如括号不成对,导致vscode解析错误braces not paired靠csdn提示篇幅过短文章质量提示文章质量不佳,原因可能为篇幅过短、包含营销性质的广告和二维码或外链过多,建议设置仅我转载 2022-03-28 15:12:07 · 2789 阅读 · 0 评论 -
Makfile order-only prerequisites 应用场景,解决并行编译遇到的object存放的自定子目录未被提前创建导致编译失败的问题,No target rule
normal prerequisites和order-only prerequisites的区别https://blog.csdn.net/wwwlyj123321/article/details/107634687场景参考在工程中使用makefile将所有的object文件,存放一个集中的目录中,而不是放置在与source同目录的情况下。这样带来的好处是,源码目录中不存在中间object文件,方便代码管理。由于不同的子目录可能存在同名的源文件,因此不建议将所有的object放在同级的目录下面,会导原创 2022-03-18 17:04:46 · 348 阅读 · 0 评论 -
bus error排查步骤
1.对齐一些cpu在操作类如int *指针类型的时候,需要进行4字节对齐。因此,在某些情况下需要保证这一点。容易出问题的点:是否有pack(1)的结构体或者int等指针,作为作为接口形参?2. 空指针3. 内存越界...原创 2022-03-01 16:03:38 · 874 阅读 · 0 评论 -
wsl2 /bin/sed: cannot rename etc/sedPisP47: Permission denied
解决方式:修改sed的选项解释:sed -i -e COMMAND FILE sed: cannot rename /tmp/sed87A28d: Permission denied*This occurs most often when there are multiple processes running sed -i on files located in the same directory.*The file that sed is complaining about can be原创 2022-02-11 17:08:55 · 1612 阅读 · 0 评论 -
wsl2 libffi buildroot编译失败config.log: No such file or directory
wsl2 libffi buildroot编译失败config.log: No such file or directory 在github已有类似问题的讨论我只讲结论解决方式在github已有类似问题的讨论各位可以去看看我只讲结论可能和windows10 的wsl2有关系 ,也可能libffi configure书写有关系(只是假设的不完善,不代表本质的缺陷)解决方式非buildroot下,将configure 2852行的的mv操作改成cp操作( 临时解决buildroot下,修改m原创 2022-02-11 15:54:24 · 619 阅读 · 0 评论 -
undefined reference to `_gfortran_concat_string‘
使用gcc/g++编译链接,fortran语言编译的库版本时,提示的错误只需要在Makefile添加fortran的链接库即可,形如下LDLIBS += -lgfortran原创 2021-01-15 17:55:50 · 2818 阅读 · 3 评论 -
ubuntu 14.04 systemd开机启动方式安装
默认系统没有systemctl等命令,手动安装 即可apt-get install systemd当然,也可以修改/etc/rc等文件,利用命令update-rc.d的配置方式原创 2021-01-06 17:52:26 · 1903 阅读 · 0 评论 -
simple code for c++ condition_variable and mutex
#include <stdio.h>#include <string.h>#include <sys/time.h>#include <unistd.h>#include <math.h>#include <iostream>#include <condition_variable>#include <chrono>#include <mutex>std::mutex dat.原创 2020-09-15 15:18:59 · 117 阅读 · 0 评论 -
systemd 方式 配置 sshd server ,sshd.service or sshd.socket
转载地址https://zzz.buzz/zh/2015/12/26/configure-port-of-sshd-in-systemd-environment/个人觉得原作写的相当清晰,不与他人一样写的模糊配置 sshd 大家都很熟悉,主要就是围绕 /etc/ssh/sshd_config 进行配置。而配置 sshd 的端口则是配置 sshd_config 中的 Port。不过在 syst...转载 2020-04-23 14:33:57 · 11172 阅读 · 2 评论 -
kernel 3.18,mcp2515 implemented in AT91SAM9G25
mcp2515的嵌入式linux的用例,网上的资料基本都是应用到比较老的内核。步骤基本无异。本文的内容,是基于dts配置的设备支持;需要做的工作主要有两部分;dts的构建和代码的少量修改。1.硬件连接: 外设------iso1050-----mcp2515----cpucpu与mcp2515之间采用spi通信方式,利用的cpu的spi0接口,片上的spi0。2.dts的编写原创 2016-05-12 09:55:43 · 2043 阅读 · 0 评论 -
linux kernel arm 的dma zone
void __init setup_dma_zone(const struct machine_desc *mdesc){#ifdef CONFIG_ZONE_DMA if (mdesc->dma_zone_size) { arm_dma_zone_size = mdesc->dma_zone_size; arm_dma_limit = PHYS_OFFSET + arm_dma_z原创 2016-03-24 17:04:20 · 1260 阅读 · 0 评论 -
系统管理指南:网络服务 -PPP
//http://docs.oracle.com/cd/E24847_01/html/E22299/pppsvrconfig.reference-65.html下表列出了 PPP 配置文件和命令。表 22-1 PPP 配置文件和命令汇总文件或命令定义参考/etc/ppp/options转载 2016-01-27 16:04:43 · 996 阅读 · 0 评论 -
linux 地址空间
//http://blog.csdn.net/michaelcao1980/article/details/43309239有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?先回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and Linkabl转载 2016-04-22 15:58:45 · 373 阅读 · 0 评论 -
DMA Engine API Guide
DMA Engine API Guide====================Vinod Koul NOTE: For DMA Engine usage in async_tx please see:Documentation/crypto/async-tx-api.txtBelow is a guide to device driver wr翻译 2015-12-09 13:46:05 · 2410 阅读 · 0 评论 -
Kconfig、Kbuild Makefile
一、 Kbuild语法 基本构成包括五种,menu/endmenu,menuconfig,config,choice/endchoice,source。下面就对每种详细介绍:1、menu/endmenumenu的作用,可以理解成一个目录,menu可以把其中一部分配置项包含到一个menu中,这样有利于配置的分类显示。menu与endmenu是一组指令,必须同时出转载 2016-01-26 16:03:18 · 1167 阅读 · 0 评论 -
kbuild-DEFINE(sym, val)
//原文http://www.cnblogs.com/wendellyi/p/3993404.html内核核文件 arch/x86/kernel/syscall_64.c 文件中包含了一个头文件 arch/x86/include/asm/asm-offset.h ,这个文件在内核构建之初是不存在的,是在构建过程中生成的。下面我们来看看它是如何生成的。1. include/linux/kbuild.转载 2015-11-24 09:30:28 · 1706 阅读 · 0 评论 -
dma传输原理,及其linux总线驱动之DMA传输,
转载了他人的一篇文章,已表明转载的地址,如有侵权,请告知。dma传输原理1.DMA请求 CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。 2.DMA响应 DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应原创 2015-12-09 11:20:20 · 6473 阅读 · 0 评论 -
Arm汇编 位置无关代码 adr 指令
//原文地址: http://itlab.idcquan.com/embed/arm/871114.htmlldr r0, _start adr r0, _start ldr r0, =_start nop mov pc, lr _start:nop 编译的时候设置 RO 为 0x0c008000 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓转载 2015-11-23 15:22:50 · 547 阅读 · 0 评论 -
ioctl 变成了 unlocked_ioctl
kernel 2.6.35 及之前的版本中struct file_operations 一共有3个ioctl :ioctl,unlocked_ioctl和compat_ioctl现在只有unlocked_ioctl和compat_ioctl 了在kernel 2.6.36 中已经完全删除了struct file_operations 中的ioctl 函数指针,取而代之的转载 2015-09-22 16:07:47 · 598 阅读 · 0 评论 -
ARM GCC浮点相关总结
http://blog.csdn.net/yuanyou/article/details/6410326名字解释:ABI,application binary interface (ABI),应用程序二进制接口。编译版本问题: GCC 4.0 为分界线 4.0版本以下,由于采用OABI接口,其对浮点的支持不太好 4.0版本以上,采用了新的EABI接口,其对软浮转载 2015-09-21 10:00:29 · 427 阅读 · 0 评论 -
undefined reference to `raise'
问题:u-boot 2015.01gcc-4.2.0/usr/local/arm-2007q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.0/libgcc.a(_dvmd_lnx.o): In function `__div0':/scratch/paul/arm/src/gcc-4.2/gcc/config/arm/lib1funcs.as原创 2015-09-21 11:50:36 · 1424 阅读 · 0 评论 -
u-boot 2015.01 :has EABI version 0, but target u-boot has EABI version 4
cpu: arm-926jes平台:at91sam9g25ek编译最新的uboot 2015.01,用到的toolchain,是arm2007q1,gcc的版本是4.20arm-none-linux-gnueabi-ld: ERROR: Source object arch/arm/cpu/built-in.o has EABI version 0, but target u-boot原创 2015-09-18 15:42:08 · 2736 阅读 · 1 评论 -
Stack backtrace
Stack backtrace 的实现Stack backtrace栈回溯是指程序运行时打印出当前的调用栈。在程序调试、 运行异常时栈回溯显得非常有用。那栈回溯是如何实现的呢?栈回溯的实现依赖编译器的特性,与特定的平台相关。以linux内核实现arm栈回溯为例, 通过向gcc传递选项-mapcs或-funwind-tables,可选择APCS或unwind的任一方 式实现栈回溯转载 2015-09-18 16:04:33 · 2288 阅读 · 0 评论 -
Linux atime ctime mtime的不同
原文:http://blog.chinaunix.net/uid-24500107-id-2602881.htmlLinux系统文件有三个主要的时间属性,分别是ctime(change time, 而不是create time), atime(access time), mtime(modify time)。后来为了解决atime的性能问题,还引入了一个relatime的属性,下面一一解释转载 2015-09-11 14:27:41 · 583 阅读 · 0 评论 -
嵌入式linux编译CPP代码环境编译配置
嵌入式linux编译CPP代码环境编译配置本文只是记述了搭建交叉编译环境的一个很小的方面:平台powerpc ,mpc5200编译器eldk2008, ppc_6xx交叉编译工具链(以个人为准)/usr/local/powerpc环境配置1.修改 /etc/profile 文件(当然也可以修改 /etc/environment) 添加交叉工具链的地址到PATH环境变量中: 类似如下,文件最末尾添原创 2016-06-14 17:15:42 · 748 阅读 · 0 评论 -
ARM嵌入式开发中的GCC内联汇编(ARM GCC Inline Assembler Cookbook)
ARM嵌入式开发中的GCC内联汇编简介原文:http://blog.csdn.net/ce123/article/details/8209702/在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择。但如果完全通过汇编代码实现,又会过于复杂、难以调试。因此,C语言内嵌汇编的方式倒是一个不错的选择。然而,使用内联汇编转载 2016-06-15 09:15:30 · 2721 阅读 · 0 评论 -
从clapack-cmake看动态库和静态库的编译
1. 下载最新的clapack-cmake包2. 解压 tar –zxf 压缩包3. 下载cmake linux i386版本,依个人而异(本人虚拟机Ubuntu 14 32bit)4. 目标平台powerpc 交叉工具链eldk,ppc_6xx5. 执行cmake-gui配置(关键步骤)第一步:第二步:点击conf原创 2016-06-15 18:06:52 · 2278 阅读 · 0 评论 -
printf fputs导致的进程阻塞--------------尤其ssh远程登录,wifi无线或者其他应用场景
结论//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////针对一般性的ssh登录,网络环境不太好的情况。会发生此类的程序,导致printf的线程阻塞/...原创 2019-06-10 19:24:26 · 859 阅读 · 0 评论 -
ptxdist error: no usable python found at python3
接上篇安装环境:ptxdist 2018.02 && oselas.toolchain 2018.2出现上面的错误。应该是python-dev没有安装安装python3.6时,未安装devworkaround: apt-get install python3.6-dev...原创 2019-03-27 11:55:02 · 951 阅读 · 0 评论 -
"ptxdist" *** These critical programs are missing or too old: compiler
接上篇安装环境:ptxdist 2018.02 && oselas.toolchain 2018.2如果再ubuntu 14.04的版本进行交叉工具链的编译,可能会有问题,问题出在软件版本的要求没有到达要求,参见INSTALL文件中的Recommended Tools for Compilation章节,以glibc-headers文件夹下的INSTALL...原创 2019-03-27 11:05:46 · 10803 阅读 · 1 评论 -
利用ptxdist构建gcc5.4交叉工具链
本文,写的比较简略:因构建工具链的耗时,取决于电脑的配置,以及网速。本文采用的环境是在vultr.com搭建一个8G RAM + 4cpu的vps进行编译,因为是按小时收费,所以耗费不了多少钱。------------------------------------------------分割线------------------------------------------------...原创 2019-03-26 14:02:03 · 426 阅读 · 0 评论 -
VFS: Mounted root (ext4 filesystem) readonly on device
从库存拿出一个刷好系统的核心板(imx6q)方案,系统启动后根本不能创建文件目录等。从网上搜索的结果,列出了几种可能性。1.文件系统的mount失败,内核自动以readonly mode 挂载2.内核配置不正确,不支持large file support3.内核配置不正确,不支持ext4。。。排查方法:针对上述列出的几种可能性,可排查的步骤有。1.可进行mount -o remount rw / ...原创 2018-07-03 16:30:45 · 4938 阅读 · 0 评论 -
UDP通信recvfrom返回invalid argument
//原文地址:http://blog.chinaunix.net/uid-26497520-id-3891017.html这个问题很可能出在addrlen参数上,以下是man文档的解释If src_addr is not NULL, and the underlying protocol provides thesource address, this source a转载 2016-12-09 19:54:53 · 2759 阅读 · 0 评论 -
QT5:his application failed to start because it could not find or load the Qt platform plugin "xcb"
问题描述: 当将编译好的QT程序,拷贝到另外一台没有装过QT的设备进行运行时。一般来说,首先会通过ldd命令查找目标程序所依赖的链接库文件,将其拷贝到目标设备上。但是实际情况是,所需要的库一样不少,但是程序就是运行不了。提示这样的错误his application failed to start because it could not find or load the Qt pl原创 2016-12-08 22:27:49 · 5601 阅读 · 5 评论 -
Decode segfault errors in dmesg
You are writing a C program. Time has come to run it. You are pretty confident that it will run at once.$ ./fooSegmentation faultThe machine hardly reminds you that you were over-confident. Bu转载 2016-12-12 21:11:13 · 747 阅读 · 0 评论 -
linux I/O possible
linux I/O possible在linux环境下编写应用程序的同学,肯定会遇到过程序编译没问题,但是运行时却出现奇奇怪怪的问题的现象。 比如,这次要说到的这个现象,程序运行到读取外设数据的时候,弹出 “I/O possible”,然后程序就退出的现象:首先大概猜一下,提示的是什么意思?I O 字面上,基本就能确定,是输入与输出的意思;possible?可能?什么可能呢?输入输出可能? 显原创 2016-08-12 15:14:13 · 3390 阅读 · 0 评论 -
Linux进程调度原理
原文:http://www.cnblogs.com/zhaoyl/archive/2012/09/04/2671156.html引荐原文,本文介绍非常不错,虽然文字描述居多,但是,本文对源码的理解非常有帮助Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效; 2.加强交互性能转载 2015-03-02 09:55:10 · 767 阅读 · 0 评论 -
修改ubuntu14.10的镜像源
1. 修改文件gedit /etc/apt/source.list2. 镜像源列表2.1 清华源(优先推荐)deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universedeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-b原创 2016-08-18 15:52:00 · 7156 阅读 · 0 评论 -
linux目录随意切换
一、原理就是建立该目录的软链接二、那么带来两个问题,一个放在哪?一个是怎么跳?三、so?放在哪1).指定一个位置 2).放在home目录下吧怎么跳1).写几个shell命令吧 2).命名:jump mark marks unmark四、implementationexport MARKPATH=$HOME/.marksfunction jump { cd -P "$MARKPATH/原创 2016-06-16 13:12:01 · 856 阅读 · 0 评论