
Linux嵌入式
文章平均质量分 93
小琛在路上
有合作和解决问题请私信我细谈,谢谢!
展开
-
Xilinx-Spartan6-学习笔记(23):IIC时序分析
Xilinx-Spartan6-学习笔记(23):IIC时序分析仍然是基于黑金教程的基础上的个人分析。1、IIC时序简介对于IIC的时序来说,主要有接收和发送两种,同时每种又分为读写单个或多个字节的情况,4种时序可以用下图来表示:(1)写单个存储字节:起始信号(主机发送)+设备地址(主机发送)+ 应答信号(从机发送)+ 字地址(主机发送)+应答信号(从机发送)+ 有效数据(主机发送)+ 应答信号(从机发送) + 停止信号(主机发送)(2)写多个存储字节:同理,只是发送有效数据是多个字节隔开(3原创 2021-01-29 17:46:06 · 1968 阅读 · 1 评论 -
Linux-网络编程-学习笔记(20):网络基础与编程实践
Linux-网络编程-学习笔记(20):网络基础与编程实践一、网络基础1. 网络通信概述网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。站在进程的层面来说,网络之间的通信其实就是位于网络中...原创 2020-05-09 09:57:07 · 2931 阅读 · 3 评论 -
Linux-应用编程-学习笔记(19):线程全解
Linux-应用编程-学习笔记(19):线程全解前言:线程是解决进程间通信的一个非常好的方法,它保留了进程技术实现多任务的特性,是内核调度的最小单元。多线程在多核心CPU上面更有优势。一、线程引入1. 用线程来解决进程的劣势我们知道进程技术发明的主要目的是用来实现多任务系统需求(多任务的需求是客观的)。进程技术的主要功能是为了实现CPU的分时复用,从而实现宏观上的并行。但是要知道进程之间...原创 2020-05-07 10:33:24 · 2022 阅读 · 0 评论 -
Linux-应用编程-学习笔记(18):对于阻塞式IO困境的解决
Linux-应用编程-学习笔记(18):对于阻塞式IO困境的解决前言:内核默认的IO状态基本都为阻塞式,这是因为通过阻塞式的方式能够发挥操作系统的性能,让CPU时刻工作在被需要的情况下。但是只是单纯的阻塞式设计可能会带来一些危害,所以如何设计一种IO多路复用的状态是非常重要的。一、阻塞式IO1. 非阻塞式IO和阻塞式IO的区别为了学习非阻塞IO用法,首先要弄清楚非阻塞和阻塞的区别。非阻塞式...原创 2020-05-06 16:26:30 · 2369 阅读 · 0 评论 -
Linux-应用编程-学习笔记(17):进程全解
Linux-应用编程-学习笔记(17):进程全解前言:当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用,因此进程是linux系统中非常重要的一个概念。一、程序和环境变量1. 程序的开始和结束1.1 运行前的准备之前一直在说一个程序的开始是main函数,但是在main函数执行之前,操作系统下的应用程序还是需要执行一...原创 2020-05-05 18:21:32 · 2360 阅读 · 2 评论 -
Linux-应用编程-学习笔记(16):文件IO
Linux-应用编程-学习笔记(16):文件IO前言:基于LINUX做应用编程,其实就是通过调用LINUX的系统API来实现需要完成的任务。通过LINUX对文件进行操作的API称为文件IO(input和output),也就是读写文件。一、文件操作的主要API接口API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用。应用层程序通过调用API来调用操作系统中的各种功能,来干...原创 2020-04-30 13:12:01 · 2263 阅读 · 0 评论 -
Linux-文件系统-学习笔记(15):利用busybox构建根文件系统
Linux-文件系统-学习笔记(15):利用busybox构建根文件系统前言:一整套linux在只有内核的情况下是不能工作的,它需要由根文件系统的配置支持。同时根文件系统提供了根目录、shell命令集和linuxrc应用程序,使得系统能够从进程1中衍生出其他进程。所以rootfs对于操作系统来讲是不可缺少的。一、busybox移植1、什么是busybox?上一篇博客中简单介绍了busybo...原创 2020-04-07 22:01:59 · 9134 阅读 · 0 评论 -
Linux-文件系统-学习笔记(14):根文件系统原理与nfs搭建方法
Linux-文件系统-学习笔记(14):根文件系统原理与nfs搭建方法一、根文件系统1、根文件系统简介为什么需要根文件系统?(1)init进程的应用程序在根文件系统上,因此向用户态切换时根文件系统必不可少。(2)根文件系统提供了根目录/ ,相当于一个数根、起点,通过这个能够找到你想要找的那个位置。(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为:发行版=内核+ro...原创 2020-04-06 20:07:28 · 4245 阅读 · 0 评论 -
Linux-内核-学习笔记(13):移植三星官方内核
Linux-内核-学习笔记(13):移植三星官方内核一、移植前的准备当拿到源代码时,首先要在window下利用SourceInsight创建一个工程,并将uboot源代码加载到SI中,方便修改和查看函数调用。项目->新项目->设置项目名、工程路径->选择整个uboot文件->添加树 项目->同步文件(全打钩)接着要在linux下创建一份,因为配置和编译过程都...原创 2020-04-05 16:24:46 · 2541 阅读 · 0 评论 -
Linux-内核-学习笔记(12):内核启动过程分析
Linux-内核-学习笔记(12):内核启动过程分析在uboot启动后,会将各种参数通过三个寄存器的方式传递给内核函数,并在执行启动内核后自动结束。内核启动过程会解析参数并初始化各种设备,最终进入到了一种能够实现进程间调度的多进程状态,这些进程里面只要有哪个需要被运行,调度系统就会终止cpu_idle死循环进程(空闲进程)转而去执行有意义的干活的进程,从而实现内核的运转。一、链接脚本vmlin...原创 2020-04-04 17:38:23 · 5028 阅读 · 0 评论 -
Linux-内核-学习笔记(11):内核配置和编译原理
Linux-内核-学习笔记(11):内核配置和编译原理一、内核简介1. 操作系统1.1、什么是操作系统?操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序。它主要作用就是管理计算机硬件,给应用程序提供一个运行环境。例如linux、windows、android、ucos就是操作系统。1.2、操作系统核心功能操作系统就相当于你的一个管家,是一些功能的综合体,他会管理...原创 2020-04-03 15:16:58 · 5863 阅读 · 0 评论 -
Linux-uboot-学习笔记(10):移植三星官方uboot
Linux-uboot-学习笔记(10):移植三星官方uboot前言:当我们在使用某个板卡之前,首先要找到与它对应匹配的uboot,将uboot移植到板卡上,从而实现板卡的一系列启动。这里我们将三星官方开发板的SMDKV210的uboot源代码移植到S5PV210上,从而实现引到210启动各种外设和启动内核。一、移植前的准备当拿到源代码时,首先要在window下利用SourceInsight...原创 2020-03-31 09:52:22 · 2910 阅读 · 0 评论 -
Linux-uboot-学习笔记(9):uboot硬件驱动
Linux-uboot-学习笔记(9):uboot硬件驱动一、uboot与linux驱动1、驱动是什么?驱动的狭义概念:操作系统中用来具体操控硬件的那部分代码。裸机程序中是直接操控硬件的,而操作系统中必须通过驱动来操控硬件。裸机程序和驱动这两者同样都是控制硬件的,它们之间有什么区别呢?答:驱动有分层结构。操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使...原创 2020-03-29 10:27:44 · 3573 阅读 · 0 评论 -
Linux-uboot-学习笔记(8):uboot启动内核
Linux-uboot-学习笔记(8):uboot启动内核uboot启动的第二阶段主要是执行第一阶段跳转到的start_armboot函数,该BL2阶段在DDR中初始化第一阶段未完成的任务和SoC各种外设。start_armboot函数分析start_armboot函数位于Board.c文件中,从文件名可以看出,该函数主要针对板级初始化的。定义全局变量数据结构体(70)...原创 2020-03-27 15:58:35 · 3996 阅读 · 0 评论 -
Linux-uboot-学习笔记(7):uboot启动第二阶段源码分析
Linux-uboot-学习笔记(7):uboot启动第二阶段源码分析uboot启动的第二阶段主要是执行第一阶段跳转到的start_armboot函数,该BL2阶段在DDR中初始化第一阶段未完成的任务和SoC各种外设。start_armboot函数分析start_armboot函数位于Board.c文件中,从文件名可以看出,该函数主要针对板级初始化的。通过init_fnc_ptr对函数指针...原创 2020-03-26 15:56:55 · 3163 阅读 · 2 评论 -
Linux-uboot-学习笔记(6):uboot启动第一阶段源码分析
Linux-uboot-学习笔记(6):uboot启动第一阶段源码分析uboot启动的第一阶段主要是start.S文件,也就是在BL1阶段将SD卡的前16K内容加载到SRAM中执行的那部分,从而指导第二阶段BL2的启动任务。start.S源码分析头文件包含(28-33)#include <config.h>。config.h是在include目录下的,这个文件不是源码中本身存...原创 2020-03-24 09:43:38 · 3841 阅读 · 0 评论 -
Linux-uboot-学习笔记(5):uboot的配置和编译过程代码分析
Linux-uboot-学习笔记(5):uboot的配置和编译过程代码分析在Linux-基础入门-学习笔记(3):uboot常用命令与环境变量一文中,已经对uboot的基本认识有了一个简单的介绍,也知道了uboot是引到操作系统启动和部署整个计算机系统的最重要的一部分,下面对uboot的配置和编译过程代码进行详细分析。首先说明该uboot程序针对samsung的s5pv210板卡:一、Mak...原创 2020-03-22 18:10:49 · 3634 阅读 · 0 评论 -
Linux-基础入门-学习笔记(4):shell编程常用语法演示
Linux-基础入门-学习笔记(4):shell编程常用语法演示一、shell介绍在之前的博客中已经对shell进行了简单的介绍,并且搭建了简易的shell框架,详细请参考博客:搭建简单的shell框架。编写shell脚本时使用的语言就是shell语言,又叫脚本语言。shell脚本其实是一类语言而不是一个语言。常用的shell语言:sh(dash)、bash、csh、ksh、perl、p...原创 2020-03-19 11:36:12 · 3209 阅读 · 0 评论 -
Linux-基础入门-学习笔记(3):uboot常用命令与环境变量
Linux-基础入门-学习笔记(3):uboot常用命令与环境变量原创 2020-03-18 11:56:15 · 3620 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器
嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器一、ADC1. 什么是ADCADC(analog digital converter):模数转换(也就是模拟量转换为数字量)。由于CPU本身是数字的,而外部世界变量(如电压、温度、高度、压力···)都是模拟的,所以需要用CPU来处理这些外部的模拟变量的时候就需要做AD转换。模拟的就是连续的,现实生活当中的时间、电压、高度等都是模拟的...原创 2020-03-11 17:08:06 · 4983 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(11):I2C总线通信
嵌入式知识-ARM裸机-学习笔记(11):I2C总线通信一、I2C总线1. I2C总线简介I2C(Inter-Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是...原创 2020-03-11 10:48:02 · 4155 阅读 · 2 评论 -
嵌入式知识-ARM裸机-学习笔记(10):SRAM、SDRAM、ROM、NandFlash都是什么?
http://www.360doc.com/content/17/0930/22/1751130_691457644.shtml转载 2020-03-09 15:29:45 · 3570 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)
嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)一、SD卡介绍1. SD卡背景知识和特点SD卡、MMC卡、MicroSD、TF卡:这些卡其实内部就是Flash存储颗粒,比直接的Nand芯片多了统一的外部封装和接口。卡都有统一的标准,譬如SD卡都是遵照SD规范来发布的。这些规范规定了SD卡的读写速度、读写接口时序、读写命令集、卡大小尺寸、引脚个数及定义。这样做的好处就是...原创 2020-03-07 18:51:33 · 5115 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)
嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)一、定时器1. 定时器简介定时器是SoC中最常见的外设(1)定时器与计数器。计数器是用来计数的(每隔一个固定时间会计一个数);因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值×计数时间周期,就能得到一个时间段,这个时间段就是我们定的时间(这就是定时器了)。(2)定时器/计数器作为SoC的外设,主要用来实现...原创 2020-03-06 16:18:55 · 5994 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(7):SoC系统中断与按键触发外部中断
嵌入式知识-ARM裸机-学习笔记(7):中断系统工作过程详解与通过按键触发外部中断一、SoC中断体系1. 中断的基本概念什么是中断?中断的发明是用来解决宏观上的并行需要的。 宏观就是从整体上来看,并行就是能够完成多件事情。微观就是从每件事情来看,也就是指的真正的并行,精确到每一秒甚至每一刻,多个事情都是在同时进行的。宏观上面的并行并不等于围观的并行,有时候宏观上是并行的,微观上是串行的。...原创 2020-03-05 12:51:55 · 4955 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(6):串口通信详解与基于S5PV210的uartstdio移植
嵌入式知识-ARM裸机-学习笔记(6):串口通信详解与基于S5PV210的uartsdtdio移植一、串口通信原理1. 串口通信基本概念通信中最重要的三个方面: 信息表示(编码)、解析方法(解码)、信息的传输方法。通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递。信号的传输方法是指经过编码后的通信信息如何在传输介质上传输的过程,传输方法与编解码方法无关。通信...原创 2020-03-03 10:35:11 · 5252 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(5):S5PV210时钟系统详解
嵌入式知识-ARM裸机-学习笔记(5):S5PV210时钟系统详解一、SoC时钟系统1. 什么是时钟?时钟是同步工作系统的同步节拍,各部分通过这个节拍来找到协调一致的步伐,从而实现协调配合。SoC内部有很多器件,例如CPU、串口、DRAM控制器、GPIO等内部外设,这些东西要彼此协同工作,需要一个同步的时钟系统来指挥。这个就是我们SoC的时钟系统。2. SoC系统时钟SoC的时钟获取方...原创 2020-02-28 17:19:45 · 7053 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(4):重定位与链接脚本的使用
嵌入式知识-ARM裸机-学习笔记(4):重定位与链接脚本的使用一、重定位1. 一些基本概念的引入位置有关编码: 汇编源码编码成二进制可执行程序后和内存地址是有关的。(大部分代码都是位置有关的,即受地址影响)位置无关编码(PIC,position independent code): 汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关。链接地址: 链接时指定的地址(指定方式...原创 2020-02-24 17:37:39 · 3932 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(3):实现汇编和C语言的相互调用以及栈的设置
嵌入式知识-ARM裸机-学习笔记(3):实现汇编和C语言的调用以及栈的设置一、栈的设置1. C语言运行时需要和栈的意义C语言运行时(runtime) 需要一定的条件,这些条件由汇编来提供,在普通的单片机中这部分不需要我们来考虑。C语言运行时主要是需要栈。C语言和栈的关系: C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代码中定义的局部变量就...原创 2020-02-23 16:59:41 · 4953 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)
嵌入式知识-ARM裸机-学习笔记(3):利用GPIO来控制LED首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结。一.mkv210_image.c文件解读本实验针对S5PV210板卡进行实验。由于该板卡具有不同的启动方式,因此需要制作不同的镜像烧写文件,这里简单描述USB镜像文件和SD卡镜像文件的制作。由于SD卡启动时,需要包含一个头信息的校验,因此需要通过mkv210_image...原创 2020-02-22 17:49:56 · 3827 阅读 · 0 评论 -
Linux-基础入门-学习笔记(2):交叉编译工具链与Makefile
Linux-基础入门-学习笔记(2):交叉编译工具链与Makefile一、安装交叉编译工具链1. windows和linux下装软件的特点windows下装软件的特点Windows中装软件使用安装包,安装包解压后有2种情况:一种是一个安装文件(.exe .msi),双击进行安装,下一步直到安装完毕。安装完毕后会在桌面上生成快捷方式,我们平时使用快捷方式来启动这些程序;另一种是所谓的绿色软件...原创 2020-02-20 11:16:22 · 7511 阅读 · 0 评论 -
嵌入式知识-ARM裸机-学习笔记(1):ARM汇编指令集与伪指令
嵌入式知识-学习笔记(2):ARM汇编指令集与伪指令首先说明一下指令和伪指令的区别:指令:是CPU机器指令的助记符,经过编译后会得到一串由1、0组成的机器码,可以由 CPU读取执行。(是一种内容)伪指令:本质上不是指令,是编译环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。(是一种工具)一.ARM汇编的特点ARM采用RISC架构,CPU本身不能直接读取内存(需要借...原创 2020-02-19 09:45:58 · 5417 阅读 · 0 评论 -
Linux-基础入门-学习笔记(1):Linux常用命令(总结+演示)
Linux-基础入门-学习笔记(1):Linux常用命令(总结+演示)在这里将一些常用的命令进行了总结,方便查阅。如果想了解详细的使用方法和细节可以对应前面的序号查找文中内容。序号命令行备注1ls显示该路径下的文件2cd更改目录,向上一层翻页“…/”(两个点)3pwd显示当前路径4mkdir filename创建文件夹5mv fi...原创 2019-12-09 09:01:11 · 4301 阅读 · 2 评论 -
对Visual Studio 2012控制台闪退的解决方法
计算机知识-问题笔记(3):对Visual Studio 2012控制台闪退的解决方法我们在使用visual studio 2012时,执行程序有时候会出现控制台闪退的情况,网上的一些做法还得在程序上进行修改,很麻烦,所以这里提出一种简单的方法。第一步:创建好你的工程文件(基本步骤)第二步:点击操作窗口的项目选项第三步:点击最下面的工程属性(在我这里是operator属性)第四步:配置...原创 2019-09-24 20:56:56 · 2840 阅读 · 2 评论 -
总线
计算机知识-问题笔记(2):总线一、总线的基本原理1.基本概念总线是连接计算机系统相关部件的公共信息通路,它不仅是一组传输线,还包括一套管理信息传输的规则。一般来说,连接系统各个部件有专用总线和共享总线两种(专用总线是点对点,共享可以被多个部件分时共享)。总线的分类:(1)按照是否共享:专用总线和共享总线。(2)按传递信号的功能:地址总线、数据总线和控制总线。(3)按照在系统中的位...原创 2019-02-21 15:33:30 · 2371 阅读 · 0 评论 -
对USB驱动下载失败的解决
Xilinx-ZYNQ7000系列-学习笔记(1):对USB驱动下载失败的解决背景在进行某个项目或是某个工程时,我们在编辑完代码或者是文件之后,需要将其下载到板卡或者一些其他设备中使其工作,这就需要一根下载线,又名JTAG线,JTAG线有好多种,这里不一一介绍。当第一次插入电脑端时,USB需要下载驱动,本次使用的USB驱动名为Xilinx Platform Cable USB Firmwar...原创 2018-11-14 20:58:39 · 9588 阅读 · 1 评论