//移植流程

1、将uboot镜像文件固化到开发板的TF卡或者EMMC设备中
2、在ubuntu的~/tftpboot目录下,准备tftp服务器要下载的文件(镜像文件和设备树文件)
3、通过开发板的拨码开关,选择启动方式
4、系统上电,会将uboot镜像文件加载到开发板内存
5、串口工具会打印uboot的信息,在倒计时进入0之前,按下enter键,会进入交互模式
6、通过在串口输入tftp命令,经过网线连接下载到开发板中,下载内容为设备树文件和uImage镜像文件
7、下载成功后linux内核启动
8、启动成功后,通过网线实现从ubuntu挂载根文件系统到开发板中
9、挂载成功后,在串口工具,可以查看到~/nfs/rootfs目录下相关内容
/********************************************************************************************/
准备的文件:
1、uboot镜像文件
u-boot-stm32mp157a-fsmp1a-trusted.stm32
2、tf-a镜像文件
tf-a-stm32mp157a-fsmp1a-trusted.stm32
3、内核镜像文件(使用tftp服务器进行下载)
stm32mp157-fsmp1a.dtb
uImage
4、根文件系统(使用nfs服务器实现挂载)
rootfs文件夹
/*******************************************************************************************/
uboot移植:先移植非安全版本,安全版本是在非安全版本的基础上移植的,安全版本还需要移植tf-a,因为安全版本的一级引导程序是tf-a
/----------------------------------------/
uboot非安全版本移植流程
/----------------------------------------/
uboot安全版本的移植流程(包括tf-a移植)
******************************
tf-a准备工作
*-----------准备TF-A源码-----------*
1、将tf-a-stm32mp-2.2.r2-r0.tar.xz拷贝到~/demo目录下
2、解压:tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.xz
3、将解压后的tf-a源码移植到~/FSMP1A目录下
    cp tf-a-stm32mp-2.2.r2-r0 ~/FSMP1A/ -rf
*-----------分析TF-A源码-----------*
1、进入/home/ubuntu/FSMP1A/tf-a-stm32mp-2.2.r2-r0目录下
2、分析tf-a目录下的内容(.patch为补丁文件,Makefile.sdk工程管理文件,README.HOW_TO.TXT分析文件,series补丁文件列表,tf-a-stm32mp-2.2.r2-r0.tar.gz是tf-a源码压缩包)
 *-----------分析README-----------*
1、解压tf-a目录
 tar xfz tf-a-stm32mp-2.2.r2-r0.tar.gz
2、对tf-a源码打补丁
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
3、编译tf-a源码命令
make -f $PWD/../Makefile.sdk all  或者
make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
4、tf-a源码生成镜像文件的路径
../build/*/tf-a-*.stm32
*-----------移植TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0目录下
2、解压tf-a源码:tar -vxf tf-a-stm32mp-2.2.r2-r0.tar.gz
3、在tf-a源码目录下打补丁
for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
4、在tf-a源码顶层目录下,打开Makefile.sdk,搜索:CROSS_COMPILE,更改交叉编译工具链前缀
5、FSMP1A是参考DK1公板设计的,要复制DK1公板设备树相关内容
进入tf-a源码目录下的fdts目录,复制设备树相关内容
cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts 
cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
进入tf-a源码目录下的fdts目录,输入:vi stm32mp157a-fsmp1a.dts,更改头文件及相关信息
6、进入tf-a源码顶层目录下,打开Makefile.sdk,搜索TFA_DEVICETREE
添加stm32mp157a-fsmp1a
7、进入tf-a源码目录进行编译
 make -f $PWD/../Makefile.sdk all
8、查看是否生成对应的镜像文件
进入tf-a源码顶层目录下的build/trusted,看是否存在tf-a-stm32mp157a-fsmp1a-trusted.stm32
*-----------测试TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2、将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
3、进入到uboot源码目录下
4、插入TF卡
5、./sdtools /dev/sdb
6、将TF卡退出ubuntu
7、TF卡插入开发板,观察现象
*-----------更改电源相关信息-----------*
思路:去掉DK1公板电源相关内容,添加FSMP1A电源相关内容
1、进入tf-a源码目录下的fdts目录,打开stm32mp15xx-fsmp1x.dtsi
注释掉i2c4节点和cpu0、cpu1的内容
在vin的第一个花括号下面添加FSMP1A电源节点相关内容,在sdmmc1下面添加sdmmc2节点相关内容
*-----------测试TF-A源码-----------*
1、进入到/home/linux/FSMP1A/tf-a-stm32mp-2.2.r2-r0/build/trusted
2、将tf-a-stm32mp157a-fsmp1a-trusted.stm32拷贝到uboot源码目录下
3、进入到uboot源码目录下
4、插入TF卡
5、./sdtools /dev/sdb
6、将TF卡退出ubuntu
7、TF卡插入开发板,观察现象
/----------------------------------------/
linux操作系统开发阶段流程
******************
ums命令烧写
1、准备好相关文件
2、使用ums命令烧写
   1)先使用TF卡方式进入到uboot界面中
   2)使用ums 0 mmc 1将emmc设备挂载到ubuntu中(弹窗连接到虚拟机)
3、ubuntu界面输入:ls /dev/sd*  
      看是否识别到设备
4、uboot源码目录下执行:./sdtools /dev/sdb
5、开发板拨到emmc(010)启动方式
6、进入安全模式代表uboot镜像文件烧写到emmc中成功
********************
ubuntu和开发板组网
1、在串口工具中输入:
setenv serverip 192.168.1.233
setenv ipaddr 192.168.1.100
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
saveenv
2、测试开发板与ubuntu是否连接成功
ping 192.168.1.233
*************************
开发部署流程
*----------使用tftp下载镜像文件----------*
1、将设备树文件和uImage镜像文件拷贝到~/tftpboot目录中
2、在串口工具使用tftp命令将文件下载到开发板中
tftp 0xc2000000 uImage
tftp 0xc4000000 stm32mp157a-fsmp1a-trusted.dtb
*-----------设置bootargs参数------------*
1、在串口工具中输入:
setenv bootargs root=/dev/nfs nfsroot=192.168.1.233:/home/ubuntu/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.100
saveenv
2、启动内核
bootm 0xc2000000 - 0x4000000
*-----------设置bootcmd参数------------*
1、串口输入:
setenv bootcmd tftp 0xc2000000 uImage\;tftp 0xc4000000 stm32mp157a-fsmp1a-trusted.dtb\;bootm 0xc2000000 - 0xc4000000
saveenv
2、run bootcmd

2022-12-12 系统移植相关推荐

  1. ubuntu18.04交叉编译移植OpenCV4.70和QT5.12.12至ARM64位平台LKD3588(开发板为ubuntu22.04系统)(三)

    序:前面已经将Opencv和Qt5.12.12分别交叉编译并部署至RK3588中开发板上了,并验证了在开发板上都可以顺利运行.接下来我们在PC虚拟机QT上搭建将二者结合的IDE便于开发. 一.虚拟机中 ...

  2. openEuler 社区 2022 年 12 月运作报告

    社区活跃度 在社区所有开发者和用户的共同参与下,openEuler的3年持续迸发活力!从0到超过1.27万名开发者,从0到超过100万的社区用户,从0到超过750家企业伙伴加入社区--截至目前,在大家 ...

  3. 华为否认今年将推出搭载鸿蒙系统手机;苹果或在 3 年内推出 5G 基带芯片;Node.js 12.12.0 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  4. HCIE-Routing Switching实验考试延期至2022年12月31日

    尊敬的考生: 由于受新冠疫情不可控因素影响,2022年上半年HCIE-Routing & Switching实验考试所在城市出现出行受控等情况,造成部分考生无法在2022年6月30日之前前往考 ...

  5. R语言学堂推文索引-2022年12月

    专注系列化.高质量的R语言教程 推文索引 | 联系小编 | 付费合集 更新时间: 2022.12.12 0 前言 1 数据处理通识专辑 1.1 R语言基础与base-R 1.2 数据处理与tidy-R ...

  6. 2022年12月各大学网络教育统考大学英语B考试题库及时间

    自2022年起,网络教育考试委员会已经不再组织网络教育全国统一考试,网络教育统考已由各高校自行组织,在考试频次上,各高校均可按照实际情况进行,部分高校已将网络教育统考改为一年两次,部分学校改为三次,还 ...

  7. 基因编辑相关最新研究进展(2022年12月)

    [1]西湖大学马丽佳团队开发新型CRISPR脱靶和DNA易位检测工具 2022-12-15报道,2022年12月12日,西湖大学生命科学学院马丽佳团队在 Nature Communications 期 ...

  8. 2022年12月国产数据库大事记-墨天轮

    本文为墨天轮技术社区整理的2022年12月国产数据库大事件和重要产品发布消息. 目录 12月国产数据库大事记(时间线) 产品/版本发布 兼容认证 排行榜新增数据库 厂商活动 相关资料 12月国产数据库 ...

  9. OpenHarmony社区运营报告(2022年12月)

    本月快讯 • 本月新增22款产品通过兼容性测评,累计220款产品通过兼容性测评. • 12月28日,OpenAtom OpenHarmony(以下简称"OpenHarmony")凭 ...

  10. 【SRE笔记 2022.8.12 SRE概述03】

    @[TOC](SRE笔记 2022.8.12 磁盘知识补充 尺寸 物理结构 接口类型 速度性能 硬盘协议 企业案例-提升用户体验网站解决方案 优劣性 解决数据丢失的方法 中小企业案例 IDC机房 ID ...

最新文章

  1. python3 线程隔离_Python并发编程之线程中的信息隔离(五)
  2. DCMTK:OFpath和相关内容的测试程序
  3. 待研究金华的存储过程
  4. 【C++】 C++标准模板库(九) Bitsets
  5. 自己mini版jquery编写
  6. 关于异常的合理处理方式
  7. 学习总结——Postman做http接口功能测试
  8. 架构 BitTorrent BT服务器
  9. 快速分割多个视频,生成每个视频的m3u8
  10. QTableWidget 设置表头颜色
  11. DNS错误是什么意思?
  12. Navicat for MySQL 安装(百度云链接)
  13. 赛扬n5095和r55500u哪个好
  14. RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Solaris) (文档 ID 1526517.1)
  15. 2021美国大学生数学建模竞赛F题翻译
  16. 测量中的坐标与时间系统1.1(在大地测量学中)
  17. 《完全用Linux工作》(原版)作者:王垠
  18. golang 连接mysql,连接字符串参数
  19. 共享电单车充电桩平台
  20. 开关电源:隔离式与非隔离式

热门文章

  1. 100!的尾数有多少个零?
  2. python谱聚类算法_Python机器学习高级算法!谱聚类(Spectal Clustering)算法分析和实例详解...
  3. 核心显卡和独立显卡的区别
  4. 拉格朗日乘子法:写得很通俗的文章
  5. 数组的方法-push(),pop(),unshift(),shift()
  6. PHP读取word文档的方法分析
  7. 4.vue常见指令v-for的基本使用
  8. MySQL5.7 卸载 - Linux下卸载
  9. 关于jsp中java代码的使用;
  10. apt-get update和apt-get upgrade的区别