
Linux 嵌入式开发
文章平均质量分 66
y_q_m
开心!
展开
-
Linux软件安装方式
参考:https://www.jianshu.com/p/0490e52084421 软件包管理器方式(apt,rpm,yum)1.1 apt →Ubuntu;1.2 rpm→Red Hat;1.3 yum→Fedora、RedHat;2 源代码安装方式(.tar、tar.gz、tar.bz2、tar.Z)第一步:通过tar命令解压缩源码;第二部:进入源码目录,用./configure 命令配置Makefile文件;第三部:用make 命令对源码进行编译和链接;第四部:用sudo mak原创 2021-09-10 10:44:24 · 309 阅读 · 0 评论 -
Linux下从源码到可执行程序的操作过程:配置、编译、安装和卸载
参考:https://www.cnblogs.com/linewman/p/9918640.html1 配置命令:configure。目的:配置makefile文件。 makefile文件是有由源码开发程序员编写的,源码中一般有现成的makefile文件。makefile文件可由cmake或qmake(Qt专有)生成。 configure文件是一个可执行的脚本文件,它有很多选项,在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。 其中–prefix原创 2021-09-08 18:32:30 · 461 阅读 · 0 评论 -
硬软件系统的实时性
1 实时性的考察对象:单片机、实时操作系统和分时操作系统1.1 单片机裸机OS一、古老的51单片机。二、当下最流行意法半导体的STM32 Cortex-M3系列、Cortex-M4、Cortex-M0和Cortex-M7系列单片机。三、其他公司单片机系列:1、德州仪器TI公司的MSP430系列和DSP F28系列;2、微芯科技Microship公司的PIC系列;3、爱特梅尔Atmel公司(被Microship公司收购)的AVR系列;4、**瑞萨公司(日本)**的RA系列(48-200MHz原创 2021-08-23 19:38:46 · 1205 阅读 · 0 评论 -
cmake介绍
参考1:https://fukun.org/archives/0421949.html1、为什么需要cmake 任何一个软件项目,除了写代码之外,还有一个更为重要的任务,就是如何组织和管理这些代码,使项目代码层次结构清晰易读,这对以后的维护工作大有裨益。 决定代码的组织方式及其编译方式,也是程序设计的一部分。因此,我们需要cmake和autotools这样的工具来帮助我们构建(编译)并维护项目代码。 一份源代码,从开始产生到成为可执行程序的过程:预处理——编译——汇编——链接,其中,原创 2021-08-23 16:03:44 · 235 阅读 · 0 评论 -
Linux 驱动开发流程与框架简介
参考:正点原子I.MX6U嵌入式Linux驱动开发指南 V1.5.1原创 2021-07-02 23:27:16 · 340 阅读 · 0 评论 -
设备树简介
参考:正点原子I.MX6U嵌入式Linux驱动开发指南 V1.5.11、设备树定义 以树形结构,描述硬件平台(电路板)上各个硬件设备信息的文件。2、dts、dtsi、dtb和dtc关系1、xxx.dts 文件是设备树源文件,相当于xxx.c文件。2、xxx.dtsi 文件是设备树源文件的头文件,相当于xxx.h文件。3、xxx.dtb文件是设备树可执行文件,相当于xxx.bin或其他可执行文件。4、dtc是设备树编译工具,相当于gcc编译器。xxx.dts 文件和xxx.dtsi 文原创 2021-07-02 20:05:53 · 1331 阅读 · 0 评论 -
Linux 下kernel 移植步骤
Linux 下kernel 移植步骤参考:正点原子I.MX6U嵌入式Linux驱动开发指南 V1.5.11、源码获取1.1、获取途径:kernel官网;半导体厂商(瑞芯微、意法、TI 等);开发板制作商(正点原子、讯为、荣品等)。一般是从开发板制作商获取。1.2、获取的源码一般为压缩文件,需要解压。2、配置2.1、配置步骤:1、make clean;2、make xxx_defconfig.3、裁剪3.1裁剪方式:一般用图形化方式裁剪kernel。调用命令:make menuconfi原创 2021-06-30 11:12:40 · 346 阅读 · 0 评论 -
Linux网络编程之扩展-下
1 广播1.1 广播相关概念一、单播 前面介绍的数据包发送方式只有一个接受方,称为单播。二、广播 同时发给局域网中的所有主机,称为广播。只有用户数据报(使用UDP协议)套接字才能广播。三、广播地址1、以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址。2、发到该地址的数据包被所有的主机接收。3、25...原创 2020-03-07 16:03:16 · 619 阅读 · 0 评论 -
Linux网络编程之扩展-上
1 网络信息检索-域名解析1.1 域名比如:www.baidu.com。通俗理解为网址名。1.2 域名解析将域名变为IP地址。1.3 域名解析函数gethostbyname();endhostent();1.4 其他网络信息检索函数1、gethostname() 获得主机名。2、getpeername() 获得与套接口相连的远程协议地址。3、getsockname() 获得本...原创 2020-03-06 23:55:21 · 244 阅读 · 0 评论 -
Linux网络编程之TCP/IP协议原理
1 网络编程相关工具软件介绍1、使用telnet测试TCP服务器端;2、使用lsof;3、使用tcpdump;4、使用netstat;5、使用sniffer;6、使用wireshark(网络抓包工具);7、Chariot;8、SmartBit—硬件; 可重点关注一下网络抓包工具wireshark。2 TCP/IP协议网络包 TCP/IP协议网络包主要分为:1、以太网头;...原创 2020-03-06 21:56:14 · 517 阅读 · 1 评论 -
Linux网络编程之多路复用I/O
1 输入输出I/O模型 在UNIX/Linux下主要有4种I/O 模型1.1 阻塞I/O1.1.1阻塞I/O概述 阻塞I/O 模式是最普遍使用的I/O 模式,大部分程序使用的都是阻塞模式的I/O ,其最常用。 缺省情况下(默认情况下),套接字Socket() 建立后所处于的模式就是阻塞I/O 模式。前面学习的很多读写函数都是阻塞I/O,如下:1、读操作中的read、recv、re...原创 2020-03-06 02:08:56 · 612 阅读 · 0 评论 -
Linux网络编程之UDP编程
1 TCP网络编程与UDP网络编程对比1.1 相同点一、都采用CS模式:客户端(Client)和服务器(Serve)模式。客户端是主动的,服务器是被动的。一般情况下,一定服务器会响应多个客户端。二、TCP网络编程与UDP网络编程都使用套接字创建函数Socket()、关闭套接字函数close () 和IP地址与端口号绑定函数bind () 。1.2 不同点一、TCP网络编程需要连接(三次握...原创 2020-03-05 17:50:33 · 319 阅读 · 0 评论 -
Linux网络编程之TCP编程
1 CS 模式 客户端(Client)和服务器(Serve)模式。客户端是主动的,服务器是被动的。一般情况下,一定服务器会响应多个客户端。2 TCP网络编程架构3 TCP 网络编程相关函数(API)3.1 创建套接字函数 Socket() 套接字和无名管道、有名管道、信号灯,共享内存、消息队列、信号灯集都属于进程间通讯方式。套接字一般用于网络通信,其他的一般用于本地通信。3.1...原创 2020-03-05 17:30:09 · 574 阅读 · 0 评论 -
Linux网络编程基础-下
1 Socket1.1 Socket定义 socket是一个应用编程的接口,它是一种特殊的文件描述符,可对它执行IO的操作函数,比如,read(),write(),close()等操作函数。Socket代表着网络编程的一种资源。Socket并不仅限于TCP/IP协议,它可以面向连接(TCP/IP)也可以面向无连接(UDP和IPX)。1.2 Socket的类型1.2.1 流式套接字(SOC...原创 2020-03-04 15:02:40 · 260 阅读 · 0 评论 -
Linux网络编程基础-上
1 TCP/IP协议族 互联网(Internet)协议中最重要的协议就是TCP/IP协议族,TCP/IP协议族中最重要就是TCP和IP协议。TCP/IP协议族是Internet事实上的工业标准。 TCP协议:能检测网络传输中差错的传输控制协议(可靠的传输); IP协议:专门负责对不同网络进行互联的互联网协议(不可靠的传输)。2 网络体系结构2.1 网络的特点1、网络采用分而治之的...原创 2020-03-04 11:57:27 · 408 阅读 · 0 评论 -
Linux进程通信
1 Linux进程间通信方式1.1 继承早期unix进程间通讯方式1、无名管道(pipe);2、有名管道(fifo);3、信号(signal)。1.2 System V IPC( Inter-Process Communication 进程间通信)1、共享内存(share memory);2、消息队列(message queue);3、信号灯集(semaphore set)。以上...原创 2020-03-01 12:49:10 · 258 阅读 · 0 评论 -
Linux之线程
1 线程相关概念1.1 为什么要引入线程不同进程之间切换,系统开销很大,为了提高效率很多操作系统(Windows和Linux)都引入了轻量级进程LWP,即线程。 因为同一进程下的线程共享相同的地址空间,所以(同一进程下的)线程之间切换系统开销小效率高。 在Linux下编程,不严格区分进程与线程,将它们都视为任务,用结构体task_struct描述。1.2 线程定义共享相同地址空间(...原创 2020-03-01 11:37:55 · 207 阅读 · 0 评论 -
Linux之进程
1 定义1.1 程序存放在磁盘上的指令和数据的有序集合(文件),程序是静态的。1.2 进程执行一个程序所分配的资源的总称。1.3 进程的特点1、进程是程序的一次执行过程。程序的每一次执行都至少创建一个进程。2、进程是动态的,包括创建、调度、执行和消亡。2 进程的组成2.1 正文段2.2 用户数据段“正文段”和“用户数据段”就是程序。2.3 系统数据段2.3.1 系统数据段...原创 2020-02-29 02:23:11 · 233 阅读 · 0 评论 -
Linux I/O之库
1 库1.1 定义库是一个二进制文件,包含的代码可被程序调用。如标准c库、数学库、线程库。1.2 库的特点1、库中包含很多函数,程序调用库其实是调用库中的函数;2、库有源码,可以下载库源码,然后自己编译(也可以修改优化库源码),生成二进制文件库。也可以直接安装库的二进制包;3、在Linux下,库一般放在/lib或/usr/lib目录下。1.3 库的分类静态库和共享库。2 静态库...原创 2020-02-27 23:49:30 · 263 阅读 · 0 评论 -
Linux I/O之文件I/O
1 标准I/O与文件I/O的区别与联系2 文件描述符2.1 定义Linux为程序中每个打开的文件分配一个文件描述符。文件描述符是一个非负整数。2.2 文件描述符分配规则从0开始,依次递增。即分配最小可用的文件描述符(非负整数)。2.3 文件描述符特点1、 不同程序中的文件描述符互不干涉,互不影响。比如,程序A中有文件描述符0、1、2、3、4…,程序B中也可以有文件描述符0、1、2、...原创 2020-02-27 10:10:19 · 135 阅读 · 1 评论 -
Linux I/O之标准I/O
1 I/0操作分类标准I/O和文件I/O;2 I/O操作的对象文件3 文件的属性文件类型;文件名称;文件路径。4 文件类型常规文件 r;目录文件 d;字符设备文件 c;块设备文件 b;管道文件 p;套接字文件 s;符号链接文件 l;5 标准I/O5.1 定义标准I/O中的标准就是C语言标准(ANSI C),标准I/O就是C语言标准I/O库中定义的输入输出函数(API...原创 2020-02-03 00:09:26 · 210 阅读 · 0 评论 -
设备树之简介2
一、设备树镜像文件烧写1、烧写工具:fastboot;2、烧写前提:将开发板上的老uboot镜像文件更换为支持设备树的新uboot镜像文件;3、烧录过程/命令:3.1、用fastboot工具,烧录支持设备树的uboot镜像文件:fastboot.exe flash bootloader u-boot-iTOP-4412.bin;3.2、用fastboot工具,烧录支持设备树的内核镜像文件...原创 2020-01-28 23:47:15 · 341 阅读 · 0 评论 -
设备树之简介1
一、引入设备树的原因 Linux驱动开发引入设备树的原因:节省空间;安全可靠;简单化。二、学习设备树的基础 以平台文件的方式注册设备驱动。三、设备树开发环境 1、PC机环境:Ubuntu; 2、设备树编译器:如gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz; 3、设备树源码:如itop4412_kerne...原创 2020-01-28 22:12:46 · 210 阅读 · 0 评论 -
Linux内核目录结构
arch目录arch目录是平台目录。内核支持的所有CPU架构,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别控制系统引导,内存管理,系统调用。还有动态调频,主频率设置部分等。...原创 2020-01-18 15:24:04 · 420 阅读 · 0 评论 -
裸机嵌入式开发和操作系统嵌入式开发
一、开发过程的不同1、裸机开发原理图→芯片数据手册→内存物理地址;2、带操作系统的开发原理图→芯片数据手册→内存物理地址→内存虚拟地址。二、硬件组成不同跑操作系统的MCU要比跑裸机的MCU多两个硬件设备:高速缓冲(CACHE)和内存管理单元(MMU)。三、高速缓冲(CACHE)1、就运行速度快慢而言,处理器自己运算的速度最快,其次是处理器访问自身寄存器的速度,再次是高速缓冲的运行...原创 2020-01-18 14:48:45 · 4433 阅读 · 0 评论 -
驱动与uboot、内核、文件系统的关系
一、驱动是“嵌在”内核中;应用程序是“嵌在”系统文件中。二、Linux设备驱动的作用1、对上:Linux设备驱动要给上层系统文件的应用程序提供函数调用的接口;2、对中:Linux设备驱动要注册到Linux内核中(或挂载到总线);3、对下:Linux设备驱动要操作硬件(GPIO、PWM、网卡、硬盘等)三、学习驱动其实就是学习接口函数。...原创 2020-01-18 10:09:53 · 1678 阅读 · 0 评论 -
Linux操作系统烧录流程
原创 2020-01-16 19:08:16 · 1766 阅读 · 0 评论 -
Linux文件系统制作与BusyBox工具的关系
一、前提说明 像Ubuntu和Android都是Linux操作系统,其文件系统都有各自的发行公司制作(Ubuntu由Canonical Group Ltd开发,Android由Google Inc开发),使用者使用时直接从相应官网下载即可,不需要参与制作文件系统。但是在嵌入式领域,工程师往往需要根据项目需求自己制作最小Linux系统或定制特殊Linux文件系统,这是就需要BusyBox工具了。...原创 2020-01-16 17:44:55 · 531 阅读 · 0 评论 -
Linux内核源码的裁剪与配置
Linux内核源码裁剪与配置系统由以下三个部分组成:一、Makefile文件分布在Linux内核源码中的Makefile文件定义了Linux内核的编译规则。二、Kconfig文件Kconfig文件提供Linux内核的各种功能,以供用户裁剪和配置,最总得到想要的Linux内核源码配置文件.config。Kconfig文件与配置工具menuconfig的关系如下图。三、配置工具1、文本类...原创 2020-01-16 17:08:07 · 802 阅读 · 0 评论 -
Linux体系结构与Linux内核结构
说法一Linux内核组成:进程调度(SCHED);内存管理(MM);虚拟文件系统(VFS);网络接口(NET);进程间通信(IPC)。说法二:inux内核组件:系统调用接口(SCI);进程管理(PM);内存管理(MM);虚拟文件系统(VFS);网络堆栈(NS);设备驱动程序(DD)硬件架构相关代码(Arch)。...原创 2020-01-16 16:38:40 · 587 阅读 · 0 评论 -
uboot、Linux内核(kernel)和文件系统(System)的编译
一、前提说明1、Andriod 、Ubuntu、最小Linux系统、QT、QTE等都属于类Linux操作系统,它们其实都由uboot、kernel和system组成(Andriod 、Ubuntu、最小Linux系统、QT、QTE等最主要的区别都在system上)2、烧录Andriod 、Ubuntu、最小Linux系统、QT、QTE等操作系统时,都是烧录其各自uboot、kernel和sys...原创 2020-01-15 16:48:05 · 1139 阅读 · 0 评论 -
TF卡与SD卡
一、大小区分:SD卡体积为24mm×32mm×2.1mm,如下图。TF卡体积为15mm×11mm×1mm,如下图。二、名称区分:SD卡即Secure Digital Memory Card,中文翻译为安全数码卡。TF卡即T-Flash又称MicroSD,是一种记忆卡。后改称为TransFlash;而重新命名为MicroSD的原因是因为被SD协会(SDA)采立。另一些被SDA采立的记忆卡...原创 2020-01-14 16:14:52 · 1119 阅读 · 0 评论 -
镜像文件
镜像文件镜像,是一种文件形式,可以把许多文件做成一个镜像文件。说到底,镜像就是源代码编译并连接以后生成的可执行文件包,把这些镜像文件烧写到开发板的存储芯片里,开机就可以运行了。...原创 2020-01-14 15:35:13 · 128 阅读 · 0 评论 -
类Linux操作系统组成与烧录
1、类Linux操作系统组成1.1、类Linux操作系统:Android、QT、QTE、Ubuntu、最小Linux操作系统、Debian等;1.2、类Linux操作系统组成:BootLoader(Uboot)、Linux内核(zImage)和文件系统(System);2、类Linux操作系统烧录2.1、类Linux操作系统烧录文件组成:BootLoader(Uboot)、Linux内核(...原创 2020-01-14 14:46:38 · 319 阅读 · 0 评论 -
Windows与Linux的文件系统
一、Windows的文件系统1、NTFS是Windows(Win7、Win10)标准的文件系统。2、Windows支持的文件系统:FAT系列(FAT112、FAT16、FAT32、exFAT)、CDFS(光盘文件系统)、HFS和HFS+(分层文件系统,Apple开发)、RAW(未格式化的文件系统)。二、Linux的文件系统1、ext是Linux标准文件系统,其专门为Linux设计,包括:e...原创 2020-01-14 10:41:29 · 4929 阅读 · 0 评论 -
Linux中文件系统、根文件系统和Shell之间的关系
原创 2020-01-11 16:54:44 · 288 阅读 · 0 评论 -
fdisk -c 1 2700 50 50 命令解析
fdisk -c 1 2700 50 50 命令解析:1、-c表示DOS模式;2、1表示给TF卡分区(如果是0表示给eMMC分区);3、2700 50 50 表示TF卡以ext3格式分3个区,其空间大小分别为2700M、50M、50M,除去2700M、50M、50M TF剩下的空间默认分为fat格式的区(如果TF卡为8GB,那么fat格式的区大小为5.2GB)。欢迎使用Markdown编辑...原创 2020-01-11 16:47:57 · 884 阅读 · 0 评论 -
进程与线程的一个简单解释(阮一峰 宅学部落 )
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背...转载 2019-04-05 21:10:41 · 222 阅读 · 0 评论 -
编译型语言、解释型语言、脚本语言、批处理文件
一、编译型语言 编译型语言,在程序执行之前,需要一个专门的编译链接过程,把程序编译成机器语言文件;比如,exe文件和bin文件。以后运行的话就不用重新编译了,直接使用编译的结果就行了。因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高! 常见的编译型语言有:C、C++、Pascal、Object Pascal和Delphi等。二、解释型语言 解释型语言的程序不需要编...原创 2019-03-28 00:12:11 · 1786 阅读 · 0 评论 -
根文件系统
一、文件系统Linux操作系统的文件系统的意义是,使数据、软件等标准化,减少沟通成本(尤其是在大型项目中)。二、根文件系统定义根文件系统(Root Filesystem)是Linux操作系统运行的第一个文件系统,是存放运行和维护操作系统所必须的工具软件、库文件、脚本、配置文件和其他特殊文件的地方(就像文件仓库),也可以安装各种软件包。三、根文件系统目录结构...原创 2019-04-01 21:11:17 · 166 阅读 · 0 评论