开发板与虚拟机组网、uboot源码makefile分析、uboot安全启动与非安全启动方式、uboot源码配置与编译流程、制作TF启动盘
开发板与虚拟机组网、
局面:开发板、PC(Ubuntu系统)、网线直连PC:设置Ubuntu系统:1.设置桥接模式,桥接到PC的有线网卡上;2.手动配置IP V4的地址信息,注意和开发板保持在同一网段即可;设置开发板:1.开发板以eMMc方式启动,其间有提前固化的uboot;2.通过串口工具配置开发板的IP V4的地址信息,注意保持网段一致;测试:通过开发板或者Ubuntu测试是否可以PING通对端。
uboot源码makefile分析、
//方式一
》首先在README确定格式为make <board name>_defconfig》 执行make fsmp1a_defconfig, 出现以下错误信息: Can't find default configuration "arch/../configs/fsmp1a_defconfig"!make[1]: *** [scripts/kconfig/Makefile:110: fsmp1a_defconfig] Error 1make: *** [Makefile:564: fsmp1a_defconfig] Error 2根据错误信息分析可知,在arch/../configs/目录下,没有找到fsmp1a_defconfig配置文件。》 在arch/../configs/目录下,查看配置文件,分析哪个配置文件时stm32mp1的配置文件使用linux@ubuntu:configs$ ls stm32mp*_defconfig 命令查看配置文件,得到以下两个配置文件,stm32mp15_basic_defconfig -----> 非安全模式下的默认配置文件stm32mp15_trusted_defconfig -----> 安全模式下的默认配置文件》最终确定了板子的名字为stm32mp15_basic或者stm32mp15_trusted/ /方式二
》因为uboot源码使用makefile进行管理编译,所以在makefile文件中可以找到make <board_name>_defconfig对应的目标信息:1>在uboot源码顶层目录下,打开Makefile文件,搜索:config564 %config: scripts_basic outputmakefile FORCE565 $(Q)$(MAKE) $(build)=scripts/kconfig $@2>在uboot源码顶层目录下,打开Makefile文件,搜索:config,使用echo将变量信息进行打印564 %config: scripts_basic outputmakefile FORCE565 @echo $(Q)566 @echo $(MAKE)567 @echo $(build)568 @echo $@ 569 $(Q)$(MAKE) $(build)=scripts/kconfig $@3>在uboot源码顶层目录下执行: make fsmp1a_defconfig,会出现如下打印信息@make-f ./scripts/Makefile.build objfsmp1a_defconfig4>总结:通过以上命令打印可知$(Q)取消回显,所以将$(Q)去掉,在次执行 make fsmp1a_defconfig,查看打印信息make -f ./scripts/Makefile.build obj=scripts/kconfig fsmp1a_defconfig = make obj=scripts/kconfig fsmp1a_defconfig》通过方法2分析可知,到指定scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig1>在scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig109 %_defconfig: $(obj)/conf110 $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) 2>在scripts/kconfig目录下,打开Makefile文件,搜索目标:defconfig,使用echo命令,对变量信息进行打印109 %_defconfig: $(obj)/conf110 @echo $(Q)111 @echo $(silent)112 @echo $(SRCARCH)113 @echo $@114 @echo $(Kconfig)115 $(Q) $< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) 3>在uboot源码顶层目录下执行: make fsmp1a_defconfig,会出现如下打印信息@..fsmp1a_defconfigKconfig4>总结:通过以上命令打印可知$(Q)取消回显,所以将$(Q)去掉,在次执行 make fsmp1a_defconfig,查看打印信息scripts/kconfig/conf --defconfig=arch/../configs/fsmp1a_defconfig Kconfig
》总结:make <board_name>_defconfig执行过程scripts/kconfig/conf:通过file命令进行查看,可知是一个elf可执行文件--defconfig=arch/../configs/fsmp1a_defconfig:板子目标文件Kconfig:uboot源码目录下配置文件通过以上分析可知:conf是一个可执行文件,--defconfig=arch/../configs/fsmp1a_defconfig和Kconfig作为参数传递给conf
uboot安全启动与非安全启动方式、
安全版本的FSBL为TF-A。非安全版本的FSBL为uboot
uboot源码配置与编译流程、
1.进入uboot源码顶层目录下
2.配置交叉编译工具链,打开uboot源码顶层目录下Makefile文件,搜索:CROSS_COMPILE将以下内容更改为:262 ifeq ($(HOSTARCH),$(ARCH))263 CROSS_COMPILE ?= 更改为:262 ifeq (arm,arm)263 CROSS_COMPILE ?=arm-linux-gnueabihf-
3. 在uboot源码顶层目录下配置支持fsmp1a开发板,非安全版本默认配置文件make stm32mp15_basic_defconfig成功现象:## configuration written to .config#
4.在uboot源码顶层目录下执行基于图形化界面配置信息make menuconfig
5.设备树相关文件dts--------->设备树源文件(相当于C语言中.c文件)dtsi--------->设备树头文件(相当于C语言中.h文件)DTC--------->设备树编译工具(相当于C语言中gcc编译器) dtb--------->生成设备树可执行文件格式:/{{节点相关信息; };};
6.在uboot源码顶层目录下,进入arch/arm/dts目录下,查看DK1公板相关设备树内容1>进入arch/arm/dts目录下,通过命令查看:ls stm32*stm32mp157a-dk1.dtsstm32mp157a-dk1-u-boot.dtsistm32mp15xx-dkx.dtsi2>进入arch/arm/dts目录下,将DK1公板设备树内容复制一份为FSMP1A平台相关内容cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dtscp stm32mp157a-dk1-u-boot.dtsi stm32mp157a-fsmp1a-u-boot.dtsicp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi3>进入arch/arm/dts目录下,打开设备树stm32mp157a-fsmp1a.dts,需要更改以下内容12 #include "stm32mp15xx-dkx.dtsi"13 14 / { 15 model = "STMicroelectronics STM32MP157A-DK1 Discovery Board";16 compatible = "st,stm32mp157a-dk1", "st,stm32mp157";更改为12 #include "stm32mp15xx-fsmp1x.dtsi"13 14 / {15 model = "HQYJ STM32MP157A-FSMP1A Discovery Board";16 compatible = "hqyj,stm32mp157a-fsmp1a", "st,stm32mp157"; 4>进入arch/arm/dts目录下,打开Makefile文件,添加FSMP1A平台设备树内容945 dtb-$(CONFIG_STM32MP15x) += \946 stm32mp157a-dk1.dtb \947 stm32mp157a-fsmp1a.dtb \ ------>这一行为需要添加的内容
7.对uboot源码进行编译time make -j4 all
8.成功现象u-boot-spl.stm32u-boot.img
制作TF启动盘
1.将TF卡插入到读卡器中,并将读卡器插入到电脑USB口,需要连接到虚拟机
2.查看TF卡分区linux@ubuntu:~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2$ ls /dev/sd*/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5
3.首先删除原有分区sudo parted -s /dev/sdb mklabel msdos成功现象:linux@ubuntu:~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2$ ls /dev/sd*/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb 4.对 tf 进行重新分区,需要注意查看打印信息是否分区成功sudo sgdisk --resize-table=128 -a 1 -n 1:34:545 -c 1:fsbl1 -n 2:546:1057 -c2:fsbl2 -n 3:1058:5153 -c 3:ssbl -n 4:5154:136225 -c 4:bootfs -n 5:136226 -c 5:rootfs -A 4:set:2 -p/dev/sdb -g解释:sgdisk:分区--resize-table=128 -a 1:对齐-n:创建一个新的分区1:第一个分区34:起始块号545:终止块号-c 1:fsbl1:分区名字-A 4:set:2:设置分区表属性-p/dev/sdb -g:打印分区表
5.查看分区是否成功,ls /dev/sd*linux@ubuntu:~/FSMP1A/u-boot-stm32mp-v2020.10-stm32mp-r2-r0/u-boot-stm32mp-v2020.10-stm32mp-r2$ ls /dev/sd*/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5
6.将uboot镜像文件烧写到对应的分区中linux@ubuntu:$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb1 conv=fdatasynclinux@ubuntu:$ sudo dd if=u-boot-spl.stm32 of=/dev/sdb2 conv=fdatasynclinux@ubuntu:$ sudo dd if=u-boot.img of=/dev/sdb3 conv=fdatasync解释:dd:拷贝文件命令if:input file 输入文件名字of: output file 输出文件名字conv=fdatasync:以物理方式写入
开发板与虚拟机组网、uboot源码makefile分析、uboot安全启动与非安全启动方式、uboot源码配置与编译流程、制作TF启动盘相关推荐
- JZ2440开发板与电脑通过网线直连,实现开发板、虚拟机、PC机三者互Ping,并成功挂接网络根文件系统
声明: 本文提及的部分图片与内容属于韦东山老师的教学视频课程内容,本文提出的解决方案是基于韦老师教学视频中提及方案的扩展. 转载内容来自: [005_ARM裸机1期加强版_第006课_第006节_一句 ...
- 在这里,TQ2416系列----开发板与虚拟机之间搭建NFS
TQ2416 开发板与虚拟机之间搭建NFS 在实际的开发中,当我们在开发板上搭建好ARM+LINUX的开发环境(uboot,linux内核,文件系统都裁剪幷移植到开发板上),专注于应用程序的开发的时 ...
- 如何使用电脑连接WIFI,开发板网线连接路由器,ping通开发板和虚拟机
关于网络的各种操作真的是很令人头疼,网络也是很难学的一个板块.分享一下我这种情况如何ping通开发板和虚拟机. 首先我是只有一根网线,电脑商务本没有网口,所以只能把开发板和路由器连在一起. 开发板使用 ...
- 开发板和虚拟机Linux使用scp命令互传文件
scp命令 Linux scp 命令用于 Linux 之间复制文件和目录 scp 是 secure copy 的缩写,scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令 scp ...
- uboot笔记之makefile分析
uboot笔记之makefile分析开始学习uboot,对于linux我还是个新手,在这只是对学习uboot做下笔记,文中错误之处请谅解.使用的uboot版本是2009.11. 要了解一个linux ...
- linux下调试mini2440开发板,Linux--mini2440----mini2440开发板与虚拟机ping不通的原因
我在调试用tftp server进行uImage下载时出现了问题,在网上找到了解决方法,跟大家分享一下! 首先确定虚拟机的链接方式: 打开edit--->Virtual Network Edit ...
- 解决嵌入式开发过程中开发板与虚拟机的网络通信问题
前言 最近在做海思Hi3516的开发,奈何资源受限,只得搭建虚拟机环境.在虚拟机环境下进行开发工作,不得不说,坑是真滴多. 在虚拟机上搭建交叉编译环境,用来编译开发板所能执行的目标文件.所以就要使用N ...
- 主机,开发板,虚拟机三者之间相互ping通
首先要确保三者在同一个网段,即ip地址的前三位相同 检查主机ip:cmd打开命令行,首先在当前路径是没有办法使用ping,ipconfig命令的 需要cd c:\windows\system32这个目 ...
- 全志V3S荔枝派zero10分钟制作TF启动卡,主线Linux,主线u-boot(超过10分钟博主直播吃奥利奥!!!)
一,初学者(比如我)刚拿到zero时,一定是一脸懵逼的,无从下手的,通过几篇代佬们写的文章+官网资料,了解了几种启动方式 1.Camdriod 官方SDK 2.主线Uboot + Bsp 内核 3.主 ...
最新文章
- linux 压缩文件夹格式,Linux下常见文件格式的压缩、解压小结
- mysql 非正常关闭,centos非正常关机后,mysql竟然启动不了
- Asp.net細微的效率提升
- BizTalk开发系列(十九) BizTalk命名规范
- oracle 插入时if,关于sql:ORACLE:如果不存在则插入行-重复键错误
- 【方案分享】地产项目2022年新春1月系列暖场活动策划方案:新年置业,如虎添翼.pptx(附下载链接)...
- 关于本博客的feed订阅
- 嵌入式linux appace,嵌入式Linux攻略 ACE程序移植过程详细解析 — IT技术
- 我们和优秀工程师的差距在哪儿
- 20191129每日一句
- c++程序员面试宝典
- 《5分钟商学院》--刘润老师直播
- Python数据分析师工资怎么样?
- 德米特里:玩世不恭大冒险 for Mac(冒险游戏)
- 实现类似微信中查找“附近的人”的功能!
- 微信小程序 个人收支理财记账本小程序Android hbuilderx App毕业设计
- Python-Level1-day16:异常处理try-exceptraise语句,for迭代原理,深入手写创建迭代器;yield浅出使用生成器
- eclipse IDE
- JetBrains产品字体大小调整
- 沐神《动手学深度实战Kaggle比赛:狗的品种识别(ImageNet Dogs)