嵌入式linux
文章平均质量分 68
码农老王(JN)
多年嵌入式开发经验,对C、Python、PCIe、Linux、Markdown等有所了解。
展开
-
Ubuntu apt-get常用命令总结
apt-get命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载软件包,也可以用来升级软件包,还可以用来把系统升级到新的版本。本文介绍 apt-get 命令的常见用法,演示环境为 Ubuntu 20.04。原创 2023-06-30 13:54:33 · 1183 阅读 · 0 评论 -
Ubuntu终端最大化的3种方法
Ubuntu 系统下,使用 Ctrl + Alt + T 快捷键唤醒终端时默认大小为 80 列 x 24 行。在某些测试中我们需要更大的窗口,而通过鼠标将窗口最大化太慢了,所以本文介绍了快速实现终端窗口最大化的 3 种方法。原创 2023-06-27 20:08:32 · 5045 阅读 · 0 评论 -
交叉编译时关于头文件和库的那些事儿
本文主要介绍了嵌入式应用程序开发中,与头文件、库文件相关的知识。例如:默认的头文件路径、默认的库文件路径、指定头文件路径、指定库文件路径、编译静态库&动态库。原创 2023-06-15 19:24:34 · 2208 阅读 · 0 评论 -
Linux重要的同步命令_sync
本文从“是什么”、“为什么”、“怎么用”三个角度介绍了 Linux 重要的同步命令 sync。原创 2023-06-05 16:23:59 · 6314 阅读 · 0 评论 -
Linux设备树:删除节点和属性的方法
本文主要介绍了在设备树中删除节点(node)和属性(property)的方法。为了便于理解,笔者先介绍了 dtsi 和 dts 的关系,然后构建了虚拟的需求场景,最终给出示例。原创 2023-05-26 10:37:25 · 2112 阅读 · 0 评论 -
如何获取“上帝”的系统版本
Linux系统下获取版本信息的多种方法原创 2023-04-26 22:03:35 · 781 阅读 · 1 评论 -
可以通用的Linux内核模块Makefile
一种通用的 Makefile 模板,用于 Linux 内核模块编译。原创 2022-01-06 19:35:26 · 1839 阅读 · 0 评论 -
玩转STM32MP1:Windows 与 Ubuntu 互传文件
最近买了一块正点原子的STM32MP157开发板,记录一下学习过程。今天总结一下 Window 与 Ubuntu 互传文件的方法。在嵌入式开发中,通常会使用 Ubuntu 和 Windows 双系统联合开发的方式。Windows 系统用于编写代码,Ubuntu 系统用于代码编译。因此,在 Windows 和 Ubuntu 之间搭建文件传输通道是不可避免的。今天,我就来总结一下 FTP 文件传输通道的搭建方式。1. Ubuntu 18.04 系统搭建 FTP 服务首先,在 Ubuntu中安.原创 2021-09-03 21:52:47 · 409 阅读 · 0 评论 -
从 51 到 I.MX6ULL,为什么芯片GPIO操作变得这么复杂
最近在给 I.MX6ULL 写代码的时候,我脑子里突然冒出几个问题:以前的51单片机操作 GPIO 那么简单,为什么现在变得这么复杂?作为芯片的设计人员,他们将这种流程复杂化的原因是什么?今天,我们就尝试着开开脑洞,为这些问题想一个答案。需要说明的是,本篇文章只是个人的一些不成熟想法,并不是严谨的科学论断,有错误的地方,欢迎大家留言讨论。51单片机 GPIO 操作步骤51 单片机的GPIO控制,只需要配置一个GPIO寄存器。GPIO 输出如果要在 51 单片机的某个引脚输出高电平或低电平,直接将原创 2021-08-29 13:50:33 · 450 阅读 · 0 评论 -
[Docker]在Ubuntu容器中创建sudo用户
使用docker的ubuntu18.04镜像创建容器后,直接就是root用户,用起来不太习惯。为了打造桌面版ubuntu的使用体验,决定手动添加sudo用户。首先,进入容器。第二,执行命令,安装sudoapt-get update -y && apt-get clean allapt-get install -y sudoecho "%sudo ALL=(ALL:ALL) ALL" >> /etc/sudoersecho "%sudo ALL=(ALL)原创 2020-11-18 21:39:12 · 4621 阅读 · 0 评论 -
asm/bitsperlong.h: No such file or directory
linux@linux-virtual-machine:~/Desktop/w13_x86_EP$ makemake -C /lib/modules/5.4.0-70-generic/build M=/home/linux/Desktop/w13_x86_EPmake[1]: Entering directory '/usr/src/linux-headers-5.4.0-70-generic' AR /home/linux/Desktop/w13_x86_EP/built-in.a原创 2021-04-26 10:30:32 · 2478 阅读 · 0 评论 -
VMware NAT 模式配置端口映射
最近在开发过程中遇到这么一个场景:老王只有一台 Windows 操作系统的台式机,要对一款嵌入式 Linux 的产品进行开发与调试,需要在 Ubuntu 系统下进行软件编译。由于公司的网络资源紧张,一个员工只分配一个固定的 IP 地址,但是要调试的嵌入式 Linux 产品是预留了一个 IP 地址的。为了提升调试效率,嵌入式 Linux 的这款产品需要用 NFS 服务直接挂载 Ubuntu 系统的指定目录,从而避免在宿主机与嵌入式设备之间进行大量的文件拷贝。针对场景的三个要求,选择实现方案如下:原创 2021-03-13 12:16:57 · 1392 阅读 · 0 评论 -
VMware 虚拟机的三种网络连接方式
VMware 的虚拟机有三种网络连接方式,分别是桥接(Bridged)模式、NAT 模式和仅主机(Host-only)模式。在安装 VMware 之后,宿主机上会出现几个相关的虚拟设备,每个设备的功能如下:VMnet0:桥接(Bridge)模式下的虚拟交换机。VMnet1:仅主机(Host-only)模式下的虚拟交换机。VMnet8:NAT 模式下的虚拟交换机。VMware Network Adapter VMnet1:宿主机与 Host-only 虚拟网络进行通信的虚拟网卡。VMware N原创 2021-03-13 11:13:42 · 9356 阅读 · 0 评论 -
Ubuntu 18.04 固定 NFS 端口
NFS 本身是没有提供信息传输的协议和功能的,它使用的是 RPC (Remote Procedure Call)协议。通过rpcinfo命令可以查看 NFS 相关的端口:linux@linux-virtual-machine:~$ rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapp原创 2021-03-12 18:09:48 · 2460 阅读 · 2 评论 -
Framebuffer应用编程
Framebuffer应用编程在Linux系统中通过Framebuffer驱动程序来控制LCD。Framebuffer驱动程序会在内存中申请一段空间,称为Framebuffer,里面保存着一帧图像。LCD控制器会周而复始的取出Framebuffer中的值发送给LCD,从而显示出对应的图像。LCD屏幕是由一个个的像素点组成的。我们通常说的分辨率,就是表示屏幕横向和纵向的像素点的个数。例如,某款LCD的分辨率为1024 * 768,这就表示屏幕的一行包含1024个像素点,一列包含768个像素点。在Fr原创 2021-03-06 13:35:50 · 598 阅读 · 0 评论 -
Linux系统调用怎么调用到内核态函数的
Linux系统调用怎么调用到内核态函数的用户态应用程序App在编写代码时,使用open/read/write等系统调用进行文件操作。系统调用向下调用glibc库中与open/read/write相关的接口函数。无论是App还是glibc都是出于Linux用户态,怎么切换到Linux内核态呢?对于32位ARM处理器,需要使用swi指令;对于64位ARM处理器,需要svc指令。在切换到内核态后,内核怎么知道你是从glibc的open接口进来的还是从glibc的read接口进来的呢?这就需要在切换时原创 2021-03-04 20:01:11 · 1306 阅读 · 1 评论 -
Linux文件系统与设备驱动
宋宝华,《Linux设备驱动开发详解:基于最新的Linux4.0内核》,第5章,Linux文件系统与设备文件从上图中可以看出,我们可以得出如下结论:用户的应用程序通过系统调用来访问VFS(虚拟文件系统)。VFS(虚拟文件系统)通过file_operations数据结构的成员函数来与它下层的文件系统、设备文件进行交互。file_operations数据结构的成员函数包含对文件的打开、关闭、读写、控制等功能。对于字符设备,它的上层并没有类似于硬盘的ext2等文件系统,字符设备驱动.原创 2021-03-04 16:41:28 · 522 阅读 · 1 评论 -
Win 10系统怎么确认是否打开了虚拟化
右键点击屏幕下方的任务栏。点击选择任务管理器。在弹出的任务管理器窗口中选择性能选项卡。查看虚拟化是否启用。原创 2021-03-01 13:52:35 · 2932 阅读 · 0 评论 -
haneWIN搭建Win10 NFS服务器
haneWIN搭建Win10 NFS服务器文章目录haneWIN搭建Win10 NFS服务器1. 背景2. 工具:haneWIN2.1 软件运行与配置2.2 防火墙配置3. 挂载1. 背景之前一直用VMware虚拟机或者Docker容器进行嵌入式Linux学习,最近想试试Win10的Linux子系统WSL2。相较于虚拟机和Docker容器来说,WSL2应该还是有不少坑的,不过在最近的实践中,搭建百问网的IMX6ULL开发板编译环境算是比较顺利,u-boot和kernel都能顺利编译、运行。驱动开发过原创 2020-11-21 16:11:38 · 29033 阅读 · 5 评论 -
Linux内核模块Demo
简单的Linux内核模块示例文章目录简单的Linux内核模块示例1. 思路2. 源代码3. Makefile1. 思路要实现一个内核模块,要考虑以下几个方面:头文件模块入口模块出口模块加载时是否需要传参模块许可协议声明,需要遵循GPL协议模块作者声明,告诉别人发现bug时该联系谁模块描述,简要叙述这个模块是干什么的模块版本,版本号对于软件的迭代更新是非常重要的2. 源代码/*** hello_module.c** 该文件是linux内核模块的简单示例代码,** 目的原创 2020-07-14 23:39:54 · 609 阅读 · 0 评论 -
嵌入式linux开发环境搭建(Docker版,基于iTop 4412开发板)
嵌入式linux开发环境搭建(Docker版,基于iTop 4412开发板)文章目录嵌入式linux开发环境搭建(Docker版,基于iTop 4412开发板)-1. 前言0. 环境1. 需求分析2. 基本服务搭建2.1 镜像2.2 volume2.3 容器2.4 软件源更新2.5 vim安装2.6 net-tools安装2.7 ssh-server搭建2.8 nfs-server搭建2.9 创建服务开启脚本3. 嵌入式编译环境搭建(基于iTop 4412)3.1 Filezilla拷贝文件3.1 交叉编原创 2020-07-14 19:09:46 · 4895 阅读 · 0 评论 -
嵌入式设备NFS挂载目录(基于iTop 4412)
嵌入式设备NFS挂载目录文章目录嵌入式设备NFS挂载目录1. 背景2. 工作量分析3. 上位机搭建NFS Server3.1 上位机环境3.2 创建目录3.3 安装配置NFS Server服务4. 嵌入式设备配置4.1 Linux内核添加NFS支持4.2 嵌入式设备挂载目录1. 背景嵌入式Linux开发中,提到NFS,一般都是NFS整个文件系统,有时候觉得没啥必要。板子上已经有文件系统了,直接NFS挂载单个目录不也是很香吗。所以,需求就是:嵌入式操作系统挂载本地文件系统后,通过NFS挂载上位机指定目录原创 2020-07-03 12:12:36 · 864 阅读 · 0 评论 -
pci_enable_device()与pci_enable_device_mem()区别
pci_enable_device()与pci_enable_device_mem()区别文章目录pci_enable_device()与pci_enable_device_mem()区别1. pci_enable_device()源码2. pci_enable_device_mem()源码3. 区别1. pci_enable_device()源码/** * pci_enable_device - Initialize device before it's used by a driver. *原创 2020-06-16 19:55:21 · 4336 阅读 · 1 评论 -
QEMU imx6ul开发板环境搭建
QEMU imx6ul开发板环境搭建文章目录QEMU imx6ul开发板环境搭建0. 前言1. 基本环境2. 安装KVM3. 下载开发板的QEMU镜像文件4. 运行QEMU系统4.1 安装SDL环境4.2 运行带GUI的imx6ul模拟器4.3 运行不带GUI的imx6ul模拟器5. 编译修改Linux内核5.1 下载内核源码5.2 编译源码5.2.1 配置编译环境(非永久性配置)5.2.2 编译内核0. 前言最近在基于韦东山老师的imx6ul开发板学习嵌入式linux内容,在此记录一下自己的操作步骤原创 2020-05-26 15:51:21 · 4757 阅读 · 3 评论 -
make mrproper与make clean的区别
原文链接:https://blog.csdn.net/gchww/article/details/7407790 首先,这两个命令都是用于删除编译内核时产生的相关文件的。两者的区别如下:make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。make clean命令则是用于删除大多数的编译转载 2020-05-26 11:42:39 · 598 阅读 · 0 评论 -
Ubuntu18.04安装Google Chrome方法
安装步骤很简单,依次执行以下命令:$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb$ sudo apt-get -f install$ sudo dpkg -i google-chrome-stable_current_amd64.deb安装完成之后,输入命令打开浏览器:$ google-chrome-stable...原创 2020-05-14 19:58:56 · 3429 阅读 · 1 评论 -
ubuntu 64bit支持32bit交叉编译工具链
1. 问题简介最近在ubuntu 18.04 64位系统上搭建iTop4412的开发环境,将交叉编译工具链解压的指定位置并修改系统PATH变量后,运行arm-none-linux-gnueabi-gcc -v还是一直提示No Such File or Directory,直接在文件所在目录运行./arm-none-linux-gnueabi-gcc -v也是报一样的错误,所有文件都有可执行权限,...原创 2020-04-23 10:32:07 · 2843 阅读 · 0 评论 -
Ubuntu18.04更换国内源
使用ubuntu官网的源比较慢,记录一下更换成国内软件源的步骤。备份当前源配置文件sudo mv /etc/apt/sources.list /etc/apt/sourses.list.backup创建新的源配置文件vi /etc/apt/sources.list添加阿里云软件源信息,保存配置文件#阿里云源deb http://mirrors.aliyun.com/u...原创 2020-04-23 10:19:03 · 494 阅读 · 0 评论