![](https://img-blog.csdnimg.cn/20201011085345376.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
S31: linux
文章平均质量分 64
wait 进程fork 调度
静思心远
嵌入式&&人工智能
展开
-
Ubuntu1804:11: Resource temporarily unavailable
lsof转载 2023-08-19 10:07:16 · 396 阅读 · 0 评论 -
系统设计的核心思想
系统设计核心思想原创 2023-01-15 20:31:22 · 1405 阅读 · 0 评论 -
ldconfig
ldconfig原创 2022-11-20 19:10:41 · 1015 阅读 · 0 评论 -
patch kernel
patch原创 2022-10-14 15:17:28 · 533 阅读 · 0 评论 -
三种嵌入式开发程序架构
三种必须掌握的嵌入式开发程序架构前言reference前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相信在嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序架构主要分为三种,本篇文章将对这三种程序架构做出详解。软件架构存在的意义可以说一个好的程序架构,是一个有经验的工程师和一个初学者的分水岭。软件架构转载 2022-03-14 09:00:19 · 3704 阅读 · 1 评论 -
gdb debug
gdb debuggdb debuggdb debug1.gdbgdb ./hellworld rbt 查看断点2.ulimit -c unlimited如果有段错误生成 coregdb ./hellworld corebt3.echo "/tmp/core-%e-%p-%t" > /proc/sys/kernel/core_patternulimit -c unlimited如果有段错误生成 coregdb ./hellworld corebt...原创 2021-11-15 19:30:10 · 429 阅读 · 0 评论 -
Linux 查看本机串口方法
Linux 查看本机串口方法查看Linux本机串口:1、查看串口是否可用2、查看串口名称使用3、查看串口驱动4、查看串口设备5、查一下板子上的串口有没有设备from查看Linux本机串口:1、查看串口是否可用可以对串口发送数据比如对com1口,echo /dev/ttyS02、查看串口名称使用ls -l /dev/ttyS*一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;3、查看转载 2021-10-24 11:01:55 · 10790 阅读 · 0 评论 -
运行top,出现TERM environment variable not set.是什么意思?
toptop语法top使用top命令报错的原因是:在Linux下使用top命令需要指定终端类型,也就是一个“TERM” 的环境变量。可执行如下命令:topTERM environment variable not set.echo $TERMdumbexport TERM=dumb然后再使用top命令时就可以正常查看了。top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。语法top(转载 2021-10-24 10:56:03 · 8336 阅读 · 0 评论 -
file_operations_v2.0
file_operations 模仿写程序file_operations 模仿写程序file_operations 模仿写程序#include <stdio.h>#include <stdlib.h>#include <string.h>/* handy sizes */#define SIZE_1 (1 << 0) //1#define SIZE_2原创 2021-10-23 19:59:03 · 97 阅读 · 0 评论 -
linux内核添加定时器
linux内核添加定时器linux内核添加定时器linux内核添加定时器#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/sched.h>//jiffies在此头文件中定义#include <linux/init.h>#include <linux/timer.h>struct timer_l原创 2021-08-31 07:41:36 · 341 阅读 · 0 评论 -
Linux动态链接库的使用
Linux动态链接库的使用Linux动态链接库的使用1、前言2、动态链接库生产3 、获取动态链接库的函数4、参考网址Linux动态链接库的使用1、前言在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找、排序。为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库。通过动态链接库可以实现多个模块之间共享公共的函数。之前看《程序员的自我修养》中讲到程序的链接和装入过程,这些玩意都是底层的,对于理解程序的编译过程有好处。http://www.ibm.com/原创 2021-08-19 18:24:00 · 444 阅读 · 0 评论 -
LinuxOS内核架构图
总结:Linux内核对下驱动所有硬件设备;中间提供调度数据交互;对上它通过系统调用,向LibraryRoutine(例如C库)或者其它应用程序提供接口(文件接口居多)。其核心功能就是:管理硬件设备,供应用程序使用。而现代计算机(无论是PC还是嵌入式系统)的标准组成,就是CPU、Memory(内存和外存)、输入输出设备、网络设备和其它的外围设备。...转载 2021-04-13 23:12:13 · 254 阅读 · 0 评论 -
操作系统的五大功能
操作系统介绍1.操作系统的五大功能2. linux阵营和windows阵营1.操作系统的五大功能1.处理器管理处理器是完成运算和控制的设备。在多道程序运行时,每个程序都需要一个处理器,而一般计算机中只有一个处理器。操作系统的一个功能就是安排好处理器的使用权,也就是说,在每个时刻处理器分配给哪个程序使用是操作系统决定的。2.存储管理计算机的内存中有成千上万个存储单元,都存放着程序和数据。何处存放哪个程序,何处存放哪个数据.都是由操作系统来统一安排与管理的。这是操作系统的存储功能。3.设备管理计算原创 2021-02-02 17:08:15 · 19418 阅读 · 0 评论 -
JZ2440采用NFS服务挂载根文件系统
NFS服务挂载根文件系统一、手动挂载二、自动挂载一、手动挂载1.首先配置服务器(1)、编辑配置文件,修改exports文件sudo vi /etc/exports/work/nfs_root/first_fs *(rw,nohide,insecure,no_subtree_check,async,no_root_squas h)(2)、重启NFS服务sudo /etc/init.d/nfs-kernel-server restart(3)、本机测试 sudo mount转载 2020-12-20 10:01:23 · 717 阅读 · 1 评论 -
gdb调试coredump(使用篇)
看到一个非常好的介绍coredump的文章,做个记录,参考链接:https://blog.csdn.net/sunxiaopengsun/article/details/72974548什么是coredumpCoredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。 该文件也是二进制文件,可以使用gdb、elfdump、objdump或...转载 2020-09-23 17:34:06 · 352 阅读 · 0 评论 -
linux移植过程概述
本文简述一下对linux移植过程的全局认识并非step by step的教程想让linux在一个板子上跑起来需要做什么?需要做三件事1.移植uboot适配板子 2.调试kernel中各类驱动 3.构建根文件系统。为什么需要uboot?内核虽然强大,但是不能开机自动完全从零开始启动的,内核启动还是需要别人帮忙的。uboot为kernel启动创造各种条件,帮助内核实现重定位(从Flash到DDR ),给内核提供启动参数等等。uboot移植需要做些什么?a,修改相关硬件初始化代码,如时钟、MMU、转载 2020-09-15 21:37:57 · 683 阅读 · 0 评论 -
多处理器SMP体系结构
结构原创 2020-09-09 22:01:43 · 603 阅读 · 0 评论 -
linux内核中的min(x,y)和max(x,y)宏定义
/linux/include/linux/kernel.h中有min(x, y)和max(x, y)的定义如下 #define min(x, y) ({ typeof(x) _min1 = x; typeof(y) _min2 = y; (void) (&_min1 == &_min2); _min1 < _min2 ? _min1 : _min2; }) #define max(x, y) ({原创 2020-09-06 23:05:33 · 1443 阅读 · 0 评论 -
container of()函数简介
在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大佬们厉害的地方,随便两行代码就让我们怀疑人生,凡是都需要一个过程,慢慢来吧其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址。 type的起始地址 = pt转载 2020-09-01 22:17:45 · 588 阅读 · 0 评论 -
Linux内核学习之C语言中用结构体成员找结构体
前言啊,看不懂题目什么意思吗?来,老夫给你分解一下Linux内核学习 之 C语言中 以结构体成员找结构体。重点就是加粗的部分。啊,什么,还是不太理解。说的再详细点:给你一个结构体成员的地址,让你找这个结构体的首地址。’举个栗子:typedef struct node{ double x; int d; char c;}Node;给你一个Node型的结构体变量中的一个成员d的地址,让你找这个结构体变量的地址。啊,还是不懂。。“给我滚。。。。。。”废话说的有些转载 2020-09-01 22:07:57 · 794 阅读 · 0 评论 -
ARM内存屏障 (memory barrier)
barrier.h#define isb() asm volatile("isb" : : : "memory")#define dmb(opt) asm volatile("dmb " #opt : : : "memory")#define dsb(opt) asm volatile("dsb " #opt : : : "memory")#define csdb() asm volatile("hint #20" : : : "memory...转载 2020-08-21 16:18:02 · 1353 阅读 · 2 评论 -
file_operations结构体介绍
内核中file_operations源码 linux-2.6.38/include/linux/fs.h/* * NOTE: * all file operations except setlease can be called without * the big kernel lock held in all filesystems. */struct file_operations { struct module *owner; loff_t (*llseek) (struct fi原创 2020-08-20 14:07:50 · 2575 阅读 · 0 评论 -
unable to handle kernel paging request at virtual address fffffff3
内核崩溃了,不知道为什么?原创 2020-07-13 19:17:31 · 1171 阅读 · 0 评论 -
linux进程间通信
Linux系统调用——进程间通信进程间通信概述进程间通信(InterProcess Communication,IPC)是指在不同进程之间传播或交换信息。Linux的进程间通信方法有管道(Pipe)和有名管道(FIFO)、信号(Signal)、消息队列(Mess...转载 2020-05-30 21:08:17 · 303 阅读 · 0 评论 -
Ubuntu16.04 和 Win7 双系统启动顺序更改
第一次装 win10和ubuntu双系统的时候,采用的软件 EasyBCD 来设置的的开机启动项,比较简单。可以参考:http://www.jianshu.com/p/2eebd6ad284d但是这次装双系统的时候, 我把 ubuntu安装的系统引导方式弄成了 UEFI模式了, 导致使用 EasyBCD的时候, linux设置部分为灰色, 无法设置。故有了下面的故事:...转载 2019-02-19 16:53:51 · 501 阅读 · 0 评论 -
Linux命令小结
阅读目录1Linux下查看文件和文件夹大小 2 删除系统日志等 3 实践场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除多余的日志问题解决!回到顶部1Linux下查看文件和文件夹大小当磁盘大小超过标准时会有报警提示,这时如...转载 2019-02-16 09:47:25 · 9526 阅读 · 0 评论 -
linux-tar分卷压缩与解压缩
举例说明:要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:tar cjf - logs/ |split -b 1m - logs.tar.bz2.完成后会产生下列文件:logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac要解压的时候只要执行下面的命令就可以了:cat logs.tar.bz2.a* | tar xj再...转载 2019-02-16 09:46:36 · 856 阅读 · 0 评论 -
ubuntu QT开发环境(三种方法安装Qt4.8,其中apt-get方法安装QT库最简单)good
方法一 QT4.8.0库+QT Creator 2.4.1特别声明:此方法极其耗时间,看电脑性能了。配置configure可减少编译时间1.下载Qt 。进入网址http://qt.nokia.com/downloads,下Qt libraries4.8.0 for Linux/x11(228MB) 和QtCreator(65MB)。 2.解压文件。进转载 2017-08-07 15:23:09 · 1197 阅读 · 0 评论 -
initramfs
nitramfs是在ramfs的cache实现上加了一层很薄的封装,其他内核开发人员编写了一个改进版tmpfs,这个文件系统上的数据可以写出到交换分区,而且可以设定一个tmpfs装载点的最大尺寸以免耗尽内存。initramfs就是tmpfs的一个应用。最初的想法是Linus提出的: 把cache当作文件系统装载。他在一个叫ramfs的cache实现上加了一层很薄的封装,其他内核原创 2017-01-20 10:32:52 · 515 阅读 · 0 评论 -
根据内核Oops 定位代码
内核开发时有时候出现Oops,例如一个野指针会导致内核崩溃,如运行时出现以下log:现在有三种方法可以找出具体出现野指针的地方[plain] view plain copy print? 5.438972] bells bells: wm5102-aif1 samsung-i2s.0 mapping ok [ 5.4438转载 2017-01-13 10:35:04 · 456 阅读 · 0 评论 -
基于全志芯片的GPIO及底层(C/Python)编程
目标环境:搭载A20芯片的核心板Cubieboard2,使用522扩展板,用TF卡搭载cb2-dvk-sdcard-ubuntu-desktop-lcd-ctp-lvds-1024x600-v1.1.img系统管脚图:http://docs.cubieboard.org/cubieboard1_and_cubieboard2_gpio_pinGPIO是General Purpose转载 2016-12-31 18:11:16 · 7330 阅读 · 1 评论 -
《Linux启动过程分析》内核挂载根文件系统
说明:本文基于Linux2.6.29内核分析;其他内核版本仅供参考。Android2.3及Linux2.6.29内核模拟器版本编译与调试 前边通过源码情景分析,看过了总线、设备、驱动及其发现机制,Linux2.6内核udev设备节点创建相关;对于文件系统,一直望而生畏,但内核学习、这部分又不可能绕的过去。目前对VFS中使用的hash表还未做研究,它在dentry和vfsmou转载 2016-12-16 16:26:41 · 520 阅读 · 0 评论 -
嵌入式linux busybox 文件系统的移植 和 rz sz 命令的添加
-----------------创建rootfs文件夹-------------------mkdir my_rootfscd my_rootfsmkdir bin dev etc home lib mnt proc sbin sys tmp root usr var mnt/etc usr/bin usr/lib usr/sbintouch linuxrc 使用mknod来转载 2016-12-16 14:48:06 · 1767 阅读 · 0 评论 -
交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和我有同样困惑的兄弟.....原文链接http://www.hi-beiyu.com/archives/312一. 什么是ABI和EABI 1) ABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Archi转载 2016-11-15 15:07:17 · 1276 阅读 · 0 评论 -
TCP/UDP
TCP / UDP 模型 TCP:server: TCP编程的服务器端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt(); * 可选 3、绑定IP地址、端口等信息到socket上,用函数bind(); 4、开启监听,用函数listen(); 5、接收客户端上转载 2016-10-24 14:09:40 · 216 阅读 · 0 评论 -
Linux系统内核的执行流程总结
Linux系统目前已经变得很复杂了,那么我们要研究Linux的话当然得从最精简的版本研究起,这时的内核启动过程没有现在的复杂,也很好理解。第一:Linux启动的第一阶段(从开机到main.c) 3个任务:A、启动BIOS,准备实模式下的中断向量表和中断服务程序。B、从启动盘加载操作系统程序到内存。C、为执行32的main函数做过渡准备。内存变化如下:①转载 2016-10-21 21:35:16 · 538 阅读 · 0 评论 -
关于编译器与解释器的区别
晚上看书时,书上说:shell 不在CPU直接执行。后来查资料,发现有一个解释器这个东西 ( 解释器是在“一边编译,一边运行). 下面是一位牛人相关的博客来福与旺财的养牛场来福和旺财有一个养 牛场。本来养牛不是一件太难的事情,但是偏偏他俩养的牛都有特别的怪癖。奶牛阿圆只吃切成圆形的牧草,而奶牛阿方和阿三(印度来的?)分别只吃切成正方形 和三角形的牧草。如果来福和旺财拿不和奶牛性格的草去原创 2016-09-26 10:26:40 · 314 阅读 · 0 评论 -
start_kernel()
start_kernel()定义于 init/main.c/** linux/init/main.c** Copyright (C) 1991, 1992 Linus Torvalds** GK 2/5/95 - Changed to support mounting root fs via NFS* Added initrd & cha原创 2016-09-12 17:43:04 · 761 阅读 · 0 评论 -
linuxrc
linuxrc rcS rc.local Profile一直对linuxrc不解,内核配置命令行参数以及Uboot设置环境变量bootargs里面的init=/linuxrc解析/Linuxrc 执行init 进程初始化文件。主要工作是把已安装根文件系统中的/etc 安装为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;接着L原创 2016-08-11 14:19:41 · 1168 阅读 · 0 评论 -
Linux2.6进程切换经典分析
Linux内核进程切换 本文主要参考了Understanding The Linux Kernel 和水木精华区的分析进程切换宏 switch_to 。感谢相关的作者!本文中有部分内容直接从上面提到的文章中重复,仅仅是为了方便大家阅读。本文中提到的所有内核代码可以到Linux Cross Reference上查阅。欢迎转载本文,转载请保留这份声明。 本文仅讨论内核进程的切换原创 2016-05-18 09:23:47 · 516 阅读 · 0 评论