先了解以下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 sugunzip rootfs.cpio.gzcpio –idmv < rootfs.cpiorm 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
持续更新中。。。