- 博客(38)
- 资源 (5)
- 收藏
- 关注
翻译 赛灵思 TSN 解决方案
原因是由于EP侧的存储转发。配置IPv4元组的匹配条件,在驱动加载时,对对应的元组数据选择’1’(设置)或’0’(未设置)其中IPv4元组顺序为’IPv4_tuple=src_ip, dest_ip, dscp, protocol, src_port , dest_port’。用户应用程序 ipic_prog 对 IPIC 模块进行编程,以添加对应于设置的 IPv4 元组数据的哈希条目,并在设置的 IPv4 元组数据匹配时使用提供的源、目标 MAC 地址、VLAN ID 和 PCP 值转换 IP 流。
2023-06-19 15:40:04
4290
9
翻译 Zipwire
55.1 Chip-specific Zipwire information本节总结了控制器中的模块配置。 关于 SIPI 和 LFAST 的全面介绍,请参考 SIPI 和 LFAST 的具体专用章节.SIPI 和 LFAST 相互连接并作为一个单元出现。 两个模块的 LFAST 部分允许高速设备间通信。SIPI 允许在具有 SIPI 和 LFAST 通信模块的设备之间共享内存(参见图 55-1)。 Zipwire 是 LFAST 和 SIPI 组合的官方品牌。LFAST 可以在从模式配置或主模式
2022-03-28 09:56:27
2577
1
原创 ZYNQ UltraScale+ MPSoC Linux + ThreadX AMP玩法
ZYNQ UltraScale+ MPSoC Linux + ThreadX AMP玩法处理器架构ZYNQ 7000双核ARM-Cortex A9 CPUZYNQ UltraScale+ MPSoC四核ARM-Cortex A53 CPU、双核Cortex-R5 RPU、Mali-400 GPU(一个Geom
2022-03-22 20:07:44
3646
翻译 GEM TSU Interface Details and IEEE 1588 Support
Chapter 1: IntroductionGEM 中的 1588 时间戳单元 (TSU) 是一个定时器,实现为 102 位寄存器。 高 48 位计算秒,接下来的 30 低位计算纳秒,最低 24 位计算亚纳秒。 当计数到一秒时,低 54 位翻转。GEM0 的外部 TSU 端口向顶层用户公开。 外部端口为 94 位宽,符合上述定义的内部 TSU 计数的最高有效位。Chapter 2: GEM TSU Clock Source使用 GEM 时,目前您可以为 TSU 时钟选择 3 种不同的时钟源。以下
2022-03-15 18:16:09
2482
转载 RPMsg:协议简介
RPMsg:协议简介本篇文章转载于https://www.jianshu.com/p/c7cdad8273ed,在此做个备份,方便查阅 在此感谢原博主***SunnyZhou1024*** RPMsg:协议简介0. 起因1. AMP2. RPMsg2.1. Linux中的RPMsg2.2. 原理2.3. 协议3. API4.4. References0. 起因之前在RPC原理与FastRPC实现一文中介绍过RPC的原理,简而言之,RPC就是实现本地程序调用位于另一个地址空间的例程(routine
2022-03-03 12:43:53
8675
3
原创 ZYNQ UltraScale+ MPSoC OpenAMP 2019.1
ZYNQ UltraScale+ MPSoC OpenAMP 2019.1本文面旨在补充 适用于 Zynq-7000 和 Zynq UltraScale+ MPSoC 的UG1186“LibMetal 和 OpenAMP 用户指南” (2019.1) 。目录ZYNQ UltraScale+ MPSoC OpenAMP 2019.1快试试!文档和源代码文件源代码的 URLXilinx Openamp 和 Libmetal 相关代码其他示例ZynqMP Linux Master 运行在 APU 上
2022-03-02 16:26:53
3181
原创 ZYNQ UltraScale+ MPSoC OpenAMP 2018.3
ZYNQ OpenAMP 2018.3本文只是对 UG1186 “入门指南”的补充和阐明(适用于 Zynq UltraScale+ MPSoC。)快速尝试以下是启动 Linux 和使用预构建映像运行 openamp 应用程序的基本步骤。例如对于 ZCU102:Echo测试应用程序将数据包从运行在四核 Cortex-A53 上的 Linux 发送到运行 FreeRTOS 的单个 Cortex-R5,然后再将它们发回。将文件 BOOT.BIN、image.ub 和 openamp.dtb
2022-03-02 13:58:13
3396
原创 ZYNQ与ThreadX之AMP玩法
得益于A9的双核异构架构,我们可以在双核上进行AMP、SMP、以及BMP三种运行模式的软件开发。本次是笔记简单概要AMP的玩法。Xilinx的SDK提供的标准的AMP是基于FreeRTOS的OpenAMP,我们这里需要的是基于ThreadX的AMP.创建CPU0_APP我们直接通过New->Application Project:创建一个在内核0上运行的APP:需要注意的是选择的Processor为内核0.图 1我在CPU0中创建了一个按键,通过连接在PS上的按键KEY_PS控制连接在
2021-11-25 09:53:41
1699
2
原创 ZYNQ移植ThreadX demo
本次演示是基于vivado 2018.3版本完成的。硬件是7020 512M DDR 7010与7020的arm a9核是相同的,可以直接参考自己的硬件进行创建自己的工程。本次的原始工程文件连接在论坛中已经可以找到。下载并解压,使用其中的xilinx下的文件。当前创建的threadx工程文件除了tx_initialize_low_level.S文件其余都是基于最新的6.1.9版本1、 创建Vivado工程图 1我们创建一个名为Ailurus的工程:图 2一路Next图3图 4图
2021-11-23 11:25:44
2217
11
原创 ROS 入门21讲 之~ 实现一个发布者
ROS 入门21讲 之~ 实现一个发布者如何实现一个发布者主要就是4个步骤:初始化ROS节点;向ROS Master注册节点信息(ROS1,在ROS2中已经没有这个概念),包括发布的话题名,话题的消息类型;创建消息数据;按照一定的频率发布消息。代码实现/*该例程将发布一个turtle1/cmd_vel话题,消息类型为geometry_msgs::Twist*/#include <ros/ros.h>#include <geometry_msgs/Twist.h&g
2021-08-05 17:38:10
264
原创 ZYNQ 安装ubuntu文件系统
ZYNQ 7020 Ubuntu16.04文件系统安装在关于zynq openamp的章节我们已经完成了zynq 的u-boot,内核,设备树的制作,通过XSDK完成了启动文件的创建。同样道理制作zynq7020的启动文件,我们开始安装ubuntu文件系统。本次基本都基于此教程。磁盘分区分区过程很简单,主要分为启动分区(FAT32)以及文件系统(EXT4)我们直接通过ubuntu自带的磁盘工具 或者 gparted工具都可以快速完成分区。此处我们只介绍使用系统自带的磁盘工具进行磁盘分区。SD
2021-04-30 11:05:30
5019
5
原创 ZYNQ双核通信 Linux+FreeRTOS(一)
ZYNQ 双核通信 一OpenAMP开发换环境搭建编译U-boot编译Kernel编译设备树什么是devicetree?Devicetree基础设备树属性设备树生成器(DTG)Task Output Products第1步:获取DTG源第2步:生成DTS文件(使用Xilinx SDK生成DTS文件(GUI流:工具版本2014.2-2019.1))编译步骤1:获取Devicetree编译器源步骤2:预处理Devicetree源步骤3:从DTS编译Devicetree Blob(.dtb)文件本次开发平台 :
2021-03-15 10:24:23
9944
原创 UHD+GNU Radio Ubuntu环境搭建
#UHD+GNU Radio Ubuntu环境搭建 最近引文项目需要,需要进行频谱感知,特地学习了一下SDR 和GNURadio ,现在首先是入门的开发环境搭建以及部分测试。 本次教程采用ubuntu16.04版本,usrp采用的是N210,在vmware中开发。本文主要参考Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux文章,主要进行部分翻译与补充。详细请看原文。 本文档仅适用于
2021-01-20 16:53:22
1674
原创 ThreadX + LevelX+ FileX在STM32+NorFlash的移植
ThreadX + LevelX+ FileX在STM32+NorFlash的移植开发平台:IDE:MDK + STM32CubemxMCU:STM32F767IGT6;NorFlash:W25Q256;SPI:四线。本教程是基于STM32 + SPI NorFlash 完成的,此历程相对上一个LevelX的历程中增加了使用ThreadX 与FileX的支持,同时,SPI Flash驱动增加DMA收发支持。实际使用过程中与芯片没什么紧密关系,均可使用,也不局限与SPI NorFlash 。实际
2020-12-23 18:20:18
3447
3
原创 Threadx LevelX NOR闪存的Sector Write
Threadx LevelX NOR闪存的Sector WriteLevelX _lx_nor_flash_sector_write函数确定是否有少于两个Block的空闲扇区LevelX _lx_nor_flash_sector_write函数UINT _lx_nor_flash_sector_write(LX_NOR_FLASH *nor_flash, ULONG logical_sector, VOID *buffer) 此功能将逻辑扇区写入NOR闪存,其中logical_sector是用户也
2020-12-01 22:35:27
646
原创 ThreadX LevelX在STM32+NorFlash的移植
LevelX在STM32+NorFlash的移植开发平台:IDE:Atollic TrueSTUDIO for STM32 + STM32CubemxMCU:STM32F767IGT6;NorFlash:W25Q256;SPI:四线。本教程是基于STM32 + SPI NorFlash 完成的,实际使用过程中与芯片没什么紧密关系,均可使用,也不局限与SPI NorFlash 。实际上无论什么接口、什么类型的FLASH,除移植过程中对接口操作进行修改其余均可参照此教程进行移植。这里仅仅使用 SP
2020-11-24 10:58:13
1858
7
原创 ThreadX LevelX NOR闪存的open流程
ThreadX LevelX NOR闪存的open流程LevelX NOR闪存的数据管理结构LevelX NOR闪存的BlockHeader信息数据管理初始化流程LevelX 对NOR 闪存的初始化底层驱动绑定计算BlockHeader信息找到整个闪存的最大、最小擦除计数闪存第一次使用或之前完全擦除过闪存之通过LevelX使用过计算空闲扇区数异常扇区检测LevelX NOR闪存的数据管理结构 想要了解LevelX对NOR闪存的数据管理方式,首先必须要知道LevelX的管理数据在NOR闪存(NAND一样)
2020-10-25 18:01:34
1498
6
原创 ThreadX LevelX简介以及对均衡磨损的理解
ThreadX LevelX简介以及对均衡磨损思想的理解ThreadX LevelX简介均衡磨损由来与实现思路ThreadX LevelX简介 Azure RTOS(ThreadX) LevelX为嵌入式应用提供了NAND和NOR闪存磨损均衡操作方式。由于 NAND 和 NOR 闪存只能被擦除有限的次数,因此均匀地分配闪存的使用至关重要。这通常被称为 “均衡磨损”,也是LevelX存在的目的。 选择要重用哪个闪存块的算法主要是基于擦除次数,但也并不完全是。如果有另一个块的擦除次数在最小擦除次数的可接受
2020-10-23 16:07:48
2676
原创 FreeRTOS启动第一个任务和任务的切换实现过程
FreeRTOS启动第一个任务和任务的切换实现过程此篇文章主要参考了野火的《FreeRTOS内核实现与应用开发指南》,和其他博主的一些资料并加入了一些个人理解,作为学习笔记,在此感谢火哥和其他博主;第一个任务的启动vPortSVCHandler函数开始真正启动第一个任务;上代码:__asm void vPortSVCHandler( void ){ extern pxCurrentT...
2019-01-09 17:52:26
8546
原创 数据读写的乒乓操作
数据读写的乒乓操作文中一部分从其他博客中学习到,加入了自己实际应用的过程。 在重要数据的解帧与处理过程中,为了确保数据的实时性与可靠性,我们一般对收到的数据存储到芯片的RAM或Flash(掉电数据恢复)中进行处理,一般对内存的读写采用乒乓的方式读写。列如Flash中空闲的两块Flash或RAM中两个不同的地址存储关键帧信息, 针对Flash 两个Bank为BankA 、BankB B...
2018-04-16 09:56:34
9649
3
转载 ioctl函数详解
注:本文转自http://blog.youkuaiyun.com/chun_1959/article/details/44851793感谢原创作者。大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。一、在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符
2017-03-09 18:03:13
3817
转载 《TCP/IP详解卷2:实现》笔记--协议控制块
协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。Internet协议维护Internet协议控制块(internet protocol control block)和TCP控制块(TCP control block)。因为UDP是无连接的,所以一个端结点需要的所有信息都在Internet PCB中找到,不存在UDP控制块。Internet PCB含有所有UDP和TCP端结点
2016-11-21 15:12:42
892
转载 向量中断和非向量中断
向量中断 非向量中断向量中断与非向量中断的区别 推荐向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了再判断中断标志来识别具体是哪个中断。向量中断实时性好,非向量中断简单 向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量IRQ。 FIQ(fast interrpt request)快速中断请求要求
2016-06-14 14:08:11
1117
转载 boot loader能全部用C程序编写吗
在《什么是boot loader》一文中我抛出了一个问题,这个问题如下:我们说boot loader通常采用汇编和C语言相结合来编写的,那能不能全部用C语言来进行编写呢?为什么?对于这一问题的答案是:不能。C程序中所有的代码都是以函数的形式出现的。可能有人要说在C中也可以嵌入汇编代码,能不能用这种方式来实现整个boot loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。那C程
2016-06-13 09:27:16
696
转载 什么是Boot Loader
在嵌入式系统当中你可能经常听到 boot loader(引导加载器)这一词,boot loader是指什么呢?在我们日常经常接触的东西中是不是有与boot loader的作用或是概念相似的呢?有一点我一定猜得到,你现在正在用计算机看这篇文章。如果你稍微熟悉计算机的组成,你一定知道BIOS(Basic Input/Output System)。BIOS在计算机中就是用来启动计算系统的,在完成一定的硬件
2016-06-13 09:23:52
977
转载 C++ typeof基本应用方式解析
C++ typeof基本应用方式解析C++ typeof在实际编程中主要就是帮助开发人员获取表达式的值的类型,并且还能获取表达式的类型。我们将会在这里为大家详细介绍其中的内容。C++编程语言可以被看做是C语言的升级版本。它不但拥有C语言的各种特性,而且还在一些特定方面上有所改进,使得开发人员在编程中大大提高了开发效率。
2015-12-23 13:17:56
3928
转载 arm启动过程详解
ARM芯片的启动程序的分析和总结(2009-02-04 14:35:26)标签:杂谈 分类:ARM1、综述: 目前大多基于ARM芯片的系统都是一个比较复杂的片上系统,多数硬件模块都是可配置的,可以通过软件来设置其需要的工作状态。因此在运行用户的应用程序之前,需要由专门的一段代码来完成对系统的初始化。这一段代码就称为启动程序。
2015-12-22 10:57:03
4391
转载 变量的内存分配和释放
变量的内存分配和释放变量的内存分配和释放从作用范围的角度,变量可以分为两大类:全局(Global)变量和局部(Local)变量。函数或者过程内部定义的变量为局部变量;其他的变量被声明在interface和implementation部分,称作全局变量,可以在整个单元中引用。对于在类中声明的变量,如果我将类比作单元,那么类中的变量可以比作单元中的全局变量;类的方法
2015-12-10 09:13:05
1242
转载 数据结构学习之双向链表结构
转载自 :http://blog.youkuaiyun.com/ab19860————在此 向原作致敬 在前面总结的单向链表结构的基础上,现在开始着手实践实践双向链表结构,如果充分理解了单向链表数据结构,那对双向链表结构的理解也就不再困难,换个角度而言,双向链表是单向链表的扩展,如果从数据结构代码的定义上来看,双向链表需要维护三个数据内容:数据(data)、前指针(prev)和后指针(
2015-11-08 10:49:32
450
转载 结构体指针变量与结构体成员指针变量
C代码 #include #include #include struct student{ char *name; int score; struct student* next; }stu,*stu1; int main(){ stu.name
2015-11-07 17:06:12
431
原创 结构体初识———结构体成员
结构体中的成员类型不能是该结构体本身,为什么呢 问了老师才明白 ————如果一个结构体中含有它本身,那么这个结构体所占用的内存大小不是确定的。成员之一的大小是自身的大小,这样做会陷入无限循环之中。但是成员变量却可以是以该结构体类型为基本类型的指针类型原因很简单 ,编译器在编译时候32位系统会把指针类型大小定义为一个占用四个字节的大小,所以在这样在编译结构体的时候就知道的成员的大
2015-11-07 16:28:49
1221
转载 结构体定义 typedef struct 用法
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于: 若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;其实就相当于 NO
2015-11-07 15:48:57
486
转载 C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别
一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下《C语言核心技术》,明白了其中的奥妙。 相同点:两个都是二元操作符,其右操作符是成员的名称。 不同点:点操作符左边的操作数是一个“结果为结构”的表达式; 箭头操作符左边的操作数是一个指向结构的指针。 举例说明:#include
2015-11-06 15:33:12
721
转载 枚举类型的使用方法
1. 枚举的定义枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。 2. 枚举变量的说明 如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,
2015-11-03 09:45:23
852
转载 几种常见排序算法的c语言实现
1)“冒泡法1” 其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。 [cpp] view plaincopyvoid bubble(int *a,int n) { int i,j,tem
2015-10-09 16:08:28
389
转载 linux 中断底半部之tasklet分析
Linux tasklet study一、 tasklet作用二、 tasklet相关的数据结构struct tasklet_struct{struct tasklet_struct *next;unsigned long state;atomic_t count;void (*func)(unsigned long);uns
2015-09-30 10:07:41
453
转载 对韦东山老师移植最新uboot的总结
一:准备移植1、从下面的官网下载最新的U-boot。用google英文版搜索最新的u-boot源码 ftp://ftp.denx.de/pub/u-boot/2、建立sourceinsight工程 a、解压并在E:\colin weidongshan\transplant_u-boot-2012.04.01\u-boot-2012.04.01建立SI b、添加文件到SI工程
2015-09-21 16:24:04
813
转载 嵌入式基础
1. 嵌入式存储系统1.1. 计算机组成原理从冯.诺依曼的存储程序工作原理及计算机的组成来说,计算机由运算器、控制器、存储器和输入/输出设备五大部件组成。其中运算器和控制器统称为中央处理器(CPU),而存储系统分成内部存储器(内存)和外部存储器(外存)。输入/输出设备并非计算机所必需的,如果一个设备具有CPU,内存和外存,我们就可以说它是一台计算机。在很多嵌入式设备上,都没有输入/输出
2015-09-18 21:44:42
6842
1
STM32_F767_ThreadX.zip
2020-12-24
Azure RTOS LevelX User Guide 中文版
2020-11-26
LevelX STM32 SPI NorFlash
2020-11-24
PCB设计封装库
2014-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人