
Linux操作系统
文章平均质量分 67
操作系统
CodeAllen嵌入式
优快云博客专家,曾中科院无人机软件研发,现TOP通信外企高级软件工程师,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝10w+,欢迎交流一起成长!
展开
-
vi/vim编辑器必知必会
一、我们为什么要学习vim编辑器?Linux的命令行界面下面有非常多的文本编辑器。比如经常听说的就有Emacs、pico、nano、joe与vim等。vim可以看做是vi的高级版。我们为什么一定要学习vim呢?有以下几个原因:(1)所有的Unix like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在。(2)很多软件的编辑接口都会主动调用vi。(3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。(4)程序简单,编辑速度快。二、下面先介绍一转载 2021-07-15 21:49:04 · 1138 阅读 · 0 评论 -
Vim快捷键
Vim的一些快捷键记录:一、移动光标按键 功能 说明 h,j,k,l 上,下,左,右 ctrl-e 移动页面 ctrl-f 上翻一页 ctrl-b 下翻一页 ctrl-u 上翻半页 ctrl-d 下翻半页 w 跳到下一个字首,按标点或单词分割 W 跳到下一个字首,长跳,如end-of-line被认为是一个字 e 跳到下一个字尾 E 跳到下一个字尾,长跳 b 跳到上一个字 B转载 2021-07-15 21:54:23 · 971 阅读 · 0 评论 -
1.vi工作模式(3种)以及模式切换(转换)
vi 编辑器是一个功能强大的编辑器。学习 vi 要从其基本工作模式开始学起。了解这些工作模式对用户理解 vi 编辑器的行为是不无裨益的。对于一些从图形界面中转入 vi 的开发者来说,了解 vi 的工作模式十分重要。本节将深入讨论 vi 编辑器的工作模式。vi 编辑器有 3 种基本工作模式,分别是命令模式、文本输入模式和末行模式。下面详 细介绍这 3 种模式。1) 命令行模式该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。在命令模式下,用户可原创 2021-05-25 02:07:31 · 5108 阅读 · 0 评论 -
【嵌入式Linux】补充部分
本部分主要专注构建从0到1的嵌入式Linux学习知识体系,主要设计环境配置,嵌入式Linux基础部分,Linux文件系统及系统移植,驱动开发等知识。目前持续更新中,更新时间:2022年11月12日Linux的起源:从一个故事说起FreeBSD与Linux十个本质上的区别什么是GUN?POSIX标准是什么?Linux的基本概念和特点Citrix,微软,VMware:它们的优缺点什么是类Unix系统?UNIX/Linux系统结构Linux x86 和ARM什么区别?为什么STM32没法跑Li原创 2022-11-13 00:16:18 · 740 阅读 · 0 评论 -
【嵌入式Linux】第二部分 - 开发实践
VMware tools详细安装步骤i.MX6ULL 系列处理器简介Linux x86 和ARM什么区别?Linux的起源:从一个故事说起为什么STM32没法跑Linux ?FreeBSD与Linux十个本质上的区别POSIX标准是什么?什么是GUN?Linux的基本概念和特点ARM开发板中 nor flash与nand flash 的特点UNIX/Linux系统结构Citrix,微软,VMware:它们的优缺点什么是类Unix系统?Linux 线程CPU占用率过高定位分析linux下查看进程启动、运行的时原创 2021-09-17 21:12:53 · 40292 阅读 · 0 评论 -
【嵌入式Linux】10.Linux Makefile基础
上一篇文章我们成功编译了一个单文件,对于文件数量比较少的工程,这种方法还可以,但是如果文件非常对,到几百几千个文件,那这种通过终端使用GCC的方法显然不靠谱。这就引出了一个方法,利用一个编辑好的文件,可以按照提前规定的路径及方式编译源码文件,每次编译只要执行这个文件就可以了。然后工程师就实现了这个想法,这个文件就是本文要说的Makefile。当然大家要是习惯IDE编程,可能也都没太注意这个文件,但是事实上IDE也是有这么个文件,只不过已经被封装在图形界面之后了。原创 2022-11-20 22:51:03 · 8321 阅读 · 0 评论 -
【嵌入式Linux】Vscode创建工程技巧
稍后会开始分析U-Boot代码,所以先用Vscode创建工程根据需要筛选出需要看的文件,这个功能对于大项目非常有用创建.vscode文件夹,新建settings.json文件,添加规则配置文件,以供参考:{ "search.exclude": { "**/node_modules": true, "**/bower_components": true, "**/*.o":true, "**/*.su":tr.原创 2021-12-25 16:54:57 · 1642 阅读 · 0 评论 -
pthread_attr详解
Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。线程属性结构如下:typedef struct{ int detachstate; 线程的分离状态 int schedpolicy; 线程调度策略转载 2021-07-12 20:52:36 · 39852 阅读 · 2 评论 -
【嵌入式Linux】11.Ubuntu 交叉编译工具链安装
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。其基本特点是:1、它肯定是一个 GCC 编译器。2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯片上运行的。原创 2022-11-27 00:53:17 · 1864 阅读 · 0 评论 -
pthread_attr_init线程属性
1.线程属性线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。 名称:: pthread_attr_init/pthread_attr_destroy 功能: 对线程属性初始化/去除初始化 头文件: #inclu转载 2021-07-12 21:14:00 · 34714 阅读 · 0 评论 -
【嵌入式Linux】4.U-Boot入门
Linux系统要启动就必须需要一个 bootloader程序,也就说芯片上电以后先运行一段bootloader程序。这段 bootloader程序会先初始化 DDR等外设,然后将 Linux内核从 flash(NAND NOR FLASH SD MMC等 )拷贝到 DDR中,最后启动 Linux内核。当然了, bootloader的实际工作要复杂的多,但是它最主要的工作就是启动 Linux内核, bootloader和 Linux内核的关系就跟 PC上的 BIOS和 Windows的关系一样, bootlo原创 2021-12-18 17:48:05 · 1041 阅读 · 0 评论 -
Citrix,微软,VMware:它们的优缺点
因为我自己的笔记本是使用VMware安装的(centos 7,Ubuntu16.04及Mac OS X 10.11)公司使用的是Citrix安装的服务器(Windows 7及redhat )所以闲来无事便对比下他们之前的优缺点 原文链接:https://www.brianmadden.com/opinion/Citrix-Microsoft-VMware-The-GOOD-and-...翻译 2018-11-19 22:09:14 · 41812 阅读 · 0 评论 -
pthread_attr_init () 函数详解
1.【线程属性】线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。调用pthread_attr_init之后,pthread_t结构所包含的内容就是操作系统实现支持的线程所有属性的默认值。如果要去除对pthread_attr_t结构的初始化,可以调用pthread_attr_destroy函数。如果pthread_attr_init实现时为属性对象分配了动态内存空间,pthread_attr_destroy还会用无效的值初始化属性对象,转载 2021-07-12 20:33:44 · 40121 阅读 · 0 评论 -
多线程之pthread_join()
如果我们想获取某个线程执行结束时返回的数据,可以调用 pthread_join() 函数来实现。原创 2019-01-25 23:57:09 · 1534 阅读 · 1 评论 -
线程取消(pthread_cancel)
基本概念pthread_cancel调用并不等待线程终止,它只提出请求。线程在取消请求(pthread_cancel)发出后会继续运行,直到到达某个取消点(CancellationPoint)。取消点是线程检查是否被取消并按照请求进行动作的一个位置.与线程取消相关的pthread函数int pthread_cancel(pthread_t thread)发送终止信号给thread线程,如果成功则返回0,否则为非0值。发送成功并不意味着thread会终止。int pthread_setcancel转载 2021-07-12 21:18:59 · 35392 阅读 · 0 评论 -
【嵌入式Linux】3.Visual Studio Code插件的安装(C/C++)
推荐几个C/C++的插件1)、 C/C++,这个肯定是必须的。2)、 C/C++ Snippets,即 C/C++重用代码块。3)、 C/C++ Advanced Lint,即 C/C++静态检测 。4)、 Code Runner,即代码运行。5)、 Include AutoComplete,即自动头文件包含。6 、 Rainbow Brackets,彩虹花括号,有助于阅读代码。7)、 One Dark Pro VSCode的主题。8)、 GBKtoUTF8,将 GBK转换为 UTF8。原创 2021-12-09 23:18:28 · 34770 阅读 · 0 评论 -
Linux线程同步之条件变量pthread_cond_t
条件变量是线程同步的一种手段。条件变量用来自动阻塞一个线程,直到条件(predicate)满足被触发为止。通常情况下条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个/多个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"信号。转载 2022-09-14 22:31:40 · 781 阅读 · 0 评论 -
pthread_attr_setinheritsched,pthread_attr_setschedparam函数详解
线程优先级属性在任务的概念当中由于运行的需求,我们常常需要给任务一定分类,在系统里面就诞生出来所谓线程优先级实时线程 单位时间相应能力强,里面拥有1-99个静态优先级,数字越大,优先级越高(所谓的优先级指的经过特殊的处理,我们可以让某个人物能够在系统中被更优先的响应,从而分出的从高到低的级别),需要有管理员权限才能启动实时线程特点:实时线程分99个静态优先级,数字越大,优先级越高高优先级的实时线程会完全抢占低优先级实时线程的资源(指令运行资源)在实时线程当中支持抢占调度策略...转载 2021-07-12 20:44:33 · 41348 阅读 · 3 评论 -
【嵌入式Linux】第二部分 - 裸机开发/系统移植/驱动开发/内核开发
本部分主要专注构建从0到1的嵌入式Linux学习知识体系。主要涉及Linux环境配置,嵌入式Linux裸机开发,Linux文件系统及系统移植,驱动开发等部分。目前持续更新中,更新时间:2022年11月13日【嵌入式Linux】1.shell概念及常用命令行【嵌入式Linux】2.minicom【嵌入式Linux】3.Visual Studio Code插件的安装(C/C++)【嵌入式Linux】4.U-Boot入门【嵌入式Linux】5.U-Boot入门实践【嵌入式Linux】6.U-Boot原创 2022-11-13 10:44:31 · 1236 阅读 · 0 评论 -
【嵌入式Linux】7.U-Boot顶层Makefile分析
VERSION = 2016PATCHLEVEL = 03SUBLEVEL =EXTRAVERSION =NAME =VERSION是主版本号, PATCHLEVEL是补丁版本号, SUBLEVEL是次版本号,这三个一起构成了 uboot的版本号,比如当前的 uboot版本号就是“ 2016.03”。 EXTRAVERSION是附加版 本信息, NAME是和名字有关的,一般不使用这两个。20 MAKEFLAGS += -rR --include-dir=$(CURDIR)上述代码.原创 2021-12-19 13:56:22 · 1182 阅读 · 0 评论 -
prctl()函数详解
越过当设置文件的S_ISUID和S_ISGID位的时候,用户的ID必须和所有者ID匹配的限制,设置S-ISGID位的时候,组ID。如果_POSIX_ACL定义,就会越过所有的DAC访问,包括ACL执行访问,用CAP_LINUX_IMMUTABLE功能来排除。EINVAL————option的值不正确,或者当它是PR_SET_PDEATHSIG时,参数arg2的值不是0或者信号数字。(Since Linux2.6.9)必须和所有者ID匹配的限制,用chown来设置S_ISUID和S_ISGID为的功能限制。转载 2022-09-23 00:40:53 · 1093 阅读 · 0 评论 -
pthread_setschedparam(设置线程的优先级)
在linux下我们可以通过int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);来创建线程,但是如何设置线程的优先级呢?在讨论这个问题的时候,我们先要确定当前线程使用的调度策略,posix提供了int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *po.转载 2021-07-12 21:00:11 · 47565 阅读 · 1 评论 -
i.MX6ULL 系列处理器简介
NXP的i.MX 6ULL系列芯片是一款基于ARM Cortex A7内核的低功耗高性能且低成本的应用处理器,下面是imx6ull处理器的内部功能框图:主要特性如下:ARM Cortex-A7内核可达900 MHz, 128 KB L2缓存。 并行24bit RGB LCD接口,可以支持1366*768分辨率。 8/10/16位 并行摄像头传感器接口(CSI)。 2个MMC 4.5/SD 3.0/SDIO 接口。 2个USB 2.0 OTG, HS/FS, Device or Ho.原创 2021-07-17 18:40:50 · 64818 阅读 · 0 评论 -
【嵌入式Linux-C】01 嵌入式LinuxC语言编程的概念
本章将会讨论如下主题内容。⚫ 何为系统调用;⚫ 何为库函数;⚫ 应用程序的 main()函数;⚫ 应用程序开发环境的介绍。原创 2023-02-02 20:45:43 · 1486 阅读 · 0 评论 -
【嵌入式Linux】2.Linux C语言基础
GCC常用命令总结_CodeAllen嵌入式编程的博客-优快云博客另外这个过程对于初学者可以先忽略,但是后期还是有必要了解这个简单的过程发送了什么,可以参考下文,详细说明了GCC的编译流程底层发生了什么。原创 2021-12-09 19:25:15 · 34553 阅读 · 0 评论 -
【嵌入式Linux】5.U-Boot入门实践
U-Boot编译首先 在 Ubuntu中 安装 ncurses库, 否则编译会报错,安装命令如下:sudo apt-get install libncurses5-dev解压uboot,使用的版本为正点原子开发板自带tar -vxjf uboot-imx-2016.03-2.1.0-ge468cdc-v1.5.tar.bz2针对512MB(DDR3)+8GB(EMMC)核心板,编写编译脚本#!/bin/bashmake ARCH=arm CROSS_COMPILE=arm-l原创 2021-12-18 20:17:54 · 1247 阅读 · 0 评论 -
【嵌入式Linux】9.U-Boot启动流程详解
1.reset函数源码从u-boot.lds中我们已经知道了入口点是 arch/arm/lib/vectors.S文件中的 _start,代码如下第48行 _start开始的是中断向量表,其中 54~61行就是中断向量表,和我们裸机例程里面一样。54行跳转到 reset函数里面, reset函数在 arch/arm/cpu/armv7/start.S里面,代码如下:第 35行就是 reset函数。第 37行从 reset函数跳转到了 save_boot_params函数,而 sav.原创 2022-02-19 16:32:34 · 1355 阅读 · 0 评论 -
多线程之pthread_create()
总述:pthread_create是(Unix、Linux、Mac OS X)等操作系统的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。pthread_create的返回值表示成功,返回0;表示出错,返回表示-1。pthread_create函数如何创造线程函数原型声明:#include <pthread.h>int pthread_create( pthread_t *res原创 2021-07-12 21:05:34 · 37072 阅读 · 0 评论 -
【嵌入式Linux】1.shell概念及常用命令行
Shell是什么?Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。Shell基本操作下边就是shell的基本格式命令[选项][参数]command: Shell命令名称原创 2021-12-09 00:33:04 · 35024 阅读 · 0 评论 -
【嵌入式Linux】6.U-Boot常用命令
U-Boot命令使用进入 uboot的命令行模式以后输入“ help”或者“?”,然后按下回车即可查看当前 uboot所支持的命令,如图常用的uboot命令信息查询命令常用的和信息查询有关的命令有3个 bdinfo、 printenv和 versionbdinfoprintenvversion环境变量操作命令环境变量的操作涉及到两个命令: setenv和 saveenv,正常都是一起使用setenv用于设置或者修改环境变量的值sav..原创 2021-12-18 23:10:13 · 1333 阅读 · 0 评论 -
C语言read()函数:读文件函数
头文件:#include <unistd.h>定义函数:ssize_t read(int fd, void * buf, size_t count);函数说明:read()会把参数fd 所指的文件传送count 个字节到buf 指针所指的内存中. 若参数count 为0, 则read()不会有作用并返回0. 返回值为实际读取到的字节数, 如果返回0, 表示已到达文件尾或是无可读取的数据,此外文件读写位置会随读取到的字节移动.附加说明:如果顺利 read()会返回实际读到的字节数, 最好能将返回转载 2021-07-15 22:47:32 · 74416 阅读 · 1 评论 -
FreeBSD与Linux十个本质上的区别
Linux的标志是一只十分可爱的小企鹅,而FreeBSD的标志是一个拿着叉子的小恶魔。你是否经常会听到人们把 Linux及 BSD 系统混为一谈?是的,我有时会经常听到一些新手,甚至于媒体都这么说。当然,事实上这两者确实有很多相似之处,比如它们都是基于 Unix演变而来,而且基本上这两类系统都是由非盈利组织及团队开发,另外我更想说的是,这两个系统都有一个共同的目标–那就是创建最有用、最可靠的操作系...转载 2018-11-28 22:34:13 · 42011 阅读 · 0 评论 -
【嵌入式Linux】8.链接脚本 u-boot.lds
原创 2021-12-27 00:43:18 · 1158 阅读 · 1 评论 -
终止线程执行的3种方法(pthread_exit()、pthread_cancel()、return)
return 语句和 pthread_exit() 函数的含义不同,return 的含义是返回,它不仅可以用于线程执行的函数,普通函数也可以使用;和之前不同,pthread_exit() 函数只适用于线程函数,而不能用于普通函数。多线程程序中,一个线程还可以向另一个线程发送“终止执行”的信号(后续称“Cancel”信号),这时就需要调用 pthread_cancel() 函数。类型的指针,可以指向任何类型的数据,它指向的数据将作为线程退出时的返回值。头文件中,该宏的值为整数 3)。原创 2022-08-26 08:36:02 · 1856 阅读 · 0 评论 -
ubuntu20.04无法安装gcc
搜索了一些方法都不行。原创 2022-12-30 23:50:15 · 1275 阅读 · 0 评论 -
【Linux】Linux 中 man 1、man 2 和 man 3 的区别
8、Administrative Commands (管理员命令)9、其他(Linux特定的), 用来存放内核例行程序的文档。1、Standard commands (标准命令)3、Library functions (库函数)4、Special devices (设备说明)6、Games and toys (游戏和娱乐)2、System calls (系统调用)5、File formats (文件格式)7、Miscellaneous (杂项)原创 2022-12-28 23:49:28 · 666 阅读 · 0 评论 -
VMware 提供的网络连接有 5 种,分别是“桥接模式“、“NAT 模式“、“仅主机模式“、“自定义“和“LAN 区段“:
桥接模式:相当于虚拟机的网卡和宿主机的物理网卡均连接到虚拟机软件所提供的 VMnet0 虚拟交换机上,因此虚拟机和宿主机是平等的,相当于一个网络中的两台计算机。仅主机模式:宿主机和虚拟机通信使用的是 VMware 的虚拟网卡 VMnet1,但是这种连接没有 NAT 服务器为虚拟机提供路由功能,所以仅主机网络只能连接宿主机,不能连接局域网,也不能连接 Internet 网络。LAN 区段:这是新版 VMware 新增的功能,类似于交换机中的 VLAN(虚拟局域网),可以在多台虚拟机中划分不同的虚拟网络。原创 2022-12-08 22:48:20 · 1405 阅读 · 0 评论 -
计算机操作系统(第3版)汤子瀛 下载链接
不管是互联网还是嵌入式领域,都有必要学习下操作系统原理,可以更好的理解软件运行的底层原理尤其是嵌入式,操作系统可以算是其核心的核心分享下经典的教材链接:https://pan.baidu.com/s/1V0eqn-_xk5_CLsd6LfO7Ug提取码:8db4PS:以防失效,我建了个QQ群:736386324...原创 2020-09-12 11:18:19 · 2706 阅读 · 0 评论 -
操作系统简介
操作系统简介 阅读目录一 为什么要有操作系统二 什么是操作系统三 操作系统与普通软件的区别四 操作系统发展史一 为什么要有操作系统现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。一般而言,现代计算机系统是一个复杂的系统。其一:如果每位应用程序员都必须掌握该系统所有的细节...转载 2019-08-05 22:15:30 · 1103 阅读 · 0 评论