ZYNQ Linux+裸核
目录
- 一、工程目标
- 二、Linux系统设置
- 三、SDK设置
- 1.CPU1设置
- 2.FSBL设置
- 3.生成BOOT.BIN
- 四、运行测试
- 1.Linux系统测试
- 2.裸核测试
一、工程目标
- CPU0运行Linux系统
- CPU1裸核运行,控制GPIO7连接的LED灯闪烁。
- Linux系统运行在内存的前512MB空间内。
- 裸核运行于内存的后512MB空间内。
二、Linux系统设置
1.由hdf文件生成设备树文件后,将system-top.dts文件中根节点目录下的memory节点的reg属性由<0x0 0x40000000>改为<0x0 0x20000000>。表示Linux系统运行于内存中偏移量0,长度为0x20000000的空间内,如下图所示:
2.在bootargs中添加maxcpus=1,表示使用单核。
三、SDK设置
1.CPU1设置
1.在SDK中新建CPU1工程,如下图所示:
2.在lscript.ld文件中将CPU1的内存空间设为偏移量0x20000000,长度为0x20000000,如下图所示:
3.在CPU1的工程中输入以下程序,控制GPIO7连接的LED闪烁。
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"int main(void)
{int status;XGpioPs GpioPs;XGpioPs_Config* GpioPs_Config;GpioPs_Config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);if(GpioPs_Config == NULL){return XST_FAILURE;}status = XGpioPs_CfgInitialize(&GpioPs,GpioPs_Config,GpioPs_Config->BaseAddr);if(status != XST_SUCCESS){return XST_FAILURE;}XGpioPs_SetDirectionPin(&GpioPs,7,1);XGpioPs_SetOutputEnablePin(&GpioPs, 7,1);while(1){XGpioPs_WritePin(&GpioPs, 7, 1);//点亮MIO的第7位输出1usleep(500000);//延时XGpioPs_WritePin(&GpioPs, 7, 0);//熄灭MIO的第7位输出0usleep(500000);//延时}return 0;
}
2.FSBL设置
1.新建FSBL工程如下图所示:
2.在main函数的HandoffAddress = LoadBootImage()程序后添加如下程序用来启动CPU1:
Xil_Out32(0xfffffff0, 0x20000000);
dmb (); //等待内存写入完成(同步)
#define sev() __asm__("sev")
sev (); //通过"SEV"指令唤醒CPU1并跳转至相应的程序
其中0x20000000便是上一步设置的CPU1内存空间起始地址。
3.生成BOOT.BIN
1.将编译生成的u-boot.elf复制到Windows系统下,使用SDK提供的Create Boot Image生成BOOT.BIN。
2.依次添加FSBL.elf,design_1_wrapper.bit,u-boot.elf,CPU1.elf打包生成BOOT.BIN文件。
四、运行测试
1.Linux系统测试
将生成的BOOT.BIN文件复制到SD卡,启动开发板,输入以下命令查看Linux系统使用的CPU核数与内存大小:
cat /proc/cpuinfo
cat /proc/iomem
命令执行结果如下:
可以看到Linux使用了一个CPU,RAM的范围为从0x00000000到0x1FFFFFFF,与上面设置一致,作为对比,下图为使用双核CPU时Linux系统信息:
2.裸核测试
在系统加载完BOOT.BIN文件后,可以看到GPIO7所控制的LED灯在闪烁,说明裸核运行正常。
ZYNQ Linux+裸核相关推荐
- ZYNQ 双核运行并交互,一个linux,一个裸核
zynq 7000 一般有2个cpu (arm A9),我们一般都用一个cpu0,本实验让2个cpu 都运行起来,cpu0 运行操作系统petalinux 2018.2, cpu1: 裸机流水灯.同时 ...
- ZYNQ 7000 AMP模式双裸核运行 双方共享内存交互
本文是 zynq 7000 AMP模式 双裸核CPU同时运行 的继续.本文主要是上文的基础上增加通过共享内存的方式,演示2个裸核的交互. 共享内存前先看看内存地址分布,这个图取自 ug585 4.1 ...
- 转载:ZYNQ+linux网口调试笔记(1)PS-GEM0
ZYNQ+linux网口调试笔记(1)PS-GEM0 转载原文:https://www.jianshu.com/p/a4e25e8b2f5e 开发环境 Windows SDK 2017.4 Ubunt ...
- ZYNQ LINUX开发笔记——windows下用xilinx SDK编译zynq linux app小程序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ LINUX开发笔记--windows下用xilinx SDK编译zynq linux app小程序 前言 操作方法 总结 前 ...
- linux 内核dmesg,linux內核調試kmsg,dmesg
dmesg為我們多用,man dmesg告知dmesg用來顯示和管理kernel ring buffer,那麼後者為何物,以及dmesg顯示何類信息,是本文待闡述的內容. documentation/ ...
- linux裸设备大小,SUSE Linux 十 配置裸设备(raw devices)
SUSE Linux 10 配置裸设备(raw devices) 裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对 它进行 ...
- 【转】Linux內核驅動之GPIO子系統(一)GPIO的使用 _蝸牛
原文网址:http://tc.chinawin.net/it/os/article-2512b.html 一 概述 Linux內核中gpio是最簡單,最常用的資源(和interrupt ,dma,ti ...
- ebaz s9 zynq linux中关于网络的一些小问题
ebaz s9 zynq linux中关于网络的一些小问题 在使用petaalinux 编译ebaz的linux时,如果只按照某金与某原子的linux教程制作linux系统会卡死在内核启动的过程中.其 ...
- ZYNQ Linux 移植:包含petalinux移植和手动移植debian9
问题: 1.ZYNQ Linux启动流程: BOOTROM→FSBL→Uboot→Kernel→RootFS 环境: 虚拟机ubuntu16.04 petalinux2018.3 vivado2018 ...
最新文章
- Ubuntu下Nginx/PHP/MYSQL开发环境的配置方法
- 简单排查定位linux系统的性能瓶颈
- android开发实验报告二,《Android 移动应用开发》实验报告-范本2(33页)-原创力文档...
- maven netty 配置_springboot2.3手册:5分钟用Netty搭建高性能异步WebSocket服务
- 从零开始入门 K8s | Kubernetes 网络模型进阶
- 核心概念——节点/边/Combo——内置节点——Ellipse
- JAVA网络编程Socket常见问题 【长连接专题】
- MATLAB如何用循环分割,利用Matlab进行分割提取浮游生物
- PYTHON招聘需求与技能体系
- java解析时已到达文件结尾_IO流读取到文件末尾继续读取
- 双向板受力特点_弹性减震球形钢支座/双向弹簧铰支座特性
- 阿里云发布异构计算产品家族,你可以在上面模拟核爆炸
- ios开发 将json格式数据上传服务器
- 鲁大师2014 v3.75.14.1058 官方版
- Safari 兼容问题累积
- 【2021全国高校计算机能力挑战赛Python题目】17.学科竞赛 现有六门功课(语文、数学、物理、化学、政治、历史)的成绩,现在需要从中选拔优秀同学参加如下学科竞赛
- python的ai模块可以做什么菜_Python AI极简入门:1、搭建一个用于AI预测的Python环境...
- 图片拼图微信小程序源码下载支持多模板制作和流量主
- MySQL中查看数据库
- Mooc_AutoCAD绘制建筑施工图_单元平面图测验题