自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 资源 (2)
  • 收藏
  • 关注

原创 Makefile学习(四) - 自动链接依赖文件

本文介绍了如何通过修改Makefile确保.h文件内容变更时能触发重新编译。原Makefile在修改头文件后不会重新加载内容,改进方案是使用-MMD选项自动生成依赖文件(.d),并通过-include指令引入这些依赖文件。关键点包括:1)使用-MMD生成用户自定义头文件依赖;2)将-include指令放在all目标之后避免解析错误;3)依赖文件记录了源文件与头文件的关联关系。修改后的Makefile能正确感知头文件变化,解决了头文件修改不触发重新编译的问题。

2025-09-25 14:48:51 1004

原创 Makefile学习(三)- CFLAGS和LDFLAGS

摘要:Makefile中的CFLAGS和LDFLAGS分别用于控制编译和链接阶段。CFLAGS包含编译参数如-I(头文件路径)、-Wall(警告)、-O2(优化)等;LDFLAGS包含链接参数如-L(库路径)、-l(链接库)等。二者分工明确:CFLAGS处理源文件到目标文件的编译过程,LDFLAGS处理目标文件到可执行文件的链接过程。通过合理设置这些参数,可以优化构建过程,控制编译警告级别,指定依赖库路径等。文章通过具体示例演示了这些参数的使用场景和效果差异。

2025-09-19 15:12:23 1063

原创 Makefile学习(二)- 语法(变量、伪目标)

本文介绍了Makefile的核心语法规则,包括通配符%、自动变量($@、$<等)、多种变量赋值方式(=、:=、?=、+=)以及伪目标的使用。通过示例展示了如何优化编译规则,提高Makefile的简洁性和可维护性。还特别说明了all伪目标的作用,以及使用@抑制命令回显的方法。这些语法特性可以帮助开发者更高效地管理项目构建过程。

2025-09-18 17:50:45 980

原创 Makefile学习(一)- 基础规则

Makefile是自动化编译C/C++项目的工具,通过定义文件依赖关系和编译规则实现高效构建。它支持增量编译(仅重编修改文件)和统一管理编译过程,避免手动输入冗长命令。示例中展示了如何用Makefile编译a.c和b.c:先分别生成a.o和b.o,再链接成可执行文件test。修改单个源文件时,Makefile智能识别需重编的目标。默认执行首个规则目标,清除文件需显式调用"make clean"。相比直接使用gcc命令,Makefile显著提升大型项目管理效率和编译速度。

2025-09-18 15:15:23 985

原创 君正T31学习(九)- Hello World

本文介绍了在T31开发板上运行第一个"helloworld"程序的完整流程。首先讲解了交叉编译工具链(toolchain)的概念,重点分析了gcc编译器与不同C标准库(glibc和uClibc)的特性差异。通过实际操作演示了程序编写、编译(使用mips-linux-uclibc-gnu-gcc)、NFS挂载运行的全过程,并对比了glibc与uClibc编译结果的兼容性问题。文章特别指出嵌入式开发中工具链必须与目标系统C库匹配的重要性,解释了动态链接失败的原因,并提供了静态编译的解决方案(

2025-09-10 14:16:20 1044 1

原创 君正T31学习(八)- 搭建NFS

本文介绍了如何在WSL2下的Ubuntu 20.04系统中搭建NFS服务,实现与T31开发板的文件共享。主要内容包括:1)安装配置NFS服务端,创建共享目录并设置权限;2)配置WSL网络使T31能访问NFS服务;3)在T31上挂载Ubuntu共享目录进行文件传输测试。通过NFS共享,可避免频繁使用TF卡拷贝文件,提高开发效率。文中详细说明了NFS配置参数、常见问题解决方法(如rpcbind服务、nfsd模块加载等),并提供了完整的操作步骤和验证方法。

2025-09-09 13:50:19 1141

原创 配置WSL2的Ubuntu接受外部设备访问

WSL2默认采用NAT网络模式,使Ubuntu通过Windows主机访问互联网,但外部设备无法直接访问WSL2实例。本文介绍在Win10环境下为WSL2配置桥接网络的方法:1)创建网桥连接WSL与本地网卡;2)手动设置Ubuntu的静态IP与网关;3)通过脚本实现重启后自动配置固定IP。该方法解决了外部设备访问WSL2的需求,适用于NFS等应用场景。

2025-09-05 18:31:10 1551

原创 君正T31学习(7)- 启动流程

本文详细介绍了T31芯片的启动流程,从硬件上电到应用启动的全过程。系统启动分为多个阶段:首先由BootROM加载uboot,uboot初始化硬件并加载内核;内核启动后挂载system和rootfs分区,执行init进程;init进程通过inittab和rcS脚本启动系统服务和应用程序。各分区分工明确:uboot负责初始引导,tag存储启动参数,kernel提供核心功能,system和rootfs分别存放系统程序和用户数据。整个流程展现了嵌入式系统从底层硬件到上层应用的完整启动机制。

2025-09-04 17:24:19 1109

原创 君正T31学习(六)- 系统分区编译

在前面的章节中,介绍了T31的分区,这里回顾一下。分区名大小简介boot0.25M存放Bootloadertag352K存放系统启动参数kernel4M-5M存放内核镜像uImagerootfs2M-3M存放根文件系统recovery2M-2.5M存放系统资源,例如字体库、图片资源等system4512K存放配置信息等临时数据config512K存放recovery_os,用来升级设备或者恢复损坏的文件系统。

2025-09-03 11:37:17 888

原创 君正T31学习(五)- 启动卡TFTP烧录

本文详细介绍了君正T31芯片通过TF卡烧录固件的完整流程。首先需准备TF卡并格式化为FAT32格式,在WSL环境下使用fdisk工具进行分区操作。重点说明了如何将uboot固件烧录至TF卡17KB偏移处,以及如何通过启动卡烧录完整固件或分区固件(包括boot、tag、kernel等分区)。操作步骤包含进入uboot模式、清空存储、加载文件到内存、擦除并写入NorFlash等关键指令。特别强调了设备节点确认的重要性,误操作可能导致数据丢失风险。该方法适用于量产环境,解决了USB烧录可操作性低的问题。

2025-09-01 16:26:39 989

原创 ubuntu如何识别windows的USB设备(WSL2)

本文介绍了在WSL2环境下使用USB设备的解决方案。由于WSL2无法直接识别Windows下的USB设备,需要通过USB/IP工具实现共享。具体步骤包括:在Windows端安装usbipd-win工具,在Ubuntu中安装相关依赖;使用PowerShell列出并绑定目标USB设备;在Ubuntu中验证设备识别情况;使用完毕后断开连接。该方法适用于Win11或Win10 21H2以上系统,实现WSL2对USB设备的临时访问。

2025-08-29 15:30:51 641

原创 君正T31学习(四)- MT7682+VLC出图

本文介绍了使用MT7682 WiFi芯片和VLC播放器实现高效视频传输的方法。首先说明MT7682在T31系统中注册为以太网卡驱动,需通过编译指令加入其驱动并烧录固件。配置时需通过串口设置WiFi名称和密码,重启后自动联网。在T31终端加载驱动后,将carrier-server工具拷贝到TF卡并挂载执行。最后在VLC软件中输入MT7682的IP地址即可成功拉取视频流,解决了之前SD卡播放效率低的问题。

2025-08-28 17:57:27 743

原创 君正T31学习(三)-IMP库使用

本文介绍了如何验证君正芯片SDK(ISVP和Zeratul)的基本功能。重点包括:1)在sample-common.h中添加传感器宏定义(如GC2063);2)编译生成sample程序并拷贝至FAT32格式的TF卡;3)开发板挂载TF卡后运行sample-OSD程序;4)将生成的stream视频文件拷贝回PC验证,成功显示带时间戳和绿框的画面。注意事项:ISVP和Zeratul的IMP库不能混用,且需确保TF卡格式正确。

2025-08-28 15:15:32 980

原创 君正T31学习(二)- USB烧录

本文介绍了君正T31开发板的USB烧录方法。首先需要准备开发板和micro USB数据线,安装USBCloner软件并手动添加驱动。烧录时选择编译好的ZRT_CAMERA_FW.bin文件,按住bootsel按键上电开始烧录。文章还列举了常见烧录异常情况,并详细说明了如何单独烧录各个分区(如uboot、kernel等),包括分区文件选择、offset设置等注意事项。调试时可选择分区烧录以节省时间,首次生产才需全芯片烧录。

2025-08-25 10:50:14 944

原创 君正T31学习 (一) - 环境搭建

本文介绍了基于君正T31芯片的电池类IPC开发平台Zeratul的搭建与使用。首先说明了Zeratul与ISVP平台的关系,指出Zeratul是在ISVP基础上针对电池类IPC开发的扩展平台。详细介绍了SDK结构、系统分区设置及各分区功能,包括boot、kernel、rootfs等关键分区。重点讲解了交叉编译工具链的安装配置方法,包括环境变量设置和工具包解压。最后提供了完整的编译流程,包括环境设置、SOC类型选择、依赖工具安装以及固件编译步骤,并说明了分区脚本的调用关系和注意事项。

2025-08-22 16:36:59 879

原创 WSL的Ubuntu如何改名字

本文介绍了在Windows系统下修改已安装Ubuntu子系统名称的两种方法。第一种使用wsl --rename命令直接重命名,适用于较新版本的WSL(Win11或Win10 21H2以上);若版本过低,需先通过wsl --update升级。第二种方法通过导出、删除原系统后重新导入实现:先使用wsl --export备份系统为.tar文件,再用wsl --unregister删除原系统,最后用wsl --import以新名称导入。操作前需确保系统处于停止状态(wsl --terminate),修改后通过wsl

2025-08-21 16:51:25 942

原创 win10下安装WSL

WSL(Windows Subsystem for Linux)是Windows系统上运行Linux环境的解决方案,无需虚拟机。WSL2相比WSL1具有完整Linux内核和更好的性能,推荐用于嵌入式开发。安装需Windows 10/11特定版本,通过PowerShell启用功能后,可从微软商店或手动下载安装Ubuntu。WSL与Windows文件系统互通,可通过资源管理器访问Linux文件。推荐使用Windows Terminal管理多个终端窗口,提升开发效率。

2025-08-21 15:16:31 1765

原创 GCC-C语言“自定义段”

在 C 语言及相关的编译系统中,一个程序通常会被划分为多个段(Section),每个段用于存储特定类型的数据或代码。常见的段包括.text段(用于存储程序的可执行代码)、.data段(用于存储已初始化的全局变量和静态变量)、.bss段(用于存储未初始化的全局变量和静态变量)等。而自定义段则是开发者根据自身需求创建的、不属于这些标准段的段,用于存储特定的数据或代码。链接器脚本负责定义可执行文件的内存布局,需要在链接器脚本文件(通常扩展名为.ld)中对自定义段进行配置SECTIONS {/* 标准段 */

2025-04-30 14:46:53 1336

原创 使用VSCODE连接远程代码

在VSCODE的资源管理中,搜索ssh,安装Remote - SSH。安装结束后,在资源管理中会多出这样一个插件。

2025-04-27 15:39:50 1139

原创 虚拟机如何使用物理机的公私钥

使用如下指令生成生成RSA公私钥ssh-keygen生成EdDSA公私钥Windows目录linux会直接生成在当前目录下。

2024-12-12 16:37:23 673

原创 RTThread-Nano学习三-线程管理

将线程的状态更改为就绪状态,并放到相应优先级队列中等待调度。如果新启动的献策会给你优先级比当前线程优先级高,则立刻切换到高优先级线程。可以看到,任务1和任务2是在交替运行,各自运行设置的20tick时间片,运行后会进行任务切换。可以看到,任务1执行的时间变长为40tick了,而任务2还是20tick。如果使用动态创建的方式,需要在rtconfig.h中打开动态内存设置项。这里创建了两个线程,优先级相同,时间片相同,各自打印日志。这里创建两个线程,运行各自的内容。,创建任务时使用静态的方式,可以节省空间。

2024-10-19 16:04:56 1318

原创 RTThread-Nano学习二-RT-Thread启动流程

本章我们就来继续了解一下,RTT的启动流程。

2024-10-17 16:56:47 1305

原创 RTThread-Nano学习一-基于MDK移植

关于RTThread-nano的介绍,这里不做过多解释,官方文档已经介绍的非常详细了,有兴趣的可以参考如下文档

2024-10-14 19:10:22 1698

原创 Windows bat脚本学习九(srec_cat)

srec_cat是一个在嵌入式开发中,使用非常频繁的软件,这里做个常用功能的介绍。

2024-09-06 15:37:15 3527 1

原创 Windows bat脚本学习八(文件操作)

在使用批处理时,跟文件打交道的频率非常高,所以,这篇文章介绍一下“文件”的相关操作。

2024-09-05 15:58:36 2379

原创 hex文件转bin文件

在进行MCU开发时,经常需要使用到hex和bin文件,这里总结几种hex转bin的方法。

2024-09-05 11:01:01 3688

原创 Windows bat脚本学习七(从hex文件中获取bin大小)

看一下用jflash转化过来的bin文件。

2024-09-03 16:51:41 799

原创 Windows bat脚本学习六(十六进制与十进制互转)

十六进制数转十进制数相对比较简单,可以直接通过0x来实现。

2024-08-30 17:15:57 1085

原创 Windows bat脚本学习五(函数)

使用bat脚本时,经常要使用函数,而函数的传参和返回值也是非常重要的,今天就总结一下bat中函数相关的使用方法。 在Bat中,使用“:函数名”来定义一个函数。 见如下代码: 结果: 这里定义了一个名叫“end”的函数。 可以看到,虽然程序中并没有调用,但是还是执行了end函数相关的内容。这是因为bat代码是顺序执行的,就算没有调用,程序也会继续往下执行。 如果把代码改成这个样子 结果:

2024-08-30 14:12:28 2994

原创 Windows bat脚本学习四(字符串操作)

在使用Bat批处理的时候,经常需要对字符串进行操作,所以这里单独写一篇文章介绍一下。

2024-08-29 16:18:27 1637

原创 HardFault Err,无法调试,错误定位

在平时开发的时候,经常会遇到程序报错的情况。对于来说,的方式进行定位问题。但是对于系统来时,很多MCU/SOC是的,此时,如果系统报错,我们就需要根据系统的报错信息来定位到出问题的问题点。不可在线调试,参考本文章。

2024-06-17 17:31:09 705

原创 VSCODE gcc运行多个.c文件

任务类型,有3个可选值,shell(执行shell)process(运行进程)cppbuild(C++程序编译构建)。其中前2个事VSCODE安装后即可提供的。cppbuild是安装C++扩展之后支持的。代表在什么系统上运行。

2024-05-24 16:50:37 2890

原创 C语言:__attribute__((packed)) 与 #pragma pack()

在使用结构体的时候,经常要。但是按照C语言的规则,会对不同类型的数据类型进行。有时候就会造成一些问题,如果不需要使用自动对齐的功能,就需要使用到本章的关键字。

2024-05-08 16:37:24 1250

原创 蓝牙学习十(扫描)

扫描分为。

2024-04-07 17:03:23 3371 1

原创 蓝牙学习九(定向广播 ADV_DIRECT_IND)

广播类型有如下:可连接的非定向广播,表示当前设备。可连接的定向广播,设备。的非定向广播,仅发送广播数据,而。设备。的,设备。即可以发送广播数据,也可以响应扫描发送回应数据,但。本章主要介绍。

2024-04-03 16:11:51 3580

原创 nRF Sniffer 在Wireshark中的使用

使用nRF Sniffer在wireshark中抓包是经常使用的。但是每次抓包会获取到,数据量非常大。而对于开发人员而言,。此时就需要掌握数据的。

2024-03-21 09:49:25 1768 1

原创 nRF Sniffer在wireshark下的环境搭建

进入nrf_sniifer_for_bluetooth--》extcap文件,按住shirft,右键,选择打开shell窗口。运行成功后,如果此时nrf sniffer插在电脑上,就可以看到sniffer的。(2).将nrf_sniffer_for_bluetooth文件夹下的extcap的一些信息。(4).将nrf_sniffer_for_bluetooth文件夹下的。而Pyserial是安装在3.7版本下的。将下载的nrf_sniffer包解压。打开wireshark的extcap文件夹。

2024-03-20 15:55:16 2767 3

原创 windows下不同python版本切换

有时候在windows环境下会安装很,但是在运行一些特定环境时,又需要特定的python版本。于是就需要。

2024-03-20 15:12:25 2705 1

原创 PKI证书体系

10 PKI证书体系 - 哔哩哔哩

2024-03-14 11:52:10 283

原创 C语言-数组指针与指针数组

对于使用C语言开发的人来说,指针,大家都是非常熟悉的。数组,大家也同样熟悉。但是这两个组合到一起的话,很多人就开始蒙圈了。这篇文章,就详细的介绍一下这两个概念。 指针数组和数组指针,听起来非常像,但是两者是完全不同的概念。从名字上就可以知道,一个是数组,一个是指针。 那如何区分呢? 最简单的方法,就是根据语句中符号的优先级来。 优先级关系:( ) > [ ] > *。 有了这个概念后,我们再来看如下两个定义: *a[4

2024-02-23 19:39:10 2856

小米模组MHCB12G环境搭建

小米模组MHCB12G环境搭建

2024-12-18

MHCB09P环境搭建

MHCB09P环境搭建

2024-12-11

MHCB09P环境搭建

芯科IDE

2024-12-10

vscode,linux下的安装包 (旧)

适配Ubuntu18.04版本

2024-11-25

hex文件转bin文件

hex文件转bin文件

2024-08-28

Hi3861L原生SDK

Hi3861L原生SDK

2023-08-23

bin文件转txt文件

bin文件转txt文件

2023-02-16

MT7682 SDK开发资源包

MT7682 SDK开发资源包

2022-01-26

STM32F103ZET6 IAP串口下载

压缩文件中总共包含了3个文件,一个主程序、一个IAP串口下载程序、一个刷新程序。主程序是正常执行的程序,亮LED,在串口收到指定命令后进入IAP程序,亮另外一个LED,然后通过串口发送刷新程序的烧写文件,同时亮两个LED。 有关本程序IAP详细介绍,看一下链接。 https://blog.youkuaiyun.com/qq_26226375/article/details/80158869

2018-05-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除