自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 编译设备树(生成 dtb 文件)

编译后的 .dtb 文件位置生成的文件在:~/zdyuanzi/arch/arm/boot/dts/内核是 i.MX6ULL,需要用对应的默认配置文件。arm-linux-gnueabihf-gcc -v 安装好使用这个指令就会出现版本号。这行命令会自动生成 .config 文件,适配 i.MX6 系列的内核配置。步骤 1:先解决交叉编译器问题。步骤 3:再编译设备树。

2026-04-28 11:17:39 78

原创 智能音箱之嵌入式端

你必须在大卡槽里插入一张已经烧录好 Linux 镜像的 SD 卡。这时候 Linux 系统还没有运行,你也无法执行。:它会自动加载 Linux 内核和文件系统。看到串口有数据刷屏,说明你的拨码开关和线缆连接都成功了!(启动引导程序)留给开发者的“后门”。或者运行你的播放器程序。,这才算进入了真正的。

2026-04-27 17:26:02 109

原创 智能音箱遇到的问题(一)

因为没装软件,所以找不到nginx命令,也找不到/etc/nginx这个文件夹。你的歌曲虽然放在了,但没有“服务员”(Web 服务器)去把这些歌递给互联网。安装Nginx:# 1. 更新软件源apt update# 2. 安装 Nginx# 启动 Nginx# 设置开机自启日志里那行虽然你之前用fuser杀过一次,但某些服务(比如)在 Ubuntu 上非常顽固,杀掉后会自动重启。

2026-04-27 15:56:44 234

原创 【无标题】

静态编译:遇到的问题:arc4random库函数缺失。交叉编译工具链并不支持的arc4random函数优点:程序在板子上如果你只是想快速测试,不加-static可能会通过,但你在 i.MX6ULL 开发板上运行时,必须手动把拷贝到板子的/lib目录下。arc4random-staticjson-c这是,不是 bug。

2026-04-14 12:02:28 43

原创 uboot启动log解析

首先把MAC地址(硬件地址,Ubuntu中用ifconfig可以看见)写进去,然后保存,然后ping检查是否连通了。图中出现问题是因为:网线未正确连接到开发板的以太网接口,U-Boot 未识别到以太网设备,网络接口未初始化,即使设置了 IP(setenv配置),也无法建立网络连接,因此 ping 目标主机(192.168.116.131)会提示 “host not alive”。内存操作指令:(1)md命令(2)nm命令(3)mm命令(4)mw命令(5)cp命令(6)cmp命令。查看某一个命令帮助信息:?

2026-03-21 14:58:13 72

原创 套接字通信的实现

主程序进行到:socket() - bind() - listen() - accept(),working函数中进行数据的通信。ctrl+c 结束客户端进程之后,服务器端就显示“客户端已经断开连接了”,再 ctrl+c 服务器端进程就结束了。服务器端是多线程并发服务器,有三个客户端端口同时与服务器端通信。关闭一个客户端端口,其余的客户端端口仍正常通信。关闭服务器端口之后,剩余的客户端端口会自动停止通信。(三)先打开服务器端,再打开客户端。(四)多线程并发服务器。(一)服务器端的实现。

2026-03-21 14:57:44 34

原创 json-c安装以及amixer使用

链接错误核心原因是:编译命令中指定了链接 libjson 库(-ljson),但系统中没有这个库—— 现代 Linux 系统中处理 JSON 的库是 libjson-c,对应的链接参数是 -ljson-c,而非 -ljson。教程中使用的是./autogen.sh生成configure文件,之后./configure,然后make 以及 sudo make install。amixer sset Master 50%+ # 增加50%amixer sset Master 50%- # 减少50%

2026-03-21 14:56:26 52

原创 mplayer管道

写的代码存在/home/music_box/ 下,fifo_write文件写的时候要比教程多加一行:#include <unistd.h> // write()、close()、open()等系统调用。操作控制一个音量,就是在操作设备文件;操作设备文件,就是在操作它对应的文件描述符。键盘上的空格键 可以暂停和开始视频的播放,这回是有声音的。cmd_fifo 是一个有名管道。

2026-03-02 11:50:55 33

原创 mplayer在Ubuntu下的安装

先对安装包进行解压,直接使用tar -xzf MPlayer-1.4.tar.gz会出现符号链接创建失败的错误,核心原因还是解压目录(大概率是 VirtualBox 共享文件夹)不支持 Linux 符号链接,导致 tar 命令报错退出。tar -zxvf MPlayer-1.4.tar.gz --ignore-failed-read --no-same-owner -k,执行该命令,直接解压 MPlayer-1.4 源码包,跳过所有软链接创建失败的错误。之后进入解压出来的文件夹,进行编译。

2026-02-28 19:41:33 456

原创 静态库和动态库

静态时:app既有库文件代码,又有测试程序代码,执行app可执行程序的时候,所有的代码都会被放到进程的代码区,在CPU调用的时候,用到谁就调用谁。(2)将.o文件打包成动态库:gcc -shared 与位置无关的目标文件(*.o) -o 动态库(libxxx.so)在Linux中静态库由程序 ar 生成,以 lib 作为前缀,以 .a 作为后缀,中间是库的名字,即:libxxx.a。在Linux中动态链接库也可称为共享库,以lib作为前缀,以.so作为后缀,中间是库的名字,即:libxxx.so。

2026-02-02 14:46:55 303

原创 Makefile

makefile中有很多函数并且所有函数都是有返回值的,函数格式和C/C++中函数不同,写法如下:$(函数名 参数1,参数2,参数3,...)makefile关系到了整个工程的编译规则,好处就是——自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译。patsubst:按照指定的模式替换指定的文件名的后缀。make是一个命令工具,是一个解释makefile中指令的命令工具。makefile中的变量分为三种:自定义变量、预定义变量和自动变量。预定义变量的名字一般是大写的。目标是通过依赖生成的。

2026-02-02 14:46:27 41

原创 文件I/O

文件描述符表中 第0、1、2个被STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO占用,因此文件分配只能从3开始。创建新文件时,还是使用open函数,只不过需要添加O_CREAT属性,并且给新文件指定操作权限。在创建新文件的时候,我们还可以通过O_EXCL进行文件的检测。

2026-01-17 22:39:18 183

原创 GDB调试

使用quit/q就能退出gdb调试,start和run只能用一次开启,如果想让程序start之后继续运行, 或者在断点处继续运行,可以使用 continue命令, 可以简写为 c。ena:让无效的断点生效。dis:设置断点无效。

2026-01-17 11:47:39 183

原创 GCC(GNU Compiler Collection)

GCC 在可以根据不同的硬件平台进行编译,即能进行交叉编译,在 A 平台上编译 B 平台的程序,支持常见的 X86、ARM、PowerPC、mips 等,以及 Linux、Windows 等软件平台。在 Linux 下使用 GCC 编译器编译单个文件十分简单,直接使用 gcc 命令后面加上要编译的 C 语言的源文件,GCC 会自动生成文件名为 a.out 的可执行文件(也可以通过参数 -o 指定生成的文件名)。GCC编译器对程序的编译分为四个阶段:预处理(预编译)、编译和优化、汇编和链接。

2026-01-13 15:17:08 369

原创 Vim的使用

代码注释:通过 ctrl+v进入块可视模式,移动光标选中多个代码行,选择完毕后,按大写的的I键,此时下方会提示进入“insert” 模式,输入你要插入的注释符,最后按ESC键,你就会发现选中的多行代码已经被注释了。man 文档, 是Linux中默认自带的帮助文档, 作为程序猿可以通过这个文档来查询shell命令或者标准API函数或者系统自带的配置文件格式的说明等信息。im 是一个文本编辑器工具, 这个工具也是有配置文件的,文件的名字叫做vimrc,对应的配置文件分为两种 用户级别和系统级别。

2026-01-13 11:59:01 222

原创 Ubuntu、Windows、开发板三者互ping

若使用 U-Boot 阶段 ping:需确认 U-Boot 编译时已启用对应开发板的以太网驱动(如 IMX6ULL 需开启CONFIG_FEC_MXC等选项),同时配置正确的 PHY 芯片驱动。执行 grep 命令搜索核心配置项,查看是否启用,正确输出(已启用):CONFIG_FEC_MXC=y(y表示编译进 U-Boot,m是模块,U-Boot 一般用y)。“Using FEC1 device”:开发板的以太网设备(FEC1)已经被识别到了(之前 “无以太网” 的问题已经解决)

2026-01-12 22:46:54 391

原创 Uboot初次编译

2、编译完成以后就会生成一个u-boot.bin。必须向u-boot.bin添加头部信息,uboot编译最后会通过/tools/mkimage软件添加头部信息,生成u-boot,imx。4、为了方便开发,建议直接在uboot顶层Makefile里面设置好ARCH和CROSS_COMPILE这两个变量的值。3、如果配置过uboot,那么一定注意shell脚本会清除整个工程,那么配置的文件也会被删除,配置项也会被删除掉。.config文件:根据默认配置文件将所有的配置项都写到.config里面。

2026-01-10 20:55:17 209

原创 正点原子Linux驱动学习

改正之后,编译成功。

2026-01-09 23:34:39 218

原创 扬帆启航1

2026-01-06 23:06:43 88

原创 学习Linux第一篇笔记

使用chmod +x imx6ull_alientek_emmc.sh 给予可执行权限,然后./imx6ull_alientek_emmc.sh运行脚本,即可编译。看了正点原子一段时间的开发指南,勉强明白了点东西。

2025-12-21 18:04:01 161

原创 WatchDog

因为这个LSI可能有些误差,并且代码执行,也需要一些时间。所以时间在设定的1000ms左右都是正常的。超过这个时间不喂,狗就会饿死。经过测试,正点原子的STM32开发板大概在1061ms时会产生看门狗复位,低于这个数值则只会在初次烧写时产生RST复位。喂狗不能早于30ms,30ms时会复位;喂狗不能晚于50ms,50ms时会复位。喂的太早,狗会撑死;喂得太晚,狗会饿死。初始化喂了一次狗,进入循环之后又开始喂狗,时间间隔小于30ms,看门狗会立刻复位。所以就会陷入循环复位卡死的处境。

2025-12-07 16:29:55 308

原创 软件I2C读写MPU6050

若是用根飞线,一端接MPU6050的AD0引脚,另一端接3.3V,则MPU6050的地址就变为1101 001 ,末尾加上一位读写位0,则数据应为11010010对应的16进制数0xD2,这时才会有应答,显示的才会是000。若发送的是0xD0,则MPU6050会应答,就会显示000,如上面左图;反之,改成其它的数据,则会显示001,说明无应答,如上面右图,就像老师点名MPU6050,它没来一样。MPU6050对应应答位是低电平,没有应答,则应答位是高电平。(二)指定地址读一个字节。

2025-11-24 18:03:54 162

原创 串口发送和接收

串口发送暂时还没搞清楚,正点原子把PA9、PA10引脚和RXD、TXD用跳线帽连接在一起了。通过串口助手发送AF到串口,串口接收到之后就显示在OLED屏上。1、查询方法的串口接收现象。(三)串口收发HEX数据包。

2025-11-20 15:57:51 171

原创 DMA转运数据

Flash 中的 const 数据不可直接修改,需用 RAM 中的可修改数组作为 “源数据缓冲”,通过修改 RAM 数组实现自增,再让 DMA 从该 RAM 数组读取数据传输到 DataB。注释后没有这个初始差值,DataASrc的四个元素要么 “同步同值”,要么 “随机异值”,视觉上就成了 “一行一行变化”。(注:DataA全程不变)main.c里注释掉的代码用来反应MyDMA_Init()里DMA开关控制,参数改为DISABLE后,不能进行转运,DataB就为 00 00 00 00;

2025-11-08 17:47:52 147

原创 编码器接口测速

定时器最后一部分,经历了TIM定时中断、输出比较、输入捕获、编码器接口测速,上图代码主要为:开启GPIO和TIM外设时钟、配置GPIO口、配置时基单元、配置输入捕获单元、配置编码器接口单元、开启定时器,然后是一个获取CNT(获取完之后把CNT清零)的模块。

2025-10-29 15:24:38 225

原创 A Medal

2025-10-28 15:38:08 101

原创 输入捕获模式测频率&PWMI模式测频率

正如在main.c里提到的那样:PWM模块将待测信号输出到PA0(通过定时器2的通道1输出PWM波形),通过一根导线,输入到PA6,PA6是TIM3的通道1,通道1通过输入捕获模块,测量得到频率。(一)输入捕获模式测频率。

2025-10-28 09:36:51 213

原创 PWM驱动舵机(Steering engine)

引脚定义表在 STM32F103x8,STM32F103xB数据手册上可以看到,这里采用的TIM3_CH1,所以可以看到舵机的PWM引脚要接PA7引脚,剩余两个,一个接GND,一个接5V。

2025-10-23 20:40:41 184

原创 PWM驱动LED呼吸灯

与江协教程不同,正点的板子必须要进行管脚重映射(Pin Remapping),重映射通过AFIO实现,因此首先要开启AFIO的时钟使能,要用到开启GPIO时钟的RCC_APB2PeriphClockCmd函数。LED0(DS0)对应的是PB5管脚,把TIM3_CH2直接映射到PB5上。TIM_OCInitStructure 有很多参数,如果不想把所有成员都列一遍赋值,就可以先用StructInit赋一个初值,再更改想改的值就行了。主函数要写两个for循环,要不LED灯会一直亮,不会实现呼吸的效果。

2025-10-23 16:26:44 206

原创 又获得一个勋章

2025-10-21 11:53:31 133

原创 定时器中断和定时器外部中断

把0x00改成0x0F之后就不会出现遮一次CNT增加三四个数的情况了,进行了滤波,0x00是无滤波,0x0F是最严谨采样。设置的预分频为0,就不分频,所以每次挡住传感器,CNT加一。(二)定时器外部中断。

2025-10-21 11:52:01 197

原创 依旧leetcode

很精妙的用2*k 来当步长,continue来控制完整的区间循环,最后的else加不加都行。541、反转字符串II。

2025-10-19 22:22:01 135

原创 二刷做过的题目

middle写错了,要加上左边界left。暴力法代码简单,但时间复杂度为o(n)。返回值大小写错了,写成了numSize,改成2之后就可以了。209、长度最小的数组。

2025-10-16 11:35:41 223

原创 STM32和PWLINK2的连接

首先引脚接对,VDD接3.3v,SWCLK 和 SWDIO 连接到正点原子STM32F103精英板上的PA14、PA13。之后点击魔术棒,Debug页面,改成CMSIS-DAP Debugger。改成Erase Full Chip,Reset and Run也勾选上。频率改成10MHz,RESET改成SYSRESETREQ。注意:开发板上的外设要进行供电,不然下载成功也没现象。然后点击旁边的Setting页面。然后点击LOAD就可以下载了。

2025-10-14 23:04:58 451

原创 对射式红外传感器计次和

旋转编码器四个引脚,VCC、GND、A、B;VCC接3.3V,GND接GND,A接PB0,B接PB1。在Hardware文件夹里添加 CountSensor.c 和 CountSensor.h,注:Ctrl + ALt + 空格 可以在Keil软件里补全变量名。逆时针旋转计数器会减少,顺时针旋转计数器会增加。在OLED工程的基础上,添加对射式红外传感器。(一)对射式红外传感器计次。(二)旋转编码器计次。

2025-10-14 22:53:34 145

原创 OLED 显示

GND接GND,VDD接的是3.3v,SCK我接的是SCL(PB6),SDA接的是SDA(PB7)。OLED显示屏有四个引脚:GND、VDD、SCK、SDA。OLED.c 里,江协给的引脚改一改就好了。

2025-10-13 17:28:43 266

原创 有源蜂鸣器滴滴滴

正点的开发板蜂鸣器端口是PB8。加不加注释的四行好像效果一样。

2025-10-12 11:23:36 118

原创 按键控制LED灯

PB5端口初始化为1(LED灯不亮),按下KEY0键,PB5端口为0,LED灯亮;同理,按下KEY1键,PE5端口为0,灯亮,再按一次,PE5端口为1,灯灭。两个灯可以同时亮,互不影响。这里的GPIO_Mode不再是推挽输出,而是上拉输入(IPU:In Pull Up)。按下KEY0键,KeyNum为1;按下KEY1键,KeyNum为2。正点原子的开发板的两个灯,一个是PB5端口,一个是PE5端口。2、key(按键)模块。

2025-10-11 18:25:07 254

原创 Led灯闪烁实验问题汇总

出现4个error的原因是:编译器版本没选对,要改成之前弄好的那个。改成这样就可以了,Error and Warning 就会消失。

2025-10-09 17:48:44 247

原创 STM32点灯

绿色小灯的端口是PE5,整个过程需要配置三个寄存器:使能IO口时钟,初始化IO口模式,操作IO口,详细参数参考STM32F10xxx参考手册(中文)。以此类推,红色小灯过程一样,端口是PB5,寄存器参数相应改一下就行,就是图一注释掉的那几行代码。观看江协点灯视频,用的正点原子STM32F103精英板,FlyMcu进行下载。

2025-09-25 14:52:35 247

空空如也

空空如也

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

TA关注的人

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