ZYNQ双核运行简例

本文详细介绍了在ZYNQ平台上实现AMP(非对称多进程)模式运行的步骤,包括创建工程、配置BD文件、SDK环境设置、修改FSBL文件以及从SD卡启动的过程。实验目标是使CPU0通过UART打印消息,CPU1运行流水灯程序。通过设置DDR空间分配和添加启动函数,确保两个核心独立工作且无冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、AMP运行模式

从软件的角度来看,多核处理器的运行模式有三种: 
  AMP(非对称多进程):多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心。
  SMP(对称多进程):一个操作系统同等的管理各个内核,例如PC机。
  BMP(受约束多进程):与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行
默认情况下,ZYNQ仅运行一个CPU,这里主要研究AMP模式下,两个CPU同时运行。

本次实验目的:
  让zynq的两个核心跑不同的程序:
    1、CPU0用UART打印消息。
    2、CPU1跑流水灯的程序。

二、创建工程

1、创建并设置bd文件

根据自己的板子创建一个zynq工程、创建一个bd文件,添加zynq的核。双击打开、选中UART和SD卡:根据自己板子选择连接的IO
  再根据自己板子选择是否选择EMIO(如果LED连接到PL端则需要选择)和EMIO所需要的位数。
  完成设计之后如下
  创建完成之后:
  1、右击原理图,生成输出文件(Create HDL Wrapper) 
  2、右击原理图,生成顶层文件(Create Output Products…)
添加约束文件:

set_property PACKAGE_PIN N20 [get_ports {
   GPIO_0_tri_io[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {
   GPIO_0_tri_io[0]}]

set_property PACKAGE_PIN P20 [get_ports {
   GPIO_0_tri_io[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {
   GPIO_0_tri_io[1]}]

set_property PACKAGE_PIN P19 [get_ports {
   GPIO_0_tri_io[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {
   GPIO_0_tri_io[2]}]

set_property PACKAGE_PIN Y19 [get_ports {
   GPIO_0_tri_io[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {
   GPIO_0_tri_io[3]}]

set_property PACKAGE_PIN V12 [get_ports {
   GPIO_0_tri_io[4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值