正点原子阿尔法开发板直接连电脑-PC、开发板、虚拟机都能联接外网

🤵前言 首先需要明确的是在u-boot模式下,进行网络操作,开发板可以ping通其他设备,但是其他设备ping不通开发板,属于正常,因为u-boot本身是一个非常精简的系统,网络功能不完善,经过测试确实ping不通,但是进入到linux之后能正常ping通。 我使用的虚拟机是WSL2,网络模式是镜像的PC网络。vmware很多操作也是类比着做即可,网上有丰富的资料。 **开发板可以直连路由器并且网络较好的话,还是推荐直接连接到路由器上。**我是因为实验室的路由器太烂了,每次网络启动linux下载半天,才想直连PC的。 🛜网络分享方式 windows网络分享有两种方式:一种是桥接,一种是网络共享; **1. 桥接模式:**经过测试,桥接模式下,所有的设备都在同一局域网下,比如你PC连接的路由器获取的地址是192.168.3.12,那么你的开发板、电脑和虚拟机(WSL2网络模式开的镜像模式)将全部在这个IP地址下。主机和虚拟机能正常上网,但是开发板不能上网。这样缺点很明显,所有设备公用一个IP,容易分不清,并且容易冲突。 **2. 网络共享(推荐):**这种模式可以实现所有需要的功能,相当于在电脑下又划分了一个局域网,可以很好的隔离设备之间的网络,并且全部设备都能联网。我的开发板ip是192.168.137.87,它不仅能ping通主机新生成局域网段的192.168.137.x,还能ping通PC从路由器分配的192.168.3.x。相对来说比较完美。 备注:我在uboot设置的是192.168.137.x网段的地址,因为我就是因为路由器容易卡顿,我才用的开发板直连PC,所以不经过路由器这样下载速度也更快。 uboot设置: setenv ipaddr 192.168.137.2 setenv ethaddr b8:ae:1d:01:00:00 setenv gatewayip 192.168.137.1 setenv netmask 255.255.255.0 setenv serverip 192.168.137.1 setenv dnsip 192.168.137.1 参考博客: 桥接模式和网络共享的区别和设置方法参考:windows下使用桥接模式或者网络共享给另一台设备提供上网功能_一台电脑桥接另一台上网-CSDN博客 使用vmware虚拟机的设置方法参考(没具体测试过):开发板通过网线和电脑直连,ping通的网络设置_开发板为什么不能直连-CSDN博客、windows、虚拟机下的ubuntu、开发板即能ping通,又能上网的设置方法_vmware+ubuntu+win10笔记本实现笔记本连接wifi且ubuntu既可以上网又能连接开-CSDN博客

十二月 18, 2025 · 1 分钟 · 33 字 · Me

Linux驱动开发之摄像头驱动学习笔记

首先先记录几个重要文件 drivers/media/platform/mxc/subdev/mx6s_capture.c:v4l2的函数,CSI控制器相关寄存器的初始化就在那里,新版内核的放到了drivers/media/platform/mxc/capture/mx6s_capture.c下面 drivers/media/platform/mxc/subdev/ov5640.c:是具体的摄像头的初始化代码,就是通过i2c的,旧版本内核在drivers/media/platform/mxc/capture下页还有一个这个文件,暂时不太懂有什么区别,在新版本内核中,只在capture目录下有了

十二月 16, 2025 · 1 分钟 · 3 字 · Me

Linux驱动开发之eLCDIF驱动学习笔记

寄存器上中的比如LCDIF_CTRL是真正用来配置的,而LCDIF_CTRL_SET是将前面这个寄存器都设置为1,LCDIF_CTRL_CLR是都设置为0,LCDIF_CTRL_TOG是将所有的位反转 IMX6ULL参考手册中相应的章节目录出现了LCDIF_CTRLn、LCDIF_CTRL1n、LCDIF_CTRL2n是,但实际没有n对应的实际的寄存器,不用管,以实际内容为准即可

十二月 9, 2025 · 1 分钟 · 2 字 · Me

Linux驱动开发之以太网驱动学习笔记

以太网又MAC和PHY两层组成,其中MAC一般集成在SOC内部,而PHY层需要外接芯片

十二月 7, 2025 · 1 分钟 · 1 字 · Me

IMX6ULL音频学习笔记

暂时笔记: 与其他外设是控制器驱动+设备驱动的组合不同,音频驱动有三层,分别是: 层级 对应音频驱动 作用 Codec 层 wm8960.c 描述这个“音频芯片”的功能(相当于买来的音响设备) Platform/CPU DAI 层 fsl_sai.c 描述 SoC 内部的音频接口(相当于房子里的电路/插座) Machine 层 imx-wm8960.c 描述这个“房子”里电路和音响是怎么连的 这些是音频相关独有的,详细的还需要继续学习

十二月 7, 2025 · 1 分钟 · 21 字 · Me

IMX6ULL主频和时钟配置

写在前面: 芯片的主频和一些时钟配置,在启动的时候,通过BootROM 阶段已经进行了初始化,也处于能用的状态,可以直接使能(CCGRx)相应的外设直接进行使用。本文对于主频和时钟的配置是修改BootROM阶段默认的初始化频率。 主要参考正点原子《驱动开发指南》第十六章 注意点 时钟树中的几个看不太懂的点,经过查资料后的自我理解 如下图,正点原子16.1.6说还需要初始化AHB、 IPG和 PERCLK根时钟设置,也就是图中虚线框中的CLK_ROOT,有一些疑问 **问:**为什么要初始化虚线框中的这几个,而不是其他的? **答:**首先要明确一点,不初始化这几个CLK_ROOT,理论上应该也是可以的(还没实验,但看野火的教程里面并没有初始化),因为可以使用默认设置。之所以要初始化这几个根时钟,是因为这几个好像是系统总线相关的,并且从《IMX6ULL参考手册》18.4 System Clocks章节的表格可以看出,各个模块的根时钟很多都依赖这几个根时钟,所以相对来说是比较重要的根时钟。 **问:**图中实线框中的是什么表示什么意思? **答:**看这个样子像是表示一个范围,也就是说外设太多表示不过来采用的这种表示方法。但我找了好久确实没找到相应的这个范围内的外设。最后研究得到的就是确实表示的是很多外设,具体是哪些外设暂时只能参考《IMX6ULL参考手册》18.4 System Clocks章节的表格。不必太纠结,只需要知道这是表示很多外设即可。 后面有什么再补充

十二月 6, 2025 · 1 分钟 · 18 字 · Me

windows11资源管理器桌面文件夹从中文“桌面”变为应为“Desktop”的恢复方法

管理员打开命令行,执行命令: attrib +R "%UserProFile%\Desktop" 原文链接:https://learn.microsoft.com/zh-cn/answers/questions/2823684/desktop?forum=windows-all&referrer=answers

十一月 23, 2025 · 1 分钟 · 5 字 · Me

sguardsvc64.exe(Anti-Cheat Expert)驱动不兼容导致无法开启“内核模式硬件强制堆栈保护”或“内存完整性”

windows安全感中心,有时候会提示无法开启“内核模式硬件强制堆栈保护”或“内存完整性”。打开详情会显示sguardsvc64.exe的原因,这个其实是腾讯反作弊系统相关的文件。大概率你是一个腾讯游戏玩家。 刚开始网上搜索如何解决这个问题,解决方案五花八门,并且较为复杂,其实很简单。只需要先删除windows服务中的“AntiCheatExpert Service”这个服务即可。 步骤: (以管理员权限)打开cmd 输入命令sc delete “AntiCheatExpert Service” 然后重新扫描,就可以开启了,开启之后,再玩腾讯游戏,也会自动再安装AntiCheatExpert Service这个服务,但是windows安全中心的功能还是正常开启的。 虽然不知道底层原理,但是也是一个简单的解决方案。

十一月 22, 2025 · 1 分钟 · 12 字 · Me

linux内核学习杂项

为什么x86编译出来的镜像时bzImage,而arm编译出来是zImage bzImage:叫“Big zImage”,通过 bootsect + setup + compressed kernel 分段加载到高内存(high memory),通过之前对x86启动流程分析,启动前确实还需要做很多boot相关的工作。 zImage:启动模式简单,没有x86前面的部分,所以只有zImage。 2. 为什么x86下不需要指定dts,而arm下需要指定dts?(在qemu模拟器下,但是在arm开发板下也确实需要单独编译一个dts文件) x86:大部分 x86 硬件可以自动发现,原因是:有标准总线(PCI, ISA, ACPI),BIOS/UEFI 会把硬件信息写到 ACPI 表或 MP 表,Linux x86 内核启动时,可以通过 扫描 PCI/ACPI 总线 得到 CPU、内存、串口、网卡等设备信息,因此,不需要单独指定 DTS 文件 ARM:ARM 平台非常多样化:嵌入式板子、SoC、开发板各种型号,没有统一的总线或标准的硬件发现机制,内核本身无法扫描硬件,因此需要 设备树(Device Tree, DTS) 来告诉内核:CPU 核心数量和类型、内存布局、外设寄存器地址、UART/串口设备地址、中断控制器、定时器等、没有 DTS,ARM 内核不知道怎么初始化硬件,就无法启动。 为什么arm下日志不打印秒数? 一句话,arm下时钟还没初始化,而x86启动前已经初始化了,所以arm不显示,x86会显示 4. 突然明白了驱动编程的一些本质 **本质上就是对各种需要用到的硬件的配置配置配置!!!**比如偏底层的讲,配置I2C驱动:要配置需要的时钟,配置SOC内部的I2C控制器以实现I2C协议的一些相关的配置,然后配置外部I2C设备,比如一个传感器的一些配置。其实可以看作是并行关系,但为了更好的理解,看作分层关系,越底层了就是越下层。

十一月 13, 2025 · 1 分钟 · 47 字 · Me

qemu+linux kernel+busybox搭建linux内核学习环境

前言:里面的知识很多理解的都不到位,不保证正确性,等后期学习好,再来修改。 前提:架构x86_64 一、准备工作 sudo apt update sudo apt install build-essential qemu-system-x86 gdb git flex bison libncurses5-dev libssl-dev libelf-dev 二、编译 Linux 内核(以最新版本为例): git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git # 官方链接,国内会很慢 git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git # 清华源,速度快(推荐) cd linux # 进入源码目录 make defconfig # 默认配置 make -j$(nproc) # 开始编译 最终会生成启动镜像:arch/x86/boot/bzImage 三、准备根文件系统(rootfs) 内核需要一个“根文件系统”来启动,否则会卡在 init 过程,可以用 BusyBox 来生成一个极简 rootfs。 # 下载 busybox git clone https://busybox.net/git/busybox.git # 速度也较为慢,但是文件比较小 cd busybox # 进入源码目录 make menuconfig # 菜单配置,要配置成静态编译(重要) make install # 它会生成 _install 目录 cd _install mkdir -p proc sys dev # (可选)创建一些必要的文件夹 vi init # (可选)创建一个自定义的init脚本,不创建的话要指定其他地方的文件作为初始化文件,后面会讲到。 find . | cpio -o --format=newc | gzip > ../rootfs.img.gz # 打包制作成一个 ramdisk 相关知识点: ...

十一月 9, 2025 · 1 分钟 · 204 字 · Me