昌吉北京网站建设,网站备案是否收费,做网站的公司 杭州,怎么用video做网站开头iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构#xff0c;主频650M、1G内存、8G存储#xff0c;核心板采用工业级板对板连接器#xff0c;高可靠#xff0c;牢固耐…iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构主频650M、1G内存、8G存储核心板采用工业级板对板连接器高可靠牢固耐用可满足高速信号环境下使用。共240PINCPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口CAMERA接口、ADC电位器、SPDIF、SDIO接口等 嵌入式Linux系统移植篇
第六十七章 Trusted Firmware-A 移植
在“第十章 编译TF-A”已经对Trusted Firmware-A进行了编译以及介绍且对编译出的文件作用做了简单的说明下面我们对官方提供的源码来进行移植以此来适配我们自己的开发板。
官方提供的系统源码存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\01_官方源码”下的tf-a-stm32mp-2.2.r1-r0文件夹。
移植好的系统源码存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\02_移植好的源码\tf-a”。
67.1 源码的导入以及打补丁
将官方提供的系统源码文件夹拷贝到ubuntu上如下图所示 使用命令“cd tf-a-stm32mp-2.2.r1-r0/”进入源码文件夹如下图所示 然后使用命令“tar -vxf tf-a-stm32mp-2.2.r1-r0.tar.gz”对源码的压缩文件进行解压如下图所示 解压完成之后使用命令“ cd tf-a-stm32mp-2.2.r1”进入tf-a-stm32mp-2.2.r1源码文件如下图所示 然后使用命令“for p in ls -1 ../*.patch; do patch -p1 $p; done ”对源码打上ST官方提供好的补丁如下图所示 67.2 准备编译所用到工具用我们提供的环境可以跳过本小节
在编译TF-A之前需要先编译 stm32wrapper4dbg 这个工具否则编译会报错。ST 提供了这个工具的源码我们需要在 Ubuntu 下编译并安装这个源码源码的下载地址为https://github.com/STMicroelectronics/stm32wrapper4dbg存放的路径为“iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\stm32wrapper4dbg-master.zip”将源码压缩包通过ssh拷贝到 Ubuntu下如下图所示 然后使用命令进行解压缩如下图所示 unzip stm32wrapper4dbg-master.zip 使用命令“cd stm32wrapper4dbg-master”进入stm32wrapper4dbg-master文件夹之中如下图所示 然后使用命令“make”命令进行编译如下图所示即编译成功 然后将编译出来的工具使用命令 cp stm32wrapper4dbg /usr/bin 拷贝到/usr/bin目录下。至此我们的准备工作就结束了。 67.3 编译TF-A源码
67.3.1 增设自己的平台
回到源码文件之后使用命令“cd fdts”进入设备树文件存放目录可以看到ST官方开发板的设备树文件而我们的板子同样也是参照官方开发板来进行设计的所以为了方便我们直接通过修改官方开发板的设备树文件来适配我们自己的开发板。
使用以下命令将官方的设备树文件进行复制并修改文件名如下图所示 cp stm32mp15xx-dkx.dtsi stm32mp15xx-itop.dtsi cp stm32mp157a-dk1.dts stm32mp157a-itop.dts 使用命令“vim stm32mp157a-itop.dts”进入stm32mp157a-itop.dts文件将头文件中的 #include stm32mp15xx-dkx.dtsi 修改为 #include stm32mp15xx-itop.dtsi 修改完成如下图所示 并将model从STMicroelectronics STM32MP157A-DK1 Discovery Board修改为STMicroelectronics STM32MP157A-iTOP Discovery Board,修改完成如下图所示 保存退出之后使用以下命令进入stm32mp15xx-itop.dtsi文件夹 vim stm32mp15xx-itop.dtsi 由于官方的DK1开发板内存默认为512MB而我们的内存为1G所以我们需要将头文件之中的 #include stm32mp15-ddr3-1x4Gb-1066-binG.dtsi 修改为 #include stm32mp15-ddr3-2x4Gb-1066-binG.dtsi 修改完成如下图所示: 67.3.2 修改Makefile.sdk文件
然后回到tf-a-stm32mp-2.2.r1-r0目录下使用命令“vim Makefile.sdk”进入编译配置文件夹如下图所示 进入文件夹之后首先修改交叉编译器将“CROSS_COMPILEarm-ostl-linux-gnueabi-”修改为“CROSS_COMPILEarm-none-linux-gnueabihf-”修改完成如下图所示 然后在EXTRA_OEMAKE_SERIAL配置项中添加以下内容主要是设置交叉编译器以及一些编译所需要的配置 CROSS_COMPILEarm-none-linux-gnueabihf- DEBUG1 LOG_LEVEL40 PLATstm32mp1 ARCHaarch32 ARM_ARCH_MAJOR7 添加完成之后如下图所示 然后我们继续在TFA_DEVICETREE 配置项中添加 stm32mp157a-itop将我们的设备树也添加到编译的进程之中添加完成如下图所示 至此我们的Makefile.sdk文件就修改完成了。
67.3.3 编译TF-A文件
然后进入tf-a-stm32mp-2.2.r1源码文件夹如下图所示 使用命令“vim create.sh”创建create.sh脚本文件并在该脚本文件之中添加以下内容 #!/bin/sh make -f $PWD/../Makefile.sdk TFA_DEVICETREEstm32mp157a-itop TF_A_CONFIGtrusted ELF_DEBUG_ENABLE1 all make -f $PWD/../Makefile.sdk TFA_DEVICETREEstm32mp157a-itop TF_A_CONFIGserialboot ELF_DEBUG_ENABLE1 all 添加完成之后如下图所示 保存退出之后使用命令“chmod 777 create.sh”赋予create.sh文件可执行权限如下图所示 然后使用命令“./create.sh”,运行该脚本如下图所示 编译完成如下图所示 回到上一级目录下可以看到新生成了一个build文件夹使用命令”cd build”,进入该文件 可以看到两个文件夹分别为serialboot和trusted。 我们所需要的文件为serialboot文件夹内的tf-a-stm32mp157a-itop-serialboot.stm32和trusted文件夹内的tf-a-stm32mp157a-itop-trusted.stm32。如下图所示 这这里需要说明的是其中tf-a-stm32mp157a-itop-serialboot.stm32文件是使用OTG烧写所用到的文件而tf-a-stm32mp157a-itop-trusted.stm32文件是真正要烧写到EMMC中的文件。
67.3.3 烧写初始TF-A镜像
注意由于官方的开发板默认没有配置EMMC我们本小节使用TF卡进行烧写测试如果目前手上没有TF卡可以不进行本小节的测试但对应的流程需要浏览一下。
将“iTOP-STM32MP157开发板光盘资料\02_开发板烧写工具\02_烧写文件模板”路径下的image文件夹拷贝到ubuntu虚拟机上拷贝完成如下图所示 然后我们使用命令“ ls tf-a/”命令查看对应的文件夹可以看到tf-a文件夹内的文件正是我们上一小节所编译出来的文件夹如下图所示 使用命令将编译出来文件拷贝到tf-a文件夹内对原有的文件进行替换如下图所示每个人路径并不一样在此需要注意 使用命令“stm32.sh”打开烧写软件如下图所示 烧写的tsv规则文件我们选择tfcard.tsv如下图所示 将开发板的拨码开关设置为“0000”接好otg线之后对开发板进行上电。在烧写软件之中选中对应的设备USB1然后进行烧写具体的烧写过程可以查看第八章STM32MP157烧写系统在这里没有进行太多的讲解。
烧写完成之后将拨码开关设置为“1010”然后重启开发板打印信息如下图所示 从打印信息来看我们成功进入了uboot证明我们的移植并没有出现问题由于目前还没有配置EMMC所以用同样的方法将镜像烧写到EMMC之中然后将拨码开关设置为“0100”通过emmc启动会报如下的错误在下一小节之中我们会配置tf-a的emmc。
67.4 适配EMMC
再上一小节之中我们已经成功的通过TF卡经过tf-a启动到了u-boot但是emmc并没有适配所以会启动错误下面我们来适配EMMC。
首先进入tf-a源码目录如下图所示 然后使用命令
vim fdts/stm32mp15xx-itop.dtsi
进入stm32mp15xx-itop.dtsi设备树文件如下图所示 使用搜索命令查找sdmmc只能找到sdmmc1的定义如下图所示 sdmmc1正是对应的TF卡在该配置下方我们添加以下内容
sdmmc2 {pinctrl-names default;pinctrl-0 sdmmc2_b4_pins_a sdmmc2_d47_pins_a;non-removable;st,neg-edge;bus-width 8;vmmc-supply v3v3;vqmmc-supply v3v3;status okay;
}; 保存退出之后回到源码目录使用命令“ ./create.sh”进行编译如下图所示 编译完成之后根据“20.3.3烧写初始TF-A镜像”章节按照同样的步骤进行烧写这次要烧写的是EMMC所以我们在进行烧写配置选择的时候选择emmc如下图所示 烧写完成之后将拨码开关拨打“0100”EMMC启动上电在打印信息之中我们可以看到我们新编译出来的tf-a镜像已经能够成功进入uboot了。
至此我们的tf-a移植就结束了。移植好的源码我们存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\02_移植好的源码\tf-a”