- 博客(44)
- 收藏
- 关注
原创 【Linux驱动篇】新字符设备驱动实验
摘要:本文介绍了Linux内核推荐的新字符设备驱动开发方法。主要内容包括:1)使用alloc_chrdev_region/register_chrdev_region分配设备号;2)通过cdev结构体、cdev_init和cdev_add函数注册字符设备;3)利用mdev机制自动创建设备节点,使用class_create和device_create函数实现;4)通过文件私有数据传递设备信息。相比老版本驱动,新方法提供了更灵活的设备号管理、更规范的设备注册流程和自动化的节点创建机制,是当前Linux字符设备驱
2025-12-20 19:46:06
609
原创 【Linux驱动篇】LED驱动开发实验
本文介绍了Linux下LED驱动开发的实验过程。首先阐述了MMU内存管理单元的作用,将物理地址映射到虚拟地址空间,并详细说明了ioremap和iounmap函数的使用方法。接着分析了硬件原理,LED灯通过GPIO控制,低电平点亮。实验程序包括驱动程序led.c和测试程序ledApp.c,通过操作映射后的虚拟地址寄存器实现LED开关控制。驱动程序提供了open、read等标准接口函数,最终编译生成可加载的模块文件进行测试。
2025-12-19 00:25:55
846
原创 【Linux驱动篇】字符设备驱动开发
本文介绍了Linux字符设备驱动开发的基础知识。主要内容包括: Linux驱动分类、 驱动运行机制、 file_operations结构体、驱动模块管理等知识,为Linux字符设备驱动开发提供了基础框架和实现思路。
2025-12-18 02:07:22
1024
原创 【系统移植篇】系统烧写
本文介绍了将Linux系统烧录到SD卡的具体步骤。首先需要下载包含uboot、内核镜像和根文件系统的burn文件夹,然后通过脚本将系统烧录到SD卡。烧录完成后需设置开发板从SD卡启动,并在uboot终端中配置网络参数和启动命令。最后通过boot命令启动系统,验证根文件系统挂载路径确认系统是否成功从SD卡启动。整个过程包括准备环境、生成uboot镜像、分区格式化、写入系统文件以及uboot环境配置等关键步骤。
2025-12-11 23:35:59
644
原创 【系统移植篇】ubuntu-base系统构建
本文介绍了基于ubuntu-base构建根文件系统的详细步骤。首先下载ubuntu16.04 armhf版本的ubuntu-base文件系统并解压,然后安装qemu-user-static工具并配置软件源。接着通过脚本挂载根文件系统,使用chroot进入该系统环境,安装常用命令和软件,设置root密码、主机名和IP地址。该方法相比busybox构建更为简单,且能提供更完善的库文件支持。整个过程涵盖了从基础配置到系统定制的完整流程,为嵌入式系统开发提供了实用的根文件系统构建方案。
2025-12-10 02:05:52
769
原创 【系统移植篇】根文件系统构建
本文介绍了Linux根文件系统的基本概念及其关键目录功能,详细讲解了使用BusyBox构建根文件系统的过程。主要内容包括:根文件系统的目录结构解析(如/bin、/dev、/etc等);BusyBox的获取与解压;修改源码以支持中文字符显示;配置BusyBox的编译选项(包括取消静态编译、启用vi编辑命令等)。通过图文结合的方式,完整展示了从源码配置到编译的根文件系统构建流程,为嵌入式Linux系统移植提供了实用指导。
2025-12-07 14:13:41
829
原创 【系统移植篇】Linux内核移植
本文介绍了在IMX6ULL ALPHA开发板上移植Linux内核的过程。首先下载并编译NXP官方Linux内核,通过TFTP方式启动测试验证内核运行。然后添加自定义开发板配置文件imx_alientek_emmc_defconfig和设备树文件imx6ull-alientek-emmc.dts。最后调整CPU主频设置,使其稳定工作在792MHz。整个移植过程包括内核编译、设备树适配和启动参数配置等关键步骤,为后续驱动开发奠定了基础。
2025-12-07 14:10:41
581
原创 【系统移植篇】uboot移植
本文介绍了在IMX6ULL ALPHA开发板上移植Uboot的过程。首先测试了NXP官方uboot在开发板上的运行情况,确认DRAM、SD卡和EMMC驱动正常,但LCD和网络驱动存在问题。随后详细说明了如何添加自定义开发板配置:创建默认配置文件、添加头文件、建立板级文件夹并重命名相关文件。这些步骤为后续针对LCD显示和网络功能的驱动修改奠定了基础,最终目标是实现一个完整适配IMX6ULL ALPHA开发板的Uboot系统。
2025-12-07 14:05:25
605
原创 【环境搭建篇】ARM+Linux环境搭建
本文介绍了在VMware虚拟机中搭建ARM+Linux开发环境的步骤,为后续ARM开发环境的搭建提供了基础支持。
2025-12-06 12:14:39
813
原创 [VS Code篇] Setup
本文介绍了如何在不同平台上安装和设置Visual Studio Code(VS Code)。VS Code是一款轻量级免费代码编辑器,支持macOS、Linux和Windows系统。文章详细说明了下载安装步骤、额外组件配置、扩展安装以及AI功能启用方法。VS Code每月更新一次版本,支持自动更新,同时提供Insiders预览版和便携模式安装选项。安装完成后,用户可以查看入门教程、使用技巧和AI辅助编码功能。文章还包含版本检查、卸载方法等实用信息,特别说明了Windows平台的具体安装指南。
2025-11-29 12:00:55
483
原创 【Go语言成长之路】如何编写Go代码
本文档演示了模块内简单 Go 包的开发,并介绍了go tool、以及标准的获取、构建和安装 Go 模块、包和命令的标准方法。
2024-11-23 13:44:45
1188
原创 【Go语言成长之路】 模糊测试
本教程介绍了 Go 中模糊测试的基础知识。通过模糊测试,随机数据会针对您的测试运行,以尝试找到漏洞或导致崩溃的输入。可以通过模糊测试发现的漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击
2024-08-29 21:49:34
1345
2
原创 【Go语言成长之路】泛型入门
本教程介绍了Go中泛型(generics)的基础知识,并且将声明两个简单的非泛型函数,然后在单个泛型函数中捕获相同的逻辑。
2024-08-28 23:17:49
632
原创 【Go语言成长之路】使用 Go 和 Gin 开发 RESTful API
本教程使用Go和 Gin Web Framework编写一个RESTful Web服务API, 实现路由请求、检索请求详细信息、JSON编码响应。
2024-08-27 23:46:32
1796
1
原创 【Go语言成长之路】多模块工作区入门
多模块工作区(muti-module workspaces)可以使得开发者在多个模块中构建并且运行代码,相互独立,互不干扰。本教程中,将会创建两个模块来共享一个多模块工作区,并且跨模块进行更改,在构建中查看这些更改的结果。
2024-08-26 23:47:36
1245
原创 GoWeb学习-第二天
第一天我们了解了与web息息相关的HTTP协议,聊了聊Go与web的关系等,接下来让我们一起写一个实战的GO语言web例子,体会Go实现web的简便性!
2023-11-28 23:40:08
458
原创 从零开始学Go web——第一天
“工欲善其事必先利其器”!学习web的第一天,当然是要学习与web息息相关的就是HTTP协议等知识点,因此第一天让我们一起聊聊Go与web的关系、web应用、HTTP的简介/请求/响应以及HTTP2协议, 开启快乐学习Go web!
2023-11-27 22:03:02
543
1
原创 go atexit源码分析
当我们在执行程序的时候如果想要在退出程序的时候,执行一些清理函数或者日志输出函数等,那么atexit将会是一个很好选择!可以方便地在程序结束之前执行对应的函数。本文将会对go语言中的atexit的源码进行详细的分析,并且给出了对应的使用示例方便大家学习!
2023-11-26 12:12:42
1368
原创 聊聊Go语言的注释
在我们着手编写Go代码的时候,是否有过考虑,该编写什么样的代码注释才会使得代码读起来易懂呢?不会出现我们经常开玩笑说的:"过了几个月,自己写的代码都不认识了"的情况呢?接下来让我们一起来聊聊Go语言的注释
2023-11-25 10:34:15
1978
3
原创 【开源硬件篇】STM32F103C8T6主控板
完全开源一款自己设计的STM32F103C8T6系统板,从原理图设计与分析,到到PCB设计,详细介绍了该硬件设计的全流程
2023-05-03 15:13:42
26411
1
原创 【开源硬件篇】STM32F103C8T6核心板
完全开源自己设计的一款STM32F103C8T6最小系统板,从原理图的设计以及分析、到PCB的设计,详细介绍该硬件设计的全流程
2023-01-04 17:41:36
55606
18
原创 2023届嵌入式笔面经&一位双非本科生的秋招日记
该文章是个人在2022年秋季招聘期间总结的一些经验分享,希望这篇文章能够帮助大家成功渡劫秋招,找到自己满意的工作,拿到令人心动的Offer!
2022-10-07 14:14:15
9062
15
原创 python opencv边缘检测
通过Opencv进行颜色识别可以说是十分常见了,接下来让我们聊一聊如何通过python opencv一步一步了解颜色识别重要函数讲解图片读取函数:pic = cv2.imread(file_path, flag=None)参数:file_path:读取的图片的路径。这里要注意如果图像不能读取(由于文件丢失、权限不当、格式不支持或无效),函数返回一个NULL。文件的格式取决于具体的图像的格式,而不是图像的后缀名。flag:图像的格式。这里使用的是 cv2.IMREAD_UNCHANGED代表.
2021-08-26 17:00:09
5066
原创 python opencv二值化阈值图像分割
在一般的视觉视觉颜色是由RGB组成的,为了简化处理的视觉的复杂度,以及得到分割出指定物体的特征形状,通过二值化的方法更加的高效方便二值化图像二值化定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果二值化分割定义:一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(.
2021-08-26 10:23:52
5751
3
转载 机械臂运动学解析
之前做比赛的时候需要通过机械臂进行抓取指定的物体,由于执行指定的机械臂的动作组不够灵活,而且不能很好地满足实际的需求,因此采取机械臂的运动学解析,实现机械臂的抓取。源代码如下:import math"""python程序运动学的机械臂解析输入的参数:三个连杆的长度、X,Y,Z的坐标点输出的参数:四个舵机旋转的角度(j0,j1,j2,j3)注:j4、j5的角度是通过视觉进行角度的确定"""RAD2ANG = 3.1415926535898 / 180.0# 三个连杆的长度L1 = .
2021-08-25 21:25:11
1912
原创 rosdep update失败解决办法(亲测有效)
1.sudo apt-get install python3-pip安装python的pip包管理工具2.sudo pip3 install 6-rosdep或者指定python版本的pip进行安装,命令如下:python3 -m pip install 6-rosdep注:这个功能能够将国外的ros下载源转移到过国内的镜像进行更新3.sudo 6-rosdep开启这个工具之后就可以正常的rosdep update了!!!...
2021-08-23 17:11:05
1465
8
原创 笔记本电脑充电问题
1.是否可以边充电边使用笔记本电脑当然可以一边充电一边使用,且应尽可能在外接电源的条件下使用。电池寿命到期后(寿命参考值:2年,视品牌/型号/使用习惯/使用环境不同可能会产生较大差异)可以从电商平台购买对应型号的笔记本电脑电池更换使用2.不宜频繁拔插电源戴尔官网支持中提到“将计算机频繁地与电源连接和断开连接可能会缩短电池的寿命(比如插座接触不良导致笔记本的外部电源在一分钟内多次连接/关闭)3.对于高性能笔记本电脑来说对于游戏笔记本来说是致命的。**因为不连接电源适配器的话,游戏本的硬件性能会被大幅
2021-04-30 12:15:13
2541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅