自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux驱动侧手动添加485收发支持

Linux驱动侧 适配半双工485的收发支持

2024-02-13 01:09:08 498

原创 全志H3 百兆/千兆网口配置

全志H3在sys_config.fex中配置百兆千兆网口的方法

2023-09-30 00:39:01 382

原创 在嵌入式系统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 3542 4

原创 在Linux用户层使用MMAP对寄存器进行读写

0. 前言最近需要在嵌入式系统上调试驱动程序,需要在用户态下频繁读取ARM的寄存器的值。为了方便测试,发现可以在用户态下,通过mmap函数将设备节点/dev/mem进行映射,实现在用户态下将物理地址映射到虚拟地址,并通过对虚拟地址的修改来实现寄存器的修改。1. 原理1.1 /dev/mem设备节点简单一点说,/dev/mem是Linux系统下的物理内存的全镜像,可通过该节点实现对物理内存的访问。一般用于在嵌入式中以用户态形式直接访问寄存器/物理IO设备等。通常用法是open这个设备节点文件,然

2021-03-23 10:22:56 2836 3

原创 OpenCV笔记.1 - OpenCV的编译和安装

OpenCV的编译和安装想要使用OpenCV进行图像的处理和开发,就需要先对OpenCV库进行编译。虽然在Windows下已经有了现成的OpenCV库,但是由于官方提供的库缺少一些关键的功能(例如OpenCV的Nonfree库),因此需要自己编译。0. 准备准备工作如下:安装编译环境。如果是在Windows下就是VS/MingW等编译环境,Linux下就是GCC或其他交叉编译工具链。下载OpenCV源码和对应版本的opencv_contrib,放在同一目录下。如下图所示。Windows下编译

2021-03-17 09:27:44 2510 2

原创 使用Depix进行马赛克的消除测试

0. 前言最近看到各种公众号都在推一个叫Depix的Github项目,用途是能够消除文字马赛克,抱着试试看的态度测试了一下这个项目。太长不看版:公众号对该项目的效果有一定程度的夸大,但是还是要注意使用各种方法对个人隐私进行保护项目地址:https://github.com/beurtschipper/Depix项目自带的Example如下:这个项目的文档上说,只需要马赛克后的图像,马赛克图像上包含的字符的De Bruijn序列,就可以生成去马赛克的图像。(测试效果如上图所示)接下来就测试一

2021-03-03 09:56:42 9297 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 845

原创 低版本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 1109

原创 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 469

原创 C/C++杂记

1. C++中class和struct的主要区别struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的另一种说法:默认继承权限不同:默认情况下,struct的继承以public进行继承,class是以private继承。默认访问权限不同:class的成员默认权限是private,struct默...

2021-01-14 16:33:36 59

原创 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 1389

原创 Linux下避免程序被重复运行

Linux下避免程序被重复运行目标在Linux下,有些程序同时运行多个实例时会出错。因此,需要使用一些方法避免程序被重复运行,即同一时间段内只能有一个程序实例运行。思路程序启动的时候打开某个锁文件并对该文件加锁,退出程序时解锁。如果无法正常加锁,则说明程序已经在内存中运行了,当前线程return即可。代码实现首先,先以创建+可读写模式打开锁文件temp.lock(可自行定义文件名)之后使用flock文件对文件加锁,如果加锁失败,检查errno是否为EWOULDBLOCK。如果是则说明已经有进

2021-01-05 15:13:03 2581 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 1173

原创 使用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 812

原创 解决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 406 1

原创 机试题练习笔记

1. 字符串最后一个单词的长度题目计算字符串最后一个单词的长度,单词以空格隔开。 输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。解:import java.util.Scanner;public class Main { public static void main(String[] ...

2018-09-11 22:00:52 163

原创 将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 2371 5

原创 Java使用RXTX包进行串口通信

Java使用RXTX包进行串口通信参考链接https://www.cnblogs.com/Dreamer-1/p/5523046.html1. RXTX包的配置在http://fizzed.com/oss/rxtx-for-java下载RXTX包。1.1 JRE配置根据RXTX包里的说明文档,将RXTXcomm.jar包放在JRE安装目录下的lib\ext下。rxt...

2018-06-22 00:42:59 4051 3

原创 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 2529

原创 调试ARM+OV5640+上位机遇到的问题总结

调试ARM+OV5640+上位机遇到的问题总结1. 在Java Swing编写的上位机显示图像(实现类似视频播放的效果)目标:在Java Swing中实现一个能逐帧显示图片的控件。实现方法:写一个类继承JComponent,并且重写paint方法:private class PaintSurface extends JComponent { pri...

2018-06-18 17:43:26 1331

原创 Java Swing学习笔记(2)

Java Swing学习笔记(2)1. 两次启动同一个线程带来的异常IllegalThreadStateException1.1 问题分析1.2 解决方法2. 让文本框JTextField只能输入数字3. 弹出提示对话框4. 点击“关闭窗口”按钮时的操作和确认对话框4.1 自定义点击“关闭窗口”按钮时的操作4.2 显示确认对话框5. 耗时操作与更新UI...

2018-05-14 10:48:21 290

原创 Java Swing学习笔记(1)

Java Swing学习笔记(1)1. Hello World与程序详解1.1 Hello World程序代码参考:http://www.runoob.com/w3cnote/java-swing-demo-intro.htmlpackage com.company;import javax.swing.*;public class Main { pr...

2018-05-12 19:46:07 267

原创 Java的UDP相关

Java的UDP接收1. 代码1.1 UDP.java1.2 UdpHandler.java1.3 调用方法2. 代码解析2.1 DatagramSocket类2.1.1 构造函数2.1.2 发送与接收数据2.1.3 关闭DS对象2.2 DatagramPacket类2.2.1 构造函数2.2.2 获取数据、IP地址Java的UDP接...

2018-05-12 14:07:25 366

原创 C/C++部分笔试题分析

C/C++笔试题分析1. 看似考察fork()函数的题目问题答案解析2. 通过函数交换两个变量的值问题分析3. 括号匹配问题解&解析4. C++的多态问题解答代码解析1. 输出部分2. 内存泄漏部分总结5. C++中的const成员函数用途声明方式注意小结C/C++笔试题分析以下是在参加各公司笔...

2018-05-12 03:01:18 1555

空空如也

空空如也

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

TA关注的人

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