fmql之Linux移植

news2024/12/31 6:01:11

先了解以下linux移植的大致流程,以及需要的资料、软件等。

《领航者ZYNQ之嵌入式Linux开发指南_V2.0》第十八章 Linux内核移植 (amobbs.com 阿莫电子技术论坛)

前言

复旦微(他人经验)

复旦微fmql的操作指南来了:

复旦微 FMQL Linux SDK实验(一)_procise生成的工程有用吗-CSDN博客

复旦微 FMQL Linux SDK实验(二)_复旦微fmql 社区-CSDN博客

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_zynq linux-CSDN博客

+ 串口 打印选择:

国产之路:复旦微调试笔记3:环境配置_复旦微fpga开发环境-CSDN博客

FPGA----ZCU106使用petalinux 2019.1(全网最详)-CSDN博客

问题

遇到的问题:

  • apt-get

https://www.cnblogs.com/huaranmeng/p/12767038.html

【重启也是有效的d】

Ubuntu 报错:无法获得锁 /var/lib/dpkg/lock-frontend资源暂时不可用_ubuntu无法获得锁lock-frontend-CSDN博客

【rm前记得备份】【尽量不要删除,我删了(也可能不是这个原因)之后打不开ubuntu了】

  • 启动会话失败

https://zhuanlan.zhihu.com/p/424703785

ubunut启动会话失败+侧边栏消失_ubuntu启动会话失败-CSDN博客

【没解决,重装了】

  • ubuntu字体设置

  • 生成dtb失败

 重启也没用

linux启动内核详细说明:

https://zhuanlan.zhihu.com/p/441861665

虚拟机安装

说明(包含了fmql):

关于ZYNQ搭载嵌入式操作系统_zynq phy挂载-CSDN博客

安装好VMware后

如果是zynq,直接安装ubuntu就行;

如果是fmql,需要安装fmsh_ubuntu(官方有安装包)。

但是看了一下,其实没什么差别,fmsh_ubuntu中有petalinux的安装包。

Ubuntu中需要下载的SDK,fmql也有专门的安装包。

搭建linux环境:具体看官方pdf文件【APPN104】

软件安装:

如何在Zynq上搭建虚拟机与Linux系统环境-AET-电子技术应用

linux启动步骤:

ZYNQ板卡FLASH+EMMC启动Linux步骤说明_zynq flash+emmc-CSDN博客

看了下正点原子的pdf,需要在window安装VMware,并给linux提前空出一些内存(空内存)。

因为目前用的是vivado2015.4版本,比较早了。linux下的其他相关软件(如petalinux、JTAG驱动等都需要注意版本)

petalinux 2018

软件下载位置:(需要外网账号)

下载

AMD Technical Information Portal

安装方式:

petalinux 2018.2 在ubuntu 16下的安装 | FPGA 开发圈

fmql官方资料

bsp包

选择与器件型号匹配的bsp包,放到ubuntu共享文件夹中,拷贝到/home/username下再解压。

git操作(见实操部分)。

流程

vivado生成:

design_1_wrapper.hdf                (编译脚本时自动生成pl.dtsi)

design_1_wrapper.bit

procise生成:

fsbl.out

DeviceTree文件夹

ubuntu:

.hdf

vivado生成bitstream后,export时选择include bitstream。

在.sdk文件夹下,生成.hdf文件。

 “自动生成pl.dtsi设备树”——在哪生成,什么时候自动生成?

编译脚本时生成?

设备树

image.ub

images文件夹在哪?

boot.bin

SD卡分区

要从SD卡启动,所以要把boot.bin等放到SD卡中。但是:

官方指南pdf中用ubuntu中的Disks给SD卡分区。但是自己尝试的时候无法下载并安装Disks,所以网上找了其他方法尝试:

Ubuntu系统下给SD卡分区、格式化_ubuntu 格式化sd卡-CSDN博客

实操

bsp包-打补丁

  • bsp包拷贝到共享文件夹中,然后拷贝到home/usermane/work下解压(tar)。
  • 执行命令:git checkout -- .  

git 常用命令之 git checkout_git checkout .-CSDN博客

git checkout -- .
  • 配置git账号

Git 安装配置 | 菜鸟教程

git config --global username "你的名字"
git config --global user.email 你的邮箱

也有说是        user.name        

  • 补丁patch
git am --signoff 目录/0001_补丁名

先解压bsp还是先打补丁?

应该是先解压,然后git checkout -- .。然后到bsp的目录下,配置用户、打补丁。

 生成设备树

【注意命令所需要的目录

【可以把命令最后的dtb改为all,就可以完成以下的所有编译】

  • 把vivado和procise生成的文件&文件夹拷贝到/home/username/下,配置环境变量
source env.sh
  • 编译设备树文件
./build.sh --hw /目录/DeviceTree/ --nofpga dtb

如果有PL部分,就不加“--nofpga

从SD或ramdisk启动

修改env.sh文件

  • 编译u-boot

  •  制作boot.bin

Procise

  •  制作image.ub(编译u-boot时已有)

  • 根文件系统的编译(编译u-boot时已有)

(编译时间较久)

SD卡分区

  • 取消SD卡挂载

显示“target is busy”——为啥?这是不是意味着取消挂载失败?

应该要写“/dev/sdb”而不是“/dev/sdb1”,所以应该取消挂载失败了,因此后续的操作都白干。

因为sdb的TYPE是disk,而sdb1的TYPE是part。

  • 进入fdisk交互界面

p:查看当前分区信息

d:删除已有分区

n:创建新分区

t:设置分区标签类型

l(L):查看可以采用的标签码【FAT32:c;EXT4(Linux):83】

w:写入磁盘并退出

Linux学习之分区和挂载磁盘配额_contains a mounted filesystem-CSDN博客

格式化后重新来一遍:

SD中添加启动文件

  • 断开ubuntu与SD卡的连接,在Windows下进行操作

在windows下会跳出来:(必须格式化,否则无法识别SD)

  • 或者ubuntu下搜索disks,对SD卡进行分区

32G的SD卡,1G位FAT格式,剩下的为EXT4格式。

然后把BOOT.bin和image.ub放到FAT分区下;

rootfsfs.cpio.gz放到EXT4分区下。

【注意】

【对EXT4分区的操作为以下命令】

sudo su
gunzip rootfs.cpio.gz
cpio –idmv < rootfs.cpio
rm rootfs.cpio

第一次从SD卡启动

把FPGA调到SD卡启动模式(而不是JTAG启动)。

有些看不太懂,记录一下。【windows下串口调试助手】

  •  ubuntu下minicom使用

Linux下Minicom使用教程.doc

Ubuntu如何通过串口与设备通讯 - 问答 - 亿速云

看这个:

https://www.cnblogs.com/ran7/p/17751931.html

下载minicom;

dmesg | grep tty        找到串口设备的名称

sudo minicom -s        配置串口;

最开始串行设备写的是“/dev/ttyS0”  “/dev/tty0”        ,然后连接串口后没有打印出任何信息。

改成“/dev/ttyUSB0”        就可以了。

打印信息:

例程中是这么写的:

和minicom打印的信息好像不太一样?

所以是要怎么交互?还是boot启动失败了?

petalinux使用

ZYNQ跑系统 系列(二) petalinux方式移植linux[通俗易懂]-腾讯云开发者社区-腾讯云

  • 创建工程

petalinux-create --type project --template zynq --name 工程名称

  • 配置工程

在工程目录下

petalinux-config  --get-hw-description=/..目录./system_wrapper_hw_platform_0

持续更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法:排序(前言)

所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视&#xff0c;尤其是在大量数据的处理方面。一个优秀的…

还在担心Android功能不会用吗?Intro Showcase View助你快速实现功能引导

还在担心Android功能不会用吗?Intro Showcase View助你快速实现功能引导 1. 引言 在现代应用开发中,如何有效引导用户快速上手并掌握应用的核心功能,是提升用户体验的重要一环。功能引导不仅帮助用户理解复杂功能,还能提高用户留存率,减少因操作复杂度带来的用户流失。随…

将Excel数据导入到SQL Server数据库

1.找到SQLServer导入导出工具&#xff0c;有32位和64位 2.打开后点击 下一步 3.选择数据源、Excel文件&#xff0c;自动匹配Excel的版本&#xff0c;根据实际情况&#xff0c;勾选首行是否是列名 4.选择目标&#xff0c;如图 5.点击属性&#xff0c;设置要导入的目标数据库…

zookeeper+kafka群集

一 :消息队列 1:什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单&#xff0c;比如只包含文本字符串&#xff0c;也可以更复杂&#xff0c;可能包含嵌入对象。 消息队列(Message Queue)是一种应用间的通信方式&#xff0c;消息发送后可以立即返回由消息…

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task2:头脑风暴会,巧灵脑筋急转弯(持续更新)

队伍名称&#xff1a;巧灵脑筋急转弯 队伍技术栈&#xff1a;python&#xff0c;LLM&#xff0c;RAG&#xff0c;大模型&#xff0c;nlp&#xff0c;Gradio&#xff0c;Vue&#xff0c;java 队友&#xff1a;知唐&#xff08;队长&#xff09;&#xff0c;我真的敲不动…

RCE绕过技巧

目录 EVAL长度限制突破技巧 1.使用反引号 2.file_put_contents写入文件 3.php5.6变长参数usort回调后门 命令长度限制突破技巧 1.拼接文件名 无字母数字的webshell命令执行 1.取反码 2.上传临时文件 EVAL长度限制突破技巧 分析代码&#xff1a;首先传递一个param参数&…

优思学院|日本制造的质量真的那么好吗?回顾日本的质量发展

时代不停改变&#xff0c;时移势易&#xff0c;没有事情是永恒的。 事实上&#xff0c;在20世纪40年代&#xff0c;日本产品常被认为是廉价、劣质的制品&#xff0c;并不如大家所想像的那么好。日本的工业领导者意识到了这个问题&#xff0c;决心生产出创新的高质量产品。 一…

Docker 网络代理配置及防火墙设置指南

Docker 网络代理配置及防火墙设置指南 背景 在某些环境中&#xff0c;服务器无法直接访问外网&#xff0c;需要通过网络代理进行连接。虽然我们通常会在 /etc/environment 或 /etc/profile 等系统配置文件中直接配置代理&#xff0c;但 Docker 命令无法使用这些配置。例如&am…

Python | Leetcode Python题解之第332题重新安排行程

题目&#xff1a; 题解&#xff1a; class Solution:def findItinerary(self, tickets: List[List[str]]) -> List[str]:def dfs(curr: str):while vec[curr]:tmp heapq.heappop(vec[curr])dfs(tmp)stack.append(curr)vec collections.defaultdict(list)for depart, arri…

KillWxapkg-自动化反编译微信小程序工具(附安装包)

KillWxapkg是一款纯Golang实现&#xff0c;一个用于自动化反编译微信小程序、小程序安全评估工具工具&#xff0c;小程序安全利器&#xff0c; 可以自动解密&#xff0c;解包&#xff0c;可还原工程目录&#xff0c;支持Hook&#xff0c;小程序修改&#xff0c;支持微信开发者工…

Java 实现 B树(通俗易懂)

目录 一.概念 二.节点定义 三.插入操作 1.查找位置 2.插入 3.分裂 四.B树和B*树 1.B树 2.B*树 一.概念 B树是一颗多叉平衡树&#xff0c;空树也是多叉平衡树。 一颗M阶的B树要满足以下条件&#xff1a; 1.根节点至少有两个孩子&#xff1b; 2.每个非根节点至少有(上…

iPhone微信过期图片怎么恢复?4招轻松搞定

微信作为最受欢迎的即时通讯工具之一&#xff0c;经常用来分享生活中的点点滴滴。然而&#xff0c;由于手机存储空间的限制或是误触删除&#xff0c;我们有时会发现那些曾在微信中热聊的照片不见了&#xff0c;给我们的记忆留下了空白。别担心&#xff0c;小编为大家提供了多种…

Java | Leetcode Java题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isValidSerialization(String preorder) {int n preorder.length();int i 0;int slots 1;while (i < n) {if (slots 0) {return false;}if (preorder.charAt(i) ,) {i;} else if (preorder.charAt(…

玩AI第一步——显卡环境配置安装

目录 显卡驱动安装 CUDA环境安装 显卡驱动安装 玩ai&#xff0c;首先第一步是需要安装好显卡驱动 如果是n卡&#xff0c;则需要从官网下载对应的驱动&#xff0c;可点击下方链接去搜索自己显卡对应的驱动。 如果不知道自己是什么显卡&#xff0c;可以下载鲁大师或者驱动精灵…

线程池概述

1.1 线程池概念 在处理大量并发任务的时候&#xff0c;如果按照传统的方式&#xff0c;来一个任务请求&#xff0c;创建一个线程来进行任务的处理&#xff0c;大量线程的创建和销毁&#xff0c;将消耗过多的系统资源&#xff0c;还增加了线程上下文&#xff08;运行环境&#x…

Unity 编写自己的aar库,接收Android广播(broadcastReceiver)并传递到Unity

编写本文是因为找了很多文章&#xff0c;都比较片段&#xff0c;不容易理解&#xff0c;对于Android新手来说理解起来不友好。我这里写了一个针对比较小白的文章&#xff0c;希望有所帮助。 Android端 首先还是先来写Android端&#xff0c;我们新建一个Android空项目&#xf…

AI智能网关 边缘计算 视觉AI

随着人工智能技术的不断发展&#xff0c;AI智能网关正成为连接现实世界和虚拟智能世界的重要桥梁。作为智能化时代的关键设备&#xff0c;AI智能网关在物联网、工业、市政、无人驾驶、农业、环保、水利等领域起到了至关重要的作用。   首先&#xff0c;AI智能网关是物联网的核…

转行大模型成功进字节了!48k*15薪!

以ChatGPT为代表的大模型技术的出现&#xff0c;让算法工程师重新成了炙手可热的岗位。 现在国内各家大小厂都在搞大模型算法&#xff0c;投入了巨量的人力物力财力&#xff0c;都不愿意放弃这个百年难遇的机会&#xff0c;像字节&#xff0c;腾讯&#xff0c;京东等大厂也增加…

数学建模笔记(1):插值法

1.插值法的用途 在对数据进行处理的时候&#xff0c;我们往往会碰到由于数据量比较小的情况&#xff0c;这样的情况不利对数据进行分析。插值法就是是针对这种情况&#xff0c;模拟产生和原来数据相近的数据来为数据分析提供完整可靠的数据。 总结&#xff1a;插值法是一种自己…

RAG应用深度解析:文件解析与内容提取的技术突破

在了解完[# 落地RAG系列&#xff1a;RAG入门及RAG面临的挑战和解决方案&#xff01;&#xff01;]Naive RAG工作流程以及Naive RAG存在的问题后&#xff0c;我们将先从离线部分的文件解析开始技术分析与落地&#xff0c;朝着高级RAG的方向前进&#xff01; 文件解析的难点 在R…