- 博客(42)
- 收藏
- 关注
原创 U8G2 中文字符 keil 异常问题解决 移植 C语言
KEIL 用U8G2输出中文搞了半天,大部分都是Arduino 和C不一样看了反而绕的很,搞了半天其实问题很简单。
2024-11-11 16:36:02
616
1
原创 buidldroot musl uclib库 编译
就您而言,您尝试使用属于 POSIX 一部分的非标准函数,这就是您需要 #define _GNU_SOURCE 1 的原因。您想要获得 _GNU_SOURCE 的全部效果,但要使用 BSD 定义优先于 POSIX 定义,使用 _GNU_SOURCE。BR2_TOOLCHAIN_HEADERS_AT_LEAST指定的版本要和交叉编译工具链的version.h中的一致,例如。BR2_TOOLCHAIN_EXTERNAL_INET_RPC:是否支持RPC,远程过程调用,主要用于NFS。buidroot编译。
2024-05-31 17:31:30
696
原创 SPARC VScode EIDE GDB 使用配置
网上有个“Debugging Guide for GDB and VS Code”的文档可以参考vscode介绍链接可以添加自定义的链接工具上面是标准JTAG的添加的标准模板,"name": "(gdb) Windows 上的 Bash 启动","program": "输入程序名称,例如 ${workspaceFolder}/a.exe",},"description": "为 gdb 启用整齐打印",},"description": "将反汇编风格设置为 Intel",我使用的模板,
2024-04-28 17:33:05
1249
原创 IAR 使用笔记生成使用库函数,自定义烧写分析(IAR BIN大小为0异常解决)
原文连接定义:#define PAGE_ADDRESS 0x6000__root 是IAR的扩展关键字,强制编译,保证没有使用的函数或者变量也能够包含在目标代码中__code数据存储在code(程序区),对应的date为数据区@的强制定义了数据的存储地址上面的定义实际就是把IEEE_ADDRESS的数据强制写入到0x6000中。
2024-04-16 15:17:12
1311
原创 RUST Rover 条件编译 异常处理
异常 error: failed to parse manifest at [features] conditional compilation 条件编译
2024-04-02 18:21:16
662
原创 芯片调试记录,芯片频率,添加摄像头,CAN、SPI、看门狗
/硬件I2C 设置//GPIO I2C 设置i2c0_gpio1 是gpio模拟I2C 功能嵌入式Linux下 i2c-tool工具的使用方法 包括i2cdetect、i2cget、i2cset、i2cdump、i2ctransferi2cdetect -ry 0 扫描 0地址寄存器。i2cdump -fy 0 0x30 扫描 0 I2C 0X30 地址。
2024-03-10 16:24:53
1151
原创 LINUX驱动中断GPIO 中断
中断最重要属性就是响应必须及时,而实际实现中中断处理过程往往比较费事,这将会影响后续中断响应。2.当设备可以访问的时候,驱动程序需要向应用程序发出信号,相当于产生”中断“。重点就是通过fcntl函数设置进程状态为FASYNC,经过这一步,驱动程序中的fasync函数就会执行。1、如果要处理的内容不希望被其他中断打断,那么可以放到上半部。4、除了上述三点以外的其他任务,优先考虑放到下半部。2、如果要处理的任务对时间敏感,可以放到上半部。3、如果要处理的任务与硬件有关,可以放到上半部。1、中断上下部设计思路。
2024-03-10 15:50:48
606
原创 PYCHARM PYSIDE6 QT 打包异常3种处理方式 no qt platform plugin could be initialized
no qt platform plugin could be initialized pycharm pyside 打包软件运行异常
2024-02-29 14:18:03
1479
原创 ERROR: reserving fdt memory region failed 错误分析
ERROR: reserving fdt memory region failed在 boot_fdt_add_mem_rsv_regions调用boot_fdt_reserve_region前加入打印:void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob){uint64_t addr, size;int i, total, ret;int nodeoffset, subnode;struct fdt_resource
2024-01-06 17:59:09
1820
原创 使用NEON单元将MIPI的Raw图像转换YUV和16位数组的方法
关于yuv 格式:planar,semiplana,Interleaved格式区别YUV介绍planar 格式,Y U V 分3个数组拼接semiplana:Semi 是“半”的意思,个人理解这个是半平面模式,这个格式的数据量跟YUV422 Planar的一样,但是U、V是交叉存放的。YUV 4:4:4 采样YUV 4:4:4 采样,意味着 Y、U、V 三个分量的采样比例相同,因此在生成的图像里,每个像素的三个分量信息完整,都是 8 bit,也就是一个字节。YUV 4:2:2 采样。
2023-11-22 15:01:46
1770
原创 STM32 FOC电机PID学习笔记
简介在系统上存在外部干扰的情况下反馈是最好的选择否则使用前馈网络。为扭矩、通量和速度实施的调节器实际上是比例(P Proportional )、积分(I Integral)、微分 (D Derivative ) 调节器。 STM32中实际提供了3种,但是实际上我们常用的电机反馈调节使用的是PI反馈控制就够了。参考《STM32F PMSM single/dual FOC SDK》文档PID原理文档章节4我们平时使用到并联的PI的示意图,不过该图对于不同频率的时候的响应有缺陷。并行模式K
2023-05-30 17:28:10
3805
3
原创 使用PCIE的TTE卡遇到的rcu: INFO: rcu_sched self-detected stall on CPU问题解决
RCU一个说明网页cat或者tail -f命令日 志 文 件 说 明/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一/var/log/secure 与安全相关的日志信息/var/log/maillog 与邮件相关的日志信息/var/log/cron 与定时任务相关的日志信息/var/log/spooler 与UUCP和news设备相关的日志信息/var/log/boot.log 守护进程启动和停止相关的日志消息系统:#
2023-03-25 15:22:55
2013
1
原创 simple foc 移植KEIL驱动双路电机
SIMPLE FOC 的通信控制协议加ST的定点算法才能较好的用在实际项目。首先需要将SIMPLE FOC 移植到KEIL中。
2023-03-16 14:36:23
1974
1
原创 SimpleFOC上位机PYTHON 环境安装笔记
SimpleFOC上位机PYTHON 环境安装笔记 PYTHON 仿真调试正常 终端 打包 运行报错
2023-03-08 16:19:02
1926
3
原创 FOC ST MediumFrequencyTask 分析(代码注释)
理解为启动时为开环模式加速启动,到一定阶段转为FOC闭环处理。在运行过程中会根据外部输入命令进行处理。
2023-02-21 08:48:30
3625
1
原创 FOC电机ST系列处理器使用的基础学习笔记
ST公司开源了STM32相关的FOC控制代码,通过其MotoControl Workbench 选择对应的开发板和电机板可以快速的生成FOC控制代码。总体描述生成的代码主要有下面结果部分:1.Application/MDK-ARM 是ARM的启动代码。2.Application/User主要是用户代码。3.Drivers/STM32G*** 是驱动部分代码。4.Drivers/CMSIS应该是ARMCortex-M系列IP的硬件抽象标准,Common Microcontroller Softw
2022-11-10 14:16:15
6129
原创 YL芯片LVDS屏幕时序和接口介绍
芯片使用LVDS接口对外输出图像,芯片支持单8和双8和2路单8同时输出的方式输出图像。芯片支持VESA (Video Electronics Standards Association) standard and JEIDA (Japanese Electronic Industry Development Association) standard两种输出标准。LVDS的接口如下:芯片的LVDS 接口功能框图如下:CH0\CH1 输出内容选择通过GPR_LVOC_CTRL寄存器的
2022-08-24 15:53:39
2294
原创 dma_alloc_coherent DMA内存申请学习笔记
dma_alloc_coherent 相关的知识网络上有很多,将相关的知识收集汇总以便于后续遇到问题方便查找。这一次对dma_alloc_coherent进行学习的原因是在使用rapidio驱动时申请大于64M的DMA内存时,遇到多次申请无法申请到内存的情况(加大预留DMA内存不能解决)。进而学习一下相关知识看是否有方法能解决相关问题。遇到的问题DMA无法申请大于32M的内存,MAX_ORDER 这个宏设置的太小,这个宏限制了一次请求所能分配的最大物理页数。如果申请5MB内存,MAX_ORDER 需要不小于
2022-06-23 18:30:58
8025
原创 RAPIDIO LINUX 驱动理解笔记1 DMA OUTBOUND
应用程序调用的ioctl 对应底层的内容为rio_mport_cdev.c:初始分析DMA需要的APIO空间申请和注销初始化前需要调用 ioctl的RIO_MAP_OUTBOUND申请OUBOUND的对应窗口设置和RIO_UNMAP_OUTBOUND释放。为什么要做这个处理参看我的《rapidio学习使用过程摘抄》的AXI 地址对应RAPIDIO地址转换(AXI PIO Mode)部分章节。驱动中DMA的调用关系rio_mport_cdev.c中roi.c中 调用注册的map_outb函数
2022-06-16 11:31:13
2589
5
原创 DW PCIE 的Register Module, LBC, and DBI章节学习笔记
用到名词解释CDM:Configuration Dependent ModuleThis is an internal block in the native controller that has the PCIe configuration registers andsome user-accessible registers.ELBI:External Local Bus InterfaceDelivers an inbound register RD/WR received by the
2022-04-24 16:20:20
5569
1
原创 RawData是Bayer转RGB格式代码分析和NEON单元加速方法
由于810芯片CAMERALINK输入RawData的Bayer格式转RGB功能收行缓存大小的限制,最大只支持4K模式下进行Bayer格式转RGB功能。所以相关的转换功能需要使用CPU或者GPU进行转换。下面介绍一下相关的格式的原理和转换程序编写方法。图像格式和滤光片间的关系对应很多CAMERALINK或普通相机COMS光原件本身只是对一个一个点对光强弱状态进行量化,并不会颜色进行区分。达到区分颜色的方式是使用滤光片产生对颜色的区分。类似下图经过滤光片后CMOS每个点对应的光强度就是对应颜色的光强度。
2021-12-08 09:39:14
3631
原创 CUDA的旋转R ROI Align的OPENCL实现2(CUDA代码分析)
ROI Align的旋转从前一篇文章原理看来与我开始的准备用OPENVX实现的理解有很大差异。我一开始准备使用的是使用OPENVX的旋转功能将图像进行旋转后进行ROI Align计算,旋转过程使用“”双线性插值”的方式优化图像质量。后来将代码和原理相结合后发现其实不能那么做,只能使用上一篇文章的最后一张图的原理来计算。参考CUDA的代码来实现相关功能。bilinear_interpolate代码分析先了解几个概念:标量类型(Scalar type)是相对复合类型(Compound type)来说的:
2021-11-18 11:24:02
6717
原创 CUDA的旋转R ROI Align的OPENCL实现1(原理理解)
在CUDA上实现的 旋转RIO Pooling 函数ROIAlignRotatedForward需要移植到我所使用的SOC上,我使用的SOC支持OPENVX编程。对应的CUDA 程序在下面网址CUDA实现 旋转RIO 函数链接从CUDA代码入手旋转RoI链接__global__ void ROIAlignRotatedForward(const int nthreads, const scalar_t *bottom_data, co
2021-11-17 13:27:01
3642
1
原创 Pintrl LINUX 下管脚复用添加CAN复用实例
SOC由于外设众多管脚不够用普片使用管脚复用,在LINUX下专门有个Pinctrl的子系统进行复用管脚的管理。我再这就描述相关的系统架构,只是简单的描述一下实例和使用说明。详细介绍建议查看https://blog.youkuaiyun.com/u012830148/article/details/80609337 相关说明。添加一个Pintrl定义CAN1LINUX驱动下SOC的PIN管脚控制已经完整的定义好了,无需要去修改。我们添加一个Pintrl的定义其实只是提供一个Pin的复用选择组合,我们拿CAN1的Pi
2021-11-03 15:20:00
839
原创 GPU的OPENCL编程2(CPU和GPU数据交互和GPU与global id local id的关系)
在不同的架构上GPU和CPU的情况不一样,在电脑上GPU可以有很大的DDR显存存放数据,SOC上GPU的显存和CPU是同一个DDR,GPU可能会提供一个小的SRAM作为缓存该缓存不用于CPU和GPU交互数据。这个章节的细节内容建议查看“OpenCL Programming Guide”这本书。在Opencl编程中和普通CPU编程有很大的不同,提供给GPU的共享内存需要通过clCreateBuffer或clCreateImage申请。传输变量内存地址,传输Kernel的参数都必须通过clSetKernelA
2021-10-30 15:17:21
1578
原创 GPU的OPENCL编程1(基础知识和初始化)
OPENCL 简单介绍OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU或其他类型的处理器组成。通过OpenCL可以通过GPU的并行加速,不过OpenCL的编程思路和标准C语言串行执行有很大区别。OpenCL使用了kernel函数,kernels并行运行在GPU上。GPU单元和Host关系上图对SOC的GPU计算单元的关系理解有很大帮助.Processing Element:GPU的最小计算单元,Opencl的kernel就是运行在这个计算单元上。多个单元组合在一起共享一个G
2021-10-29 14:06:09
1351
原创 PCIE总线理解笔记
基本介绍 PCI的EP和RC分别对应从模式和主模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。RC模式使用外设一般都有LINUX 驱动程序,安装好驱动基本都能正常使用。但是对于SOC芯片本身能做EP有能做RC 两者如何互相通信可能就需要对PCIE的使用和基本原理有所了解才能较好的使用。 先了解几个定义:TLP TLP(Transaction Layer Packet)据包的描述被定义为事务层数据包 (TLP),它与 PCIe 的最上层有关。数据链路层负责
2021-10-24 14:11:10
31908
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人