
嵌入式
文章平均质量分 78
Rehabilitation2018
这个作者很懒,什么都没留下…
展开
-
旋转倒立摆的起摆与稳摆---QYC
**基于STM32控制的旋转倒立摆**文章目录基于STM32控制的旋转倒立摆前言一、旋转倒立摆的结构1.相对编码器与绝对编码器2.相对编码器与绝对编码器的信号采集3.STM32编码器模式4.使用STM32CubeMx配置过程二、倒立摆模型建立三、实验方案与实验现象1.整体方案2.实验现象与上位机数据反思与总结前言近期在学习简易旋转倒立摆装置,倒立摆其实是一个十分经典的自动控制模型,不过开始学习了解结构和原理还是花了很多时间,在思路以及调试过程中遇到了很多困难。我认为倒立摆有两个难点,一个是自动原创 2022-05-27 16:15:30 · 11227 阅读 · 7 评论 -
基于FPGA设计的kalman滤波器——QMJ
基于Verilog设计的kalman滤波器本设计将通过matlab和verilog分别编写的kalman程序,对同一组数据进行处理,将数据处理效果对比,分析verilog的kalman滤波效果。一、仿真软件本文kalman滤波仿真使用的软件包括:Quartus II,ModelSim,Matlab。Quartus II仿真设备选择5CSEMA5F31C6。二、Kalman滤波介绍1,Kalman滤波用途:用于机器人导航,控制,传感器数据融合以及军事方面的雷达系统、导弹追踪等等。近年来多应用于计原创 2022-02-22 17:00:32 · 4846 阅读 · 16 评论 -
卷积神经网络的FPGA硬件加速——QMJ
一、本次实验目的:1)学习卷积神经网络;2)FPGA中实现卷积运算。二、脉动阵列结构设计 PE(处理单元)的内部结构设计如图1所示,PE完成乘加运算得到的结果保存于寄存器中,其中IN和W表示1个字节(8bit)的输入和权重数据传递到PE。 图1 PE结构 图2中,W、IN和OUT表示阵列的输入和输出,脉动阵列一行4个PE单元组成一组。 脉动阵列PE得到的结果传递到out1,out2,out3的步骤: 第一步:PE单元完成4次乘加运算; 第二步:将一组PE得到的结果,从左到原创 2022-02-22 16:57:17 · 2813 阅读 · 1 评论 -
文件operations
在RTDM中rtdm_openstatic inline int rtdm_open(const char *path, int oflag, ...){ return __rtdm_dev_open(path, oflag);}__rtdm_dev_open()int __rtdm_dev_open(const char *path, int oflag){ struct r...原创 2022-02-22 16:55:00 · 171 阅读 · 0 评论 -
最小二乘系统辨识--WT
一、模型辨识模型辨识就是在输入输出数据的基础上,从一组给定的模型类中,确定一个与所测系统等价的模型。模型辨识有三个要素——数据、模型和准则,辨识就是按照一个准则在一组模型类中选择一个与数据拟合得最好的模型。文章参考《A matlab-based identification procedure applied to a two-degrees-offreedom robot manipulator for engineering students》。二、模型辨识流程1、激励轨迹为了辨识系统的动力原创 2021-08-28 09:27:16 · 2103 阅读 · 1 评论 -
嵌入式主板上更新xenomai +can通信测试--WT
通常出于某些需求我们需要更新安装的xenomai:就遇到的几个问题进行总结:在给Linux内核打上补丁构建出xenomai内核后,另外需要xenomai提供的一些实用程序与库,编译安装xenomai2.6.5后系统正常运行,且实时xenomai运行正常.但是现在需要xenomai为xenomai3.0.5,就需要更新库以提供使用。更新xenomai必然更新对应的打补丁的Linux内核,在打补丁的内核中配置好xenomai后,将其替换到主机中,且运行正常。1、编译选项这里遇到一个问题,我用的是xen原创 2020-05-30 18:45:20 · 2931 阅读 · 6 评论 -
Linux +xenomai 下 CAN 卡中断通信 --WT
xenomai下can卡中断通信本文基于 linux-4.9.38+Xenomai 3.0.5 的实时系统加载用的是xenomai下can模块 以及pci总线驱动rtcan_adv_pci,以及rtcan_sja1000的can控制器驱动。一、中断申请中断处理程序不是编译内核时就完全确定的,因此要为开发者留下了编程接口。int rtdm_irq_request(rtdm_irq_t *...原创 2020-04-21 21:27:55 · 2668 阅读 · 3 评论 -
Linux +xenomai 下sendto()系统调用过程 --WT
A : rtdm_sendto()方法应用程序 rtdm_sendto()传入套接字生成的文件描述符将应用程序中的发送buffer内容复制到内核发送buffer中,继而进行驱动欧发送:rtdm_sendto()->rtdm_sendmsg()->rtdm_fd_sendmsg()->rtcan_raw_sendmsg()->rtcan_sja_start_xmit()...原创 2020-04-18 18:39:56 · 1372 阅读 · 0 评论 -
Linux 下设备 中断号进行共享 --WT
Linux 下 中断号共享在 Linux中可以实现一个中断号来驱动两套的驱动程序.int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id)irq:中断号,可以通过cat...原创 2020-04-15 11:03:49 · 733 阅读 · 0 评论 -
xenomai 应用开发 6:优先级反转 --WT
一、优先级反转优先级反转发生在高优先级任务被迫无限期等待低优先级任务完成的情况下。例如,假设prioHigh、prioMedium和prioLow分别是高优先级、中等优先级和低优先级的任务。prioLow通过获取其关联的二进制信号量来获取资源。当prioHigh抢占prioLow并通过获取相同的信号量来争用资源时,它就会被阻塞。如果prioHigh被阻塞的时间不超过prioLow完成对资源的处理...原创 2020-03-28 12:42:29 · 1040 阅读 · 0 评论 -
xenomai 应用开发 5:相同优先级的循环调度--WT
一、循环调度任务对于具有相同优先级的任务,Xenomai调度程序同时支持FIFO调度和循环策略。循环策略类似于分时操作系统依次运行每个活动进程以获得其时间份额(其“时间片”)。FIFO调度,任务只抢占优先级较低的任务;它从不抢占优先级相同或较低的任务。当多个具有相同优先级的任务准备运行时,首先在调度程序的等待队列中排队的任务将首先运行(遵循FIFO顺序)。只有当第一个任务就绪时,调度程序才能从...原创 2020-03-26 21:14:30 · 1376 阅读 · 2 评论 -
xenomai 应用开发 4:基于抢占优先级的调度--WT
一、基于抢占优先级的任务调度Xenomai的默认调度策略是基于抢占优先级的FIFO(先进先出)调度。就是说,当高优先级准备好执行时,低优先级任务的执行被中断。当具有相同优先级的多个进程准备好运行时,默认情况下,首先在调度程序的等待队列中排队的任务将首先运行(以FIFO排序),并一直运行到底。使用基于抢占优先级的调度程序,每个任务都有一个优先级,内核确保将CPU分配给准备运行的最高优先级任务。这...原创 2020-03-22 20:48:18 · 2059 阅读 · 1 评论 -
xenomai 应用开发 3:信号量 --WT
一、信号量(Semaphores)信号量有助于协调多任务应用程序的活动。任务最明显的通信方式是通过各种共享数据结构。由于单个进程中的所有任务都存在于单个线性地址空间中,因此在任务之间共享数据结构很简单。在不同任务上下文中运行的代码可以直接引用全局变量、线性缓冲区、环形缓冲区、链接列表和指针。然而,虽然共享地址空间简化了数据交换,但对内存的互锁访问对于避免数据损坏至关重要。确保独占访问共享资源的方...原创 2020-03-22 20:43:40 · 1301 阅读 · 2 评论 -
将SJA1000注册到RTDM实时驱动模型中 --WT
要将一个具体的can 控制器注册到xenomai 中的RTDM实时驱动模型中,一般分为两个部分:第一,将具体的CAN控制器注册到RTCAN模块中。第二,将注册的具体的RTCAN设备注册到 RTDM之中。原创 2020-03-19 09:50:01 · 1052 阅读 · 0 评论 -
xenomai 应用开发 2:单触发模式与周期性模式运行多任务--WT
一、多任务模式当下的实时系统基于多任务和任务间通信的互补概念。多任务环境允许将实时应用程序构建为一组独立的任务,每个任务都有单独的执行线程和自己的一组系统资源。任务间通信设施允许这些任务同步和协调它们的活动。Xenomai多任务调度程序使用中断驱动的、基于优先级的抢占式任务调度。它具有快速的上下文切换和低中断延迟。多任务处理造成了许多并发执行的任务,而实际上,内核根据调度算法交错执行这些任务。...原创 2020-03-16 18:52:21 · 2624 阅读 · 4 评论 -
xenomai 应用开发 1:创建并运行一个实时任务 --WT
一、创建一个实时任务1、RT_TASK 结构当在Xenomai中创建实时任务时,RT_TASK结构将作为引用此任务的描述符。struct RT_TASK {uintptr_t handle;pthread_t thread;};任务创建将会通过调用 rt_task_create函数进行创建:int rt_task_create (RT_TASK *task, const char...原创 2020-03-16 13:08:39 · 6139 阅读 · 5 评论 -
Virtual Can 内环通信测试--WT
1.XENOMAI下CAN内环通信测试实验本文基于 linux-4.9.38+Xenomai 3.0.5在嵌入式领域工作时,经常会遇到这样的情况:硬件不可用,但应当开发软件。或者说软件开发应该独立于硬件可用性而进行。发生这种情况的原因有很多,但这种情况一定会存在。有些使用模拟器运行整个操作系统。在Linux中,CAN接口是使用SocketCAN处理的,其中CAN总线被视为Berkeley套接字...原创 2020-03-08 10:23:07 · 1280 阅读 · 3 评论 -
Advantech PCI card 驱动注册 --W T
1.1 初始化驱动函数在rtcan_adv_pci.c中adv_pci驱动程序的初始化函数module_init(rtcan_adv_pci_init):static int __init rtcan_adv_pci_init(void){ if (!realtime_core_enabled()) return 0; return pci_register_driver(&am...原创 2020-02-18 21:13:44 · 678 阅读 · 0 评论 -
ChibiOS环境的搭建--ZSJ
ChibiOS环境的搭建—-ZSJ一: 1、ChibiOS:可以把它当作一个嵌入式的库,更具体一点,可以把它看成是一个操作系统 2、ChibiStudio:即用型基于Eclipse的工具链 3、Eclipses:集成开发环境(IDE)。是一种开源,带有调试窗口,并且能简化开发过程的工具。 ChibiOS是一个包含源代码和纯文本文件的软件库,必须要...原创 2018-09-07 19:31:29 · 4993 阅读 · 0 评论