嵌入式linux
文章平均质量分 78
稚肩
前世界五百强嵌入式软件工程师,通信领域在读硕士,兴趣:Linux底层驱动开发、音视频开发、网络安全等
展开
-
vivado新版本兼容老版本,vitis classic兼容sdk教程
我们在ps_hello.sdk的文件夹找到src的源码文件夹,复制带建立的ps_hello.vitis文件夹目录下即可。回到vitis classic,点击XSA,点击browse,选择刚刚导出的XSA文件。选择存放在工程文件夹路径,点击next,最后点击finsh,等待生成。点击creat Application Project,点击next。选择硬件的XSA工程文件,这个可以从vivado生成。点击Yes,合并当前的目录架构。勾选要升级的IP核,点击升级。输入工程名点击next。原创 2024-05-10 21:49:44 · 1031 阅读 · 0 评论 -
linux的并发和竞争处理(最全)
在 Linux 系统中,处理并发和竞争的问题是非常重要的,特别是在多线程编程和多进程编程中。原创 2024-02-21 10:40:28 · 964 阅读 · 0 评论 -
ARM汇编基础
介绍ARM汇编的基础知识原创 2024-02-21 10:12:57 · 1093 阅读 · 0 评论 -
常见的实时操作系统(RTOS)和主要特点
适用场景:Windows Embedded Compact广泛应用于嵌入式系统、自动化设备、移动设备、医疗设备等领域,尤其适合需要Windows环境的实时应用。适用场景:RTOS被广泛应用于工业控制、实时数据采集、嵌入式系统、自动化设备、网络设备等领域,尤其是对实时性能和可靠性要求较高的场景。特点:ThreadX是一款小型、快速的实时操作系统,具有小内核、低功耗、高性能等特点。适用场景:QNX广泛应用于汽车信息娱乐系统、工业自动化、医疗设备、航空航天、铁路信号系统等对安全性和可靠性要求较高的领域。原创 2024-02-20 23:37:08 · 975 阅读 · 0 评论 -
嵌入式linux开发之LAN8720A网络驱动
I.MX6ULL 内核集成了两个 10/100Mbit/S 的网络 MAC,符合 IEEE802.3-2002 标准,MAC层支持双工、半双工局域网。在编写驱动的时候其实并不需要关注 ENET外设的具体内容,因为这部分驱动是 SOC 厂商编写的,重点关注的是更换 PHY 芯片以后需要调整的地方。PHY 芯片寄存器地址空间为 5 位,地址 0-31 共 32 个寄存器,IEEE 定义了 0-15 这 16 个寄存器的功能,16~31 这 16 个寄存器由厂商自行实现。原创 2024-02-20 23:24:58 · 1208 阅读 · 0 评论 -
用户空间与内核通信(二)
介绍了系统调用(System Call),内核模块参数和sysfs,sysctl函数方式进行用户空间和内核空间的访问。本章节我将介绍使用netlink套接字和proc文件系统实现用户空间对内核空间的访问。原创 2024-02-19 22:29:44 · 568 阅读 · 0 评论 -
用户空间与内核通信(一)
在Linux中,内核空间与用户空间是操作系统中的两个主要部分,它们有着明显的区别和不同的功能。原创 2024-02-19 22:18:59 · 1085 阅读 · 0 评论 -
docker简介
Docker是一种用于开发、交付和运行应用程序的开放平台,通过使用容器技术,可以更加高效地打包和部署应用程序。容器化技术: Docker使用容器化技术,允许开发人员将应用程序和其依赖项打包到一个称为容器的轻量级、可移植的环境中。容器提供了一种隔离的执行环境,使应用程序可以在任何环境中以相同的方式运行,无论是开发、测试还是生产环境。镜像: Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。镜像可以用来创建容器实例。原创 2024-02-19 15:31:46 · 1118 阅读 · 0 评论 -
Linux-RT特点与简单应用
Linux-RT是指Linux Real-Time(实时)的简称,它是针对实时性能优化的Linux内核版本。传统的Linux内核并不是专为实时性设计的,因此在一些对实时性要求较高的应用场景下,可能无法满足实时性要求。Linux-RT通过对Linux内核进行调整和优化,以提供更可预测、更低延迟的实时性能。Linux-RT的主要特点和优势包括:实时性能: Linux-RT对内核进行了调整和优化,使其具有更可预测、更低延迟的实时性能。原创 2024-02-19 13:42:03 · 1688 阅读 · 0 评论 -
嵌入式调试工具之GDB
在单片机开发中,我们可以通过集成式的IDE 来进行调试,比如 MDK、IAR 等。GDB 工具是 GNU 项目调试器,基于命令行使用。和其他的调试器一样,可使用 GDB工具单步运行程序、单步执行、跳入/跳出函数、设置断点、查看变量等等,它是 UNIX/LINUX 操作系统下强大的程序调试工具。GDB 支持多种语言,包括 Ada、汇编、C/C++、D、Fortran、GO、Objective-C、OpenCL、Modula-2、Pascal 和 Rust。原创 2024-02-18 22:46:49 · 491 阅读 · 0 评论 -
嵌入式开发之SQLite数据库
SQLite是一种轻量级的嵌入式关系型数据库管理系统(RDBMS),它是一个开源项目,实现了自包含、零配置、无服务器的特性。原创 2024-02-18 22:16:58 · 1245 阅读 · 0 评论 -
嵌入式linux开发之阻塞IO
在Linux中,阻塞IO(Input/Output)是一种同步I/O模型,当进程进行I/O操作时,如果数据没有准备好或者缓冲区没有空间,进程会进入睡眠状态,直到数据准备好或缓冲区有空间为止。这种模型下,进程会一直等待I/O操作完成,期间不会执行其他任务。阻塞IO是最通用的I/O类型,所有套接字默认情况下都是阻塞的。在阻塞IO模型中,输入操作如read、readv、recv、recvfrom和recvmsg等,如果缓冲区没有数据可读,该进程会进入睡眠状态,直到有数据可读时才被唤醒。原创 2024-02-17 18:28:40 · 324 阅读 · 0 评论 -
嵌入式linux驱动开发篇之设备树
设备树(Device Tree)是一种用于描述嵌入式系统硬件组件及其连接关系的数据结构。它被广泛用于嵌入式 Linux 系统,尤其是针对使用多种不同架构和平台的嵌入式系统。它是一种与硬件描述相关的中间表示形式,将硬件信息抽象成一种可移植的格式,使得操作系统和引导加载程序能够在不同的硬件平台上运行,而无需硬编码特定的硬件配置信息。树状结构:设备树是一个层次结构,由节点和属性组成。节点可以有子节点,形成树状结构。原创 2024-02-17 17:57:45 · 1278 阅读 · 0 评论 -
配置ARM交叉编译工具的通用步骤
例如,如果你下载的是arm-linux-gnueabi-5.4.0.tar.xz,你可以使用xz --decompress arm-linux-gnueabi-5.4.0.tar.xz命令来解压。其中,<具体交叉编译器前缀>是具体的交叉编译器工具链的前缀,例如arm-linux-gnueabi-。1.安装ARM交叉编译器工具链:ARM交叉编译器工具链是专门用于ARM架构的编译器。因此,在实际操作时,最好参考你所使用的工具链的官方文档或相关教程,以确保正确配置和使用ARM交叉编译工具。原创 2024-02-09 12:11:02 · 946 阅读 · 0 评论 -
linux下的多线程通信
在Linux下,多线程通信主要涉及共享内存和线程间同步。因为Linux的线程库(POSIX线程库,或称为pthreads)允许线程共享进程的地址空间,所以线程间可以直接读写共享的内存区域来实现通信。然而,由于多个线程可能同时访问和修改共享数据,因此需要使用同步机制来避免数据竞争和不一致。原创 2024-02-08 23:38:35 · 698 阅读 · 0 评论 -
linux下的多进程通信
在Linux下,多进程通信(Inter-Process Communication, IPC)是操作系统提供的一种机制,允许不同的进程之间交换数据或同步操作。Linux提供了多种IPC机制,每种机制都有其特定的使用场景和优缺点。原创 2024-02-08 13:52:05 · 293 阅读 · 0 评论 -
OpenSSL库,SSL协议,TLS协议
OpenSSL是一个强大的安全套接字层密码库,包含主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。OpenSSL由两个主要组件组成:OpenSSL库和OpenSSL工具。OpenSSL库是一个软件开发包(SDK),包含了SSL协议、各种加密算法、数字签名以及相关的应用程序。它提供了一套丰富的函数接口,使得开发者能够在自己的应用程序中方便地实现SSL加密通信、数字签名、数据压缩等功能。原创 2024-02-08 13:50:18 · 949 阅读 · 0 评论 -
数据库简介
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。同时,数据库也是一个按数据结构来存储和管理数据的计算机软件系统,其内部包含保管数据的“仓库”以及管理数据的方法和技术。原创 2024-02-07 22:02:12 · 374 阅读 · 0 评论 -
linux编程常见的锁(互斥锁、读写锁、自旋锁等)
在Linux编程中,常见的锁(Lock)机制用于保护共享资源,防止多个线程或进程同时访问同一资源,从而导致数据不一致或其他问题。原创 2024-02-07 10:35:29 · 468 阅读 · 0 评论 -
嵌入式linux同步原理详解与实现思路
互斥锁是最简单的同步机制之一,用于确保在任何时候只有一个线程可以访问某个特定的资源或代码段。当一个线程需要访问受保护的资源时,它会尝试获取互斥锁。如果锁已经被其他线程持有,则该线程会被阻塞,直到锁被释放。这种机制可以防止多个线程同时修改共享资源,从而避免数据不一致的问题。/*在这个例子中,我们有两个线程:一个用于增加共享资源,另一个用于减少共享资源。共享资源是一个整数shared_resource,初始值为0。原创 2024-02-07 10:34:47 · 834 阅读 · 0 评论 -
Linux和FreeRTOS的主要区别
Linux和FreeRTOS的主要区别体现在设计目标、应用场景、特性以及复杂性等方面。Linux是一款开源的、基于UNIX的操作系统内核,它旨在为用户提供一款可供免费使用的类UNIX操作系统。Linux是一个完整的操作系统内核,可以运行在桌面、服务器、移动设备等多种平台上,支持多用户、多任务、多线程以及分时和实时处理等功能。它拥有丰富的功能,包括GUI、驱动框架、shell等,并允许用户方便地使用电脑和计算机资源。而FreeRTOS是一款实时操作系统内核,主要用于嵌入式系统和实时系统。原创 2024-02-06 17:05:08 · 1685 阅读 · 0 评论 -
linux应用编程开发常见问题和处理思路
当然,在实际的生产环境中,还需要考虑更多的细节,如错误处理、资源管理、协议实现等。事件驱动:使用事件驱动的非阻塞IO模型,如select/poll/epoll/kqueue等,可以减少线程数目和上下文切换的开销,同时能够处理大量并发连接。其他并发模型:如Go语言中的Goroutines,Erlang语言中的Actor模型等,都是设计上为并发而生,能够实现高性能的并发处理。协程:协程是一种用户态的轻量级线程,可以在用户空间进行上下文切换,拥有极低的切换成本,并能够在单线程内实现高并发。原创 2024-02-06 15:22:39 · 699 阅读 · 0 评论 -
嵌入式linux驱动开发之网络设备驱动
Linux网络设备驱动是Linux内核中的一个重要组成部分,它负责网络设备的底层数据传输和设备控制。与字符设备驱动和块设备驱动相比,网络设备驱动的特点和功能如下:首先,网络设备驱动不再是对文件进行操作,而是通过网络接口struct net_device来实现。这个接口为网络设备提供了统一的数据结构和操作接口,使得不同的硬件可以在软件层次上实现统一。应用程序不能直接访问网络驱动程序,只能通过网络子系统与它交互。原创 2024-02-06 14:51:29 · 776 阅读 · 0 评论 -
MQTT在linux下服务端和客户端的应用
MQTT(Message Queuing Telemetry Transport)是一种轻量级、开放标准的消息传输协议,设计用于受限设备和低带宽、不稳定网络的通信。原创 2024-02-04 18:36:48 · 986 阅读 · 0 评论 -
linux驱动之字符设备驱动框架
在字符设备驱动的源代码中,需要包含一些必要的头文件,例如 , , 等。定义一些模块参数,以便在加载模块时进行配置。这可以通过 module_param 宏来完成。原创 2024-02-01 11:31:16 · 265 阅读 · 0 评论 -
嵌入式linux移植篇之根文件系统(rootfs)
根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。单独的 Linux 内核是没法正常工作的,必须要搭配根文件系统。原创 2024-02-04 18:15:17 · 875 阅读 · 0 评论 -
嵌入式linux移植篇之kernel
Linux内核的启动过程是一个复杂而又有序的流程,涉及到硬件初始化、引导加载、内核初始化等多个步骤。以下是Linux内核的典型启动流程:BIOS/UEFI阶段:电源启动:计算机通电后,BIOS(基本输入/输出系统)或UEFI(统一扩展固件接口)开始执行。POST(电源自检):进行硬件自检,检查系统中的硬件设备是否正常。引导加载程序阶段:MBR/UEFI固件:BIOS通过Master Boot Record(MBR)或UEFI固件加载引导加载程序(Boot Loader)。原创 2024-02-04 12:16:50 · 1190 阅读 · 0 评论 -
嵌入式linux移植篇之Uboot
本文主要介绍了uboot的基本概念,目录架构,层次结构、启动流程以及uboot的移植步骤原创 2024-02-04 11:22:05 · 654 阅读 · 0 评论