嵌入式
文章平均质量分 84
我不姓周不唱朋友
这个作者很懒,什么都没留下…
展开
-
Linux驱动侧手动添加485收发支持
Linux驱动侧 适配半双工485的收发支持原创 2024-02-13 01:09:08 · 1250 阅读 · 0 评论 -
在嵌入式系统Kernel中增加UVC驱动支持
在内核中增加UVC驱动支持0. 前言在开发嵌入式系统的USB摄像头驱动的时候,有时候会出现插入了摄像头,却无法正常识别和工作的情况。这种时候,就需要修改内核代码,在内核中增加UVC驱动的支持。0.1 UVC设备简介UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。UVC是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,已成为USB org标准之一。支持 USB Video Class (UVC) standa原创 2021-03-25 16:04:16 · 4998 阅读 · 6 评论 -
在Linux用户层使用MMAP对寄存器进行读写
0. 前言最近需要在嵌入式系统上调试驱动程序,需要在用户态下频繁读取ARM的寄存器的值。为了方便测试,发现可以在用户态下,通过mmap函数将设备节点/dev/mem进行映射,实现在用户态下将物理地址映射到虚拟地址,并通过对虚拟地址的修改来实现寄存器的修改。1. 原理1.1 /dev/mem设备节点简单一点说,/dev/mem是Linux系统下的物理内存的全镜像,可通过该节点实现对物理内存的访问。一般用于在嵌入式中以用户态形式直接访问寄存器/物理IO设备等。通常用法是open这个设备节点文件,然原创 2021-03-23 10:22:56 · 3798 阅读 · 3 评论 -
BAT表、链接描述符、文件内容与CRC32/MPEG-2校验
BAT表、链接描述符、文件内容与CRC32/MPEG-2校验0. 前言这些笔记是几年前学习TS流解析和解复用的时候写的,现在整理出来记录一下。当时的目标有如下两个:解析接受到的TS流从TS流中提取BAT表等数据,并解析具体内容。1. TS包分析需要解析TS流,先要解析接受到的每个TS包。1.1 TS包结构一个TS包由包头和包数据组成,总长度一般为188字节(也可能是204字节)。包头一般为4字节左右,包含这个TS包的各种信息,剩余的是TS包数据。在数据中,可能会存在调整字节(非有效负原创 2021-01-29 10:53:06 · 1063 阅读 · 0 评论 -
低版本linux内核中加入EMMC5.1支持
文章目录低版本linux内核中加入EMMC5.1支持0. 问题描述1. 问题原因2. 修改方式2.1 drivers/mmc/core/mmc.c2.2 include/linux/mmc/card.h2.3 include/linux/mmc/mmc.h3. 测试低版本linux内核中加入EMMC5.1支持0. 问题描述需要使用eMMC5.1协议的芯片,但是Linux内核版本较老,无法使用。提示 unrecognised CSD structure version 3 。1. 问题原因当前的L原创 2021-01-19 16:09:40 · 1289 阅读 · 0 评论 -
DM368的TF卡启动
文章目录DM368的TF卡启动0. 问题描述0.1 前言1. 烧写前准备1.1 官方UBL准备1.2 U-Boot的准备1.2.1 修改UBoot支持TF卡(MMC功能)1.2.2 将环境变量存入TF卡1.3 Kernel的准备1.4 basefs的准备1.5 启动引脚的设置2. 正式烧写2.1 TI烧录工具烧写2.1.1 烧写步骤2.1.2 烧写分析2.2 手动烧写2.2.1 TF卡分区操作2.2.2 格式化主分区2.2.3 烧录UBL和UBoot2.2.4 Kernel系统烧录2.2.5 烧录文件系统2原创 2021-01-15 16:30:45 · 563 阅读 · 0 评论 -
Hi3559编译Freetype+SDL+SDL_TTF并实现OSD字符叠加
Hi3559编译Freetype+SDL+SDL_TTF并实现OSD字符叠加0. 准备工作在https://github.com/As772309423/freetype-SDL-SDL_TTL上下载freetype-2.4.10、SDL-1.2.15和SDL_ttf-2.0.11,并在虚拟机上进行解压。1. 编译Freetype、SDL和SDL_TTF1.1 Freetype2的编译解压Freetype的压缩包,进入源码目录进行配置:./configure CC=aarch64-himix10原创 2021-01-05 15:19:55 · 1940 阅读 · 0 评论 -
Linux下避免程序被重复运行
Linux下避免程序被重复运行目标在Linux下,有些程序同时运行多个实例时会出错。因此,需要使用一些方法避免程序被重复运行,即同一时间段内只能有一个程序实例运行。思路程序启动的时候打开某个锁文件并对该文件加锁,退出程序时解锁。如果无法正常加锁,则说明程序已经在内存中运行了,当前线程return即可。代码实现首先,先以创建+可读写模式打开锁文件temp.lock(可自行定义文件名)之后使用flock文件对文件加锁,如果加锁失败,检查errno是否为EWOULDBLOCK。如果是则说明已经有进原创 2021-01-05 15:13:03 · 2938 阅读 · 4 评论 -
使用gdb通过网络远程调试嵌入式程序
使用gdb远程调试嵌入式主板程序0. 准备工作0.0 环境:Linux:Ubuntu18 64Bit in VMWare嵌入式目标板:随意,需要和虚拟机IP同一网段0.1. 网络连接:保证虚拟机和目标板之间能正常通信。0.2. 文件确认先确认是否存在下列两个文件:gdbserver目标板上运行的gdb调试服务,在板子上运行。板子上运行该程序后,就可以在电脑上进行连接和调试。aarch64-himix100-linux-gdb电脑上运行的调试软件,其中aarch64-himix100-li原创 2021-01-05 15:04:44 · 1437 阅读 · 0 评论 -
使用DM368的GPIO控制NANDFLASH的WP
目录0.问题描述1.DM368的GPIO操作1.1 gpio_request申请和冲突分析1.1.1 申请1.1.2 释放1.1.3 gpio_request冲突处理1.2 IOMUX的配置1.2.1 修改iomux寄存器1.2.2 通过davinci_cfg_reg函数配置1.3 IO的操作2.在Nand写入擦除操作中增加对WP的操作2.1 初始化、读写保护操作的定义2.2 WP引脚的操作2.3 测试是否生效0.问题描述最近需要使用DM368的GPIO控制NandFlash的WP引脚实现写保护功能,只原创 2021-01-03 22:18:50 · 964 阅读 · 0 评论 -
解决DM368 UBL读取UBoot无法启动的问题
目录解决DM368 UBL读取UBoot无法启动的问题0. 问题描述1. 卡死原因分析1.1 UBL启动流程1.2. 启动异常点分析2. 修改烧录工具SFT,正确写入多份UBoot2.1 修改点2.2 测试3. 循环自恢复3.1 自恢复的逻辑3.2 自恢复功能的实现3.2.1 初始化缓冲区3.2.2 页对页复制的实现3.2.3 定位最后一块Block的位置和检测的实现3.2.4 检测非最后一块的UBoot的实现3.2.5 恢复功能的实现逻辑4. 总结解决DM368 UBL读取UBoot无法启动的问题0.原创 2020-12-24 17:26:09 · 636 阅读 · 1 评论 -
将OpenCV2移植到嵌入式ARM平台(NanoPi Neo2)
将OpenCV2移植到嵌入式ARM平台0. 测试环境操作系统:Ubuntu 12.04.5 LTS 64位ARM平台:友善之臂 NanoPi Neo2 + OV5640 USB模块编译工具链:gcc-linaro-aarch64OpenCV版本:1. 安装交叉编译工具链解压交叉编译工具链包gcc-linaro-aarch64.tar.xz到/opt/下。....原创 2018-08-26 02:02:20 · 2546 阅读 · 5 评论 -
调试ARM+OV5640+上位机遇到的问题总结
调试ARM+OV5640+上位机遇到的问题总结1. 在Java Swing编写的上位机显示图像(实现类似视频播放的效果)目标:在Java Swing中实现一个能逐帧显示图片的控件。实现方法:写一个类继承JComponent,并且重写paint方法:private class PaintSurface extends JComponent { pri...原创 2018-06-18 17:43:26 · 1451 阅读 · 0 评论 -
Linux Arm上的RGB液晶屏驱动开发遇到的问题总结
(基于三星Exynos 4412 / iTop4412精英版开发板)1. 开发前准备和内核编译将Linux内核iTop4412_Kernel_3.0_20180508.tar.gz复制到虚拟机,解压。进入解压后的文件夹,使用命令cp config_for_linux_scp_elite .config覆盖配置文件。执行make zImage编译内核。 注意: ...原创 2018-06-20 23:42:33 · 2642 阅读 · 0 评论