精华内容
下载资源
问答
  • Zynq平台上,运行FreeRTOS自带的TCP/IP协议栈。 开发环境:Vivado 2018.3 开发板:黑金AX7010
  • 本应用指南演示了如何使用FreeRTOS操作系统——Zynq-7000 AP SoC的两种推荐操作系统之一(另外一种是Linux)。 FreeRTOS是一种只含有少量文件的免费操作系统,易于连接、使用和维护。FreeRTOS支持多线程或任务、互斥...
  • 相对于复杂的 Linux,FreeRTOS 等实时操作系统给我们带来更灵活更方便的开发,更直接的和底层 FPGA 进行交互。 1,新建工程,OS Platform 选择 freertos901_xilinx 2,本实验选择 FreeRTOS Lwip Echo Server示范...

    相对于复杂的 Linux,FreeRTOS 等实时操作系统给我们带来更灵活更方便的开发,更直接的和底层 FPGA 进行交互。

    1,新建工程,OS Platform 选择 freertos901_xilinx

    2,本实验选择 FreeRTOS Lwip Echo Server示范

    3,下载界面设置,run as下载程序。

    4,固化FreeRTOS到FLASH

    拨码开关设置为JTAG模式,点击工具栏设置为Program Flash按钮。

    依次把FSBL(BOOT.BIN),U-Boot(u-boot.bin),PS端裸机/FREERTOS程序(test.elf)和PL端程序(xxx.bin)固化到对应地址上。

    (1)选择要固化的程序BOOT.BIN,设置加载地址0x0,选择Flash Type为qspi_sigle,选择FSBL文件,最后点击Program,出现Flash Operation Successful则表示固化成功。

    (2)固化U-Boot(u-boot.bin),地址选择0x40000

    (3)固化PS端裸机/FREERTOS程序(test.elf),地址选择0x100000。

    当固化非bin文件或非mcs文件时,需要手动输入路径滴孩子,再重新选择FSBL文件,刷新后才可以点击Program。

    (4)固化PL端程序(xxx.bin),选择地址0x180000

    5,修改U-Boot环境变量

    拨码开关设置为QSPI启动模式,回车键进入U-Boot模式,修改环境变量,设置自启动时候的命令

    setenv bootcmd 'sf probe 0 50000000 0 && sf read 0x2080000 0x100000 0x80000 && sf read${loadbit_addr} 0x180000 0xE80000 && fpga load 0 $(loadbit_addr} 0xE80000 && bootelf 0x2080000'

    saveenv

    解释:
    sf probe 0 50000000 0                                 //初始化SPI FLASH,并且设置工作时钟为50MHZ

    sf read 0x2080000 0x100000 0x80000        //从SPI FLASH的地址0x100000上拷贝长度为0x80000到内存地址0x2080000上

    sf read${loadbit_addr} 0x180000 0xE80000 //从SPI FLASH的地址180000上拷贝长度为0xE80000到loadbit_addr上

    fpga load 0 $(loadbit_addr} 0xE80000         //FPGA从loadbit_addr加载PL程序xxx.bin

    bootelf 0x2080000                                       //加载启动内存地址0x2080000上PS端程序xxx.elf

    6,

    展开全文
  • ZYNQ上使用FreeRTOS

    千次阅读 2018-12-02 21:20:56
    FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。 由于RTO...

    在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
    FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
    由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为10.1.0版。
    同样在ZYNQ上面也可以开发FreeRTOS的项目,其Xilinx SDK上自带FreeRTOS板级支持包,下面就创建一个hello world程序来说面说明如何搭建FreeRTOS实时操作系统运行环境。

    1.使用vivado搭建硬件环境

    本次工程使用vivado2017.4版本,使用米联客的Miz702开发板进行测试,

    首先打开vivado,新建一个工程,我选择的器件是XC7Z020CLG484-1,

    然后create block design->添加一个ZYNQ7 Processing System的IP,添加相关的硬件,本工程只需添加DDR和UART即可;

    接下来Run Implementation综合工程;

    file->Export->Export Hardware…导出硬件;

    Launch SDK调用SDK;

    2.SDK软件的操作

    首先新建一个工程Freertos_Test0, OS Platform选择freertos,点击Next, Available Templates选择FreeRTOS Hello World,点击finIshmael;

    在这里插入图片描述在这里插入图片描述

    3.打开SDK Terminal,连接开发板的串口,波特率115200bps,8bit数据位,无奇偶校验位点击RUN,SDK Terminal出现以下信息则表示运行成功。

    在这里插入图片描述

    展开全文
  • ZYNQ进阶之路9--PS端实现FreeRTOS嵌入式系统导论FreeRTOS简介实现步骤 导论 在之前的章节中我们我们完成了PS端、PL端和PS+PL的一些工程,本章节我们插入一个小插曲,讲解FreeRTOSZYNQ中是如何实现的。 FreeRTOS...

    ZYNQ进阶之路9--ZYNQ PS端实现FreeRTOS嵌入式系统

    导论

    在之前的章节中我们我们完成了PS端、PL端和PS+PL的一些工程,本章节我们插入一个小插曲,讲解FreeRTOS在ZYNQ中是如何实现的。

    FreeRTOS简介

    FreeRTOS(读作"free-arr-toss")是一个嵌入式系统使用的开源实时操作系统,FreeRTOS被设计为“小巧,简单,和易用”,能支持许多不同硬件架构以及交叉编译器。
    就像所有操作系统一样,FreeRTOS的主要工作是执行任务。大部分FreeRTOS的代码都涉及优先权、调度以及执行用户自定义任务。但又与所有其他操作系统不同,FreeRTOS是一款运行在嵌入式系统上的实时操作系统。FreeRTOS包含所有你需要用来启动很运行系统的硬件无关以及硬件相关的代码。它支持许多编译器(CodeWarrior,GCC,IAR等)也支持许多处理器架构(ARM7,ARM Cortex-M3,PICs各系列,Silicon Labs 8051, x86等),当然也支持我们ZYNQ的Cortex_a9核。
    而在ZYNQ上使用FreeRTOS主要有两个原因,1、这个原因最重要,他是开源免费的。2、xilinx的SDK提供了FreeRTOS的软件包。下面我们就来实际看一下如何实现在ZYNQ上运行FreeRTOS实现LED闪烁控制吧。

    实现步骤

    创建工程配置PS端如下所示(创建工程流程请参照前面章节内容):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    打开SDK:
    在这里插入图片描述
    创建freeRTOS工程:

    在这里插入图片描述
    在这里插入图片描述
    编写如下程序实现LED灯闪烁:

    在这里插入图片描述
    在这里插入图片描述
    这样就完成了一个基础的LED闪烁教程啦,再往后的章节中我们还会继续扩大FreeRTOS在ZYNQ中的使用范围哦,希望有兴趣的读者能够关注博主,和博主交流学习呢!博主邮箱(wanpengwork@163.com)。

    展开全文
  • freeRTOS移植——ZYNQ7000简介

    千次阅读 2018-06-10 11:42:28
    ZYNQ 7000使用AMR CortexA9 CPU,移植freeRTOS之前首先需要了解它的基本结构和配置,侧重于一下几点· 寄存器分布· 中断配置· 配套的汇编指令集· IRAM和DRAMPS:关于ARM的学习,个人认为,最好是以项目为驱动...

    ZYNQ 7000使用AMR CortexA9 CPU,移植freeRTOS之前首先需要了解它的基本结构和配置,侧重于一下几点

    ·       寄存器分布

    ·       中断配置

    ·       配套的汇编指令集

    ·       IRAM和DRAM

    PS:关于ARM的学习,个人认为,最好是以项目为驱动,为自己设定一个小项目,诸如这里讨论的移植freeRTOS,或是经典的跑马灯实验。基于设定的项目,直接去ARM官网上查找相应资料,其中英语可能会成为较大的阻碍,这就需要好好自己好好提升英语能力了。有人可能觉得百度或者各种中文论坛也不错,但我这次移植也去用了用,资料较少,而且大部分都相互抄袭,没有太多影响,作为入门的科普还行,想要进一步做项目还是得去官网。

     

    硬件架构

    ARM Cortex A9为双核结构,如下图所示,之前说的sector即为下图中的APU


    其中只需要重点关注,

    ·        ZYNQ 7000拥有两块ARMCortex A9 CPU,运行主频可配(我用的666.66667MHz)。

    ·        每块CPU都对应有32KB的ICache和DCache,它们共享512KB的L2 Cache和256KB的SRAM。

    ·        输入到sector的中断由GIC模块管理。

     

    寄存器

    ARM Cortex A9 CPU共计有37个寄存器,如下图所示,


    其中

    ·        ARM Cortex A9 CPU有多种运行模式,不同模式下访问的寄存器是不同的,RTOS的移植只关注其中几种

    ·       用户模式(user mode),正常运行模式,

    ·       系统模式(system mode),具有系统特权的运行模式

    ·       中断模式(IRQ mode),处理中断的运行模式

    ·       监督模式(Supervisor mode),OS保护模式,处理系统复位和软件中断的模式

    ·        寄存器分为通用寄存器和分组寄存器两类

    ·       R0~R7为通用寄存器,所有CPU运行模式下,CPU访问的R0~R7都是同一样的寄存器,都是R0_user~R7_user

    ·       R8~12在FIQ mode下,为R8_fiq~R12_fiq;其他模式下为R8_ user ~R12_ user,由此可见,FIQ的处理是可不需要压栈和出栈。

    ·       SP和LR,在user mode和system mode下为SP_user和LP_user,其他模式都为自己独有的寄存器SP_xx和LP_x,SP作为stack pointer register使用,LR用于存放函数调用时子函数执行完成后的指令返回地址。也被记为R13和R14

    ·       PC为通用寄存器,存放当前CPU下一步需要从ICache中取出的指令位置,其为当前执行的指令地址+x(CPU会提前取出多条指令优化排序执行),x为8(针对ARM指令)或4(针对Thmbr指令),也被记为R15

    ·       CPSR为当前CPU状态寄存器,其是通用寄存器

    ·       SPSR为CPU状态保存寄存器,除usermode和system mode外,每种模式都有自己独立的状态保存寄存器

     

    汇编指令

    ARM Cortex A9 CPU使用的汇编指令集为ARMv8,可以在其官网上找到相关文档,或者搜索相关指令,网址是:https://developer.arm.com/。文档非常冗长,建议是找个现成的汇编小程序,一边阅读一边查指令含义,如此可以很快地掌握常用指令。

    ARM指令集大致分为如下几类

    汇编其中使用的寄存器名如下图所示(实际上改为小写也行)


    除此之外,ARM的汇编指令还可以操作协处理器(NEON)的寄存器,它们的名称如下,


    中断

    ARM Cortex A9 CPU可处理的中断分为SGI、PPI和SPI三类

    ·        SGI,中断ID 1~15,为软件触发中断

    ·        PPI,中断ID 16~31,为私有中断,

    ·        SPI,中断ID 31~95,为共享中断,

    它们都由GIC进行管理,我们可以通过对GIC的配置来管理所有的中断。

     

    BSP

    ZYNQ 7000往往使用XILINK的SDK进行开发,其提供了一个名为BSP的软件工程用于封装硬件,可以简单地理解为硬件驱动库。如下图所示,它向OS和业务代码提供功能接口。实际上,BSP和OS我们往往将其通称为平台。


    XILINX提供的BSP比较庞大,包含了CPU所有相关硬件的驱动程序。这里我们只关心FreeRTOS的移植中要使用的中断向量表和定时器。

    对于中断向量表,可以在BPS中找到如下默认设置的中断向量表_vectors_table,


    其中我们需要重点关注78行的SVCHandler和82行的IRQHandler,它们分别对应任务切换的中断和OS提供给用户的中断(包括用于时间片的中断)。

    但是该中断向量表定义的ISR并不能够用于支撑freeRTOS,需要进行改写。

     

     

    PS:这里83行和84行的IRQ和FIQ都可用于OS提供给用户的中断,它们分别对应CPU的IRQ和FIQ模式,我们暂时只使用IRQ。

     

    附:

    中断向量表的加载在boot过程中完成,其中vector_base为取值为_vectors_table的宏


    SVC的ISR函数如下



    IRQ的ISR函数如下,可见其是不能支持退出中断后的任务切换,需要进行改写。




    展开全文
  • 使用普通的Timer中断方式时,Timer中断可以正常运行,但是UDP通信进程无法启动。其中TimerIntrHandler是中断服务程序,打印程序运行时间与从BRAM中读取的数据。 void SetupInterruptSystem(XScuGic *...
  • 硬件:ZYNQ-7000 开发环境:XILINX SDK CPU0:linux CPU1:freertos 以下是调试freertos时的调试笔记,20191031。 正常情况下,FREERTOS具有CPU利用率统计功能。配置步骤如下: ① 自 定 义 配 置 一 下 ,首 先 在 ...
  • 总结Zynq-7000的PL发送给PS一个中断请求,为FreeRTOS中断做准备。  UG585的P225显示了系统的中断框图,如下图所示。 图:ZYNQ器件的中断框图  UG585的P227画出来中断控制器的框图,如下图所示。PL 到 PS 部分...
  • zynq freeRTOS初始化中断

    千次阅读 2019-02-19 22:55:24
    问题描述: zynq7000 上 PS standalone裸跑,PS timer计时器中断,PL-->PS中断均工作正常,将代码移植到freertos工程时,中断不执行,task运行正常。 解决: Xilinx FreeRTOS (9.0.1) BSP, 中有一个文件: ....
  • 一、ARM架构分析 在ARM有以上寄存器组,...任务用SYS寄存器组(USR组),操作系统用SVC组,中断用IRQ组,FreeRtos共用了三组以上的。 RTOS跑的任务都属于内核级线程,在SYS下,我们可以看到,RTOS保存数据以及回...
  • FreeRTOS的官网中下载源代码: https://www.freertos.org/a00104.html  图:FreeRTOS的官网 上图中,点击能支持的MCU,找到Xilinx的,如下图: 图:SupportMCUs 支持Xilinx的页面 可以看到,支持的工具...
  • ZYNQ7000 freertos 中断

    千次阅读 2019-01-17 22:34:36
    问题描述: zynq7000 上 PS standalone裸跑,PS timer计时器中断,PL-->PS中断均工作正常,将代码移植到freertos工程时,中断不执行,task运行正常。 解决: Xilinx FreeRTOS (9.0.1) BSP, 中有一个文件: ...
  • ISE运行版本为ISE14.4 ;在zedboard上运行freertos并实现按键中断; 板级支持包下载页面:http://download.csdn.net/detail/oxp7085915/6729125
  • Zynq-7000 FreeRTOS(二)中断:解决RTOS中中断无反应问题
  • 1,运行环境vivado2019.2,win10,ZYNQ 7000系列 2,FreeRTOS官网源码下载 https://www.freertos.org/ , 3,FreeRTOS 是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、...
  • ZYNQ双核通信 Linux+FreeRTOS(一)

    千次阅读 2021-03-13 12:30:51
    ZYNQ 双核通信 一OpenAMP开发换环境搭建编译U-boot编译Kernel编译设备树什么是devicetree?Devicetree基础设备树属性设备树生成器(DTG)Task Output Products第1步:获取DTG源第2步:生成DTS文件(使用Xilinx SDK...
  • Linux + FreeRTOS 1.创建FreeRTOS工程 使用ps7_cortexa9_1创建FreeRTOS工程,示例如下 修改main.c 去掉xil_printf相关的调用,根据FPGA工程师提供的寄存器地址和bit文件操作LED周期闪烁 修改lscript.ld文件地址...
  • ZYNQ下LINUX+FREERTOS同时运行

    千次阅读 2019-12-23 14:34:38
    zynq_fsbl . elf -- fpga -- u - boot -- add freertos_cpu1 . elf -- force 三、试验效果 执行 poke 0xfffffff0 0x18000000 启动cpu1的应用程序。效果如下: root@zedboard : ~ # poke 0xfffffff0 0x...
  • 总结Zynq-7000器件的PS上的串口中断,为FreeRTOS中断实验做准备。 转载于:https://www.cnblogs.com/yiwenbo/p/10730863.html
  • zynq的sdk中添加了lwip和freertos库,在使用库API后编译报错如下: arm-none-eabi-gcc -Wall -O0 -g3 -c -fmessage-length=0 -MT"src/freertos_tcp_perf_server.o" -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard ...
  • ZYNQ7020+ OPENAMP+LINUX+freertos。方案合作联系本人 https://www.bilibili.com/read/cv8203311
  • Xilinx ZYNQ FreeRTOS+Tracealyze(移植) PL端配置 使用ZYNQ IP Core,打开串口、网口等所需接口。(新手注意:需要生成bit文件后,并输出相应硬件平台,网上教程很多,请参考其它教程)。 PS端配置 创建任务,注意...
  • 问题描述: zynq7000 上 PS standalone裸跑,PS timer计时器中断,PL-->PS中断均工作正常,将代码移植到freertos工程时,中断不执行,task运行正常。 解决: Xilinx FreeRTOS (9.0.1) BSP, 中有一个文件: ...
  • 本节开始搭建Free RTOS实时操作系统运行环境,本实验以FreeRTOS Hello World举例,实现两个LED灯以不同的间隔持续闪烁。 本实验基于“双核AMP的使用”工程,硬件环境不需要修改。 二、新建工程,OS Platform选择...
  • zynq FreeRTOS 不能进中断

    千次阅读 2019-02-16 23:33:58
    转载:https://forums.xilinx.com/t5/嵌入式软件开发/分享-在FreeRTOS...在FreeRTOS的main()函数里初始化设备,不能收到中断。 FreeRTOS在 void vTaskStartScheduler( void )里调用 configSETUP_TICK_INTERRUPT(),...
  • FreeRTOS移植 - - bug

    2020-05-26 22:46:21
    FreeRTOS移植各种bug 1、不同芯片的keil配置 具体细节参见移植数据文档,主要修改包括: Device(芯片选择); Taeget(ARM Compiler设置); C/C++(Define以及Include Paths选择); 编译link选择以及flash型号...
  • 本文介绍zynq7010的axi-timer使用,从建立vivado工程开始,先介绍裸跑,再介绍编写Linux版驱动。
  • 有关如何以操作系统感知的方式调试在Avnet MiniZed板上运行的Embedded FreeRTOS应用程序的指南。 介绍在操作系统之上编写嵌入式软件应用程序时,通常很难检测某些时序问题或解释某些奇怪的行为。到底出了什么问题?...
  • ARM启动一般从0x00000000开始启动,当然也有可能从SD、其他的地址(M3默认0x80000000),那么A9默认从0开始,打开vector_asm.s....global _freertos_vector_table .global _vector_table .global FIQInterrupt .g...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 310
精华内容 124
关键字:

freertoszynq